Full Code of majorsilence/My-FyiReporting for AI

master ec0780062a97 cached
1244 files
11.8 MB
3.2M tokens
7807 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (12,688K chars total). Download the full file to get everything.
Repository: majorsilence/My-FyiReporting
Branch: master
Commit: ec0780062a97
Files: 1244
Total size: 11.8 MB

Directory structure:
gitextract_uirn_3hj/

├── .editorconfig
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   ├── dependabot.yml
│   └── workflows/
│       ├── codeql.yml
│       ├── jekyll-gh-pages.yml
│       ├── linux.yml
│       ├── mac.yml
│       └── windows.yml
├── .gitignore
├── DataProviders/
│   ├── BaseDataParameter.cs
│   ├── DataParameterCollection.cs
│   ├── DataProviders.sln
│   ├── DictionaryDataReader.cs
│   ├── FileDirCommand.cs
│   ├── FileDirConnection.cs
│   ├── FileDirDataParameter.cs
│   ├── FileDirDataReader.cs
│   ├── FilteredDictionaryDataReader.cs
│   ├── GedcomCommand.cs
│   ├── GedcomConnection.cs
│   ├── GedcomDataParameter.cs
│   ├── GedcomDataReader.cs
│   ├── HttpClientExtension.cs
│   ├── JsonCommand.cs
│   ├── JsonConnection.cs
│   ├── JsonDataReader.cs
│   ├── JsonTableExtractor.cs
│   ├── LexCharReader.cs
│   ├── LexToken.cs
│   ├── LexTokenList.cs
│   ├── LexTokenTypes.cs
│   ├── Lexer.cs
│   ├── LogCommand.cs
│   ├── LogConnection.cs
│   ├── LogDataParameter.cs
│   ├── LogDataReader.cs
│   ├── Majorsilence.Reporting.DataProviders.csproj
│   ├── MultipleStreamReader.cs
│   ├── TxtCommand.cs
│   ├── TxtConnection.cs
│   ├── TxtDataParameter.cs
│   ├── TxtDataReader.cs
│   ├── WebServiceCommand.cs
│   ├── WebServiceConnection.cs
│   ├── WebServiceDataParameter.cs
│   ├── WebServiceDataReader.cs
│   ├── WebServiceWsdl.cs
│   ├── XmlCommand.cs
│   ├── XmlConnection.cs
│   ├── XmlDataParameter.cs
│   ├── XmlDataReader.cs
│   ├── iTunesCommand.cs
│   ├── iTunesConnection.cs
│   ├── iTunesDataParameter.cs
│   └── iTunesDataReader.cs
├── Directory.Build.props
├── Directory.Packages.props
├── EncryptionProvider/
│   ├── EncryptionProvider.csproj
│   ├── Prompt.cs
│   ├── Properties/
│   │   ├── Resources.Designer.cs
│   │   └── Resources.resx
│   └── String/
│       └── StringEncryption.cs
├── Examples/
│   ├── .editorconfig
│   ├── Designer.xsd
│   ├── Examples/
│   │   ├── ChartExampleArea.rdl
│   │   ├── ChartExampleAreaPercentStacked.rdl
│   │   ├── ChartExampleAreaStacked.rdl
│   │   ├── ChartExampleBar.rdl
│   │   ├── ChartExampleBarPercentStacked.rdl
│   │   ├── ChartExampleBarStacked.rdl
│   │   ├── ChartExampleColumn.rdl
│   │   ├── ChartExampleColumnPercentStacked.rdl
│   │   ├── ChartExampleColumnStacked.rdl
│   │   ├── ChartExampleDoughnut.rdl
│   │   ├── ChartExampleLine.rdl
│   │   ├── ChartExamplePie.rdl
│   │   ├── ChartMap.rdl
│   │   ├── ChartMapWorld.rdl
│   │   ├── ChartTypes.rdl
│   │   ├── Contacts.xml
│   │   ├── DrilldownTest.rdl
│   │   ├── DrilldownTwoLevel.rdl
│   │   ├── EmployeeOrg.rdl
│   │   ├── FileDirectoryTest.rdl
│   │   ├── FinancialFunctions.rdl
│   │   ├── ListReport.rdl
│   │   ├── MatrixExample.rdl
│   │   ├── MatrixStaticTest.rdl
│   │   ├── MatrixTest.rdl
│   │   ├── RssShort.rdl
│   │   ├── SalesData.xml
│   │   ├── Suppliers.rdl
│   │   ├── SuppliersStyled.rdl
│   │   ├── TableThreeColumns.rdl
│   │   ├── TabularCountriesFromWizard.rdl
│   │   ├── TextProviderTest.rdl
│   │   ├── ThreeColumns.rdl
│   │   ├── WebLogHitCount.rdl
│   │   ├── WorldFacts.rdl
│   │   ├── WorldFacts.xml
│   │   ├── WorldFactsQueryArgs.rdl
│   │   └── iTunes.rdl
│   ├── Examples.416/
│   │   ├── HIDERIGA_ON_COMMAND.rdl
│   │   ├── HIDERIGA_ON_COMMAND.xml
│   │   ├── STAMPA_TABELLONE_RADIO_CON_DATI.RDL
│   │   ├── TESTRIG.rdl
│   │   ├── TESTXGRUPPO.rdl
│   │   ├── TESTXGRUPPO_Break3.rdl
│   │   └── datI_RADIO.xml
│   ├── Examples.418/
│   │   └── Test for Alignment.rdl
│   ├── Examples.sln
│   ├── JsonExamples/
│   │   └── JsonReport.rdl
│   ├── RdlEngineConfig.xml
│   ├── Readme.txt
│   ├── Sample-Report-Viewer/
│   │   ├── Sample-Report-Viewer/
│   │   │   ├── App.config
│   │   │   ├── Form1.cs
│   │   │   ├── Form1.resx
│   │   │   ├── GlobalSuppressions.cs
│   │   │   ├── Program.cs
│   │   │   ├── Properties/
│   │   │   │   ├── Resources.Designer.cs
│   │   │   │   ├── Resources.resx
│   │   │   │   ├── Settings.Designer.cs
│   │   │   │   └── Settings.settings
│   │   │   ├── SampleApp2-TestReport.rdl
│   │   │   └── SampleReportViewer.csproj
│   │   └── SampleApp2-SetData.sln
│   ├── SampleApp/
│   │   ├── SampleReportApp/
│   │   │   ├── Form1.Designer.vb
│   │   │   ├── Form1.resx
│   │   │   ├── Form1.vb
│   │   │   ├── GlobalSuppressions.vb
│   │   │   ├── My Project/
│   │   │   │   ├── Application.Designer.vb
│   │   │   │   ├── Application.myapp
│   │   │   │   ├── AssemblyInfo.vb
│   │   │   │   ├── Resources.Designer.vb
│   │   │   │   ├── Resources.resx
│   │   │   │   ├── Settings.Designer.vb
│   │   │   │   └── Settings.settings
│   │   │   ├── SampleReportApp.vbproj
│   │   │   └── app.config
│   │   └── SampleReportApp.sln
│   ├── SampleApp2-SetData/
│   │   ├── SampleApp2-SetData/
│   │   │   ├── App.config
│   │   │   ├── Form1.Designer.cs
│   │   │   ├── Form1.cs
│   │   │   ├── Form1.resx
│   │   │   ├── GlobalSuppressions.cs
│   │   │   ├── Program.cs
│   │   │   ├── Properties/
│   │   │   │   ├── Resources.Designer.cs
│   │   │   │   ├── Resources.resx
│   │   │   │   ├── Settings.Designer.cs
│   │   │   │   └── Settings.settings
│   │   │   ├── SampleApp2-SetData.csproj
│   │   │   └── SampleApp2-TestReport.rdl
│   │   └── SampleApp2-SetData.sln
│   ├── SampleAppHyperLinkCustomAction/
│   │   ├── HyperLinkExample/
│   │   │   ├── App.config
│   │   │   ├── Form1.Designer.cs
│   │   │   ├── Form1.cs
│   │   │   ├── Form1.resx
│   │   │   ├── GlobalSuppressions.cs
│   │   │   ├── HyperLinkExample.csproj
│   │   │   ├── Program.cs
│   │   │   └── Properties/
│   │   │       ├── Resources.Designer.cs
│   │   │       ├── Resources.resx
│   │   │       ├── Settings.Designer.cs
│   │   │       └── Settings.settings
│   │   └── SampleReportApp.sln
│   ├── SampleDesignerControl/
│   │   ├── SampleDesignerControl/
│   │   │   ├── App.config
│   │   │   ├── GlobalSuppressions.cs
│   │   │   ├── Program.cs
│   │   │   ├── Properties/
│   │   │   │   ├── Resources.Designer.cs
│   │   │   │   ├── Resources.resx
│   │   │   │   ├── Settings.Designer.cs
│   │   │   │   └── Settings.settings
│   │   │   ├── SampleApp2-TestReport.rdl
│   │   │   └── SampleDesignerControl.csproj
│   │   ├── SampleDesignerControl.sln
│   │   └── SampleDesignerControlWPF/
│   │       ├── App.config
│   │       ├── App.xaml
│   │       ├── App.xaml.cs
│   │       ├── GlobalSuppressions.cs
│   │       ├── MainWindow.xaml
│   │       ├── MainWindow.xaml.cs
│   │       ├── Properties/
│   │       │   ├── Resources.Designer.cs
│   │       │   ├── Resources.resx
│   │       │   ├── Settings.Designer.cs
│   │       │   └── Settings.settings
│   │       └── SampleDesignerControlWPF.csproj
│   ├── SqliteExamples/
│   │   ├── SimpleTest1.rdl
│   │   ├── SimpleTest2.rdl
│   │   ├── SimpleTest3WithParameters.rdl
│   │   ├── SimpleTestConnectionString.rdl
│   │   ├── barcode.rdl
│   │   ├── chart.rdl
│   │   └── functions.rdl
│   ├── config.xml
│   ├── designerstate.xml
│   ├── mostly-empty.rdl
│   ├── readerstate.xml
│   ├── usa_map.xml
│   └── world_map.xml
├── LICENSE.txt
├── LICENSE_short.txt
├── LanguageWrappers/
│   ├── php/
│   │   ├── Examples/
│   │   │   ├── test1.php
│   │   │   ├── test2-connection-string-parameter.php
│   │   │   └── test3-streaming.php
│   │   ├── report.php
│   │   └── viewer.php
│   ├── python/
│   │   ├── Examples/
│   │   │   ├── test1.py
│   │   │   ├── test2-parameters.py
│   │   │   └── test3-streaming.py
│   │   └── report.py
│   └── ruby/
│       ├── Examples/
│       │   ├── test1.rb
│       │   ├── test2-parameters.rb
│       │   └── test3-streaming.rb
│       └── report.rb
├── LibRdlWpfViewer/
│   ├── LibRdlWpfViewer.csproj
│   ├── LibRdlWpfViewer.sln
│   ├── Properties/
│   │   ├── Resources.Designer.cs
│   │   ├── Resources.resx
│   │   ├── Settings.Designer.cs
│   │   └── Settings.settings
│   ├── RdlWpfViewer.xaml
│   └── RdlWpfViewer.xaml.cs
├── Majorsilence.Drawing.Common/
│   ├── Bitmap.cs
│   ├── Brush.cs
│   ├── Brushes.cs
│   ├── CharacterRange.cs
│   ├── Color.cs
│   ├── ColorTranslator.cs
│   ├── Drawing2D/
│   │   ├── CompositingQuality.cs
│   │   ├── DashStyle.cs
│   │   ├── GraphicsPath.cs
│   │   ├── GraphicsState.cs
│   │   ├── HatchBrush.cs
│   │   ├── HatchStyle.cs
│   │   ├── InterpolationMode.cs
│   │   ├── LineCap.cs
│   │   ├── LineJoin.cs
│   │   ├── LinearGradientBrush.cs
│   │   ├── LinearGradientMode.cs
│   │   ├── Matrix.cs
│   │   ├── PixelOffsetMode.cs
│   │   └── SmoothingMode.cs
│   ├── Font.cs
│   ├── FontFamily.cs
│   ├── FontStyle.cs
│   ├── Graphics.cs
│   ├── GraphicsUnit.cs
│   ├── Image.cs
│   ├── Imaging/
│   │   ├── Encoder.cs
│   │   ├── EncoderParameter.cs
│   │   ├── EncoderParameters.cs
│   │   ├── ImageCodecInfo.cs
│   │   ├── ImageFormat.cs
│   │   └── ImageFormatExtensions.cs
│   ├── Majorsilence.Drawing.Common.csproj
│   ├── Pen.cs
│   ├── Pens.cs
│   ├── Point.cs
│   ├── PointF.cs
│   ├── Rectangle.cs
│   ├── RectangleF.cs
│   ├── Region.cs
│   ├── Size.cs
│   ├── SizeF.cs
│   ├── SkiaImageExtensions.cs
│   ├── SolidBrush.cs
│   ├── StringAlignment.cs
│   ├── StringFormat.cs
│   ├── StringFormatFlags.cs
│   ├── StringTrimming.cs
│   └── Text.cs
├── Majorsilence.Reporting.Benchmarks/
│   ├── DrawingCompatJob.cs
│   ├── JsonDataProviderBenchmark.cs
│   ├── Majorsilence.Reporting.Benchmarks.csproj
│   └── Program.cs
├── Majorsilence.Reporting.UI/
│   ├── .gitignore
│   ├── App.axaml
│   ├── App.axaml.cs
│   ├── MainWindow.axaml
│   ├── MainWindow.axaml.cs
│   ├── Majorsilence.Reporting.UI.csproj
│   └── Program.cs
├── Majorsilence.Reporting.UI.RdlAvalonia/
│   ├── Majorsilence.Reporting.UI.RdlAvalonia.csproj
│   └── Viewer/
│       ├── AvaloniaReportViewer.axaml
│       ├── AvaloniaReportViewer.axaml.cs
│       ├── ReportCanvas.cs
│       ├── SkiaPageDrawing.cs
│       └── ZoomMode.cs
├── Majorsilence.Reporting.WebExample/
│   ├── Controllers/
│   │   └── HomeController.cs
│   ├── Majorsilence.Reporting.WebExample.csproj
│   ├── Models/
│   │   └── ErrorViewModel.cs
│   ├── Program.cs
│   ├── Properties/
│   │   └── launchSettings.json
│   ├── Views/
│   │   └── Home/
│   │       └── Index.cshtml
│   ├── appsettings.Development.json
│   └── appsettings.json
├── Majorsilence.WinformUtils/
│   ├── FormExtensions.cs
│   ├── Majorsilence.WinformUtils.csproj
│   ├── Strings.Designer.cs
│   ├── Strings.resx
│   └── WaitForm.cs
├── MajorsilenceReporting-Linux-GtkViewer.sln
├── MajorsilenceReporting.sln
├── OracleSp/
│   ├── AssemblyInfo.cs
│   ├── DataParameter.cs
│   ├── DataParameterCollection.cs
│   ├── OracleSP.csproj
│   ├── OracleSp.sln
│   ├── OracleSpCommand.cs
│   └── OracleSpConnection.cs
├── RdlAsp.Mvc/
│   ├── Majorsilence.Reporting.RdlAsp.Mvc.csproj
│   ├── RdlListReports.cs
│   ├── RdlReport.cs
│   ├── RdlSession.cs
│   ├── ReportHelper.cs
│   └── Settings.cs
├── RdlCmd/
│   ├── GlobalSuppressions.cs
│   ├── RdlCmd.cs
│   ├── RdlCmd.csproj
│   └── runtimeconfig.template.json
├── RdlCreator/
│   ├── Body.cs
│   ├── BorderColor.cs
│   ├── BorderStyle.cs
│   ├── BorderStyleType.cs
│   ├── BorderWidth.cs
│   ├── Card.cs
│   ├── ConnectionProperties.cs
│   ├── Create.cs
│   ├── CustomProperties.cs
│   ├── CustomProperty.cs
│   ├── CustomReportItems.cs
│   ├── DataProviders.cs
│   ├── DataSet.cs
│   ├── DataSets.cs
│   ├── DataSource.cs
│   ├── DataSources.cs
│   ├── Details.cs
│   ├── Document.cs
│   ├── Field.cs
│   ├── Fields.cs
│   ├── Header.cs
│   ├── Majorsilence.Reporting.RdlCreator.csproj
│   ├── Page.cs
│   ├── PageFooter.cs
│   ├── PageHeader.cs
│   ├── Query.cs
│   ├── Report.cs
│   ├── ReportItemImage.cs
│   ├── ReportItemSize.cs
│   ├── ReportItemsBody.cs
│   ├── ReportItemsFooter.cs
│   ├── ReportItemsHeader.cs
│   ├── SizeUnit.cs
│   ├── Style.cs
│   ├── Table.cs
│   ├── TableCell.cs
│   ├── TableCellReportItems.cs
│   ├── TableCells.cs
│   ├── TableColumn.cs
│   ├── TableColumns.cs
│   ├── TableRow.cs
│   ├── TableRows.cs
│   ├── Text.cs
│   └── Value.cs
├── RdlCreator.Tests/
│   ├── Document_Test.cs
│   ├── NestedJsonData.json
│   ├── RdlCreator.Tests.csproj
│   ├── Reports_ChainedTest.cs
│   ├── Reports_DataProviderTest.cs
│   ├── Reports_JsonDataProviderTest.cs
│   ├── Reports_ManualDefinitionTest.cs
│   └── TestData.json
├── RdlCri/
│   ├── AztecCode.cs
│   ├── BarCode128.cs
│   ├── BarCode39.cs
│   ├── BarCodeBookland.cs
│   ├── BarCodeEAN13.cs
│   ├── BarCodeEAN8.cs
│   ├── BarCodeITF14.cs
│   ├── DataMatrix.cs
│   ├── GlobalSuppressions.cs
│   ├── Majorsilence.Reporting.RdlCri.csproj
│   ├── Pdf417Barcode.cs
│   ├── PixelConversions.cs
│   ├── QrCode.cs
│   ├── RdlCri.sln
│   ├── XmlHelpers.cs
│   └── ZxingBarcodes.cs
├── RdlDesign/
│   ├── AssemblyInfo.cs
│   ├── BackgroundCtl.cs
│   ├── BackgroundCtl.resx
│   ├── BackgroundCtl.ru-RU.resx
│   ├── BodyCtl.cs
│   ├── BodyCtl.resx
│   ├── BodyCtl.ru-RU.resx
│   ├── ChartAxisCtl.cs
│   ├── ChartAxisCtl.resx
│   ├── ChartAxisCtl.ru-RU.resx
│   ├── ChartCtl - Copy.cs
│   ├── ChartCtl.cs
│   ├── ChartCtl.resx
│   ├── ChartCtl.ru-RU.resx
│   ├── ChartLegendCtl.cs
│   ├── ChartLegendCtl.resx
│   ├── ChartLegendCtl.ru-RU.resx
│   ├── CodeCtl.cs
│   ├── CodeCtl.resx
│   ├── CodeCtl.ru-RU.resx
│   ├── ColorPicker.cs
│   ├── ColorPickerPopup.Designer.cs
│   ├── ColorPickerPopup.cs
│   ├── ColorPickerPopup.resx
│   ├── Conversions.cs
│   ├── CustomReportItemCtl.cs
│   ├── CustomReportItemCtl.resx
│   ├── DataSetRowsCtl.Designer.cs
│   ├── DataSetRowsCtl.cs
│   ├── DataSetRowsCtl.resx
│   ├── DataSetRowsCtl.ru-RU.resx
│   ├── DataSetsCtl.Designer.cs
│   ├── DataSetsCtl.cs
│   ├── DataSetsCtl.resx
│   ├── DataSetsCtl.ru-RU.resx
│   ├── DesignCtl.Designer.cs
│   ├── DesignCtl.cs
│   ├── DesignCtl.resx
│   ├── DesignCtl.ru-RU.resx
│   ├── DesignEditLines.cs
│   ├── DesignEditLines.resx
│   ├── DesignRuler.cs
│   ├── DesignRuler.resx
│   ├── DesignXmlDraw.cs
│   ├── DesignXmlDraw.resx
│   ├── DesignerUtility.cs
│   ├── DialogAbout.Designer.cs
│   ├── DialogAbout.cs
│   ├── DialogAbout.resx
│   ├── DialogAbout.ru-RU.resx
│   ├── DialogDataSourceRef.Designer.cs
│   ├── DialogDataSourceRef.cs
│   ├── DialogDataSourceRef.resx
│   ├── DialogDataSourceRef.ru-RU.resx
│   ├── DialogDataSources.Designer.cs
│   ├── DialogDataSources.cs
│   ├── DialogDataSources.resx
│   ├── DialogDataSources.ru-RU.resx
│   ├── DialogDatabase.Designer.cs
│   ├── DialogDatabase.cs
│   ├── DialogDatabase.resx
│   ├── DialogDatabase.ru-RU.resx
│   ├── DialogEmbeddedImages.Designer.cs
│   ├── DialogEmbeddedImages.cs
│   ├── DialogEmbeddedImages.resx
│   ├── DialogEmbeddedImages.ru-RU.resx
│   ├── DialogExprEditor.Designer.cs
│   ├── DialogExprEditor.cs
│   ├── DialogExprEditor.resx
│   ├── DialogExprEditor.ru-RU.resx
│   ├── DialogFilterOperator.Designer.cs
│   ├── DialogFilterOperator.cs
│   ├── DialogFilterOperator.resx
│   ├── DialogFilterOperator.ru-RU.resx
│   ├── DialogListOfStrings.Designer.cs
│   ├── DialogListOfStrings.cs
│   ├── DialogListOfStrings.resx
│   ├── DialogListOfStrings.ru-RU.resx
│   ├── DialogNewChart.Designer.cs
│   ├── DialogNewChart.cs
│   ├── DialogNewChart.resx
│   ├── DialogNewChart.ru-RU.resx
│   ├── DialogNewMatrix.Designer.cs
│   ├── DialogNewMatrix.cs
│   ├── DialogNewMatrix.resx
│   ├── DialogNewMatrix.ru-RU.resx
│   ├── DialogNewTable.Designer.cs
│   ├── DialogNewTable.cs
│   ├── DialogNewTable.resx
│   ├── DialogNewTable.ru-RU.resx
│   ├── DialogToolOptions.Designer.cs
│   ├── DialogToolOptions.cs
│   ├── DialogToolOptions.resx
│   ├── DialogToolOptions.ru-RU.resx
│   ├── DialogValidValues.Designer.cs
│   ├── DialogValidValues.cs
│   ├── DialogValidValues.resx
│   ├── DialogValidValues.ru-RU.resx
│   ├── DialogValidateRdl.Designer.cs
│   ├── DialogValidateRdl.cs
│   ├── DialogValidateRdl.resx
│   ├── DialogValidateRdl.ru-RU.resx
│   ├── DrillParametersDialog.Designer.cs
│   ├── DrillParametersDialog.cs
│   ├── DrillParametersDialog.resx
│   ├── DrillParametersDialog.ru-RU.resx
│   ├── FiltersCtl.cs
│   ├── FiltersCtl.resx
│   ├── FiltersCtl.ru-RU.resx
│   ├── FindTab.Designer.cs
│   ├── FindTab.cs
│   ├── FindTab.resx
│   ├── FindTab.ru-RU.resx
│   ├── FontCtl.cs
│   ├── FontCtl.resx
│   ├── FontCtl.ru-RU.resx
│   ├── GridCtl.cs
│   ├── GridCtl.resx
│   ├── GridCtl.ru-RU.resx
│   ├── GroupingCtl.cs
│   ├── GroupingCtl.resx
│   ├── GroupingCtl.ru-RU.resx
│   ├── ImageCtl.cs
│   ├── ImageCtl.resx
│   ├── ImageCtl.ru-RU.resx
│   ├── InteractivityCtl.cs
│   ├── InteractivityCtl.resx
│   ├── InteractivityCtl.ru-RU.resx
│   ├── ListCtl.cs
│   ├── ListCtl.resx
│   ├── ListCtl.ru-RU.resx
│   ├── MDIChild.Designer.cs
│   ├── MDIChild.cs
│   ├── MDIChild.resx
│   ├── MDIChild.ru-RU.resx
│   ├── Majorsilence.Reporting.ReportDesigner.csproj
│   ├── MatrixCtl.cs
│   ├── MatrixCtl.resx
│   ├── MatrixCtl.ru-RU.resx
│   ├── MatrixView.cs
│   ├── ModulesClassesCtl.cs
│   ├── ModulesClassesCtl.resx
│   ├── ModulesClassesCtl.ru-RU.resx
│   ├── PositionCtl.cs
│   ├── PositionCtl.resx
│   ├── PositionCtl.ru-RU.resx
│   ├── Properties/
│   │   ├── Resources.Designer.cs
│   │   └── Resources.resx
│   ├── PropertyCtl.cs
│   ├── PropertyCtl.fr.resx
│   ├── PropertyCtl.resx
│   ├── PropertyCtl.ru-RU.resx
│   ├── PropertyDialog.Designer.cs
│   ├── PropertyDialog.cs
│   ├── PropertyDialog.fr.resx
│   ├── PropertyDialog.resx
│   ├── PropertyDialog.ru-RU.resx
│   ├── QueryParametersCtl.Designer.cs
│   ├── QueryParametersCtl.cs
│   ├── QueryParametersCtl.resx
│   ├── QueryParametersCtl.ru-RU.resx
│   ├── RdlDesign.sln
│   ├── RdlDesigner.Designer.cs
│   ├── RdlDesigner.cs
│   ├── RdlDesigner.fr.resx
│   ├── RdlDesigner.resx
│   ├── RdlDesigner.ru-RU.resx
│   ├── RdlDesignerSavedFileEvent.cs
│   ├── RdlEditPreview.cs
│   ├── RdlEditPreview.fr.resx
│   ├── RdlEditPreview.resx
│   ├── RdlEditPreview.ru-RU.resx
│   ├── RdlProperties/
│   │   ├── Categories.Designer.cs
│   │   ├── Categories.resx
│   │   ├── Categories.ru-RU.resx
│   │   ├── Descriptions.Designer.cs
│   │   ├── Descriptions.resx
│   │   ├── Descriptions.ru-RU.resx
│   │   ├── DisplayNames.Designer.cs
│   │   ├── DisplayNames.resx
│   │   ├── DisplayNames.ru-RU.resx
│   │   ├── LocalizedCategoryAttribute.cs
│   │   ├── LocalizedDescriptionAttribute.cs
│   │   ├── LocalizedDisplayNameAttribute.cs
│   │   ├── PropertyAction.cs
│   │   ├── PropertyAppearance.cs
│   │   ├── PropertyBackground.cs
│   │   ├── PropertyBorder.cs
│   │   ├── PropertyChart.cs
│   │   ├── PropertyDataRegion.cs
│   │   ├── PropertyExpr.cs
│   │   ├── PropertyFilters.cs
│   │   ├── PropertyGrouping.cs
│   │   ├── PropertyImage.cs
│   │   ├── PropertyList.cs
│   │   ├── PropertyLocation.cs
│   │   ├── PropertyMargin.cs
│   │   ├── PropertyMatrix.cs
│   │   ├── PropertyPadding.cs
│   │   ├── PropertyPrintFirstLast.cs
│   │   ├── PropertyRectangle.cs
│   │   ├── PropertyReport.cs
│   │   ├── PropertyReportItem.cs
│   │   ├── PropertySize.cs
│   │   ├── PropertySorting.cs
│   │   ├── PropertySubreport.cs
│   │   ├── PropertyTable.cs
│   │   ├── PropertyTableTab.cs
│   │   ├── PropertyTextbox.cs
│   │   └── PropertyVisibility.cs
│   ├── RdlUserControl.Designer.cs
│   ├── RdlUserControl.cs
│   ├── RdlUserControl.resx
│   ├── RdlUserControl.ru-RU.resx
│   ├── ReportCtl.Designer.cs
│   ├── ReportCtl.cs
│   ├── ReportCtl.fr.resx
│   ├── ReportCtl.resx
│   ├── ReportCtl.ru-RU.resx
│   ├── ReportNames.cs
│   ├── ReportParameterCtl.Designer.cs
│   ├── ReportParameterCtl.cs
│   ├── ReportParameterCtl.fr.resx
│   ├── ReportParameterCtl.resx
│   ├── ReportParameterCtl.ru-RU.resx
│   ├── ReportXmlCtl.cs
│   ├── ReportXmlCtl.resx
│   ├── ReportXmlCtl.ru-RU.resx
│   ├── Resources/
│   │   ├── Strings.Designer.cs
│   │   ├── Strings.fr.resx
│   │   ├── Strings.resx
│   │   └── Strings.ru-RU.resx
│   ├── SQLCtl.Designer.cs
│   ├── SQLCtl.cs
│   ├── SQLCtl.resx
│   ├── SQLCtl.ru-RU.resx
│   ├── SimpleButton.cs
│   ├── SimpleButton.resx
│   ├── SimpleToggle.cs
│   ├── SimpleToggle.resx
│   ├── SingleCtlDialog.Designer.cs
│   ├── SingleCtlDialog.cs
│   ├── SingleCtlDialog.resx
│   ├── SingleCtlDialog.ru-RU.resx
│   ├── SortingCtl.cs
│   ├── SortingCtl.resx
│   ├── SortingCtl.ru-RU.resx
│   ├── StaticSeriesCtl - Copy.cs
│   ├── StaticSeriesCtl.Designer.cs
│   ├── StaticSeriesCtl.cs
│   ├── StaticSeriesCtl.resx
│   ├── StaticSeriesCtl.ru-RU.resx
│   ├── StyleBorderCtl.cs
│   ├── StyleBorderCtl.resx
│   ├── StyleBorderCtl.ru-RU.resx
│   ├── StyleCtl.cs
│   ├── StyleCtl.resx
│   ├── StyleCtl.ru-RU.resx
│   ├── StyleTextCtl.cs
│   ├── StyleTextCtl.resx
│   ├── StyleTextCtl.ru-RU.resx
│   ├── SubreportCtl.cs
│   ├── SubreportCtl.resx
│   ├── SubreportCtl.ru-RU.resx
│   ├── Syntax/
│   │   ├── RdlScriptLexer.cs
│   │   ├── ScintillaExprStyle.cs
│   │   ├── ScintillaSqlStyle.cs
│   │   └── ScintillaXMLStyle.cs
│   ├── TableColumnCtl.cs
│   ├── TableColumnCtl.resx
│   ├── TableColumnCtl.ru-RU.resx
│   ├── TableCtl.cs
│   ├── TableCtl.resx
│   ├── TableCtl.ru-RU.resx
│   ├── TableRowCtl.cs
│   ├── TableRowCtl.resx
│   ├── TableRowCtl.ru-RU.resx
│   ├── ToolStripUserZoomControl.cs
│   ├── Undo.cs
│   ├── UserZoomControl.Designer.cs
│   ├── UserZoomControl.cs
│   ├── VisibilityCtl.cs
│   ├── VisibilityCtl.resx
│   ├── VisibilityCtl.ru-RU.resx
│   ├── app.manifest
│   └── desktop.ini
├── RdlDesktop/
│   ├── BackgroundThread.cs
│   ├── ConnectionThread.cs
│   ├── ConsoleThread.cs
│   ├── FileCache.cs
│   ├── FileReadCache.cs
│   ├── RdlDesktop.cs
│   ├── RdlDesktop.csproj
│   ├── RdlDesktop.sln
│   ├── ReportRender.cs
│   ├── Resources/
│   │   ├── Strings.Designer.cs
│   │   ├── Strings.resx
│   │   └── Strings.ru-RU.resx
│   └── config.xml
├── RdlEngine/
│   ├── Definition/
│   │   ├── Action.cs
│   │   ├── Axis.cs
│   │   ├── AxisTickMarks.cs
│   │   ├── Body.cs
│   │   ├── CategoryAxis.cs
│   │   ├── CategoryGrouping.cs
│   │   ├── CategoryGroupings.cs
│   │   ├── Chart.cs
│   │   ├── ChartBar.cs
│   │   ├── ChartBase.cs
│   │   ├── ChartBubble.cs
│   │   ├── ChartColumn.cs
│   │   ├── ChartData.cs
│   │   ├── ChartElementOutput.cs
│   │   ├── ChartExpression.cs
│   │   ├── ChartGridLines.cs
│   │   ├── ChartLayout.cs
│   │   ├── ChartLine.cs
│   │   ├── ChartMap.cs
│   │   ├── ChartMapData.cs
│   │   ├── ChartPalette.cs
│   │   ├── ChartPie.cs
│   │   ├── ChartSeries.cs
│   │   ├── ChartSubType.cs
│   │   ├── ChartType.cs
│   │   ├── Classes.cs
│   │   ├── Code.cs
│   │   ├── CodeModule.cs
│   │   ├── CodeModules.cs
│   │   ├── ColumnGrouping.cs
│   │   ├── ColumnGroupings.cs
│   │   ├── ConnectionProperties.cs
│   │   ├── Corner.cs
│   │   ├── Custom.cs
│   │   ├── CustomReportItem.cs
│   │   ├── DataElementOutput.cs
│   │   ├── DataElementStyle.cs
│   │   ├── DataElementStyleEnum.cs
│   │   ├── DataInstanceElementOutput.cs
│   │   ├── DataLabel.cs
│   │   ├── DataLabelPosition.cs
│   │   ├── DataPoint.cs
│   │   ├── DataPoints.cs
│   │   ├── DataRegion.cs
│   │   ├── DataSetDefn.cs
│   │   ├── DataSetReference.cs
│   │   ├── DataSetsDefn.cs
│   │   ├── DataSourceDefn.cs
│   │   ├── DataSourceReference.cs
│   │   ├── DataSourcesDefn.cs
│   │   ├── DataType.cs
│   │   ├── DataValue.cs
│   │   ├── DataValues.cs
│   │   ├── DefaultValue.cs
│   │   ├── Details.cs
│   │   ├── Drillthrough.cs
│   │   ├── DrillthroughParameter.cs
│   │   ├── DrillthroughParameters.cs
│   │   ├── DynamicCategories.cs
│   │   ├── DynamicColumns.cs
│   │   ├── DynamicExpression.cs
│   │   ├── DynamicRows.cs
│   │   ├── DynamicSeries.cs
│   │   ├── EMFConverter/
│   │   │   └── EMFRecords/
│   │   │       ├── EMF.cs
│   │   │       ├── EMFDrawingRecords/
│   │   │       │   ├── Comment.cs
│   │   │       │   ├── DrawBase.cs
│   │   │       │   ├── DrawCurve.cs
│   │   │       │   ├── DrawEllipse.cs
│   │   │       │   ├── DrawLines.cs
│   │   │       │   ├── DrawPie.cs
│   │   │       │   ├── DrawRects.cs
│   │   │       │   ├── DrawString.cs
│   │   │       │   ├── FillEllipse.cs
│   │   │       │   ├── FillPie.cs
│   │   │       │   ├── FillPolygon.cs
│   │   │       │   └── FillRects.cs
│   │   │       ├── EMFObjects/
│   │   │       │   ├── EMFBrush.cs
│   │   │       │   ├── EMFFont.cs
│   │   │       │   ├── EMFPen.cs
│   │   │       │   └── EMFStringFormat.cs
│   │   │       ├── EMFRecordObject.cs
│   │   │       └── EMFTransform/
│   │   │           └── EMFSetPageTransform.cs
│   │   ├── EmbeddedImage.cs
│   │   ├── EmbeddedImages.cs
│   │   ├── Expression.cs
│   │   ├── ExpressionType.cs
│   │   ├── Field.cs
│   │   ├── Fields.cs
│   │   ├── Filter.cs
│   │   ├── FilterOperator.cs
│   │   ├── FilterValue.cs
│   │   ├── FilterValues.cs
│   │   ├── Filters.cs
│   │   ├── Footer.cs
│   │   ├── GroupEntry.cs
│   │   ├── GroupExpression.cs
│   │   ├── GroupExpressions.cs
│   │   ├── Grouping.cs
│   │   ├── Header.cs
│   │   ├── Image.cs
│   │   ├── ImageSizing.cs
│   │   ├── ImageSource.cs
│   │   ├── Legend.cs
│   │   ├── LegendLayout.cs
│   │   ├── LegendPosition.cs
│   │   ├── Line.cs
│   │   ├── List.cs
│   │   ├── Marker.cs
│   │   ├── MarkerType.cs
│   │   ├── Matrix.cs
│   │   ├── MatrixCell.cs
│   │   ├── MatrixCellDataElementOutput.cs
│   │   ├── MatrixCellEntry.cs
│   │   ├── MatrixCells.cs
│   │   ├── MatrixColumn.cs
│   │   ├── MatrixColumns.cs
│   │   ├── MatrixEntry.cs
│   │   ├── MatrixLayoutDirection.cs
│   │   ├── MatrixRow.cs
│   │   ├── MatrixRows.cs
│   │   ├── Name.cs
│   │   ├── NameLookup.cs
│   │   ├── PageFooter.cs
│   │   ├── PageHeader.cs
│   │   ├── ParameterValue.cs
│   │   ├── ParameterValues.cs
│   │   ├── PlotArea.cs
│   │   ├── PlotType.cs
│   │   ├── Query.cs
│   │   ├── QueryColumn.cs
│   │   ├── QueryCommandType.cs
│   │   ├── QueryParameter.cs
│   │   ├── QueryParameters.cs
│   │   ├── RDLParser.cs
│   │   ├── RSize.cs
│   │   ├── Rectangle.cs
│   │   ├── ReportClass.cs
│   │   ├── ReportDefn.cs
│   │   ├── ReportItem.cs
│   │   ├── ReportItems.cs
│   │   ├── ReportLink.cs
│   │   ├── ReportLog.cs
│   │   ├── ReportParameter.cs
│   │   ├── ReportParameters.cs
│   │   ├── Row.cs
│   │   ├── RowGrouping.cs
│   │   ├── RowGroupings.cs
│   │   ├── Rows.cs
│   │   ├── SeriesGrouping.cs
│   │   ├── SeriesGroupings.cs
│   │   ├── SortBy.cs
│   │   ├── SortDirection.cs
│   │   ├── Sorting.cs
│   │   ├── StaticCategories.cs
│   │   ├── StaticColumn.cs
│   │   ├── StaticColumns.cs
│   │   ├── StaticMember.cs
│   │   ├── StaticRow.cs
│   │   ├── StaticRows.cs
│   │   ├── StaticSeries.cs
│   │   ├── Style.cs
│   │   ├── StyleBackgroundImage.cs
│   │   ├── StyleBackgroundImageSource.cs
│   │   ├── StyleBorderColor.cs
│   │   ├── StyleBorderStyle.cs
│   │   ├── StyleBorderWidth.cs
│   │   ├── Subreport.cs
│   │   ├── SubreportParameter.cs
│   │   ├── SubreportParameters.cs
│   │   ├── Subtotal.cs
│   │   ├── SubtotalPosition.cs
│   │   ├── Table.cs
│   │   ├── TableCell.cs
│   │   ├── TableCells.cs
│   │   ├── TableColumn.cs
│   │   ├── TableColumns.cs
│   │   ├── TableGroup.cs
│   │   ├── TableGroups.cs
│   │   ├── TableRow.cs
│   │   ├── TableRows.cs
│   │   ├── Textbox.cs
│   │   ├── ThreeDProperties.cs
│   │   ├── ThreeDPropertiesDrawingStyle.cs
│   │   ├── ThreeDPropertiesProjectionMode.cs
│   │   ├── ThreeDPropertiesShading.cs
│   │   ├── Title.cs
│   │   ├── TitlePosition.cs
│   │   ├── ToggleImage.cs
│   │   ├── TrueFalseAuto.cs
│   │   ├── ValidValues.cs
│   │   ├── ValueAxis.cs
│   │   ├── Values.cs
│   │   └── Visibility.cs
│   ├── ExprParser/
│   │   ├── CharReader.cs
│   │   ├── LaxBinder.cs
│   │   ├── Lexer.cs
│   │   ├── Parser.cs
│   │   ├── ParserException.cs
│   │   ├── Token.cs
│   │   ├── TokenList.cs
│   │   └── TokenTypes.cs
│   ├── Functions/
│   │   ├── Constant.cs
│   │   ├── ConstantBoolean.cs
│   │   ├── ConstantDateTime.cs
│   │   ├── ConstantDecimal.cs
│   │   ├── ConstantDouble.cs
│   │   ├── ConstantError.cs
│   │   ├── ConstantInteger.cs
│   │   ├── ConstantString.cs
│   │   ├── Financial.cs
│   │   ├── FunctionAggr.cs
│   │   ├── FunctionAggrArray.cs
│   │   ├── FunctionAggrAvg.cs
│   │   ├── FunctionAggrCount.cs
│   │   ├── FunctionAggrCountDistinct.cs
│   │   ├── FunctionAggrCountRows.cs
│   │   ├── FunctionAggrFirst.cs
│   │   ├── FunctionAggrLast.cs
│   │   ├── FunctionAggrLevel.cs
│   │   ├── FunctionAggrMax.cs
│   │   ├── FunctionAggrMin.cs
│   │   ├── FunctionAggrNext.cs
│   │   ├── FunctionAggrPrevious.cs
│   │   ├── FunctionAggrRvAvg.cs
│   │   ├── FunctionAggrRvCount.cs
│   │   ├── FunctionAggrRvMax.cs
│   │   ├── FunctionAggrRvMin.cs
│   │   ├── FunctionAggrRvStdev.cs
│   │   ├── FunctionAggrRvStdevp.cs
│   │   ├── FunctionAggrRvSum.cs
│   │   ├── FunctionAggrRvVar.cs
│   │   ├── FunctionAggrRvVarp.cs
│   │   ├── FunctionAggrStdev.cs
│   │   ├── FunctionAggrStdevp.cs
│   │   ├── FunctionAggrSum.cs
│   │   ├── FunctionAggrVar.cs
│   │   ├── FunctionAggrVarp.cs
│   │   ├── FunctionAnd.cs
│   │   ├── FunctionBinary.cs
│   │   ├── FunctionChoose.cs
│   │   ├── FunctionCode.cs
│   │   ├── FunctionCustomInstance.cs
│   │   ├── FunctionCustomStatic.cs
│   │   ├── FunctionDiv.cs
│   │   ├── FunctionDivDecimal.cs
│   │   ├── FunctionExecutionTime.cs
│   │   ├── FunctionExp.cs
│   │   ├── FunctionField.cs
│   │   ├── FunctionFieldCollection.cs
│   │   ├── FunctionFieldIsMissing.cs
│   │   ├── FunctionFormat.cs
│   │   ├── FunctionGlobalCollection.cs
│   │   ├── FunctionIif.cs
│   │   ├── FunctionMinus.cs
│   │   ├── FunctionMinusDecimal.cs
│   │   ├── FunctionMinusInt32.cs
│   │   ├── FunctionModulus.cs
│   │   ├── FunctionMult.cs
│   │   ├── FunctionMultDecimal.cs
│   │   ├── FunctionNot.cs
│   │   ├── FunctionOr.cs
│   │   ├── FunctionPageNumber.cs
│   │   ├── FunctionParameterCollection.cs
│   │   ├── FunctionPlus.cs
│   │   ├── FunctionPlusDecimal.cs
│   │   ├── FunctionPlusInt32.cs
│   │   ├── FunctionPlusString.cs
│   │   ├── FunctionRelopEQ.cs
│   │   ├── FunctionRelopGT.cs
│   │   ├── FunctionRelopGTE.cs
│   │   ├── FunctionRelopLT.cs
│   │   ├── FunctionRelopLTE.cs
│   │   ├── FunctionRelopNE.cs
│   │   ├── FunctionReportFolder.cs
│   │   ├── FunctionReportItemCollection.cs
│   │   ├── FunctionReportName.cs
│   │   ├── FunctionReportParameter.cs
│   │   ├── FunctionReportParameterLabel.cs
│   │   ├── FunctionSwitch.cs
│   │   ├── FunctionSystem.cs
│   │   ├── FunctionTextbox.cs
│   │   ├── FunctionTotalPages.cs
│   │   ├── FunctionUnaryMinus.cs
│   │   ├── FunctionUnaryMinusDecimal.cs
│   │   ├── FunctionUnaryMinusInteger.cs
│   │   ├── FunctionUserCollection.cs
│   │   ├── FunctionUserID.cs
│   │   ├── FunctionUserLanguage.cs
│   │   ├── ICacheData.cs
│   │   ├── IExpr.cs
│   │   ├── Identifier.cs
│   │   ├── IdentifierKey.cs
│   │   └── VBFunctions.cs
│   ├── GlobalSuppressions.cs
│   ├── GraphicsExtended.cs
│   ├── Majorsilence.Reporting.RdlEngine.csproj
│   ├── PageDrawing.cs
│   ├── RDLBaseEBN.cs
│   ├── RdlEngine.sln
│   ├── RdlEngineConfig.xml
│   ├── RdlException.cs
│   ├── RdlPrint.cs
│   ├── Render/
│   │   ├── CompilationExtensions.cs
│   │   ├── DelimitedTextWriter.cs
│   │   ├── ExcelConverter/
│   │   │   ├── ExcelCell.cs
│   │   │   ├── ExcelCellStyle.cs
│   │   │   ├── ExcelCellsBuilder.cs
│   │   │   ├── ExcelColumn.cs
│   │   │   ├── ExcelImage.cs
│   │   │   ├── ExcelLine.cs
│   │   │   ├── ExcelRow.cs
│   │   │   └── ExcelTable.cs
│   │   ├── HtmlConverter/
│   │   │   ├── RenderHtmlTable.cs
│   │   │   └── TablePositioner.cs
│   │   ├── IPresent.cs
│   │   ├── IStreamGen.cs
│   │   ├── MemoryStreamGen.cs
│   │   ├── MhtConverter/
│   │   │   ├── MhtBuilder.cs
│   │   │   ├── MhtWebClientLocal.cs
│   │   │   └── MhtWebFile.cs
│   │   ├── OneFileStreamGen.cs
│   │   ├── PdfPageSize.cs
│   │   ├── ProcessReport.cs
│   │   ├── RenderBase.cs
│   │   ├── RenderCsv.cs
│   │   ├── RenderExcel2007.cs
│   │   ├── RenderExcel2007DataOnly.cs
│   │   ├── RenderHtml.cs
│   │   ├── RenderPdf_iTextSharp.cs
│   │   ├── RenderRtf.cs
│   │   ├── RenderTif.cs
│   │   ├── RenderXml.cs
│   │   └── StreamGen.cs
│   ├── Resources/
│   │   ├── Strings.Designer.cs
│   │   ├── Strings.resx
│   │   ├── Strings.ru-RU.Designer.cs
│   │   └── Strings.ru-RU.resx
│   ├── Runtime/
│   │   ├── DataSet.cs
│   │   ├── DataSets.cs
│   │   ├── DataSource.cs
│   │   ├── DataSources.cs
│   │   ├── ICustomReportItem.cs
│   │   ├── ImageQualityManager.cs
│   │   ├── Page.cs
│   │   ├── PageItems/
│   │   │   ├── PageCurve.cs
│   │   │   ├── PageEllipse.cs
│   │   │   ├── PageImage.cs
│   │   │   ├── PageItem.cs
│   │   │   ├── PageLine.cs
│   │   │   ├── PagePie.cs
│   │   │   ├── PagePolygon.cs
│   │   │   ├── PageRectangle.cs
│   │   │   └── PageText.cs
│   │   ├── PageTextHtml.cs
│   │   ├── PageTextHtmlCmdLexer.cs
│   │   ├── PageTextHtmlLexer.cs
│   │   ├── Pages.cs
│   │   ├── ParameterLexer.cs
│   │   ├── RdlEngineConfig.cs
│   │   ├── Report.cs
│   │   ├── StyleInfo.cs
│   │   ├── XmlUtil.cs
│   │   └── ZipWrap.cs
│   ├── Utility/
│   │   ├── HttpClientExtension.cs
│   │   ├── Measurement.cs
│   │   └── Paths.cs
│   ├── usa_map.xml
│   └── world_map.xml
├── RdlGtk3/
│   ├── CairoPdfWriter.cs
│   ├── Extensions/
│   │   └── CairoExtensions.cs
│   ├── GlobalSuppressions.cs
│   ├── MainWindow.cs
│   ├── Majorsilence.Reporting.RdlGtk3.csproj
│   ├── ParameterPrompt.cs
│   ├── RenderCairo.cs
│   ├── ReportArea.cs
│   ├── ReportExporter.cs
│   ├── ReportViewer.cs
│   └── app.desktop
├── RdlGtk3Viewer/
│   ├── Program.cs
│   ├── RdlGtk3Viewer.csproj
│   └── runtimeconfig.template.json
├── RdlMapFile/
│   ├── DPSimp.cs
│   ├── DesignXmlDraw.cs
│   ├── DesignXmlDraw.resx
│   ├── DialogAbout.Designer.cs
│   ├── DialogAbout.cs
│   ├── DialogAbout.resx
│   ├── DialogAbout.ru-RU.resx
│   ├── DialogFindByKey.Designer.cs
│   ├── DialogFindByKey.cs
│   ├── DialogFindByKey.resx
│   ├── DialogFindByKey.ru-RU.resx
│   ├── MapFile.Designer.cs
│   ├── MapFile.cs
│   ├── MapFile.resx
│   ├── MapFile.ru-RU.resx
│   ├── Properties/
│   │   ├── Resources.Designer.cs
│   │   ├── Resources.resx
│   │   ├── Settings.Designer.cs
│   │   └── Settings.settings
│   ├── RdlMapFile.cs
│   ├── RdlMapFile.csproj
│   ├── RdlMapFile.sln
│   ├── RdlProperties/
│   │   ├── Categories.Designer.cs
│   │   ├── Categories.resx
│   │   ├── Categories.ru-RU.resx
│   │   ├── Descriptions.Designer.cs
│   │   ├── Descriptions.resx
│   │   ├── Descriptions.ru-RU.resx
│   │   ├── DisplayNames.Designer.cs
│   │   ├── DisplayNames.resx
│   │   ├── DisplayNames.ru-RU.resx
│   │   ├── LocalizedCategoryAttribute.cs
│   │   ├── LocalizedDescriptionAttribute.cs
│   │   ├── LocalizedDisplayNameAttribute.cs
│   │   ├── PropertyBase.cs
│   │   ├── PropertyLine.cs
│   │   ├── PropertyPolygon.cs
│   │   └── PropertyText.cs
│   ├── Resources/
│   │   ├── Strings.Designer.cs
│   │   ├── Strings.resx
│   │   └── Strings.ru-RU.resx
│   ├── ShapeFile.cs
│   └── Undo.cs
├── RdlReader/
│   ├── DialogAbout.Designer.cs
│   ├── DialogAbout.cs
│   ├── DialogAbout.resx
│   ├── DialogAbout.ru-RU.resx
│   ├── MDIChild.Designer.cs
│   ├── MDIChild.cs
│   ├── MDIChild.resx
│   ├── Properties/
│   │   ├── Resources.Designer.cs
│   │   └── Resources.resx
│   ├── RdlReader.Designer.cs
│   ├── RdlReader.cs
│   ├── RdlReader.csproj
│   ├── RdlReader.fr.resx
│   ├── RdlReader.resx
│   ├── RdlReader.ru-RU.resx
│   ├── Resources/
│   │   ├── Strings.Designer.cs
│   │   ├── Strings.resx
│   │   └── Strings.ru-RU.resx
│   ├── ZoomTo.Designer.cs
│   ├── ZoomTo.cs
│   ├── ZoomTo.resx
│   ├── ZoomTo.ru-RU.resx
│   └── app.manifest
├── RdlTests/
│   ├── DataTests/
│   │   ├── AssemblyInfo.cs
│   │   ├── DataTests.cs
│   │   ├── DataTests.csproj
│   │   └── DataTests.resx
│   ├── RdlTests.sln
│   └── TestLibrary/
│       ├── Properties/
│       │   └── AssemblyInfo.cs
│       ├── TestClass.cs
│       └── TestLibrary.csproj
├── RdlViewer/
│   ├── DataSourcePassword.Designer.cs
│   ├── DataSourcePassword.cs
│   ├── DataSourcePassword.resx
│   ├── DataSourcePassword.ru-RU.resx
│   ├── DialogMessages.Designer.cs
│   ├── DialogMessages.cs
│   ├── DialogMessages.resx
│   ├── DialogMessages.ru-RU.resx
│   ├── PageDrawing.cs
│   ├── PageDrawing.resx
│   ├── RdlViewer.Designer.cs
│   ├── RdlViewer.cs
│   ├── RdlViewer.csproj
│   ├── RdlViewer.fr.resx
│   ├── RdlViewer.resx
│   ├── RdlViewer.ru-RU.resx
│   ├── RdlViewer.sln
│   ├── RdlViewerFind.cs
│   ├── RdlViewerFind.resx
│   ├── RdlViewerFind.ru-RU.resx
│   ├── Resources/
│   │   ├── Strings.Designer.cs
│   │   ├── Strings.resx
│   │   └── Strings.ru-RU.resx
│   └── ViewerToolstrip.cs
├── RdlViewer.Tests/
│   ├── ParameterSettingMethodsTest.cs
│   ├── RdlEngineConfig.xml
│   └── RdlViewer.Tests.csproj
├── Readme.md
├── References/
│   ├── Linux.txt
│   ├── dot net 4/
│   │   └── xwt-license.txt
│   └── postgresql-license.txt
├── Release-Builds/
│   └── setup-majorsilence-reporting.warsetup
├── ReportDesigner/
│   ├── Program.cs
│   └── ReportDesigner.csproj
├── ReportTests/
│   ├── DatabaseInfo.cs
│   ├── ExampleTest.cs
│   ├── ExcelValetTests.cs
│   ├── FunctionTest.cs
│   ├── MajorsilenceDarawingColorTranslatorTests.cs
│   ├── RenderPdf_Base64ImageParameter.cs
│   ├── RenderPdf_WithBarcodeParameter.cs
│   ├── RenderPdf_iTextSharpTests.cs
│   ├── ReportDefnDisposeTest.cs
│   ├── ReportTests.csproj
│   ├── Reports/
│   │   ├── BaseTestReport.rdl
│   │   ├── ChartTypes.rdl
│   │   ├── FunctionTest.rdl
│   │   ├── LineObjects.rdl
│   │   ├── ListReport.rdl
│   │   ├── MatrixExample.rdl
│   │   ├── WorldFacts.rdl
│   │   ├── WorldFacts.xml
│   │   └── testdata.rdl
│   ├── Utils/
│   │   ├── GeneralUtils.cs
│   │   ├── OpenXmlUtils.cs
│   │   ├── RandomDateTime.cs
│   │   └── RdlUtils.cs
│   └── iTextSharpTests.cs
├── ReportTests.Windows/
│   ├── DesignerUtilityTests.cs
│   ├── ReportTests.Windows.csproj
│   └── StringEncryptionTests.cs
├── Specification.md
├── Tests/
│   ├── TestParameterNameExtraction.cs
│   └── Tests.csproj
├── build-mac-wine-package.sh
├── build-release-rdlcmd-linux.ps1
├── build-release.ps1
└── jekyll_site/
    ├── .gitattributes
    ├── .gitignore
    ├── CNAME
    ├── _config.yml
    ├── _includes/
    │   ├── blogpost/
    │   │   ├── author.html
    │   │   ├── date.html
    │   │   ├── meta.html
    │   │   └── tags.html
    │   ├── blogpost.html
    │   ├── disqus.html
    │   ├── footer.html
    │   ├── opengraph.html
    │   ├── page_header.html
    │   ├── search.html
    │   └── toc.html
    ├── _layouts/
    │   ├── base.html
    │   ├── main.html
    │   └── post.html
    ├── _posts/
    │   └── 2025-12-28-quick-start.md
    ├── assets/
    │   ├── css/
    │   │   ├── bundle.css
    │   │   └── main.css
    │   └── js/
    │       ├── bundle.js
    │       └── main.js
    ├── index.html
    ├── posts/
    │   ├── index.html
    │   └── listings.html
    ├── robots.txt
    ├── schemas/
    │   └── reporting/
    │       └── 2025/
    │           └── 12/
    │               └── reportdefinition/
    │                   ├── ReportDefinition.xsd
    │                   └── index.html
    └── stylesheets/
        ├── menu.css
        ├── normalize.css
        └── vertical-responsive-menu.css

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
# Remove the line below if you want to inherit .editorconfig settings from higher directories
root = true

# C# files
[*.cs]

#### Core EditorConfig Options ####

# Indentation and spacing
indent_size = 4
indent_style = space
tab_width = 4

# New line preferences
end_of_line = crlf
insert_final_newline = false

#### .NET Code Actions ####

# Type members
dotnet_hide_advanced_members = false
dotnet_member_insertion_location = with_other_members_of_the_same_kind
dotnet_property_generation_behavior = prefer_throwing_properties

# Symbol search
dotnet_search_reference_assemblies = true

#### .NET Coding Conventions ####

# Organize usings
dotnet_separate_import_directive_groups = false
dotnet_sort_system_directives_first = false
file_header_template = unset

# this. and Me. preferences
dotnet_style_qualification_for_event = false
dotnet_style_qualification_for_field = false
dotnet_style_qualification_for_method = false
dotnet_style_qualification_for_property = false

# Language keywords vs BCL types preferences
dotnet_style_predefined_type_for_locals_parameters_members = true
dotnet_style_predefined_type_for_member_access = true

# Parentheses preferences
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity
dotnet_style_parentheses_in_other_operators = never_if_unnecessary
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity

# Modifier preferences
dotnet_style_require_accessibility_modifiers = for_non_interface_members

# Expression-level preferences
dotnet_prefer_system_hash_code = true
dotnet_style_coalesce_expression = true
dotnet_style_collection_initializer = true
dotnet_style_explicit_tuple_names = true
dotnet_style_namespace_match_folder = true
dotnet_style_null_propagation = true
dotnet_style_object_initializer = true
dotnet_style_operator_placement_when_wrapping = beginning_of_line
dotnet_style_prefer_auto_properties = true
dotnet_style_prefer_collection_expression = when_types_loosely_match
dotnet_style_prefer_compound_assignment = true
dotnet_style_prefer_conditional_expression_over_assignment = true
dotnet_style_prefer_conditional_expression_over_return = true
dotnet_style_prefer_foreach_explicit_cast_in_source = when_strongly_typed
dotnet_style_prefer_inferred_anonymous_type_member_names = true
dotnet_style_prefer_inferred_tuple_names = true
dotnet_style_prefer_is_null_check_over_reference_equality_method = true
dotnet_style_prefer_simplified_boolean_expressions = true
dotnet_style_prefer_simplified_interpolation = true

# Field preferences
dotnet_style_readonly_field = true

# Parameter preferences
dotnet_code_quality_unused_parameters = all

# Suppression preferences
dotnet_remove_unnecessary_suppression_exclusions = none

# New line preferences
dotnet_style_allow_multiple_blank_lines_experimental = true
dotnet_style_allow_statement_immediately_after_block_experimental = true

#### C# Coding Conventions ####

# var preferences
csharp_style_var_elsewhere = false
csharp_style_var_for_built_in_types = false
csharp_style_var_when_type_is_apparent = false

# Expression-bodied members
csharp_style_expression_bodied_accessors = true
csharp_style_expression_bodied_constructors = false
csharp_style_expression_bodied_indexers = true
csharp_style_expression_bodied_lambdas = true
csharp_style_expression_bodied_local_functions = false
csharp_style_expression_bodied_methods = false
csharp_style_expression_bodied_operators = false
csharp_style_expression_bodied_properties = true

# Pattern matching preferences
csharp_style_pattern_matching_over_as_with_null_check = true
csharp_style_pattern_matching_over_is_with_cast_check = true
csharp_style_prefer_extended_property_pattern = true
csharp_style_prefer_not_pattern = true
csharp_style_prefer_pattern_matching = true
csharp_style_prefer_switch_expression = true

# Null-checking preferences
csharp_style_conditional_delegate_call = true

# Modifier preferences
csharp_prefer_static_anonymous_function = true
csharp_prefer_static_local_function = true
csharp_preferred_modifier_order = public,private,protected,internal,file,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async
csharp_style_prefer_readonly_struct = true
csharp_style_prefer_readonly_struct_member = true

# Code-block preferences
csharp_prefer_braces = true
csharp_prefer_simple_using_statement = true
csharp_prefer_system_threading_lock = true
csharp_style_namespace_declarations = block_scoped
csharp_style_prefer_method_group_conversion = true
csharp_style_prefer_primary_constructors = true
csharp_style_prefer_top_level_statements = true

# Expression-level preferences
csharp_prefer_simple_default_expression = true
csharp_style_deconstructed_variable_declaration = true
csharp_style_implicit_object_creation_when_type_is_apparent = true
csharp_style_inlined_variable_declaration = true
csharp_style_prefer_index_operator = true
csharp_style_prefer_local_over_anonymous_function = true
csharp_style_prefer_null_check_over_type_check = true
csharp_style_prefer_range_operator = true
csharp_style_prefer_tuple_swap = true
csharp_style_prefer_utf8_string_literals = true
csharp_style_throw_expression = true
csharp_style_unused_value_assignment_preference = discard_variable
csharp_style_unused_value_expression_statement_preference = discard_variable

# 'using' directive preferences
csharp_using_directive_placement = outside_namespace

# New line preferences
csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true
csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = true
csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = true
csharp_style_allow_blank_lines_between_consecutive_braces_experimental = true
csharp_style_allow_embedded_statements_on_same_line_experimental = true

#### C# Formatting Rules ####

# New line preferences
csharp_new_line_before_catch = true
csharp_new_line_before_else = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_open_brace = all
csharp_new_line_between_query_expression_clauses = true

# Indentation preferences
csharp_indent_block_contents = true
csharp_indent_braces = false
csharp_indent_case_contents = true
csharp_indent_case_contents_when_block = true
csharp_indent_labels = one_less_than_current
csharp_indent_switch_labels = true

# Space preferences
csharp_space_after_cast = false
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_after_comma = true
csharp_space_after_dot = false
csharp_space_after_keywords_in_control_flow_statements = true
csharp_space_after_semicolon_in_for_statement = true
csharp_space_around_binary_operators = before_and_after
csharp_space_around_declaration_statements = false
csharp_space_before_colon_in_inheritance_clause = true
csharp_space_before_comma = false
csharp_space_before_dot = false
csharp_space_before_open_square_brackets = false
csharp_space_before_semicolon_in_for_statement = false
csharp_space_between_empty_square_brackets = false
csharp_space_between_method_call_empty_parameter_list_parentheses = false
csharp_space_between_method_call_name_and_opening_parenthesis = false
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_declaration_name_and_open_parenthesis = false
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_parentheses = false
csharp_space_between_square_brackets = false

# Wrapping preferences
csharp_preserve_single_line_blocks = true
csharp_preserve_single_line_statements = true

#### Naming styles ####

# Naming rules

dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i

dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case

dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case

# Symbol specifications

dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.interface.required_modifiers = 

dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.types.required_modifiers = 

dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.non_field_members.required_modifiers = 

# Naming styles

dotnet_naming_style.pascal_case.required_prefix = 
dotnet_naming_style.pascal_case.required_suffix = 
dotnet_naming_style.pascal_case.word_separator = 
dotnet_naming_style.pascal_case.capitalization = pascal_case

dotnet_naming_style.begins_with_i.required_prefix = I
dotnet_naming_style.begins_with_i.required_suffix = 
dotnet_naming_style.begins_with_i.word_separator = 
dotnet_naming_style.begins_with_i.capitalization = pascal_case

# CA2000: Dispose objects before losing scope
#dotnet_diagnostic.CA2000.severity = warning

# CA2007: Do not directly await a Task without calling ConfigureAwait
#dotnet_diagnostic.CA2007.severity = warning

# CA4014: async code not awaited.  See https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-messages/cs4014
dotnet_diagnostic.CA4014.severity = error

================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto

# Custom for Visual Studio
*.cs     diff=csharp
*.sln    merge=union
*.csproj merge=union
*.vbproj merge=union
*.fsproj merge=union
*.dbproj merge=union

# Standard to msysgit
*.doc	 diff=astextplain
*.DOC	 diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot  diff=astextplain
*.DOT  diff=astextplain
*.pdf  diff=astextplain
*.PDF	 diff=astextplain
*.rtf	 diff=astextplain
*.RTF	 diff=astextplain


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):**
 - OS: [e.g. iOS]
 - Browser [e.g. chrome, safari]
 - Version [e.g. 22]

**Smartphone (please complete the following information):**
 - Device: [e.g. iPhone6]
 - OS: [e.g. iOS8.1]
 - Browser [e.g. stock browser, safari]
 - Version [e.g. 22]

**Additional context**
Add any other context about the problem here.


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.


================================================
FILE: .github/dependabot.yml
================================================
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2
updates:
  - package-ecosystem: "" # See documentation for possible values
    directory: "/" # Location of package manifests
    schedule:
      interval: "weekly"




================================================
FILE: .github/workflows/codeql.yml
================================================
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL Advanced"

on:
  push:
    branches: [ "master" ]
  pull_request:
    branches: [ "master" ]
  schedule:
    - cron: '23 17 * * 5'

jobs:
  analyze:
    name: Analyze (${{ matrix.language }})
    # Runner size impacts CodeQL analysis time. To learn more, please see:
    #   - https://gh.io/recommended-hardware-resources-for-running-codeql
    #   - https://gh.io/supported-runners-and-hardware-resources
    #   - https://gh.io/using-larger-runners (GitHub.com only)
    # Consider using larger runners or machines with greater resources for possible analysis time improvements.
    runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
    permissions:
      # required for all workflows
      security-events: write

      # required to fetch internal or private CodeQL packs
      packages: read

      # only required for workflows in private repositories
      actions: read
      contents: read

    strategy:
      fail-fast: false
      matrix:
        include:
        - language: actions
          build-mode: none
        - language: csharp
          build-mode: none
        - language: javascript-typescript
          build-mode: none
        - language: python
          build-mode: none
        - language: ruby
          build-mode: none
        # CodeQL supports the following values keywords for 'language': 'actions', 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'rust', 'swift'
        # Use `c-cpp` to analyze code written in C, C++ or both
        # Use 'java-kotlin' to analyze code written in Java, Kotlin or both
        # Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
        # To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
        # see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
        # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
        # your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    # Add any setup steps before running the `github/codeql-action/init` action.
    # This includes steps like installing compilers or runtimes (`actions/setup-node`
    # or others). This is typically only required for manual builds.
    # - name: Setup runtime (example)
    #   uses: actions/setup-example@v1

    # Initializes the CodeQL tools for scanning.
    - name: Initialize CodeQL
      uses: github/codeql-action/init@v4
      with:
        languages: ${{ matrix.language }}
        build-mode: ${{ matrix.build-mode }}
        # If you wish to specify custom queries, you can do so here or in a config file.
        # By default, queries listed here will override any specified in a config file.
        # Prefix the list here with "+" to use these queries and those in the config file.

        # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
        # queries: security-extended,security-and-quality

    # If the analyze step fails for one of the languages you are analyzing with
    # "We were unable to automatically build your code", modify the matrix above
    # to set the build mode to "manual" for that language. Then modify this step
    # to build your code.
    # ℹ️ Command-line programs to run using the OS shell.
    # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
    - name: Run manual build steps
      if: matrix.build-mode == 'manual'
      shell: bash
      run: |
        echo 'If you are using a "manual" build mode for one or more of the' \
          'languages you are analyzing, replace this with the commands to build' \
          'your code, for example:'
        echo '  make bootstrap'
        echo '  make release'
        exit 1

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v4
      with:
        category: "/language:${{matrix.language}}"


================================================
FILE: .github/workflows/jekyll-gh-pages.yml
================================================
# Sample workflow for building and deploying a Jekyll site to GitHub Pages
name: Deploy Jekyll with GitHub Pages dependencies preinstalled

on:
  # Runs on pushes targeting the default branch
  push:
    branches: ["master"]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
  contents: read
  pages: write
  id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
  group: "pages"
  cancel-in-progress: false

jobs:
  # Build job
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Setup Pages
        uses: actions/configure-pages@v5
      - name: Build with Jekyll
        uses: actions/jekyll-build-pages@v1
        with:
          source: ./jekyll_site
          destination: ./_site
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v3

  # Deployment job
  deploy:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4


================================================
FILE: .github/workflows/linux.yml
================================================
name: linux

permissions:
  contents: read

on:
  push:
    branches: [master]
  pull_request:
    branches: [master]

jobs:
  linux-build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: Setup .NET
        uses: actions/setup-dotnet@v5
        with:
          dotnet-version: 10.0.x
      - name: Restore dependencies
        run: dotnet restore MajorsilenceReporting-Linux-GtkViewer.sln
      - name: Build GtkViewer
        run: dotnet build -c Release-DrawingCompat MajorsilenceReporting-Linux-GtkViewer.sln
      - name: Build MajorsilenceReporting DrawingCompat
        run: dotnet build -c Release-DrawingCompat MajorsilenceReporting.sln
      - name: Test
        run: dotnet test -c Release-DrawingCompat MajorsilenceReporting.sln --verbosity normal --collect:"XPlat Code Coverage" --logger:"trx"
      - name: Test Report
        uses: dorny/test-reporter@v2
        if: success() || failure() # run this step even if previous step failed
        with:
          name: unit tests
          path: "**/TestResults/*.trx"
          reporter: dotnet-trx



================================================
FILE: .github/workflows/mac.yml
================================================
name: mac

permissions:
  contents: read

on:
  push:
    branches: [master]
  pull_request:
    branches: [master]

jobs:
  mac-build:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v6
      - name: Setup .NET
        uses: actions/setup-dotnet@v5
        with:
          dotnet-version: 10.0.x
      - name: Restore dependencies
        run: dotnet restore MajorsilenceReporting-Linux-GtkViewer.sln
      - name: Build GtkViewer
        run: dotnet build -c Release-DrawingCompat MajorsilenceReporting-Linux-GtkViewer.sln
      - name: Build MajorsilenceReporting DrawingCompat
        run: dotnet build -c Release-DrawingCompat MajorsilenceReporting.sln
      - name: Test
        run: dotnet test -c Release-DrawingCompat MajorsilenceReporting.sln --verbosity normal --collect:"XPlat Code Coverage" --logger:"trx"
      - name: Test Report
        uses: dorny/test-reporter@v2
        if: success() || failure() # run this step even if previous step failed
        with:
          name: unit tests
          path: "**/TestResults/*.trx"
          reporter: dotnet-trx


================================================
FILE: .github/workflows/windows.yml
================================================
name: windows

on:
  push:
    branches: [master]
  pull_request:
    branches: [master]

jobs:
  windows-build:
    permissions:
      contents: read
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v6
      - name: Setup .NET
        uses: actions/setup-dotnet@v5
        with:
          dotnet-version: 10.0.x
      - name: Build Release
        run: ./build-release.ps1
      - name: Test
        run: dotnet test -c Release MajorsilenceReporting.sln --verbosity normal --collect:"XPlat Code Coverage" --logger:"trx"
      - name: Test Report
        uses: dorny/test-reporter@v2
        if: success() || failure() # run this step even if previous step failed
        with:
          name: unit tests
          path: "**/TestResults/*.trx"
          reporter: dotnet-trx
      - name: SBOM
        uses: CycloneDX/gh-dotnet-generate-sbom@v1
        with:
          path: ./MajorsilenceReporting.sln
      - name: Archive artifacts
        uses: actions/upload-artifact@v6
        with:
          name: build-output
          path: |
            Release-Builds/build-output/*.zip
            Release-Builds/build-output/*.nupkg
            Release-Builds/build-output/*.snupkg
            sbom.xml
          retention-days: 1

================================================
FILE: .gitignore
================================================
python_project_root/
# Created by https://www.gitignore.io

### VisualStudio ###
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
build/
bld/
[Bb]in/
[Oo]bj/

# Roslyn cache directories
*.ide/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

#NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile

# Visual Studio profiler
*.psess
*.vsp
*.vspx

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
.idea/

# JustCode is a .NET coding addin-in
.JustCode

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# NCrunch
_NCrunch_*
.*crunch*.local.xml

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings 
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# If using the old MSBuild-Integrated Package Restore, uncomment this:
#!**/packages/repositories.config

# Windows Azure Build Output
csx/
*.build.csdef

# Windows Store app package directory
AppPackages/

# Others
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm

# SQL Server files
*.mdf
*.ldf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings

# Microsoft Fakes
FakesAssemblies/


### XamarinStudio ###
bin/
obj/
*.userprefs


/Release-Builds/my-fyi-build-dot-net-4-viewer-x86

/Release-Builds/majorsilence-reporting-build-dot-net-4-viewer-x86

/Release-Builds/majorsilence-reporting-build-dot-net-4-AnyCPU
/Release-Builds/majorsilence-reporting-build-dot-net-4-x86
/Release-Builds/majorsilence-reporting-build-dot-net-4-viewer-x86.zip
/Release-Builds/majorsilence-reporting-build-dot-net-4-AnyCPU.zip
/Release-Builds/majorsilence-reporting-build-dot-net-4-x86.zip
/Release-Builds/setup-Majorsilence-Reporting-dot-net4-x86.msi
/Release-Builds/setup-Majorsilence-Reporting-dot-net4-x86.wixobj
/Release-Builds/setup-Majorsilence-Reporting-dot-net4-x86.wixpdb
/Release-Builds/setup-Majorsilence-Reporting-dot-net4-x86.wxs
/Release-Builds/majorsilence-reporting-build-dot-net-4-php-x86
/Release-Builds/majorsilence-reporting-build-dot-net-4-php-x86.zip
/Release-Builds/majorsilence-reporting-build-dot-net-4-python-x86
/Release-Builds/majorsilence-reporting-build-dot-net-4-ruby-x86
/Release-Builds/majorsilence-reporting-build-dot-net-4-python-x86.zip
/Release-Builds/*.msi
/Release-Builds/majorsilence-reporting-build-dot-net-4-AnyCPU
/Release-Builds/*.zip
/Release-Builds/nuget/My-FyiReporting/lib
/Release-Builds/majorsilence-reporting-build-dot-net-3.5-AnyCPU
/Release-Builds/majorsilence-reporting-build-dot-net-3.5-AnyCPU.zip

*~

/Release-Builds/majorsilence-reporting-build-dot-net-2-x64
/Release-Builds/majorsilence-reporting-build-dot-net-2-x86
/Release-Builds/build-output
/Release-Builds/nuget/MajorsilenceReporting/lib
/Release-Builds/nuget/MajorsilenceReporting-Core/lib
/Release-Builds/nuget/MajorsilenceReporting-Core/content
/Release-Builds/nuget/MajorsilenceReporting-Viewer/lib
/Release-Builds/nuget/MajorsilenceReporting-Asp/lib
/Release-Builds/nuget/MajorsilenceReporting-XwtViewer/lib
/Release-Builds/nuget/MajorsilenceReporting-WpfViewer/lib
/Examples/SampleApp/SampleReportApp/RdlEngineConfig.Linux.xml
/Examples/SampleApp/SampleReportApp/RdlEngineConfig.xml
/Examples/SampleApp2-SetData/SampleApp2-SetData/RdlEngineConfig.Linux.xml
.vs/

/Examples/SampleAspDotNet/SampleAspDotNet/libSkiaSharp.dll
/Examples/SampleAspDotNet/SampleAspDotNet/libSkiaSharp.dylib
.DS_Store
*.pyc
/LanguageWrappers/python/Examples/output
/LanguageWrappers/ruby/Examples/output
/LanguageWrappers/php/Examples/output


================================================
FILE: DataProviders/BaseDataParameter.cs
================================================

using System;
using System.Xml;
using System.Data;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// BaseDataParameter is the base class for handling parameters
	/// </summary>
	public class BaseDataParameter : IDbDataParameter
	{
		string _Name;			// parameter name
		string _Value;			// parameter value

		public BaseDataParameter()
		{
		}


		#region IDbDataParameter Members

		public byte Precision
		{
			get
			{
				return 0;
			}
			set
			{
				throw new NotImplementedException("Precision setting is not implemented");
			}
		}

		public byte Scale
		{
			get
			{
				return 0;
			}
			set
			{
				throw new NotImplementedException("Scale setting is not implemented");
			}
		}

		public int Size
		{
			get
			{
				return 0;
			}
			set
			{
				throw new NotImplementedException("Size setting is not implemented");
			}
		}

		#endregion

		#region IDataParameter Members

		public System.Data.ParameterDirection Direction
		{
			get
			{
				return System.Data.ParameterDirection.Input;	// only support input parameter
			}
			set
			{
				if (value != ParameterDirection.Input)
					throw new Exception("Parameter Direction must be Input");
			}
		}

		public System.Data.DbType DbType
		{
			get
			{			  
				return DbType.String;
			}
			set
			{
				if (value != DbType.String)
					throw new Exception("DbType must always be String");
			}
		}

		public object Value
		{
			get {return _Value;}
			set {_Value = value != null? value.ToString(): null;}
		}

		public bool IsNullable
		{
			get
			{
				return false;
			}
		}

		public System.Data.DataRowVersion SourceVersion
		{
			get
			{									   
				return DataRowVersion.Current;
			}
			set
			{
				throw new NotImplementedException("Setting DataRowVersion is not implemented.");
			}
		}

		public string ParameterName
		{
			get {return _Name;}
			set {_Name = value;}
		}

		public string SourceColumn
		{
			get
			{
				return null;
			}
			set
			{
				throw new NotImplementedException("Setting SourceColumn is not implemented.");
			}
		}

		#endregion
	}
}


================================================
FILE: DataProviders/DataParameterCollection.cs
================================================

using System;
using System.Collections;
using System.Data;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// XmlDataParameter
	/// </summary>
	public class DataParameterCollection : IDataParameterCollection
	{
		ArrayList _List;		// parameter collection

		public DataParameterCollection()
		{
			_List = new ArrayList();
		}
		#region IDataParameterCollection Members

		public object this[string parameterName]
		{
			get
			{
				int index = IndexOf(parameterName);
				if (index < 0)
					return null;
				return _List[index];
			}
			set
			{
				IDbDataParameter dp = value as IDbDataParameter;
				if (dp == null)
					throw new ArgumentException("Object must be an IDbDataParameter");

				_List[this.IndexOf(parameterName)] = dp;				
			}
		}

		public void RemoveAt(string parameterName)
		{
			_List.RemoveAt(this.IndexOf(parameterName));
		}

		public bool Contains(string parameterName)
		{
			return IndexOf(parameterName) < 0? false: true;
		}

		public int IndexOf(string parameterName)
		{
			int i=0;
			foreach (IDbDataParameter dp in _List)
			{
				if (dp.ParameterName == parameterName)
					return i;
				i++;
			}
			return -1;
		}

		#endregion

		#region IList Members

		public bool IsReadOnly
		{
			get
			{
				return _List.IsReadOnly;
			}
		}

		object System.Collections.IList.this[int index]
		{
			get
			{
				return _List[index];
			}
			set
			{
				_List[index] = value;
			}
		}

		void System.Collections.IList.RemoveAt(int index)
		{
			_List.RemoveAt(index);
		}

		public void Insert(int index, object value)
		{
			_List.Insert(index, value);
		}

		public void Remove(object value)
		{
			_List.Remove(value);
		}

		bool System.Collections.IList.Contains(object value)
		{
			return _List.Contains(value);
		}

		public void Clear()
		{
			_List.Clear();
		}

		int System.Collections.IList.IndexOf(object value)
		{
			return _List.IndexOf(value);
		}

		public int Add(object value)
		{
			return _List.Add(value);
		}

		public bool IsFixedSize
		{
			get
			{
				return _List.IsFixedSize;
			}
		}

		#endregion

		#region ICollection Members

		public bool IsSynchronized
		{
			get
			{
				return _List.IsSynchronized;
			}
		}

		public int Count
		{
			get
			{
				return _List.Count;
			}
		}

		public void CopyTo(Array array, int index)
		{
			_List.CopyTo(array, index);
		}

		public object SyncRoot
		{
			get
			{
				return _List.SyncRoot;
			}
		}

		#endregion

		#region IEnumerable Members

		public System.Collections.IEnumerator GetEnumerator()
		{
			return _List.GetEnumerator();
		}

		#endregion
	}
}


================================================
FILE: DataProviders/DataProviders.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Express 2012 for Web
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataProviders", "DataProviders.csproj", "{D9F4197F-52D2-49F0-8DAF-E2884733CF2D}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Any CPU = Debug|Any CPU
		Debug|x64 = Debug|x64
		Debug|x86 = Debug|x86
		Release|Any CPU = Release|Any CPU
		Release|x64 = Release|x64
		Release|x86 = Release|x86
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{D9F4197F-52D2-49F0-8DAF-E2884733CF2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{D9F4197F-52D2-49F0-8DAF-E2884733CF2D}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{D9F4197F-52D2-49F0-8DAF-E2884733CF2D}.Debug|x64.ActiveCfg = Debug|x64
		{D9F4197F-52D2-49F0-8DAF-E2884733CF2D}.Debug|x64.Build.0 = Debug|x64
		{D9F4197F-52D2-49F0-8DAF-E2884733CF2D}.Debug|x86.ActiveCfg = Debug|x86
		{D9F4197F-52D2-49F0-8DAF-E2884733CF2D}.Debug|x86.Build.0 = Debug|x86
		{D9F4197F-52D2-49F0-8DAF-E2884733CF2D}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{D9F4197F-52D2-49F0-8DAF-E2884733CF2D}.Release|Any CPU.Build.0 = Release|Any CPU
		{D9F4197F-52D2-49F0-8DAF-E2884733CF2D}.Release|x64.ActiveCfg = Release|x64
		{D9F4197F-52D2-49F0-8DAF-E2884733CF2D}.Release|x64.Build.0 = Release|x64
		{D9F4197F-52D2-49F0-8DAF-E2884733CF2D}.Release|x86.ActiveCfg = Release|x86
		{D9F4197F-52D2-49F0-8DAF-E2884733CF2D}.Release|x86.Build.0 = Release|x86
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal


================================================
FILE: DataProviders/DictionaryDataReader.cs
================================================
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;

namespace Majorsilence.Reporting.Data
{
    public class DictionaryDataReader : IDataReader
    {
        private readonly List<Dictionary<string, object>> _data;
        private readonly string[] _fieldNames;
        private readonly Dictionary<string, int> _fieldIndexMap;
        private int _currentRow = -1;

        public DictionaryDataReader(List<Dictionary<string, object>> data)
        {
            _data = data ?? new List<Dictionary<string, object>>();
        
            if (_data.Count > 0)
            {
                _fieldNames = _data[0].Keys.ToArray();
            
                // Create case-insensitive field mapping
                _fieldIndexMap = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
                for (int i = 0; i < _fieldNames.Length; i++)
                {
                    _fieldIndexMap[_fieldNames[i]] = i;
                }
            }
            else
            {
                _fieldNames = Array.Empty<string>();
                _fieldIndexMap = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
            }
        }

        public int GetOrdinal(string name)
        {
            if (_fieldIndexMap.TryGetValue(name, out int index))
                return index;

            throw new ArgumentException($"Field '{name}' not found. Available fields: {string.Join(", ", _fieldNames)}");
        }

        public bool Read() => ++_currentRow < _data.Count;
        public int FieldCount => _fieldNames.Length;
        public string GetName(int i) => _fieldNames[i];

        public object GetValue(int i)
        {
            if (_currentRow < 0 || _currentRow >= _data.Count || i < 0 || i >= _fieldNames.Length)
                return DBNull.Value;
            return _data[_currentRow].TryGetValue(_fieldNames[i], out var val) ? val ?? DBNull.Value : DBNull.Value;
        }

        public int GetValues(object[] values)
        {
            int count = Math.Min(values.Length, FieldCount);
            for (int i = 0; i < count; i++)
            {
                values[i] = GetValue(i);
            }

            return count;
        }

        public bool IsDBNull(int i) => GetValue(i) == DBNull.Value;
        public object this[int i] => GetValue(i);
        public object this[string name] => GetValue(GetOrdinal(name));
        public Type GetFieldType(int i) => GetValue(i)?.GetType() ?? typeof(object);

        // Minimal additional methods
        public void Close() { }
        public void Dispose() { }
        public bool NextResult() => false;
        public int Depth => 0;
        public bool IsClosed => false;
        public int RecordsAffected => -1;

        // Not implemented for brevity
        public DataTable GetSchemaTable()
        {
            DataTable schemaTable = new DataTable();

            // Add standard schema columns
            schemaTable.Columns.Add("ColumnName", typeof(string));
            schemaTable.Columns.Add("ColumnOrdinal", typeof(int));
            schemaTable.Columns.Add("DataType", typeof(Type));
            schemaTable.Columns.Add("IsKey", typeof(bool));
            schemaTable.Columns.Add("IsUnique", typeof(bool));
            schemaTable.Columns.Add("IsAutoIncrement", typeof(bool));
            schemaTable.Columns.Add("AllowDBNull", typeof(bool));

            // Populate schema information for each column
            for (int i = 0; i < FieldCount; i++)
            {
                DataRow row = schemaTable.NewRow();
                row["ColumnName"] = GetName(i);
                row["ColumnOrdinal"] = i;
                row["DataType"] = GetFieldType(i);
                row["IsKey"] = false;
                row["IsUnique"] = false;
                row["IsAutoIncrement"] = false;
                row["AllowDBNull"] = true;

                schemaTable.Rows.Add(row);
            }

            return schemaTable;
        }

        public bool GetBoolean(int i) => (bool)GetValue(i);
        public byte GetByte(int i) => (byte)GetValue(i);

        public long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length)
        {
            object value = GetValue(i);
            if (value is byte[] bytes)
            {
                int bytesToCopy = (int)Math.Min(length, bytes.Length - fieldOffset);
                if (bytesToCopy > 0 && buffer != null)
                {
                    Array.Copy(bytes, fieldOffset, buffer, bufferoffset, bytesToCopy);
                }

                return bytesToCopy;
            }

            return 0;
        }

        public char GetChar(int i) => (char)GetValue(i);

        public long GetChars(int i, long fieldOffset, char[] buffer, int bufferOffset, int length)
        {
            object value = GetValue(i);
            if (value is string str)
            {
                // If value is a string, we can extract characters from it
                int charsToCopy = (int)Math.Min(length, str.Length - fieldOffset);
                if (charsToCopy > 0 && buffer != null)
                {
                    str.CopyTo((int)fieldOffset, buffer, bufferOffset, charsToCopy);
                }

                return charsToCopy;
            }
            else if (value is char[] chars)
            {
                // If value is already a char array, copy directly
                int charsToCopy = (int)Math.Min(length, chars.Length - fieldOffset);
                if (charsToCopy > 0 && buffer != null)
                {
                    Array.Copy(chars, fieldOffset, buffer, bufferOffset, charsToCopy);
                }

                return charsToCopy;
            }

            return 0;
        }

        public IDataReader GetData(int i)
        {
            object value = GetValue(i);

            // Handle collections that can be converted to a data reader
            if (value is IEnumerable<Dictionary<string, object>> dictList)
            {
                return new DictionaryDataReader(dictList.ToList());
            }
            else if (value is DataTable dataTable)
            {
                // Convert DataTable to list of dictionaries
                var rows = new List<Dictionary<string, object>>();
                foreach (DataRow row in dataTable.Rows)
                {
                    var dict = new Dictionary<string, object>();
                    foreach (DataColumn col in dataTable.Columns)
                    {
                        dict[col.ColumnName] = row[col];
                    }

                    rows.Add(dict);
                }

                return new DictionaryDataReader(rows);
            }

            // For other types that can't be easily converted to a data reader
            throw new InvalidCastException($"Cannot convert value at index {i} to IDataReader");
        }

        public string GetDataTypeName(int i) => GetFieldType(i).Name;
        public DateTime GetDateTime(int i) => (DateTime)GetValue(i);
        public decimal GetDecimal(int i) => (decimal)GetValue(i);
        public double GetDouble(int i) => (double)GetValue(i);
        public float GetFloat(int i) => (float)GetValue(i);
        public Guid GetGuid(int i) => (Guid)GetValue(i);
        public short GetInt16(int i) => (short)GetValue(i);
        public int GetInt32(int i) => (int)GetValue(i);
        public long GetInt64(int i) => (long)GetValue(i);
        public string GetString(int i) => GetValue(i)?.ToString();
    }
}

================================================
FILE: DataProviders/FileDirCommand.cs
================================================

using System;
using System.Xml;
using System.Data;
using System.Collections;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// FileDirCommand allows specifying the command for the web log.
	/// </summary>
	public class FileDirCommand : IDbCommand
	{
		FileDirConnection _fdc;		// connection we're running under
		string _cmd;				// command to execute
		// parsed constituents of the command
		string _Directory;			// Directory
		string _FilePattern;		// SearchPattern when doing the file lookup
		string _DirectoryPattern;	// SearchPattern when doing the directory lookup
		string _TrimEmpty="yes";	// Directory with no files will be omitted from result set
		DataParameterCollection _Parameters = new DataParameterCollection();

		public FileDirCommand(FileDirConnection conn)
		{
			_fdc = conn;  
		}

		internal string Directory
		{
			get 
			{
				// Check to see if "Directory" or "@Directory" is a parameter
				IDbDataParameter dp= _Parameters["Directory"] as IDbDataParameter;
				if (dp == null)
					dp= _Parameters["@Directory"] as IDbDataParameter;
				// Then check to see if the Directory value is a parameter?
				if (dp == null)
					dp = _Parameters[_Directory] as IDbDataParameter;
				if (dp != null)
					return dp.Value != null? dp.Value.ToString(): _Directory;	// don't pass null; pass existing value
				return _Directory == null? _fdc.Directory: _Directory;
			}
			set {_Directory = value;}
		}

		internal string FilePattern
		{
			get 
			{
				// Check to see if "FilePattern" or "@FilePattern" is a parameter
				IDbDataParameter dp= _Parameters["FilePattern"] as IDbDataParameter;
				if (dp == null)
					dp= _Parameters["@FilePattern"] as IDbDataParameter;
				// Then check to see if the FilePattern value is a parameter?
				if (dp == null)
					dp = _Parameters[_FilePattern] as IDbDataParameter;
				if (dp != null)
					return dp.Value as string;
				return _FilePattern;
			}
			set {_FilePattern = value;}
		}

		internal string DirectoryPattern
		{
			get 
			{
				// Check to see if "DirectoryPattern" or "@DirectoryPattern" is a parameter
				IDbDataParameter dp= _Parameters["DirectoryPattern"] as IDbDataParameter;
				if (dp == null)
					dp= _Parameters["@DirectoryPattern"] as IDbDataParameter;
				// Then check to see if the DirectoryPattern value is a parameter?
				if (dp == null)
					dp = _Parameters[_DirectoryPattern] as IDbDataParameter;
				if (dp != null)
					return dp.Value as string;
				return _DirectoryPattern;
			}
			set {_DirectoryPattern = value;}
		}

		internal bool TrimEmpty
		{
			get 
			{
				// Check to see if "TrimEmpty" or "@TrimEmpty" is a parameter
				IDbDataParameter dp= _Parameters["TrimEmpty"] as IDbDataParameter;
				if (dp == null)
					dp= _Parameters["@TrimEmpty"] as IDbDataParameter;
				// Then check to see if the TrimEmpty value is a parameter?
				if (dp == null)
					dp = _Parameters[_TrimEmpty] as IDbDataParameter;
				if (dp != null)
				{
					string tf = dp.Value as string;
					if (tf == null)
						return false;
					tf = tf.ToLower();
					return (tf == "true" || tf == "yes");
				}
				return _TrimEmpty=="yes"? true: false;	// the value must be a constant
			}
			set {_TrimEmpty = value? "yes": "no";}
		}

		#region IDbCommand Members

		public void Cancel()
		{
			throw new NotImplementedException("Cancel not implemented");
		}

		public void Prepare()
		{
			return;			// Prepare is a noop
		}

		public System.Data.CommandType CommandType
		{
			get
			{
				throw new NotImplementedException("CommandType not implemented");
			}
			set
			{
				throw new NotImplementedException("CommandType not implemented");
			}
		}

		public IDataReader ExecuteReader(System.Data.CommandBehavior behavior)
		{
			if (!(behavior == CommandBehavior.SingleResult || 
				  behavior == CommandBehavior.SchemaOnly))
				throw new ArgumentException("ExecuteReader supports SingleResult and SchemaOnly only.");
			return new FileDirDataReader(behavior, _fdc, this);
		}

		IDataReader System.Data.IDbCommand.ExecuteReader()
		{
			return ExecuteReader(System.Data.CommandBehavior.SingleResult);
		}

		public object ExecuteScalar()
		{
			throw new NotImplementedException("ExecuteScalar not implemented");
		}

		public int ExecuteNonQuery()
		{
			throw new NotImplementedException("ExecuteNonQuery not implemented");
		}

		public int CommandTimeout
		{
			get
			{
				return 0;
			}
			set
			{
				throw new NotImplementedException("CommandTimeout not implemented");
			}
		}

		public IDbDataParameter CreateParameter()
		{
			return new FileDirDataParameter();
		}

		public IDbConnection Connection
		{
			get
			{
				return this._fdc;
			}
			set
			{
				throw new NotImplementedException("Setting Connection not implemented");
			}
		}

		public System.Data.UpdateRowSource UpdatedRowSource
		{
			get
			{
				throw new NotImplementedException("UpdatedRowSource not implemented");
			}
			set
			{
				throw new NotImplementedException("UpdatedRowSource not implemented");
			}
		}

		public string CommandText
		{
			get
			{
				return this._cmd;
			}
			set
			{
				// Parse the command string for keyword value pairs separated by ';'
				_FilePattern = null;
				_DirectoryPattern = null;
				_Directory = null;
				string[] args = value.Split(';');
				foreach(string arg in args)
				{
					string[] param = arg.Trim().Split('=');
					if (param == null || param.Length != 2)
						continue;
					string key = param[0].Trim().ToLower();
					string val = param[1];
					switch (key)
					{
						case "directory":
							_Directory = val;
							break;
						case "filepattern":
							_FilePattern = val;
							break;
						case "directorypattern":
							_DirectoryPattern = val;
							break;
						default:
							throw new ArgumentException(string.Format("{0} is an unknown parameter key", param[0]));
					}
				}
				// User must specify both the url and the RowsXPath
				if (_Directory == null && this._fdc.Directory == null)
				{
					if (_Directory == null)
						throw new ArgumentException("CommandText requires a 'Directory=' parameter.");
				}
				_cmd = value;
			}
		}

		public IDataParameterCollection Parameters
		{
			get
			{
				return _Parameters;
			}
		}

		public IDbTransaction Transaction
		{
			get
			{
				throw new NotImplementedException("Transaction not implemented");
			}
			set
			{
				throw new NotImplementedException("Transaction not implemented");
			}
		}

		#endregion

		#region IDisposable Members

		public void Dispose()
		{
			// nothing to dispose of
		}

		#endregion
	}
}


================================================
FILE: DataProviders/FileDirConnection.cs
================================================

using System;
using System.Xml;
using System.Data;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// LogConnection handles connections to web log.
	/// </summary>
	public class FileDirConnection : IDbConnection
	{
		string _Connection;				// the connection string; of format dir=
		string _Directory;
		bool bOpen=false;
		public FileDirConnection(string conn)
		{
			ConnectionString = conn;
		}

		internal string Directory
		{
			get {return _Directory;}
			set {_Directory = value;}
		}

		internal bool IsOpen
		{
			get {return bOpen;}
		}

		#region IDbConnection Members

		public void ChangeDatabase(string databaseName)
		{
			throw new NotImplementedException("ChangeDatabase method not supported.");
		}

		public IDbTransaction BeginTransaction(System.Data.IsolationLevel il)
		{
			throw new NotImplementedException("BeginTransaction method not supported.");
		}

		IDbTransaction System.Data.IDbConnection.BeginTransaction()
		{
			throw new NotImplementedException("BeginTransaction method not supported.");
		}

		public System.Data.ConnectionState State
		{
			get
			{
				throw new NotImplementedException("State not implemented");
			}
		}

		public string ConnectionString
		{
			get
			{
				return _Connection;
			}
			set
			{
				string c = value;
				// Now parse the connection string;
				Array args = c.Split (',');
				foreach(string arg in args)
				{
					if (arg.Trim().ToLower().StartsWith("directory="))	// Only have one type of argument right now
						_Directory = arg.Trim().Split('=').GetValue(1) as string;
				}
				_Connection = value;
			}
		}

		public IDbCommand CreateCommand()
		{
			return new FileDirCommand(this);
		}

		public void Open()
		{
			bOpen = true;
		}

		public void Close()
		{
			bOpen = false;
		}

		public string Database
		{
			get
			{
				return null;			// don't really have a database
			}
		}

		public int ConnectionTimeout
		{
			get
			{
				return 0;
			}
		}

		#endregion

		#region IDisposable Members

		public void Dispose()
		{
			this.Close();
		}

		#endregion
	}
}


================================================
FILE: DataProviders/FileDirDataParameter.cs
================================================

using System;
using System.Xml;
using System.Data;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// FileDirDataParameter
	/// </summary>
	public class FileDirDataParameter : BaseDataParameter
	{
		public FileDirDataParameter():base()
		{
		}
	}
}


================================================
FILE: DataProviders/FileDirDataReader.cs
================================================

using System;
using System.Data;
using System.Collections;
using System.Collections.Specialized;
using System.IO;
using System.Net;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// FileDirDataReader handles reading log files
	/// </summary>
	public class FileDirDataReader : IDataReader
	{
		FileDirConnection _fdconn;
		FileDirCommand _fdcmd;
		System.Data.CommandBehavior _behavior;

		IEnumerator _ie;			//  enumerator thru rows
		string _FilePattern;		// FilePattern from _fdcmd
		string _DirectoryPattern;	// DirectoryPattern from _fdcmd
		bool _TrimEmpty;			// Directories with no files will be omitted from result set

		// file data
		object[] _Data;				// data values of the columns
		ArrayList _RowData;			// row data
		// column information; this is fixed for all instances
		static string[] _Names;		// names of the columns
		static Type[] _Types;		// types of the columns
		// the location of the columns
		static readonly int COLUMN_NAME=0;
		static readonly int COLUMN_SIZE=1;
		static readonly int COLUMN_CREATIONTIME=2;
		static readonly int COLUMN_LASTACCESSTIME=3;
		static readonly int COLUMN_LASTWRITETIME=4;
		static readonly int COLUMN_ID=5;
		static readonly int COLUMN_PARENTID=6;
		static readonly int COLUMN_ISDIRECTORY=7;
		static readonly int COLUMN_EXTENSION=8;
		static readonly int COLUMN_FULLNAME=9;
		static readonly int COLUMN_COUNT=10;

		static FileDirDataReader()
		{
			// Add the names (fixed for type of DataReader depending on the columns parameter)
			Type dttype = DateTime.MinValue.GetType();		// work variable for getting the type
			Type stype = "".GetType();
			Type itype = int.MinValue.GetType();
			Type ltype = long.MinValue.GetType();
			Type btype = new bool().GetType();
			_Names = new string[COLUMN_COUNT]; 
			_Names[COLUMN_NAME]="Name";
			_Names[COLUMN_SIZE]="Size";
			_Names[COLUMN_CREATIONTIME]="CreationTime";
			_Names[COLUMN_LASTACCESSTIME]="LastAccessTime";
			_Names[COLUMN_LASTWRITETIME]="LastWriteTime";
			_Names[COLUMN_ID]="ID";
			_Names[COLUMN_PARENTID]="ParentID";
			_Names[COLUMN_ISDIRECTORY]="IsDirectory";
			_Names[COLUMN_EXTENSION]="Extension";
			_Names[COLUMN_FULLNAME]="FullName";
		
			_Types = new Type[COLUMN_COUNT];
			_Types[COLUMN_NAME]=stype;
			_Types[COLUMN_SIZE]=ltype;
			_Types[COLUMN_CREATIONTIME]=dttype;
			_Types[COLUMN_LASTACCESSTIME]=dttype;
			_Types[COLUMN_LASTWRITETIME]=dttype;
			_Types[COLUMN_ID]=itype;
			_Types[COLUMN_PARENTID]=itype;
			_Types[COLUMN_ISDIRECTORY]=btype;
			_Types[COLUMN_EXTENSION]=stype;
			_Types[COLUMN_FULLNAME]=stype;
		}

		public FileDirDataReader(System.Data.CommandBehavior behavior, FileDirConnection conn, FileDirCommand cmd)
		{
			_fdconn = conn;
			_fdcmd = cmd;
			_behavior = behavior;
			_FilePattern = _fdcmd.FilePattern;
			_DirectoryPattern = _fdcmd.DirectoryPattern;
			_TrimEmpty = _fdcmd.TrimEmpty;

			_Data = new object[_Names.Length];			// allocate enough room for data

			if (behavior == CommandBehavior.SchemaOnly)
				return;

			string dir = _fdcmd.Directory;
			if (dir == null)
				throw new Exception("Directory parameter must be specified.");

			// Populate the data array
			_RowData = new ArrayList();
			PopulateData(new DirectoryInfo(dir), -1);
			_ie = _RowData.GetEnumerator();
		}

		long PopulateData(DirectoryInfo di, int parent)
		{
			long size=0;

			// Create a new row for this directory
			object[] prow = new object[_Names.Length];
			_RowData.Add(prow);
			int rowcount = _RowData.Count - 1;
			prow[COLUMN_NAME] = di.Name;
			prow[COLUMN_ISDIRECTORY] = true;
			prow[COLUMN_ID] = rowcount;
			prow[COLUMN_PARENTID] = parent >= 0? (object) parent: (object) null;
			prow[COLUMN_CREATIONTIME] = di.CreationTime;
			prow[COLUMN_LASTACCESSTIME] = di.LastAccessTime;
			prow[COLUMN_LASTWRITETIME] = di.LastWriteTime;
			prow[COLUMN_EXTENSION] = di.Extension;
			prow[COLUMN_FULLNAME] = di.FullName;
			
			parent = rowcount;		// set the new parent
			
			FileInfo[] afi = _FilePattern == null? di.GetFiles(): di.GetFiles(_FilePattern);
			foreach (FileInfo fi in afi)
			{	   
				// Create a new row for this file
				object[] row = new object[_Names.Length];
				_RowData.Add(row);
				row[COLUMN_NAME] = fi.Name;
				row[COLUMN_ISDIRECTORY] = false;
				row[COLUMN_ID] = _RowData.Count - 1;
				row[COLUMN_PARENTID] = (object) parent;
				row[COLUMN_CREATIONTIME] = fi.CreationTime;
				row[COLUMN_LASTACCESSTIME] = fi.LastAccessTime;
				row[COLUMN_LASTWRITETIME] = fi.LastWriteTime;
				row[COLUMN_EXTENSION] = fi.Extension;
				row[COLUMN_FULLNAME] = fi.FullName;
				row[COLUMN_SIZE] = fi.Length;
				size += fi.Length;
			}

			DirectoryInfo[] adi = _DirectoryPattern == null? di.GetDirectories(): di.GetDirectories(_DirectoryPattern);
			foreach (DirectoryInfo sdi in adi)
			{
				size += PopulateData(sdi, parent);
			}

			prow[COLUMN_SIZE] = size;

			// If a directory has no files below it we (optionally) can omit the directory as well
			if (_TrimEmpty && parent >= 0 && _RowData.Count - 1 == rowcount)
			{
				_RowData.RemoveAt(rowcount);
			}

			return size;
		}


		#region IDataReader Members

		public int RecordsAffected
		{
			get
			{
				return 0;
			}
		}

		public bool IsClosed
		{
			get
			{
				return _ie == null;
			}
		}

		public bool NextResult()	   
		{
			return false;
		}

		public void Close()
		{
			_ie = null;
			_RowData = null;
			_Data = null;
		}

		public bool Read()
		{
			if (_ie == null || !_ie.MoveNext())
				return false;

			_Data = _ie.Current as object[];

			return true;
		}
	
		public int Depth
		{
			get
			{
				return 0;
			}
		}

		public DataTable GetSchemaTable()
		{
			return null;
		}

		#endregion

		#region IDisposable Members

		public void Dispose()
		{
			this.Close();
		}

		#endregion

		#region IDataRecord Members

		public int GetInt32(int i)
		{
			return Convert.ToInt32(_Data[i]);
		}

		public object this[string name]
		{
			get
			{
				int ci = this.GetOrdinal(name);
				return _Data[ci];
			}
		}

		object System.Data.IDataRecord.this[int i]
		{
			get
			{
				return _Data[i];
			}
		}

		public object GetValue(int i)
		{
			return _Data[i];
		}

		public bool IsDBNull(int i)
		{
			return _Data[i] == null;
		}

		public long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length)
		{
			throw new NotImplementedException("GetBytes not implemented.");
		}

		public byte GetByte(int i)
		{
			return Convert.ToByte(_Data[i]);
		}

		public Type GetFieldType(int i)
		{
			return _Types[i];
		}

		public decimal GetDecimal(int i)
		{
			return Convert.ToDecimal(_Data[i]);
		}

		public int GetValues(object[] values)
		{
			int i;
			for (i=0; i < values.Length; i++)
			{
				values[i] = i >= _Data.Length? System.DBNull.Value: _Data[i];
			}

			return Math.Min(values.Length, _Data.Length);
		}

		public string GetName(int i)
		{
			return _Names[i] as string;
		}

		public int FieldCount
		{
			get
			{
				return _Data.Length;
			}
		}

		public long GetInt64(int i)
		{
			return Convert.ToInt64(_Data[i]);
		}

		public double GetDouble(int i)
		{
			return Convert.ToDouble(_Data[i]);
		}

		public bool GetBoolean(int i)
		{
			return Convert.ToBoolean(_Data[i]);
		}

		public Guid GetGuid(int i)
		{
			throw new NotImplementedException("GetGuid not implemented.");
		}

		public DateTime GetDateTime(int i)
		{
			return Convert.ToDateTime(_Data[i]);
		}

		public int GetOrdinal(string name)
		{
			int ci=0;
			// do case sensitive lookup
			foreach (string cname in _Names)
			{
				if (cname == name)
					return ci;
				ci++;
			}

			// do case insensitive lookup
			ci=0;
			name = name.ToLower();
			foreach (string cname in _Names)
			{
				if (cname.ToLower() == name)
					return ci;
				ci++;
			}

			throw new ArgumentException(string.Format("Column '{0}' not known.", name));
		}

		public string GetDataTypeName(int i)
		{
			Type t = _Types[i] as Type;
			return t.ToString();
		}

		public float GetFloat(int i)
		{
			return Convert.ToSingle(_Data[i]);
		}

		public IDataReader GetData(int i)
		{
			throw new NotImplementedException("GetData not implemented.");
		}

		public long GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, int length)
		{
			throw new NotImplementedException("GetChars not implemented.");
		}

		public string GetString(int i)
		{
			return Convert.ToString(_Data[i]);
		}

		public char GetChar(int i)
		{
			return Convert.ToChar(_Data[i]);
		}

		public short GetInt16(int i)
		{
			return Convert.ToInt16(_Data[i]);
		}

		#endregion
	}
}


================================================
FILE: DataProviders/FilteredDictionaryDataReader.cs
================================================
using System;
using System.Data;

namespace Majorsilence.Reporting.Data
{
    public class FilteredDictionaryDataReader : IDataReader
    {
        private readonly DictionaryDataReader _innerReader;
        private readonly string[] _columnNames;
        private readonly int[] _columnMap;

        public FilteredDictionaryDataReader(DictionaryDataReader reader, string[] columnNames)
        {
            _innerReader = reader;
            _columnNames = columnNames;

            // Create a mapping from our filtered indices to the inner reader's indices
            _columnMap = new int[_columnNames.Length];
            for (int i = 0; i < _columnNames.Length; i++)
            {
                _columnMap[i] = reader.GetOrdinal(_columnNames[i]);
            }
        }

        // Override field count and name-related methods
        public int FieldCount => _columnNames.Length;
        public string GetName(int i) => _columnNames[i];
        public int GetOrdinal(string name) => Array.IndexOf(_columnNames, name);

        // Map our filtered indices to the inner reader
        public object GetValue(int i) => _innerReader.GetValue(_columnMap[i]);
        public Type GetFieldType(int i) => _innerReader.GetFieldType(_columnMap[i]);

        // Override indexers
        public object this[int i] => GetValue(i);
        public object this[string name] => GetValue(GetOrdinal(name));

        // Delegate all other methods to the inner reader
        public bool Read() => _innerReader.Read();
        public void Close() => _innerReader.Close();
        public void Dispose() => _innerReader.Dispose();
        public bool NextResult() => _innerReader.NextResult();
        public int Depth => _innerReader.Depth;
        public bool IsClosed => _innerReader.IsClosed;
        public int RecordsAffected => _innerReader.RecordsAffected;

        public int GetValues(object[] values)
        {
            int count = Math.Min(values.Length, FieldCount);
            for (int i = 0; i < count; i++)
            {
                values[i] = GetValue(i);
            }

            return count;
        }

        // Implement the rest of the interface methods by mapping indices
        public bool IsDBNull(int i) => _innerReader.IsDBNull(_columnMap[i]);
        public bool GetBoolean(int i) => _innerReader.GetBoolean(_columnMap[i]);
        public byte GetByte(int i) => _innerReader.GetByte(_columnMap[i]);

        public long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length) =>
            _innerReader.GetBytes(_columnMap[i], fieldOffset, buffer, bufferoffset, length);

        public char GetChar(int i) => _innerReader.GetChar(_columnMap[i]);

        public long GetChars(int i, long fieldOffset, char[] buffer, int bufferoffset, int length) =>
            _innerReader.GetChars(_columnMap[i], fieldOffset, buffer, bufferoffset, length);

        public IDataReader GetData(int i) => _innerReader.GetData(_columnMap[i]);
        public string GetDataTypeName(int i) => _innerReader.GetDataTypeName(_columnMap[i]);
        public DateTime GetDateTime(int i) => _innerReader.GetDateTime(_columnMap[i]);
        public decimal GetDecimal(int i) => _innerReader.GetDecimal(_columnMap[i]);
        public double GetDouble(int i) => _innerReader.GetDouble(_columnMap[i]);
        public float GetFloat(int i) => _innerReader.GetFloat(_columnMap[i]);
        public Guid GetGuid(int i) => _innerReader.GetGuid(_columnMap[i]);
        public short GetInt16(int i) => _innerReader.GetInt16(_columnMap[i]);
        public int GetInt32(int i) => _innerReader.GetInt32(_columnMap[i]);
        public long GetInt64(int i) => _innerReader.GetInt64(_columnMap[i]);
        public string GetString(int i) => _innerReader.GetString(_columnMap[i]);

        public DataTable GetSchemaTable()
        {
            DataTable originalSchema = _innerReader.GetSchemaTable();
            DataTable filteredSchema = originalSchema.Clone();

            // Only include rows for our filtered columns
            foreach (string columnName in _columnNames)
            {
                foreach (DataRow row in originalSchema.Rows)
                {
                    if ((string)row["ColumnName"] == columnName)
                    {
                        filteredSchema.ImportRow(row);
                        break;
                    }
                }
            }

            return filteredSchema;
        }
    }
}

================================================
FILE: DataProviders/GedcomCommand.cs
================================================

using System;
using System.Xml;
using System.Data;
using System.Collections;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// LogCommand allows specifying the command for the web log.
	/// </summary>
	public class GedcomCommand : IDbCommand
	{
		GedcomConnection _lc;			// connection we're running under
		string _cmd;				// command to execute
		// parsed constituents of the command
		string _Url;				// url of the file 
		DataParameterCollection _Parameters = new DataParameterCollection();

		public GedcomCommand(GedcomConnection conn)
		{
			_lc = conn;
		}

		internal string Url
		{
			get 
			{
				// Check to see if "Url" or "@Url" is a parameter
				IDbDataParameter dp= _Parameters["Url"] as IDbDataParameter;
				if (dp == null)
					dp= _Parameters["@Url"] as IDbDataParameter;
				// Then check to see if the Url value is a parameter?
				if (dp == null)
					dp = _Parameters[_Url] as IDbDataParameter;
				if (dp != null)
					return dp.Value != null? dp.Value.ToString(): _Url;	// don't pass null; pass existing value
				return _Url;	// the value must be a constant
			}
			set {_Url = value;}
		}

		#region IDbCommand Members

		public void Cancel()
		{
			throw new NotImplementedException("Cancel not implemented");
		}

		public void Prepare()
		{
			return;			// Prepare is a noop
		}

		public System.Data.CommandType CommandType
		{
			get
			{
				throw new NotImplementedException("CommandType not implemented");
			}
			set
			{
				throw new NotImplementedException("CommandType not implemented");
			}
		}

		public IDataReader ExecuteReader(System.Data.CommandBehavior behavior)
		{
			if (!(behavior == CommandBehavior.SingleResult || 
				  behavior == CommandBehavior.SchemaOnly))
				throw new ArgumentException("ExecuteReader supports SingleResult and SchemaOnly only.");
			return new GedcomDataReader(behavior, _lc, this);
		}

		IDataReader System.Data.IDbCommand.ExecuteReader()
		{
			return ExecuteReader(System.Data.CommandBehavior.SingleResult);
		}

		public object ExecuteScalar()
		{
			throw new NotImplementedException("ExecuteScalar not implemented");
		}

		public int ExecuteNonQuery()
		{
			throw new NotImplementedException("ExecuteNonQuery not implemented");
		}

		public int CommandTimeout
		{
			get
			{
				return 0;
			}
			set
			{
				throw new NotImplementedException("CommandTimeout not implemented");
			}
		}

		public IDbDataParameter CreateParameter()
		{
			return new GedcomDataParameter();
		}

		public IDbConnection Connection
		{
			get
			{
				return this._lc;
			}
			set
			{
				throw new NotImplementedException("Setting Connection not implemented");
			}
		}

		public System.Data.UpdateRowSource UpdatedRowSource
		{
			get
			{
				throw new NotImplementedException("UpdatedRowSource not implemented");
			}
			set
			{
				throw new NotImplementedException("UpdatedRowSource not implemented");
			}
		}

		public string CommandText
		{
			get
			{
				return this._cmd;
			}
			set
			{
				// Parse the command string for keyword value pairs separated by ';'
				string[] args = value.Split(';');
				string url=null;
				foreach(string arg in args)
				{
					string[] param = arg.Trim().Split('=');
					if (param == null || param.Length != 2)
						continue;
					string key = param[0].Trim().ToLower();
					string val = param[1];
					switch (key)
					{
						case "url":
						case "file":
							url = val;
							break;
						default:
							throw new ArgumentException(string.Format("{0} is an unknown parameter key", param[0]));
					}
				}
				// User must specify both the url and the RowsXPath
				if (url == null)
					throw new ArgumentException("CommandText requires a 'Url=' parameter.");
				_cmd = value;
				_Url = url;
			}
		}

		public IDataParameterCollection Parameters
		{
			get
			{
				return _Parameters;
			}
		}

		public IDbTransaction Transaction
		{
			get
			{
				throw new NotImplementedException("Transaction not implemented");
			}
			set
			{
				throw new NotImplementedException("Transaction not implemented");
			}
		}

		#endregion

		#region IDisposable Members

		public void Dispose()
		{
			// nothing to dispose of
		}

		#endregion
	}
}


================================================
FILE: DataProviders/GedcomConnection.cs
================================================

using System;
using System.Xml;
using System.Data;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// LogConnection handles connections to web log.
	/// </summary>
	public class GedcomConnection : IDbConnection
	{
		string _Connection;				// the connection string; of format file=
		bool bOpen=false;
		public GedcomConnection(string conn)
		{
			ConnectionString = conn;
		}

		internal bool IsOpen
		{
			get {return bOpen;}
		}

		#region IDbConnection Members

		public void ChangeDatabase(string databaseName)
		{
			throw new NotImplementedException("ChangeDatabase method not supported.");
		}

		public IDbTransaction BeginTransaction(System.Data.IsolationLevel il)
		{
			throw new NotImplementedException("BeginTransaction method not supported.");
		}

		IDbTransaction System.Data.IDbConnection.BeginTransaction()
		{
			throw new NotImplementedException("BeginTransaction method not supported.");
		}

		public System.Data.ConnectionState State
		{
			get
			{
				throw new NotImplementedException("State not implemented");
			}
		}

		public string ConnectionString
		{
			get
			{
				return _Connection;
			}
			set
			{
                //string c = value;
                //// Now parse the connection string;
                //Array args = c.Split (',');
                //string directory=null;
                //foreach(string arg in args)
                //{
                //    if (arg.Trim().ToLower().StartsWith("directory="))	// Only have one type of argument right now
                //        directory = arg.Trim().Split('=').GetValue(1) as string;
                //}
				_Connection = value;
			}
		}

		public IDbCommand CreateCommand()
		{
			return new GedcomCommand(this);
		}

		public void Open()
		{
			bOpen = true;
		}

		public void Close()
		{
			bOpen = false;
		}

		public string Database
		{
			get
			{
				return null;			// don't really have a database
			}
		}

		public int ConnectionTimeout
		{
			get
			{
				return 0;
			}
		}

		#endregion

		#region IDisposable Members

		public void Dispose()
		{
			this.Close();
		}

		#endregion
	}
}


================================================
FILE: DataProviders/GedcomDataParameter.cs
================================================

using System;
using System.Xml;
using System.Data;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// XmlDataParameter
	/// </summary>
	public class GedcomDataParameter : BaseDataParameter
	{
		public GedcomDataParameter():base()
		{
		}
	}
}


================================================
FILE: DataProviders/GedcomDataReader.cs
================================================

using System;
using System.Data;
using System.Collections;
using System.Collections.Specialized;
using System.IO;
using System.Net;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// LogDataReader handles reading log files
	/// </summary>
	public class GedcomDataReader : IDataReader
	{
		GedcomConnection _lconn;
		GedcomCommand _lcmd;
		System.Data.CommandBehavior _behavior;

		MultipleStreamReader _sr;	// StreamReader for _Url
		object[] _Data;				// data values of the columns

		// column information: is fixed for all instances
		// names of all the columns
		static string[] _Names= new string[] {"host","client_identifier","user","datetime",
												 "request_cmd","request_url","request_type", "request_parameters","status_code",
												 "bytes", "referrer", "user_agent", "cookie"};
		// types of all the columns
		static Type _dttype = DateTime.MinValue.GetType();		// work variable for getting the type
		static Type _tstring = "".GetType();
		static Type _dtype = Double.MinValue.GetType();
		static Type[] _Types = new Type[] {_tstring,_tstring,_tstring,_dttype,
											  _tstring,_tstring,_tstring,_tstring,_tstring,
											  _dtype,_tstring,_tstring,_tstring};
		const int DATETIME_FIELD=3;	// the date time field
		const int REQUEST_FIELD=4;	// the request field
		const int BYTES_FIELD=9;	// the bytes field


		public GedcomDataReader(System.Data.CommandBehavior behavior, GedcomConnection conn, GedcomCommand cmd)
		{
			_lconn = conn;
			_lcmd = cmd;
			_behavior = behavior;
			
			string fname = _lcmd.Url;

			if (behavior != CommandBehavior.SchemaOnly)
				_sr = new MultipleStreamReader(_lcmd.Url);	// get the main stream

			_Data = new object[_Names.Length];			// allocate enough room for data
		}

		#region IDataReader Members

		public int RecordsAffected
		{
			get
			{
				return 0;
			}
		}

		public bool IsClosed
		{
			get
			{
				return _sr == null;
			}
		}

		public bool NextResult()	   
		{
			return false;
		}

		public void Close()
		{
			if (_sr != null)
			{
				_sr.Close();
				_sr = null;
			}
			_Data = null;
		}

		public bool Read()
		{
			if (this._sr == null)
				return false;

			// read a line of the log
			string line = _sr.ReadLine();
			if (line == null)
				return false;

			// obtain the data from each column and put the data array
			Lexer l = new Lexer(new StringReader(line));
			LexTokenList ll = l.Lex();
			int ci=0;					// start at first column
			if (ll.Count > 11)
				ci = 0;
			foreach (LexToken lt in ll)
			{
				if (ci >= _Data.Length || lt.Type == LexTokenTypes.EOF)
					break;
				
				if (ci == DATETIME_FIELD)
				{
					_Data[ci] =GetDateTime(lt.Value);
				}
				else if (ci == REQUEST_FIELD)
				{	// break the request into multiple fields; command, url, http type
					string[] reqs = lt.Value.Split(' ');

					string req_cmd=null;
					string req_url=null;
					string req_type=null;
					string req_parameters=null;

					if (reqs == null)
					{}
					else if (reqs.Length >= 3)
					{
						req_cmd = reqs[0];
						req_url = reqs[1];
						req_type = reqs[2];
					}
					else if (reqs.Length == 2)
					{
						req_cmd = reqs[0];
						req_url = reqs[1];
					}
					else if (reqs.Length == 1)
						req_url = reqs[0];

					if (req_url != null)
					{
						string [] up = req_url.Split('?');
						if (up.Length > 1)
						{
							req_url = up[0];
							req_parameters = up[1];
						}
					}
					_Data[ci++] = req_type;
					_Data[ci++] = req_url;
					_Data[ci++] = req_type == "HTTP/1.1"? "HTTP/1.1": req_type;
					_Data[ci++] = req_parameters;

					continue;
				}
				else if (ci == BYTES_FIELD)
				{
					double v=0;
					if (lt.Value.Length == 0 || lt.Value == "-")
					{}
					else
					{
						try
						{
							v = Convert.ToDouble(lt.Value);
						}
						catch
						{
						}
					}
					_Data[ci] = v;
				}
				else
					_Data[ci] = lt.Value;
				ci++;					// go to next column
			}

			while (ci < _Data.Length)
				_Data[ci++] = null;

			return true;
		}

		object GetDateTime(string v)
		{
			object result;
			if (v.Length != 26)
				return null;
			try 
			{
				string dd = v.Substring(0,2);	// the day of the month
				string MMM = v.Substring(3,3);	// the month
				int month=1;
				switch (MMM.ToLower())
				{
					case "jan": month=1; break;
					case "feb": month=2; break;
					case "mar": month=3; break;
					case "apr": month=4; break;
					case "may": month=5; break;
					case "jun": month=6; break;
					case "jul": month=7; break;
					case "aug": month=8; break;
					case "sep": month=9; break;
					case "oct": month=10; break;
					case "nov": month=11; break;
					case "dec": month=12; break;
					default:
						break;
				}
				string yyyy = v.Substring(7,4);	// the year
				string hh = v.Substring(12,2);	// the hour
				string mm = v.Substring(15,2);	// the minute
				string ss = v.Substring(18,2);	// the seconds
				bool bPlus = v[21] == '+';
				int thh = Convert.ToInt32(v.Substring(22,2));	// the time zone (hh)
				int tmm = Convert.ToInt32(v.Substring(24,2));	// the time zone (mm)
				int tzdiff = thh * 60 + tmm;	// time zone difference in minutes
				if (!bPlus)
					tzdiff = - tzdiff;
				DateTime dt = 
					new DateTime(Convert.ToInt32(yyyy),
					month,
					Convert.ToInt32(dd),
					Convert.ToInt32(hh),
					Convert.ToInt32(mm),
					Convert.ToInt32(ss), 0);
				result = dt.AddMinutes(tzdiff);	
			}
			catch
			{ 
				result = null;
			}
			return result;
		}
	
		public int Depth
		{
			get
			{
				return 0;
			}
		}

		public DataTable GetSchemaTable()
		{
			return null;
		}

		#endregion

		#region IDisposable Members

		public void Dispose()
		{
			this.Close();
		}

		#endregion

		#region IDataRecord Members

		public int GetInt32(int i)
		{
			return Convert.ToInt32(_Data[i]);
		}

		public object this[string name]
		{
			get
			{
				int ci = this.GetOrdinal(name);
				return _Data[ci];
			}
		}

		object System.Data.IDataRecord.this[int i]
		{
			get
			{
				return _Data[i];
			}
		}

		public object GetValue(int i)
		{
			return _Data[i];
		}

		public bool IsDBNull(int i)
		{
			return _Data[i] == null;
		}

		public long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length)
		{
			throw new NotImplementedException("GetBytes not implemented.");
		}

		public byte GetByte(int i)
		{
			return Convert.ToByte(_Data[i]);
		}

		public Type GetFieldType(int i)
		{
			return _Types[i];
		}

		public decimal GetDecimal(int i)
		{
			return Convert.ToDecimal(_Data[i]);
		}

		public int GetValues(object[] values)
		{
			int i;
			for (i=0; i < values.Length; i++)
			{
				values[i] = i >= _Data.Length? System.DBNull.Value: _Data[i];
			}

			return Math.Min(values.Length, _Data.Length);
		}

		public string GetName(int i)
		{
			return _Names[i] as string;
		}

		public int FieldCount
		{
			get
			{
				return _Data.Length;
			}
		}

		public long GetInt64(int i)
		{
			return Convert.ToInt64(_Data[i]);
		}

		public double GetDouble(int i)
		{
			return Convert.ToDouble(_Data[i]);
		}

		public bool GetBoolean(int i)
		{
			return Convert.ToBoolean(_Data[i]);
		}

		public Guid GetGuid(int i)
		{
			throw new NotImplementedException("GetGuid not implemented.");
		}

		public DateTime GetDateTime(int i)
		{
			return Convert.ToDateTime(_Data[i]);
		}

		public int GetOrdinal(string name)
		{
			int ci=0;
			// do case sensitive lookup
			foreach (string cname in _Names)
			{
				if (cname == name)
					return ci;
				ci++;
			}

			// do case insensitive lookup
			ci=0;
			name = name.ToLower();
			foreach (string cname in _Names)
			{
				if (cname.ToLower() == name)
					return ci;
				ci++;
			}

			throw new ArgumentException(string.Format("Column '{0}' not known.", name));
		}

		public string GetDataTypeName(int i)
		{
			Type t = _Types[i] as Type;
			return t.ToString();
		}

		public float GetFloat(int i)
		{
			return Convert.ToSingle(_Data[i]);
		}

		public IDataReader GetData(int i)
		{
			throw new NotImplementedException("GetData not implemented.");
		}

		public long GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, int length)
		{
			throw new NotImplementedException("GetChars not implemented.");
		}

		public string GetString(int i)
		{
			return Convert.ToString(_Data[i]);
		}

		public char GetChar(int i)
		{
			return Convert.ToChar(_Data[i]);
		}

		public short GetInt16(int i)
		{
			return Convert.ToInt16(_Data[i]);
		}

		#endregion
	}
}


================================================
FILE: DataProviders/HttpClientExtension.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

namespace Majorsilence.Reporting.Data
{
    internal static class HttpClientExtension
    {
        public static void AddMajorsilenceReportingUserAgent(this HttpClient client)
        {
            if (client.DefaultRequestHeaders.UserAgent.Count == 0)
            {
                client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3 MajorsilenceReporting/1.0");
            }
        }
    }
}


================================================
FILE: DataProviders/JsonCommand.cs
================================================

using System;
using System.Xml;
using System.Data;
using System.Collections;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// TxtCommand allows specifying the command for a text file.
	/// </summary>
	public class JsonCommand : IDbCommand
	{
		JsonConnection _tc;			// connection we're running under
		string _cmd;				// command to execute
		// parsed constituents of the command
		string[] _Columns;			// hold the column list
		DataParameterCollection _Parameters = new DataParameterCollection();

		public JsonCommand(JsonConnection conn)
		{
			_tc = conn;
        }

		internal string[] Columns
		{
			get {return _Columns;}
		}
        
        private string _tableName = null; // Add this field with default value

        public string TableName
        {
            get { return _tableName; }
        }

		internal string Url
		{
			get 
			{
				// Check to see if "Url" or "@Url" is a parameter
				IDbDataParameter dp= _Parameters["Url"] as IDbDataParameter;
				if (dp == null)
					dp= _Parameters["@Url"] as IDbDataParameter;
				// Then check to see if the Url value is a parameter?
				if (dp == null)
					dp = _Parameters[_tc.Url] as IDbDataParameter;
				if (dp != null)
					return dp.Value != null? dp.Value.ToString(): _tc.Url;	// don't pass null; pass existing value
				return _tc.Url;	// the value must be a constant
			}
		}

		#region IDbCommand Members

		public void Cancel()
		{
			throw new NotImplementedException("Cancel not implemented");
		}

		public void Prepare()
		{
			return;			// Prepare is a noop
		}

		public System.Data.CommandType CommandType
		{
			get
			{
				throw new NotImplementedException("CommandType not implemented");
			}
			set
			{
			}
		}

		public IDataReader ExecuteReader(System.Data.CommandBehavior behavior)
		{
			if (!(behavior == CommandBehavior.SingleResult || 
				  behavior == CommandBehavior.SchemaOnly))
				throw new ArgumentException("ExecuteReader supports SingleResult and SchemaOnly only.");
			return new JsonDataReader(behavior, _tc, this);
		}

		IDataReader System.Data.IDbCommand.ExecuteReader()
		{
			return ExecuteReader(System.Data.CommandBehavior.SingleResult);
		}

		public object ExecuteScalar()
		{
			throw new NotImplementedException("ExecuteScalar not implemented");
		}

		public int ExecuteNonQuery()
		{
			throw new NotImplementedException("ExecuteNonQuery not implemented");
		}

		public int CommandTimeout
		{
			get
			{
				return 0;
			}
			set
			{
				throw new NotImplementedException("CommandTimeout not implemented");
			}
		}

		public IDbDataParameter CreateParameter()
		{
			return new TxtDataParameter();
		}

		public IDbConnection Connection
		{
			get
			{
				return this._tc;
			}
			set
			{
				throw new NotImplementedException("Setting Connection not implemented");
			}
		}

		public System.Data.UpdateRowSource UpdatedRowSource
		{
			get
			{
				throw new NotImplementedException("UpdatedRowSource not implemented");
			}
			set
			{
				throw new NotImplementedException("UpdatedRowSource not implemented");
			}
		}

		public string CommandText
		{
			get
			{
				return this._cmd;
			}
			set
			{
				// Parse the command string for keyword value pairs separated by ';'
				string[] args = value.Split(';');
				string[] columns = null;
				foreach(string arg in args)
				{
					string[] param = arg.Trim().Split('=');
					if (param == null || param.Length != 2)
						continue;
					string key = param[0].Trim().ToLower();
					string val = param[1];
					switch (key)
					{
						case "columns":
							// column list is separated by ','
							columns = val.Trim().Split(',');
							break;
                        case "table":
                            _tableName = val;
                            break;
						default:
							throw new ArgumentException(string.Format("{0} is an unknown parameter key", param[0]));
					}
				}

				_cmd = value;
				_Columns = columns;
			}
		}

		public IDataParameterCollection Parameters
		{
			get
			{
				return _Parameters;
			}
		}

		public IDbTransaction Transaction
		{
			get
			{
				throw new NotImplementedException("Transaction not implemented");
			}
			set
			{
				throw new NotImplementedException("Transaction not implemented");
			}
		}

		#endregion

		#region IDisposable Members

		public void Dispose()
		{
			// nothing to dispose of
		}

		#endregion
	}
}


================================================
FILE: DataProviders/JsonConnection.cs
================================================

using System;
using System.Xml;
using System.Data;
using System.Net.Http;

namespace Majorsilence.Reporting.Data
{
    /// <summary>
    /// LogConnection handles connections to web log.
    /// </summary>
    public class JsonConnection : IDbConnection
    {
        string _Connection;             // the connection string; of format file=
        bool bOpen = false;
        public HttpClient Client { get; private set; }
        private bool shouldDisposeClient = false;

        /// <summary>
        /// 
        /// </summary>
        /// <param name="conn"></param>
        /// <exception cref="ArgumentNullException"></exception>
        /// <example>
        /// <code>
        /// var conn1 = new JsonConnection("file=TestData.json");
        /// var conn2 = new JsonConnection("url=https://raw.githubusercontent.com/majorsilence/My-FyiReporting/refs/heads/master/RdlCreator.Tests/TestData.json");
        /// var conn3 = new JsonConnection("url=https://example.com/path/to/json/TestData.json;auth=Basic: <credentials>");
        /// var conn4 = new JsonConnection("url=https://example.com/path/to/json/TestData.json;auth=Bearer: <Token>");
        /// </code>
        /// </example>
        public JsonConnection(string conn) : this(conn, new HttpClient())
        {
            shouldDisposeClient = true;
        }

        public JsonConnection(string conn, HttpClient httpClient)
        {
            ConnectionString = conn;
            Client = httpClient ?? throw new ArgumentNullException(nameof(httpClient), "HttpClient cannot be null");
        }
        
        private string _tableName = null; // Add this field with default value

        // Add property to access the table name
        public string TableName
        {
            get { return _tableName; }
        }

        internal bool IsOpen
        {
            get { return bOpen; }
        }

        public string Url { get; private set; }
        public string Auth { get; private set; }

        #region IDbConnection Members

        public void ChangeDatabase(string databaseName)
        {
            throw new NotImplementedException("ChangeDatabase method not supported.");
        }

        public IDbTransaction BeginTransaction(System.Data.IsolationLevel il)
        {
            throw new NotImplementedException("BeginTransaction method not supported.");
        }

        IDbTransaction System.Data.IDbConnection.BeginTransaction()
        {
            throw new NotImplementedException("BeginTransaction method not supported.");
        }

        public System.Data.ConnectionState State
        {
            get
            {
                throw new NotImplementedException("State not implemented");
            }
        }

        public string ConnectionString
        {
            get
            {
                return _Connection;
            }
            set
            {
                _Connection = value;
                SetUrlFromConnection();
            }
        }

        public IDbCommand CreateCommand()
        {
            return new JsonCommand(this);
        }

        public void Open()
        {
            bOpen = true;
        }

        public void Close()
        {
            bOpen = false;
        }

        public string Database
        {
            get
            {
                return null;            // don't really have a database
            }
        }

        public int ConnectionTimeout
        {
            get
            {
                return 0;
            }
        }

        #endregion

        private void SetUrlFromConnection()
        {
            string[] args = ConnectionString.Split(';');
            string url = null;
            foreach (string arg in args)
            {
                string[] param = arg.Trim().Split('=');
                if (param == null || param.Length != 2)
                    continue;
                string key = param[0].Trim().ToLower();
                string val = param[1];
                switch (key)
                {
                    case "url":
                    case "file":
                        url = val;
                        break;
                    case "memory:":
                        // Memory is not supported in JsonConnection
                        throw new NotSupportedException("Memory parameter is not supported in JsonConnection.");
                    case "auth":
                    case "authorization":
                        Auth=val.Trim();
                        break;
                    case "table":
                        _tableName = val;
                        break;
                    default:
                        throw new ArgumentException(string.Format("{0} is an unknown parameter key", param[0]));
                }
            }

            // User must specify both the url and the RowsXPath
            if (url == null)
                throw new ArgumentException("CommandText requires a 'Url=' parameter.");

            Url = url.Trim();
        }

        #region IDisposable Members

        public void Dispose()
        {
            if (shouldDisposeClient)
            {
                Client?.Dispose();
                Client = null;
            }
            this.Close();
        }

        #endregion
    }
}


================================================
FILE: DataProviders/JsonDataReader.cs
================================================
using System;
using System.Xml;
using System.Data;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;

namespace Majorsilence.Reporting.Data
{
    public class JsonDataReader : IDataReader
    {
        private readonly Dictionary<string, IDataReader> _readers;
        private readonly IDataReader _rootReader;

        JsonConnection _tconn;
        JsonCommand _tcmd;
        System.Data.CommandBehavior _behavior;
        private readonly string[] _requestedColumns;

        public JsonDataReader(System.Data.CommandBehavior behavior, JsonConnection conn, JsonCommand cmd)
        {
            _behavior = behavior;
            _tcmd = cmd ?? throw new ArgumentNullException(nameof(cmd), "Command cannot be null.");
            _tconn = conn ?? throw new ArgumentNullException(nameof(conn), "Connection cannot be null.");
            _requestedColumns = cmd.Columns;
        
            string json = Task.Run(async () => await ReadAllJsonAsync()).GetAwaiter().GetResult();

            var extractor = new JsonTableExtractor();
            var allReaders = extractor.Extract(json);
    
            _readers = allReaders;
    
            // Use the table name from the command
            string tableName = cmd.TableName ??  conn.TableName ?? "root";
            if (!_readers.TryGetValue(tableName, out _rootReader))
            {
                throw new InvalidOperationException(
                    $"Table '{tableName}' not found in JSON data. Available tables: {string.Join(", ", _readers.Keys)}");
            }
    
            // Apply column filtering if needed
            if (_requestedColumns != null && _requestedColumns.Length > 0)
            {
                _rootReader = new FilteredDictionaryDataReader(
                    (DictionaryDataReader)_rootReader, 
                    _requestedColumns);
            }
        }

        /// <summary>
        /// The main reader for the top-level JSON array.
        /// </summary>
        public IDataReader Root => _rootReader;

        /// <summary>
        /// Gets a child or nested reader (e.g., "root_Dependents").
        /// </summary>
        public IDataReader? GetTable(string name) =>
            _readers.TryGetValue(name, out var reader) ? reader : null;

        /// <summary>
        /// List of available table names.
        /// </summary>
        public IEnumerable<string> TableNames => _readers.Keys;

        // IDataReader - Delegate all to _rootReader
        public bool Read() => _rootReader.Read();
        public int FieldCount => _rootReader.FieldCount;
        public string GetName(int i) => _rootReader.GetName(i);
        public int GetOrdinal(string name) => _rootReader.GetOrdinal(name);
        public object GetValue(int i) => _rootReader.GetValue(i);

        public int GetValues(object[] values)
        {
            return _rootReader.GetValues(values);
        }

        public object this[int i] => _rootReader[i];
        public object this[string name] => _rootReader[name];
        public bool IsDBNull(int i) => _rootReader.IsDBNull(i);
        public Type GetFieldType(int i) => _rootReader.GetFieldType(i);

        public void Close() => _rootReader.Close();
        public void Dispose() => _rootReader.Dispose();
        public bool NextResult() => false;
        public int Depth => 0;
        public bool IsClosed => false;
        public int RecordsAffected => -1;

        public DataTable GetSchemaTable() => _rootReader.GetSchemaTable();
        public bool GetBoolean(int i) => (bool)GetValue(i);
        public byte GetByte(int i) => (byte)GetValue(i);

        public long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length) =>
            _rootReader.GetBytes(i, fieldOffset, buffer, bufferoffset, length);

        public char GetChar(int i) => (char)GetValue(i);

        public long GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, int length) =>
            _rootReader.GetChars(i, fieldoffset, buffer, bufferoffset, length);

        public IDataReader GetData(int i) => _rootReader.GetData(i);
        public string GetDataTypeName(int i) => GetFieldType(i).Name;
        public DateTime GetDateTime(int i) => (DateTime)GetValue(i);
        public decimal GetDecimal(int i) => (decimal)GetValue(i);
        public double GetDouble(int i) => (double)GetValue(i);
        public float GetFloat(int i) => (float)GetValue(i);
        public Guid GetGuid(int i) => (Guid)GetValue(i);
        public short GetInt16(int i) => (short)GetValue(i);
        public int GetInt32(int i) => (int)GetValue(i);
        public long GetInt64(int i) => (long)GetValue(i);
        public string GetString(int i) => GetValue(i)?.ToString();

        async Task<StreamReader> GetStream()
        {
            string fname = _tcmd.Url;
            Stream strm = null;

            if (fname.StartsWith("http:") || fname.StartsWith("https:"))
            {
                _tconn.Client.AddMajorsilenceReportingUserAgent();
                // set auth if found in connection string
                // via a request object

                var request = new HttpRequestMessage(HttpMethod.Get, fname);

                if (!string.IsNullOrWhiteSpace(_tconn.Auth))
                {
                    var authParts = _tconn.Auth.Split(':');
                    string authScheme = authParts[0];
                    string authParameters = authParts[1];
                    request.Headers.Authorization =
                        new System.Net.Http.Headers.AuthenticationHeaderValue(authScheme, authParameters);
                }

                HttpResponseMessage response = await _tconn.Client.SendAsync(request);
                response.EnsureSuccessStatusCode();
                strm = await response.Content.ReadAsStreamAsync();
            }
            else if (fname.StartsWith("file:"))
            {
                strm = new FileStream(fname.Substring(5), System.IO.FileMode.Open, FileAccess.Read);
            }
            else
            {
                strm = new FileStream(fname, System.IO.FileMode.Open, FileAccess.Read);
            }

            return new StreamReader(strm);
        }

        private async Task<string> ReadAllJsonAsync()
        {
            using var sr = await GetStream();
            return await sr.ReadToEndAsync();
        }
    }
}

================================================
FILE: DataProviders/JsonTableExtractor.cs
================================================
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text.Json;

namespace Majorsilence.Reporting.Data
{
    public class JsonTableExtractor
    {
        private readonly Dictionary<string, List<Dictionary<string, object>>> _tables = new();

        public Dictionary<string, IDataReader> Extract(string json)
        {
            using var doc = JsonDocument.Parse(json);
            var rootElement = doc.RootElement;

            _tables["root"] = new();

            if (rootElement.ValueKind == JsonValueKind.Array)
            {
                // Handle array root (existing logic)
                foreach (var item in rootElement.EnumerateArray())
                {
                    var row = new Dictionary<string, object>();
                    var guid = Guid.NewGuid().ToString();
                    row["__guid"] = guid;
                    _tables["root"].Add(row);

                    Flatten(item, row, "root", guid);
                }
            }
            else if (rootElement.ValueKind == JsonValueKind.Object)
            {
                // Handle object root (new logic)
                var row = new Dictionary<string, object>();
                var guid = Guid.NewGuid().ToString();
                row["__guid"] = guid;
                _tables["root"].Add(row);

                Flatten(rootElement, row, "root", guid);
            }
            else
            {
                throw new InvalidOperationException("Root element must be an array or object.");
            }

            return _tables.ToDictionary(kv => kv.Key, kv => (IDataReader)new DictionaryDataReader(kv.Value));
        }

        private void Flatten(JsonElement element, Dictionary<string, object> currentRow, string currentTable,
            string parentGuid)
        {
            foreach (var prop in element.EnumerateObject())
            {
                var name = prop.Name;
                var val = prop.Value;

                switch (val.ValueKind)
                {
                    case JsonValueKind.Array:
                        // Handle arrays as before - creates child tables
                        var tableName = $"{currentTable}_{name}";
                        if (!_tables.ContainsKey(tableName))
                            _tables[tableName] = new();

                        foreach (var item in val.EnumerateArray())
                        {
                            var childRow = new Dictionary<string, object> { ["__parent_guid"] = parentGuid };

                            if (item.ValueKind == JsonValueKind.Object)
                                Flatten(item, childRow, tableName, parentGuid);
                            else
                                childRow[name] = GetPrimitiveValue(item);

                            _tables[tableName].Add(childRow);
                        }

                        break;

                    case JsonValueKind.Object:
                        // Two approaches for objects:
                        // 1. Create a nested dictionary and store the entire object
                        var nestedDict = new Dictionary<string, object>();
                        foreach (var nested in val.EnumerateObject())
                        {
                            if (nested.Value.ValueKind == JsonValueKind.Object ||
                                nested.Value.ValueKind == JsonValueKind.Array)
                            {
                                // For deeply nested objects, recursively process them
                                var childGuid = Guid.NewGuid().ToString();
                                var nestedTable = $"{currentTable}_{name}_{nested.Name}";

                                if (nested.Value.ValueKind == JsonValueKind.Object)
                                {
                                    // Handle nested object
                                    if (!_tables.ContainsKey(nestedTable))
                                        _tables[nestedTable] = new();

                                    var childRow = new Dictionary<string, object> { ["__parent_guid"] = parentGuid };
                                    Flatten(nested.Value, childRow, nestedTable, childGuid);
                                    _tables[nestedTable].Add(childRow);
                                }

                                nestedDict[nested.Name] = GetPrimitiveValue(nested.Value);
                            }
                            else
                            {
                                nestedDict[nested.Name] = GetPrimitiveValue(nested.Value);
                            }
                        }

                        currentRow[name] = nestedDict;

                        // 2. Also flatten the object properties with prefixed names (for backward compatibility)
                        foreach (var nested in val.EnumerateObject())
                        {
                            if (nested.Value.ValueKind != JsonValueKind.Object &&
                                nested.Value.ValueKind != JsonValueKind.Array)
                            {
                                currentRow[$"{name}_{nested.Name}"] = GetPrimitiveValue(nested.Value);
                            }
                        }

                        break;

                    default:
                        currentRow[name] = GetPrimitiveValue(val);
                        break;
                }
            }
        }

        private object? GetPrimitiveValue(JsonElement element)
        {
            return element.ValueKind switch
            {
                JsonValueKind.String => element.GetString(),
                JsonValueKind.Number when element.TryGetInt64(out var l) => l,
                JsonValueKind.Number => element.GetDouble(),
                JsonValueKind.True => true,
                JsonValueKind.False => false,
                JsonValueKind.Null => null,
                _ => element.ToString() // Fallback to raw JSON for unhandled types
            };
        }
    }
}

================================================
FILE: DataProviders/LexCharReader.cs
================================================
using System;
using System.IO;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// char reader simply reads entire file into a string and processes.
	/// </summary>
	internal class LexCharReader
	{
		string file = null;
		int    ptr  = 0;

		int col = 1;				// column within line
		int savecol = 1;			//   saved column before a line feed
		int line = 1;				// line within file

		/// <summary>
		/// Initializes a new instance of the CharReader class.
		/// </summary>
		/// <param name="textReader">TextReader with DPL definition.</param>
		internal LexCharReader(TextReader textReader)
		{
			file = textReader.ReadToEnd();
			textReader.Close();
		}
		
		/// <summary>
		/// Returns the next char from the stream.
		/// </summary>
		/// <returns>The next char.</returns>
		internal char GetNext()
		{
			if (EndOfInput()) 
			{
				return '\0';
			}
			char ch = file[ptr++];
			col++;					// increment column counter

			if(ch == '\n') 
			{
				line++;				// got new line
				savecol = col;
				col = 1;			// restart column counter
			}
			return ch;
		}
		
		/// <summary>
		/// Returns the next char from the stream without removing it.
		/// </summary>
		/// <returns>The top char.</returns>
		internal char Peek()
		{
			if (EndOfInput()) // ok to peek at end of file
				return '\0';

			return file[ptr];
		}
		
		/// <summary>
		/// Undoes the extracting of the last char.
		/// </summary>
		internal void UnGet()
		{
			--ptr;
			if (ptr < 0) 
				throw new Exception("error : FileReader.UnGet : ungetted first char");
			
			char ch = file[ptr];
			if (ch == '\n')				// did we unget a new line?
			{
				line--;					// back up a line
				col = savecol;			// go back to previous column too
			}
	}
		
		/// <summary>
		/// Returns True if end of input was reached; otherwise False.
		/// </summary>
		/// <returns>True if end of input was reached; otherwise False.</returns>
		internal bool EndOfInput()
		{
			return ptr >= file.Length;
		}

		/// <summary>
		/// Gets the current column.
		/// </summary>
		internal int Column 
		{
			get
			{
				return col;
			}
		}

		/// <summary>
		/// Gets the current line.
		/// </summary>
		internal int Line
		{
			get
			{
				return line;
			}
		}
	}
}


================================================
FILE: DataProviders/LexToken.cs
================================================

using System;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// Token class that used by Lexer.
	/// </summary>
	internal class LexToken
	{
		internal string Value;
		internal LexTokenTypes Type;

		/// <summary>
		/// Initializes a new instance of the Token class.
		/// </summary>
		internal LexToken(string value, LexTokenTypes type)
		{
			Value = value;
			Type = type;
		}

		/// <summary>
		/// Returns a string representation of the Token.
		/// </summary>
		public override string ToString()
		{
			return "<" + Type + "> " + Value;	
		}
	}
}


================================================
FILE: DataProviders/LexTokenList.cs
================================================


using System;
using System.Collections;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// Represents a list of the tokens.
	/// </summary>
	internal class LexTokenList : IEnumerable
	{
		private ArrayList tokens = null;

		internal LexTokenList()
		{
			tokens = new ArrayList();
		}

		internal void Add(LexToken token)
		{
			tokens.Add(token);
		}

		internal void Push(LexToken token)
		{
			tokens.Insert(0, token);
		}

		internal LexToken Peek()
		{
			return (LexToken)tokens[0];
		}

		internal LexToken Extract()
		{
			LexToken token = (LexToken)tokens[0];
			tokens.RemoveAt(0);
			return token;
		}

		internal int Count
		{
			get
			{
				return tokens.Count;
			}
		}

		public IEnumerator GetEnumerator()
		{
			return tokens.GetEnumerator();
		}
	}
}


================================================
FILE: DataProviders/LexTokenTypes.cs
================================================

using System;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// Types of tokens
	/// </summary>
	internal enum LexTokenTypes
	{
		DATETIME,
		STRING,
		EOF
	}
}


================================================
FILE: DataProviders/Lexer.cs
================================================

using System;
using System.IO;
using System.Collections;
using System.Text;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// A simple Lexer that is used by Parser.
	/// </summary>
	internal class Lexer
	{
		private LexTokenList tokens;
		private LexCharReader reader;
		internal char SeparatorChar=' ';
		internal bool SeparateDatetime=true;
		internal bool SeparateQuoted=true;

		/// <summary>
		/// Initializes a new instance of the Lexer class with the specified
		/// TextReader to lex.
		/// </summary>
		/// <param name="source">A TextReader to lex.</param>
		internal Lexer(TextReader source)
		{
			// token queue
			tokens = new LexTokenList();

			// read the file contents
			reader = new LexCharReader(source);
		}

		/// <summary>
		/// Breaks the input stream onto the tokens list and returns it.
		/// </summary>
		/// <returns>The tokens list.</returns>
		internal LexTokenList Lex()
		{
			LexToken token = GetNextToken();
			while(true)
			{
				if(token != null)
					tokens.Add(token);
				else
				{
					tokens.Add(new LexToken(null, LexTokenTypes.EOF));
					return tokens;
				}

				token = GetNextToken();
			}
		}

		private LexToken GetNextToken()
		{
			while(!reader.EndOfInput())
			{
				char ch = reader.GetNext();

				// skipping whitespaces	at front of token
				if(Char.IsWhiteSpace(ch))
				{
					continue;
				}
				switch(ch)
				{
					case '"':
					case '\'':
						if (SeparateQuoted)
							return ReadQuoted(ch);
						break;
					case '[':
						if (SeparateDatetime)
							return ReadDateTime(']');
						break;
					default:
						break;
				} // end of switch
				return ReadToChar(ch, SeparatorChar);
			}
			return null;
		}

		// Quoted string like " asdf " or ' asdf '
		private LexToken ReadQuoted(char ch)
		{
			char qChar = ch;
			StringBuilder quoted = new StringBuilder();

			while(!reader.EndOfInput())
			{
				ch = reader.GetNext();
				if (ch == '\\' && reader.Peek() == qChar)	// look for escaped '"'/"'"
					ch = reader.GetNext();				// got one skip escape char
				else if (ch == qChar)
					return new LexToken(quoted.ToString(), LexTokenTypes.STRING);

				quoted.Append(ch);
			}
			throw new Exception("Unterminated string!");
		}

		// Read string to specified character
		private LexToken ReadToChar(char firstc, char ch)
		{
			char qChar = ch;
			StringBuilder quoted = new StringBuilder();
			quoted.Append(firstc);

			while(!reader.EndOfInput())
			{
				ch = reader.GetNext();
				if (ch == qChar)
					return new LexToken(quoted.ToString(), LexTokenTypes.STRING);

				quoted.Append(ch);
			}
			return new LexToken(quoted.ToString(), LexTokenTypes.STRING);
		}

		// Read a datetime field == denoted by [...]
		private LexToken ReadDateTime(char ch)
		{
			char qChar = ch;
			StringBuilder quoted = new StringBuilder();

			while(!reader.EndOfInput())
			{
				ch = reader.GetNext();
				if (ch == qChar)
					break;

				quoted.Append(ch);
			}

			return new LexToken(quoted.ToString(), LexTokenTypes.DATETIME);
		}

	}
}


================================================
FILE: DataProviders/LogCommand.cs
================================================

using System;
using System.Xml;
using System.Data;
using System.Collections;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// LogCommand allows specifying the command for the web log.
	/// </summary>
	public class LogCommand : IDbCommand
	{
		LogConnection _lc;			// connection we're running under
		string _cmd;				// command to execute
		// parsed constituents of the command
		string _Url;				// url of the file 
		string _Domain;				
		string _IndexFile;			// name of the index file; e.g. what's the default page when none (e.g. index.html)
		DataParameterCollection _Parameters = new DataParameterCollection();

		public LogCommand(LogConnection conn)
		{
			_lc = conn;
		}

		internal string Url
		{
			get 
			{
				// Check to see if "Url" or "@Url" is a parameter
				IDbDataParameter dp= _Parameters["Url"] as IDbDataParameter;
				if (dp == null)
					dp= _Parameters["@Url"] as IDbDataParameter;
				// Then check to see if the Url value is a parameter?
				if (dp == null)
					dp = _Parameters[_Url] as IDbDataParameter;
				if (dp != null)
					return dp.Value != null? dp.Value.ToString(): _Url;	// don't pass null; pass existing value
				return _Url;	// the value must be a constant
			}
			set {_Url = value;}
		}

		internal string Domain
		{
			get 
			{
				// Check to see if "Domain" or "@Domain" is a parameter
				IDbDataParameter dp= _Parameters["Domain"] as IDbDataParameter;
				if (dp == null)
					dp= _Parameters["@Domain"] as IDbDataParameter;
				// Then check to see if the Domain value is a parameter?
				if (dp == null)
					dp = _Parameters[_Domain] as IDbDataParameter;
				return (dp == null || dp.Value == null)? _Domain: dp.Value.ToString();
			}
			set {_Domain = value;}
		}

		internal string IndexFile
		{
			get 
			{
				// Check to see if "IndexFile" or "@IndexFile" is a parameter
				IDbDataParameter dp= _Parameters["IndexFile"] as IDbDataParameter;
				if (dp == null)
					dp= _Parameters["@IndexFile"] as IDbDataParameter;
				// Then check to see if the IndexFile value is a parameter?
				if (dp == null)
					dp = _Parameters[_IndexFile] as IDbDataParameter;
				return (dp == null || dp.Value == null)? _IndexFile: dp.Value.ToString();
			}
			set {_IndexFile = value;}
		}

		#region IDbCommand Members

		public void Cancel()
		{
			throw new NotImplementedException("Cancel not implemented");
		}

		public void Prepare()
		{
			return;			// Prepare is a noop
		}

		public System.Data.CommandType CommandType
		{
			get
			{
				throw new NotImplementedException("CommandType not implemented");
			}
			set
			{
				throw new NotImplementedException("CommandType not implemented");
			}
		}

		public IDataReader ExecuteReader(System.Data.CommandBehavior behavior)
		{
			if (!(behavior == CommandBehavior.SingleResult || 
				  behavior == CommandBehavior.SchemaOnly))
				throw new ArgumentException("ExecuteReader supports SingleResult and SchemaOnly only.");
			return new LogDataReader(behavior, _lc, this);
		}

		IDataReader System.Data.IDbCommand.ExecuteReader()
		{
			return ExecuteReader(System.Data.CommandBehavior.SingleResult);
		}

		public object ExecuteScalar()
		{
			throw new NotImplementedException("ExecuteScalar not implemented");
		}

		public int ExecuteNonQuery()
		{
			throw new NotImplementedException("ExecuteNonQuery not implemented");
		}

		public int CommandTimeout
		{
			get
			{
				return 0;
			}
			set
			{
				throw new NotImplementedException("CommandTimeout not implemented");
			}
		}

		public IDbDataParameter CreateParameter()
		{
			return new LogDataParameter();
		}

		public IDbConnection Connection
		{
			get
			{
				return this._lc;
			}
			set
			{
				throw new NotImplementedException("Setting Connection not implemented");
			}
		}

		public System.Data.UpdateRowSource UpdatedRowSource
		{
			get
			{
				throw new NotImplementedException("UpdatedRowSource not implemented");
			}
			set
			{
				throw new NotImplementedException("UpdatedRowSource not implemented");
			}
		}

		public string CommandText
		{
			get
			{
				return this._cmd;
			}
			set
			{
				// Parse the command string for keyword value pairs separated by ';'
				string[] args = value.Split(';');
				string url=null;
				string domain=null;
				string indexfile=null;
				foreach(string arg in args)
				{
					string[] param = arg.Trim().Split('=');
					if (param == null || param.Length != 2)
						continue;
					string key = param[0].Trim().ToLower();
					string val = param[1];
					switch (key)
					{
						case "url":
						case "file":
							url = val;
							break;
						case "domain":
							domain = val;
							break;
						case "indexfile":
							indexfile = val;
							break;
						default:
							throw new ArgumentException(string.Format("{0} is an unknown parameter key", param[0]));
					}
				}
				// User must specify both the url and the RowsXPath
				if (url == null)
					throw new ArgumentException("CommandText requires a 'Url=' parameter.");
				_cmd = value;
				_Url = url;
				_Domain = domain;
				_IndexFile = indexfile;
			}
		}

		public IDataParameterCollection Parameters
		{
			get
			{
				return _Parameters;
			}
		}

		public IDbTransaction Transaction
		{
			get
			{
				throw new NotImplementedException("Transaction not implemented");
			}
			set
			{
				throw new NotImplementedException("Transaction not implemented");
			}
		}

		#endregion

		#region IDisposable Members

		public void Dispose()
		{
			// nothing to dispose of
		}

		#endregion
	}
}


================================================
FILE: DataProviders/LogConnection.cs
================================================

using System;
using System.Xml;
using System.Data;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// LogConnection handles connections to web log.
	/// </summary>
	public class LogConnection : IDbConnection
	{
		string _Connection;				// the connection string; of format file=
		bool bOpen=false;
		public LogConnection(string conn)
		{
			ConnectionString = conn;
		}

		internal bool IsOpen
		{
			get {return bOpen;}
		}

		#region IDbConnection Members

		public void ChangeDatabase(string databaseName)
		{
			throw new NotImplementedException("ChangeDatabase method not supported.");
		}

		public IDbTransaction BeginTransaction(System.Data.IsolationLevel il)
		{
			throw new NotImplementedException("BeginTransaction method not supported.");
		}

		IDbTransaction System.Data.IDbConnection.BeginTransaction()
		{
			throw new NotImplementedException("BeginTransaction method not supported.");
		}

		public System.Data.ConnectionState State
		{
			get
			{
				throw new NotImplementedException("State not implemented");
			}
		}

		public string ConnectionString
		{
			get
			{
				return _Connection;
			}
			set
			{
				string c = value;
				// Now parse the connection string;
				Array args = c.Split (',');
				string directory=null;
				foreach(string arg in args)
				{
					if (arg.Trim().ToLower().StartsWith("directory="))	// Only have one type of argument right now
						directory = arg.Trim().Split('=').GetValue(1) as string;
				}
				_Connection = value;
			}
		}

		public IDbCommand CreateCommand()
		{
			return new LogCommand(this);
		}

		public void Open()
		{
			bOpen = true;
		}

		public void Close()
		{
			bOpen = false;
		}

		public string Database
		{
			get
			{
				return null;			// don't really have a database
			}
		}

		public int ConnectionTimeout
		{
			get
			{
				return 0;
			}
		}

		#endregion

		#region IDisposable Members

		public void Dispose()
		{
			this.Close();
		}

		#endregion
	}
}


================================================
FILE: DataProviders/LogDataParameter.cs
================================================

using System;
using System.Xml;
using System.Data;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// XmlDataParameter
	/// </summary>
	public class LogDataParameter : BaseDataParameter
	{
		public LogDataParameter():base()
		{
		}
	}
}


================================================
FILE: DataProviders/LogDataReader.cs
================================================

using System;
using System.Data;
using System.Collections;
using System.Collections.Specialized;
using System.IO;
using System.Net;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// LogDataReader handles reading log files
	/// </summary>
	public class LogDataReader : IDataReader
	{
		LogConnection _lconn;
		LogCommand _lcmd;
		System.Data.CommandBehavior _behavior;
		Hashtable _CompressStrings;	// we keep hashtable of strings so that we can reuse to save memory
									// most web sites won't have huge duplicates.

		MultipleStreamReader _sr;	// StreamReader for _Url
		string _Domain;				// domain name from LogCommand
		string _IndexFile;			// index file name
		object[] _Data;				// data values of the columns

		// column information: is fixed for all instances
		// names of all the columns
		static string[] _Names= new string[] {"host","client_identifier","user","datetime",
												 "request_cmd","request_url","request_type", "request_parameters","status_code",
												 "bytes", "referrer", "user_agent", "cookie"};
		// types of all the columns
		static Type _dttype = DateTime.MinValue.GetType();		// work variable for getting the type
		static Type _tstring = "".GetType();
		static Type _dtype = Double.MinValue.GetType();
		static Type[] _Types = new Type[] {_tstring,_tstring,_tstring,_dttype,
											  _tstring,_tstring,_tstring,_tstring,_tstring,
											  _dtype,_tstring,_tstring,_tstring};
		const int DATETIME_FIELD=3;	// the date time field
		const int REQUEST_FIELD=4;	// the request field
		const int BYTES_FIELD=9;	// the bytes field


		public LogDataReader(System.Data.CommandBehavior behavior, LogConnection conn, LogCommand cmd)
		{
			_lconn = conn;
			_lcmd = cmd;
			_behavior = behavior;
			_CompressStrings = new Hashtable(10000);		// compress strings to save memory
			
			string fname = _lcmd.Url;
			_Domain = _lcmd.Domain;
			if (_Domain == null)
				_Domain = "";
			_IndexFile = _lcmd.IndexFile;
			if (_IndexFile == null)
				_IndexFile = "";

			if (behavior != CommandBehavior.SchemaOnly)
				_sr = new MultipleStreamReader(_lcmd.Url);	// get the main stream

			_Data = new object[_Names.Length];			// allocate enough room for data
		}

		#region IDataReader Members

		public int RecordsAffected
		{
			get
			{
				return 0;
			}
		}

		public bool IsClosed
		{
			get
			{
				return _sr == null;
			}
		}

		public bool NextResult()	   
		{
			return false;
		}

		public void Close()
		{
			_CompressStrings = null;
			if (_sr != null)
			{
				_sr.Close();
				_sr = null;
			}
			_Data = null;
		}

		public bool Read()
		{
			if (this._sr == null)
				return false;

			// read a line of the log
			string line = _sr.ReadLine();
			if (line == null)
				return false;

			// obtain the data from each column and put the data array
			Lexer l = new Lexer(new StringReader(line));
			LexTokenList ll = l.Lex();
			int ci=0;					// start at first column
			if (ll.Count > 11)
				ci = 0;
			foreach (LexToken lt in ll)
			{
				if (ci >= _Data.Length || lt.Type == LexTokenTypes.EOF)
					break;
				
				if (ci == DATETIME_FIELD)
				{
					_Data[ci] =GetDateTime(lt.Value);
				}
				else if (ci == REQUEST_FIELD)
				{	// break the request into multiple fields; command, url, http type
					string[] reqs = lt.Value.Split(' ');

					string req_cmd=null;
					string req_url=null;
					string req_type=null;
					string req_parameters=null;

					if (reqs == null)
					{}
					else if (reqs.Length >= 3)
					{
						req_cmd = reqs[0];
						req_url = reqs[1];
						req_type = reqs[2];
					}
					else if (reqs.Length == 2)
					{
						req_cmd = reqs[0];
						req_url = reqs[1];
					}
					else if (reqs.Length == 1)
						req_url = reqs[0];

					if (req_url != null)
					{
						string [] up = req_url.Split('?');
						if (up.Length > 1)
						{
							req_url = up[0];
							req_parameters = up[1];
						}
					}
					_Data[ci++] = req_type;
					if (req_url != null && req_url.Length > 0)
					{
						if (req_url[0] == '/')
							req_url = _Domain + req_url;
						if (req_url[req_url.Length-1] == '/')
							req_url += _IndexFile;
					}
					_Data[ci++] = CompressString(req_url);
					_Data[ci++] = req_type == "HTTP/1.1"? "HTTP/1.1": CompressString(req_type);
					_Data[ci++] = req_parameters;

					continue;
				}
				else if (ci == BYTES_FIELD)
				{
					double v=0;
					if (lt.Value.Length == 0 || lt.Value == "-")
					{}
					else
					{
						try
						{
							v = Convert.ToDouble(lt.Value);
						}
						catch
						{
						}
					}
					_Data[ci] = v;
				}
				else
					_Data[ci] = CompressString(lt.Value);
				ci++;					// go to next column
			}

			while (ci < _Data.Length)
				_Data[ci++] = null;

			return true;
		}

		string CompressString(string v)
		{
			if (v == null)
				return null;
			string sv = _CompressStrings[v] as string;
			if (sv != null)
				return sv;
			_CompressStrings.Add(v, v);
			return v;
		}

		object GetDateTime(string v)
		{
			object result;
			if (v.Length != 26)
				return null;
			try 
			{
				string dd = v.Substring(0,2);	// the day of the month
				string MMM = v.Substring(3,3);	// the month
				int month=1;
				switch (MMM.ToLower())
				{
					case "jan": month=1; break;
					case "feb": month=2; break;
					case "mar": month=3; break;
					case "apr": month=4; break;
					case "may": month=5; break;
					case "jun": month=6; break;
					case "jul": month=7; break;
					case "aug": month=8; break;
					case "sep": month=9; break;
					case "oct": month=10; break;
					case "nov": month=11; break;
					case "dec": month=12; break;
					default:
						break;
				}
				string yyyy = v.Substring(7,4);	// the year
				string hh = v.Substring(12,2);	// the hour
				string mm = v.Substring(15,2);	// the minute
				string ss = v.Substring(18,2);	// the seconds
				bool bPlus = v[21] == '+';
				int thh = Convert.ToInt32(v.Substring(22,2));	// the time zone (hh)
				int tmm = Convert.ToInt32(v.Substring(24,2));	// the time zone (mm)
				int tzdiff = thh * 60 + tmm;	// time zone difference in minutes
				if (!bPlus)
					tzdiff = - tzdiff;
				DateTime dt = 
					new DateTime(Convert.ToInt32(yyyy),
					month,
					Convert.ToInt32(dd),
					Convert.ToInt32(hh),
					Convert.ToInt32(mm),
					Convert.ToInt32(ss), 0);
				result = dt.AddMinutes(tzdiff);	
			}
			catch
			{ 
				result = null;
			}
			return result;
		}
	
		public int Depth
		{
			get
			{
				return 0;
			}
		}

		public DataTable GetSchemaTable()
		{
			return null;
		}

		#endregion

		#region IDisposable Members

		public void Dispose()
		{
			this.Close();
		}

		#endregion

		#region IDataRecord Members

		public int GetInt32(int i)
		{
			return Convert.ToInt32(_Data[i]);
		}

		public object this[string name]
		{
			get
			{
				int ci = this.GetOrdinal(name);
				return _Data[ci];
			}
		}

		object System.Data.IDataRecord.this[int i]
		{
			get
			{
				return _Data[i];
			}
		}

		public object GetValue(int i)
		{
			return _Data[i];
		}

		public bool IsDBNull(int i)
		{
			return _Data[i] == null;
		}

		public long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length)
		{
			throw new NotImplementedException("GetBytes not implemented.");
		}

		public byte GetByte(int i)
		{
			return Convert.ToByte(_Data[i]);
		}

		public Type GetFieldType(int i)
		{
			return _Types[i];
		}

		public decimal GetDecimal(int i)
		{
			return Convert.ToDecimal(_Data[i]);
		}

		public int GetValues(object[] values)
		{
			int i;
			for (i=0; i < values.Length; i++)
			{
				values[i] = i >= _Data.Length? System.DBNull.Value: _Data[i];
			}

			return Math.Min(values.Length, _Data.Length);
		}

		public string GetName(int i)
		{
			return _Names[i] as string;
		}

		public int FieldCount
		{
			get
			{
				return _Data.Length;
			}
		}

		public long GetInt64(int i)
		{
			return Convert.ToInt64(_Data[i]);
		}

		public double GetDouble(int i)
		{
			return Convert.ToDouble(_Data[i]);
		}

		public bool GetBoolean(int i)
		{
			return Convert.ToBoolean(_Data[i]);
		}

		public Guid GetGuid(int i)
		{
			throw new NotImplementedException("GetGuid not implemented.");
		}

		public DateTime GetDateTime(int i)
		{
			return Convert.ToDateTime(_Data[i]);
		}

		public int GetOrdinal(string name)
		{
			int ci=0;
			// do case sensitive lookup
			foreach (string cname in _Names)
			{
				if (cname == name)
					return ci;
				ci++;
			}

			// do case insensitive lookup
			ci=0;
			name = name.ToLower();
			foreach (string cname in _Names)
			{
				if (cname.ToLower() == name)
					return ci;
				ci++;
			}

			throw new ArgumentException(string.Format("Column '{0}' not known.", name));
		}

		public string GetDataTypeName(int i)
		{
			Type t = _Types[i] as Type;
			return t.ToString();
		}

		public float GetFloat(int i)
		{
			return Convert.ToSingle(_Data[i]);
		}

		public IDataReader GetData(int i)
		{
			throw new NotImplementedException("GetData not implemented.");
		}

		public long GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, int length)
		{
			throw new NotImplementedException("GetChars not implemented.");
		}

		public string GetString(int i)
		{
			return Convert.ToString(_Data[i]);
		}

		public char GetChar(int i)
		{
			return Convert.ToChar(_Data[i]);
		}

		public short GetInt16(int i)
		{
			return Convert.ToInt16(_Data[i]);
		}

		#endregion
	}
}


================================================
FILE: DataProviders/Majorsilence.Reporting.DataProviders.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">
	<PropertyGroup>
		<ProjectType>Local</ProjectType>
		<DelaySign>false</DelaySign>
		<OutputType>Library</OutputType>
		<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
		<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
		<AssemblyTitle>RDL Data Providers</AssemblyTitle>
		<DelaySign>false</DelaySign>
		<PackageId>Majorsilence.Reporting.DataProviders</PackageId>
		<Configurations>Debug;Release;Debug-DrawingCompat;Release-DrawingCompat</Configurations>
		<TargetFrameworks>net48;net8.0;net10.0</TargetFrameworks>
        <TargetFrameworks Condition="'$(OS)' == 'Unix'">net8.0;net10.0</TargetFrameworks>
		<WarningsAsErrors>4014</WarningsAsErrors>
	</PropertyGroup>
	<PropertyGroup Condition="'$(Configuration)' == 'Debug-DrawingCompat' Or '$(Configuration)' == 'Release-DrawingCompat'">
		<PackageId>Majorsilence.Reporting.DataProviders.SkiaSharp</PackageId>
	</PropertyGroup>
	<ItemGroup>
		<Reference Update="System">
			<Name>System</Name>
		</Reference>
		<Reference Update="System.Data">
			<Name>System.Data</Name>
		</Reference>
		<Reference Update="System.Xml">
			<Name>System.XML</Name>
		</Reference>
	</ItemGroup>
    <ItemGroup Condition="'$(TargetFramework)' == 'net48'">
        <Reference Include="System.Net.Http" />
        <Reference Include="System.Web.Services" />
    </ItemGroup>
    <ItemGroup Condition="'$(TargetFramework)' == 'net48'">
        <PackageReference Include="System.Text.Json" />
    </ItemGroup>
</Project>


================================================
FILE: DataProviders/MultipleStreamReader.cs
================================================

using System;
using System.IO;
using System.Collections;
using System.Net;
using System.Text;
using System.Net.Http;
using System.Threading.Tasks;

namespace Majorsilence.Reporting.Data
{
    /// <summary>
    /// MultipleStreamReader provides a logical single stream over multiple streams.  Only support ReadLine.
    /// </summary>
    public class MultipleStreamReader : TextReader
    {
        Queue _files;
        StreamReader _sr = null;
        static readonly HttpClient _httpClient = new HttpClient();

        /// <summary>
        /// Constructor taking a path list string.  Files are separated with blanks.  
        /// If a file contains a blank then it should be enclosed with quotes (").
        /// </summary>
        /// <param name="pathlist"></param>
        public MultipleStreamReader(string pathlist)
        {
            GetFileList(pathlist);          // split the string into multiple files

            // HACK: async
            Task.Run(async()=> await GetStream()).GetAwaiter().GetResult();             // get the first file
        }

        void GetFileList(string pathlist)
        {
            _files = new Queue();

            StringBuilder sb = null;

            int STARTFILE = 0;
            int INFILE = 1;
            int state = STARTFILE;
            bool bQuote = false;

            foreach (char c in pathlist)
            {
                if (state == STARTFILE)
                {
                    sb = new StringBuilder();
                    bQuote = (c == '"');

                    if (!bQuote)
                        sb.Append(c);
                    state = INFILE;
                }
                else if (state == INFILE)
                {
                    if ((bQuote && c == '"') || // quoted file and on last quote
(!bQuote && c == ' '))      // not quoted file and blank
                    {
                        AddFileToQueue(sb.ToString(), bQuote);

                        state = STARTFILE;
                    }
                    else
                        sb.Append(c);
                }
            }

            if (sb != null && sb.Length > 0)
                AddFileToQueue(sb.ToString(), bQuote);

            return;
        }

        void AddFileToQueue(string f, bool asis)
        {
            if (!asis)
                f = f.Trim();           // get rid of extraneous blanks

            if (f.Length <= 0)
                return;

            if (Path.GetFileNameWithoutExtension(f) == "*")
            {
                int i = f.LastIndexOf('*');
                string path = f.Substring(0, i);
                string[] fl = Directory.GetFiles(path, "*" + Path.GetExtension(f));
                foreach (string file in fl)
                    _files.Enqueue(file);
            }
            else
                _files.Enqueue(f);
        }

        async Task<StreamReader> GetStream()
        {
            if (_sr != null)        // close out the previous file before getting another
            {
                _sr.Close();
                _sr = null;
            }

            if (_files == null || _files.Count == 0)
                return null;

            string fname = _files.Dequeue() as string;
            Stream strm = null;

            if (fname.StartsWith("http:") ||
                fname.StartsWith("file:") ||
                fname.StartsWith("https:"))
            {
                _httpClient.AddMajorsilenceReportingUserAgent();
                HttpResponseMessage response = await _httpClient.GetAsync(fname);
                response.EnsureSuccessStatusCode();
                strm = await response.Content.ReadAsStreamAsync();
            }
            else
                strm = new FileStream(fname, System.IO.FileMode.Open, FileAccess.Read);

            _sr = new StreamReader(strm);

            return _sr;
        }

        public override void Close()
        {
            if (_sr != null)
            {
                _sr.Close();
                _sr = null;
            }

            _files.Clear();
        }

        public override string ReadLine()
        {
            if (_sr == null)
                return null;

            // HACK: async
            string rs = Task.Run(async () => await _sr.ReadLineAsync()).GetAwaiter().GetResult();

            if (rs == null)
            {
                // HACK: async
                Task.Run(async () => { 
                    await GetStream();
                    rs = await ReadLineAsync();
                }).GetAwaiter().GetResult();               
            }

            return rs;
        }

    }
}


================================================
FILE: DataProviders/TxtCommand.cs
================================================

using System;
using System.Xml;
using System.Data;
using System.Collections;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// TxtCommand allows specifying the command for a text file.
	/// </summary>
	public class TxtCommand : IDbCommand
	{
		TxtConnection _tc;			// connection we're running under
		string _cmd;				// command to execute
		// parsed constituents of the command
		string _Url;				// url of the file 
		string _Header;				// does file contain a header row
		char _Separator;			// separator character
		string[] _Columns;			// hold the column list
		DataParameterCollection _Parameters = new DataParameterCollection();

		public TxtCommand(TxtConnection conn)
		{
			_tc = conn;  
		}

		internal string[] Columns
		{
			get {return _Columns;}
		}

		internal string Url
		{
			get 
			{
				// Check to see if "Url" or "@Url" is a parameter
				IDbDataParameter dp= _Parameters["Url"] as IDbDataParameter;
				if (dp == null)
					dp= _Parameters["@Url"] as IDbDataParameter;
				// Then check to see if the Url value is a parameter?
				if (dp == null)
					dp = _Parameters[_Url] as IDbDataParameter;
				if (dp != null)
					return dp.Value != null? dp.Value.ToString(): _Url;	// don't pass null; pass existing value
				return _Url;	// the value must be a constant
			}
			set {_Url = value;}
		}

		internal char Separator
		{
			get 
			{
				// Check to see if "Separator" or "@Separator" is a parameter
				IDbDataParameter dp= _Parameters["Separator"] as IDbDataParameter;
				if (dp == null)
					dp= _Parameters["@Separator"] as IDbDataParameter;
				// Then check to see if the Separator value is a parameter?
				if (dp == null)
					dp = _Parameters[_Separator.ToString()] as IDbDataParameter;
				if (dp != null && dp.Value != null)
				{
					string v = dp.Value.ToString();
					if (v.Length >= 1)
						return v[0];
				}

				if (_Separator != '\0')		// Initialized?
					return _Separator;		//    yes, return it
				// otherwise we default depending on the Url extension (if any)
				string url = this.Url.ToLower();
				if (url.IndexOf(".txt") >= 0)
					return '\t';
				if (url.IndexOf(".csv") >= 0)
					return ',';
				return _Separator;			// done the best we can; but have no value
			}
			set {_Separator = value;}
		}

		internal bool Header
		{
			get 
			{
				// Check to see if "Header" or "@Header" is a parameter
				IDbDataParameter dp= _Parameters["Header"] as IDbDataParameter;
				if (dp == null)
					dp= _Parameters["@Header"] as IDbDataParameter;
				// Then check to see if the Url value is a parameter?
				if (dp == null)
					dp = _Parameters[_Header] as IDbDataParameter;
				if (dp != null)
				{
					string tf = dp.Value as string;
					if (tf == null)
						return false;
					tf = tf.ToLower();
					return (tf == "true" || tf == "yes");
				}
				return _Header=="yes"? true: false;	// the value must be a constant
			}
			set {_Header = value? "yes": "no";}
		}

		#region IDbCommand Members

		public void Cancel()
		{
			throw new NotImplementedException("Cancel not implemented");
		}

		public void Prepare()
		{
			return;			// Prepare is a noop
		}

		public System.Data.CommandType CommandType
		{
			get
			{
				throw new NotImplementedException("CommandType not implemented");
			}
			set
			{
				throw new NotImplementedException("CommandType not implemented");
			}
		}

		public IDataReader ExecuteReader(System.Data.CommandBehavior behavior)
		{
			if (!(behavior == CommandBehavior.SingleResult || 
				  behavior == CommandBehavior.SchemaOnly))
				throw new ArgumentException("ExecuteReader supports SingleResult and SchemaOnly only.");
			return new TxtDataReader(behavior, _tc, this);
		}

		IDataReader System.Data.IDbCommand.ExecuteReader()
		{
			return ExecuteReader(System.Data.CommandBehavior.SingleResult);
		}

		public object ExecuteScalar()
		{
			throw new NotImplementedException("ExecuteScalar not implemented");
		}

		public int ExecuteNonQuery()
		{
			throw new NotImplementedException("ExecuteNonQuery not implemented");
		}

		public int CommandTimeout
		{
			get
			{
				return 0;
			}
			set
			{
				throw new NotImplementedException("CommandTimeout not implemented");
			}
		}

		public IDbDataParameter CreateParameter()
		{
			return new TxtDataParameter();
		}

		public IDbConnection Connection
		{
			get
			{
				return this._tc;
			}
			set
			{
				throw new NotImplementedException("Setting Connection not implemented");
			}
		}

		public System.Data.UpdateRowSource UpdatedRowSource
		{
			get
			{
				throw new NotImplementedException("UpdatedRowSource not implemented");
			}
			set
			{
				throw new NotImplementedException("UpdatedRowSource not implemented");
			}
		}

		public string CommandText
		{
			get
			{
				return this._cmd;
			}
			set
			{
				// Parse the command string for keyword value pairs separated by ';'
				string[] args = value.Split(';');
				string url=null;
				string[] columns = null;
				string header=null;
				char separator='\0';
				foreach(string arg in args)
				{
					string[] param = arg.Trim().Split('=');
					if (param == null || param.Length != 2)
						continue;
					string key = param[0].Trim().ToLower();
					string val = param[1];
					switch (key)
					{
						case "url":
						case "file":
							url = val;
							break;
						case "columns":
							// column list is separated by ','
							columns = val.Trim().Split(',');
							break;
						case "header":
							header = val.Trim().ToLower();
							if (header == "yes" || header == "no")
							{}
							else if (header == "true")
								header = "yes";
							else if (header == "false")
								header = "no";
							else
								throw new ArgumentException(string.Format("Invalid Header {0}; should be 'yes' 'no'.", val));
							break;
						case "separator":
							if (val.Length != 1)
								throw new ArgumentException(string.Format("Invalid Separator character '{0}'; should be only a single character.", val));
							separator = val[0];
							break;
						default:
							throw new ArgumentException(string.Format("{0} is an unknown parameter key", param[0]));
					}
				}
				// User must specify both the url and the RowsXPath
				if (url == null)
					throw new ArgumentException("CommandText requires a 'Url=' parameter.");
				_cmd = value;
				_Url = url;
				_Columns = columns;
				_Separator = separator;
				_Header = header;
			}
		}

		public IDataParameterCollection Parameters
		{
			get
			{
				return _Parameters;
			}
		}

		public IDbTransaction Transaction
		{
			get
			{
				throw new NotImplementedException("Transaction not implemented");
			}
			set
			{
				throw new NotImplementedException("Transaction not implemented");
			}
		}

		#endregion

		#region IDisposable Members

		public void Dispose()
		{
			// nothing to dispose of
		}

		#endregion
	}
}


================================================
FILE: DataProviders/TxtConnection.cs
================================================

using System;
using System.Xml;
using System.Data;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// LogConnection handles connections to web log.
	/// </summary>
	public class TxtConnection : IDbConnection
	{
		string _Connection;				// the connection string; of format file=
		bool bOpen=false;
		public TxtConnection(string conn)
		{
			ConnectionString = conn;
		}

		internal bool IsOpen
		{
			get {return bOpen;}
		}

		#region IDbConnection Members

		public void ChangeDatabase(string databaseName)
		{
			throw new NotImplementedException("ChangeDatabase method not supported.");
		}

		public IDbTransaction BeginTransaction(System.Data.IsolationLevel il)
		{
			throw new NotImplementedException("BeginTransaction method not supported.");
		}

		IDbTransaction System.Data.IDbConnection.BeginTransaction()
		{
			throw new NotImplementedException("BeginTransaction method not supported.");
		}

		public System.Data.ConnectionState State
		{
			get
			{
				throw new NotImplementedException("State not implemented");
			}
		}

		public string ConnectionString
		{
			get
			{
				return _Connection;
			}
			set
			{
				string c = value;
				// Now parse the connection string;
				Array args = c.Split (',');
				string directory=null;
				foreach(string arg in args)
				{
					if (arg.Trim().ToLower().StartsWith("directory="))	// Only have one type of argument right now
						directory = arg.Trim().Split('=').GetValue(1) as string;
				}
				_Connection = value;
			}
		}

		public IDbCommand CreateCommand()
		{
			return new TxtCommand(this);
		}

		public void Open()
		{
			bOpen = true;
		}

		public void Close()
		{
			bOpen = false;
		}

		public string Database
		{
			get
			{
				return null;			// don't really have a database
			}
		}

		public int ConnectionTimeout
		{
			get
			{
				return 0;
			}
		}

		#endregion

		#region IDisposable Members

		public void Dispose()
		{
			this.Close();
		}

		#endregion
	}
}


================================================
FILE: DataProviders/TxtDataParameter.cs
================================================

using System;
using System.Xml;
using System.Data;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// TxtDataParameter
	/// </summary>
	public class TxtDataParameter : BaseDataParameter
	{
		public TxtDataParameter():base()
		{
		}
	}
}


================================================
FILE: DataProviders/TxtDataReader.cs
================================================

using System;
using System.Data;
using System.Collections;
using System.Collections.Specialized;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;

namespace Majorsilence.Reporting.Data
{
    /// <summary>
    /// TxtDataReader handles reading txt files
    /// </summary>
    public class TxtDataReader : IDataReader
    {
        TxtConnection _tconn;
        TxtCommand _tcmd;
        System.Data.CommandBehavior _behavior;

        StreamReader _sr;           // StreamReader for _Url
                                    // column information
        object[] _Data;             // data values of the columns
        bool bFirstRow;             // indicates that _Data has been filled with data of the 1st row
        string[] _Names;            // names of the columns
        Type[] _Types;              // types of the columns

        public TxtDataReader(System.Data.CommandBehavior behavior, TxtConnection conn, TxtCommand cmd)
        {
            bFirstRow = false;
            _tconn = conn;
            _tcmd = cmd;
            _behavior = behavior;

            string fname = _tcmd.Url;
            bool header = _tcmd.Header;
            char separator = _tcmd.Separator;

            // HACK: async
            Task.Run(async () => _sr = await GetStream()).GetAwaiter().GetResult();             // get the main stream

            Type tstring = "".GetType();

            LexTokenList ll = GetLine();
            int colcount = ll == null ? 0 : ll.Count - 1;       // don't count the end of line
            _Names = _tcmd.Columns;
            if (colcount == 0)
            {
                _sr.Close();
                _sr = null;
                if (_Names == null)
                    return;
                _Types = new Type[_Names.Length];
                for (int ci = 0; ci < _Types.Length; ci++)
                    _Types[ci] = tstring;
                return;
            }

            if (_Names != null && _Names.Length != colcount)
                throw new Exception(string.Format("{0} column names specified but {1} columns found.", _Names.Length, colcount));

            if (header)
            {
                if (_Names == null)
                {   // uses the first row as the names of the columns
                    _Names = new string[colcount];
                    int ci = 0;
                    foreach (LexToken lt in ll)
                    {
                        if (lt.Type == LexTokenTypes.EOF)
                            break;
                        _Names[ci++] = lt.Value;
                    }
                }
                ll = GetLine();
            }
            else if (_Names == null)
            {   // just name the columns 'column1', 'column2', ...
                _Names = new string[colcount];
                for (int ci = 0; ci < _Names.Length; ci++)
                    _Names[ci] = "column" + (ci + 1).ToString();
            }

            _Data = new object[_Names.Length];          // allocate enough room for data
            _Types = new Type[_Names.Length];
            if (ll != null)         // we have a datarow
            {
                bFirstRow = true;
                // loop thru determining the types of all data
                int ci = 0;
                foreach (LexToken lt in ll)
                {
                    if (ci >= _Types.Length || lt.Type == LexTokenTypes.EOF)
                        break;
                    _Types[ci++] = GetTypeOfString(lt.Value);
                }
                FillData(ll);
            }
            else
            {   // no first row! assume all the column types are string
                for (int ci = 0; ci < _Types.Length; ci++)
                    _Types[ci] = tstring;
            }

            if (behavior == CommandBehavior.SchemaOnly)
            {
                _sr.Close();
                _sr = null;
            }

        }

        void FillData(LexTokenList ll)
        {
            Type stype = "".GetType();
            int ci = 0;
            foreach (LexToken lt in ll)
            {
                if (ci >= _Data.Length || lt.Type == LexTokenTypes.EOF)
                    break;
                // Optimize for no conversion
                if (_Types[ci] == stype || lt.Value == null)
                {
                    _Data[ci++] = lt.Value;
                    continue;
                }
                // We need to do conversion
                try
                {   // in case of conversion error 
                    _Data[ci] = Convert.ChangeType(lt.Value, _Types[ci]);
                }
                catch
                {
                    _Data[ci] = null;
                }
                ci++;
            }

            while (ci < _Data.Length)
                _Data[ci++] = null;
        }

        LexTokenList GetLine()
        {
            if (_sr == null)
                return null;

            // read a line of the log
            string line = _sr.ReadLine();
            if (line == null)
                return null;

            // obtain the data from each column and put the data array
            Lexer l = new Lexer(new StringReader(line));
            l.SeparateDatetime = false;
            l.SeparatorChar = _tcmd.Separator;
            LexTokenList ll = l.Lex();
            return ll;
        }

        Type GetTypeOfString(string v)
        {
            return "".GetType();                // just assume string for now
        }

        async Task<StreamReader> GetStream()
        {
            string fname = _tcmd.Url;
            Stream strm = null;

            if (fname.StartsWith("http:") || fname.StartsWith("https:"))
            {
                using (HttpClient client = new HttpClient())
                {
                    client.AddMajorsilenceReportingUserAgent();
                    HttpResponseMessage response = await client.GetAsync(fname);
                    response.EnsureSuccessStatusCode();
                    strm = await response.Content.ReadAsStreamAsync();
                }
            }
            else if (fname.StartsWith("file:"))
            {
                strm = new FileStream(fname.Substring(5), System.IO.FileMode.Open, FileAccess.Read);
            }
            else
            {
                strm = new FileStream(fname, System.IO.FileMode.Open, FileAccess.Read);
            }

            _sr = new StreamReader(strm);

            return _sr;
        }

        #region IDataReader Members

        public int RecordsAffected
        {
            get
            {
                return 0;
            }
        }

        public bool IsClosed
        {
            get
            {
                return _sr == null;
            }
        }

        public bool NextResult()
        {
            return false;
        }

        public void Close()
        {
            if (_sr != null)
            {
                _sr.Close();
                _sr = null;
            }
            _Data = null;
            _Names = null;
            _Types = null;
        }

        public bool Read()
        {
            if (this._sr == null || _Data == null)
                return false;

            // Do we already have a row primed?
            if (bFirstRow)
            {   // yes; but no more
                bFirstRow = false;
                return true;
            }

            // read a line of the log
            LexTokenList ll = this.GetLine();
            if (ll == null)
                return false;

            // take line and fill the data
            this.FillData(ll);

            return true;
        }

        object GetDateTime(string v)
        {
            object result;
            if (v.Length != 26)
                return null;
            try
            {
                string dd = v.Substring(0, 2);  // the day of the month
                string MMM = v.Substring(3, 3); // the month
                int month = 1;
                switch (MMM.ToLower())
                {
                    case "jan":
                        month = 1;
                        break;
                    case "feb":
                        month = 2;
                        break;
                    case "mar":
                        month = 3;
                        break;
                    case "apr":
                        month = 4;
                        break;
                    case "may":
                        month = 5;
                        break;
                    case "jun":
                        month = 6;
                        break;
                    case "jul":
                        month = 7;
                        break;
                    case "aug":
                        month = 8;
                        break;
                    case "sep":
                        month = 9;
                        break;
                    case "oct":
                        month = 10;
                        break;
                    case "nov":
                        month = 11;
                        break;
                    case "dec":
                        month = 12;
                        break;
                    default:
                        break;
                }
                string yyyy = v.Substring(7, 4);    // the year
                string hh = v.Substring(12, 2); // the hour
                string mm = v.Substring(15, 2); // the minute
                string ss = v.Substring(18, 2); // the seconds
                bool bPlus = v[21] == '+';
                int hhmm = Convert.ToInt32(v.Substring(22, 4)); // the time zone
                if (!bPlus)
                    hhmm = -hhmm;
                DateTime dt =
                    new DateTime(Convert.ToInt32(yyyy),
                    month,
                    Convert.ToInt32(dd),
                    Convert.ToInt32(hh),
                    Convert.ToInt32(mm),
                    Convert.ToInt32(ss), 0);
                result = dt.AddHours(hhmm / 100.0);
            }
            catch
            {
                result = null;
            }
            return result;
        }

        public int Depth
        {
            get
            {
                // TODO:  Add XmlDataReader.Depth getter implementation
                return 0;
            }
        }

        public DataTable GetSchemaTable()
        {
            // TODO:  Add XmlDataReader.GetSchemaTable implementation
            return null;
        }

        #endregion

        #region IDisposable Members

        public void Dispose()
        {
            this.Close();
        }

        #endregion

        #region IDataRecord Members

        public int GetInt32(int i)
        {
            return Convert.ToInt32(_Data[i]);
        }

        public object this[string name]
        {
            get
            {
                int ci = this.GetOrdinal(name);
                return _Data[ci];
            }
        }

        object System.Data.IDataRecord.this[int i]
        {
            get
            {
                return _Data[i];
            }
        }

        public object GetValue(int i)
        {
            return _Data[i];
        }

        public bool IsDBNull(int i)
        {
            return _Data[i] == null;
        }

        public long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length)
        {
            throw new NotImplementedException("GetBytes not implemented.");
        }

        public byte GetByte(int i)
        {
            return Convert.ToByte(_Data[i]);
        }

        public Type GetFieldType(int i)
        {
            return this._Types[i] as Type;
        }

        public decimal GetDecimal(int i)
        {
            return Convert.ToDecimal(_Data[i]);
        }

        public int GetValues(object[] values)
        {
            int i;
            for (i = 0; i < values.Length; i++)
            {
                values[i] = i >= _Data.Length ? System.DBNull.Value : _Data[i];
            }

            return Math.Min(values.Length, _Data.Length);
        }

        public string GetName(int i)
        {
            return _Names[i] as string;
        }

        public int FieldCount
        {
            get
            {
                return _Data.Length;
            }
        }

        public long GetInt64(int i)
        {
            return Convert.ToInt64(_Data[i]);
        }

        public double GetDouble(int i)
        {
            return Convert.ToDouble(_Data[i]);
        }

        public bool GetBoolean(int i)
        {
            return Convert.ToBoolean(_Data[i]);
        }

        public Guid GetGuid(int i)
        {
            throw new NotImplementedException("GetGuid not implemented.");
        }

        public DateTime GetDateTime(int i)
        {
            return Convert.ToDateTime(_Data[i]);
        }

        public int GetOrdinal(string name)
        {
            int ci = 0;
            // do case sensitive lookup
            foreach (string cname in _Names)
            {
                if (cname == name)
                    return ci;
                ci++;
            }

            // do case insensitive lookup
            ci = 0;
            foreach (string cname in _Names)
            {
                if (String.Compare(cname, name, true) == 0)
                    return ci;
                ci++;
            }

            throw new ArgumentException(string.Format("Column '{0}' not known.", name));
        }

        public string GetDataTypeName(int i)
        {
            Type t = _Types[i] as Type;
            return t.ToString();
        }

        public float GetFloat(int i)
        {
            return Convert.ToSingle(_Data[i]);
        }

        public IDataReader GetData(int i)
        {
            throw new NotImplementedException("GetData not implemented.");
        }

        public long GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, int length)
        {
            throw new NotImplementedException("GetChars not implemented.");
        }

        public string GetString(int i)
        {
            return Convert.ToString(_Data[i]);
        }

        public char GetChar(int i)
        {
            return Convert.ToChar(_Data[i]);
        }

        public short GetInt16(int i)
        {
            return Convert.ToInt16(_Data[i]);
        }

        #endregion
    }
}


================================================
FILE: DataProviders/WebServiceCommand.cs
================================================

using System;
using System.Xml;
using System.Data;
using System.Collections;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// WebServiceCommand 
	/// </summary>
	public class WebServiceCommand : IDbCommand
	{
		WebServiceConnection _wsc;	// connection we're running under
		string _cmd;				// command to execute
		int _Timeout;				// timeout limit on invoking webservice (only applies to invoking service)
		// parsed constituents of the command
		string _Url;				// url of the wsdl file 
		string _Service;			// service name
		string _Operation;			// operation name
		string _RepeatField;		// Specifies the name of the array that should be repeated (only 1 can be)
		ArrayList _Columns;			// Columns specified for the request
		DataParameterCollection _Parameters = new DataParameterCollection();

		public WebServiceCommand(WebServiceConnection conn)
		{
			_wsc = conn;
		}

		internal string Url
		{
			get 
			{
				// Check to see if "Url" or "@Url" is a parameter
				IDbDataParameter dp= _Parameters["Url"] as IDbDataParameter;
				if (dp == null)
					dp= _Parameters["@Url"] as IDbDataParameter;
				// Then check to see if the Url value is a parameter?
				if (dp == null)
					dp = _Parameters[_Url] as IDbDataParameter;
				if (dp != null)
					return dp.Value != null? dp.Value.ToString(): _Url;	// don't pass null; pass existing value
				return _Url;	// the value must be a constant
			}
			set {_Url = value;}
		}

		internal string Operation
		{
			get 
			{
				IDbDataParameter dp= _Parameters["Operation"] as IDbDataParameter;
				if (dp == null)
					dp= _Parameters["@Operation"] as IDbDataParameter;
				// Then check to see if the Operation value is a parameter?
				if (dp == null)
					dp = _Parameters[_Operation] as IDbDataParameter;

				return (dp != null && dp.Value != null)? dp.Value.ToString(): _Operation;	// don't pass null; pass existing value
			}
			set {_Operation = value;}
		}

		internal string RepeatField
		{
			get 
			{
				IDbDataParameter dp= _Parameters["RepeatField"] as IDbDataParameter;
				if (dp == null)
					dp= _Parameters["@RepeatField"] as IDbDataParameter;
				// Then check to see if the RepeatField value is a parameter?
				if (dp == null)
					dp = _Parameters[_RepeatField] as IDbDataParameter;

				return (dp != null && dp.Value != null)? null: _RepeatField;
			}
			set {_RepeatField = value;}
		}

		internal string Service
		{
			get 
			{
				IDbDataParameter dp= _Parameters["Service"] as IDbDataParameter;
				if (dp == null)
					dp= _Parameters["@Service"] as IDbDataParameter;
				// Then check to see if the RowsXPath value is a parameter?
				if (dp == null)
					dp = _Parameters[_Service] as IDbDataParameter;

				return (dp != null && dp.Value != null)? dp.Value.ToString(): _Service;	// don't pass null; pass existing value
			}
			set {_Service = value;}
		}

		internal ArrayList Columns
		{
			get {return _Columns;}
			set {_Columns = value;}
		}

		#region IDbCommand Members

		public void Cancel()
		{
			throw new NotImplementedException("Cancel not implemented");
		}

		public void Prepare()
		{
			return;			// Prepare is a noop
		}

		public System.Data.CommandType CommandType
		{
			get
			{
				throw new NotImplementedException("CommandType not implemented");
			}
			set
			{
				throw new NotImplementedException("CommandType not implemented");
			}
		}

		public IDataReader ExecuteReader(System.Data.CommandBehavior behavior)
		{
			if (!(behavior == CommandBehavior.SingleResult || 
				  behavior == CommandBehavior.SchemaOnly))
				throw new ArgumentException("ExecuteReader supports SingleResult and SchemaOnly only.");
			return new WebServiceDataReader(behavior, _wsc, this);
		}

		IDataReader System.Data.IDbCommand.ExecuteReader()
		{
			return ExecuteReader(System.Data.CommandBehavior.SingleResult);
		}

		public object ExecuteScalar()
		{
			throw new NotImplementedException("ExecuteScalar not implemented");
		}

		public int ExecuteNonQuery()
		{
			throw new NotImplementedException("ExecuteNonQuery not implemented");
		}

		public int CommandTimeout
		{
			get
			{
				return _Timeout;
			}
			set
			{
				_Timeout = value;
			}
		}

		public IDbDataParameter CreateParameter()
		{
			return new WebServiceDataParameter();
		}

		public IDbConnection Connection
		{
			get
			{
				return this._wsc;
			}
			set
			{
				throw new NotImplementedException("Setting Connection not implemented");
			}
		}

		public System.Data.UpdateRowSource UpdatedRowSource
		{
			get
			{
				throw new NotImplementedException("UpdatedRowSource not implemented");
			}
			set
			{
				throw new NotImplementedException("UpdatedRowSource not implemented");
			}
		}

		public string CommandText
		{
			get
			{
				return this._cmd;
			}
			set
			{
				// Parse the command string for keyword value pairs separated by ';'
				string[] args = value.Split(';');
				string url=null;
				string operation=null;
				string service=null;
				string[] columns=null;
				foreach(string arg in args)
				{
					string[] param = arg.Trim().Split('=');
					if (param == null || param.Length != 2)
						continue;
					string key = param[0].Trim().ToLower();
					string val = param[1];
					switch (key)
					{
						case "url":
						case "file":
							url = val;
							break;
						case "service":
							service = val;
							break;
						case "operation":
							operation = val;
							break;
						case "columns":
							// column list is separated by ','
							columns = val.Trim().Split(',');
							break;
						default:
							throw new ArgumentException(string.Format("{0} is an unknown parameter key", param[0]));
					}
				}
				// User must specify both the url and the RowsXPath
				if (url == null || operation == null || service == null)
					throw new ArgumentException("CommandText requires 'Url', 'Service', and 'Operation' parameters.");
				_cmd = value;
				_Url = url;
				_Operation = operation;
				_Service = service;
				if (columns != null)
					_Columns = new ArrayList(columns);
			}
		}

		public IDataParameterCollection Parameters
		{
			get
			{
				return _Parameters;
			}
		}

		public IDbTransaction Transaction
		{
			get
			{
				throw new NotImplementedException("Transaction not implemented");
			}
			set
			{
				throw new NotImplementedException("Transaction not implemented");
			}
		}

		#endregion

		#region IDisposable Members

		public void Dispose()
		{
			// nothing to dispose of
		}

		#endregion
	}
}


================================================
FILE: DataProviders/WebServiceConnection.cs
================================================

using System;
using System.Xml;
using System.Data;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// WebServiceConnection handles connections for WebServices  
	/// </summary>
	public class WebServiceConnection : IDbConnection
	{
		string _Connection;				// the connection string; of format directory=
		bool bOpen=false;
		public WebServiceConnection(string conn)
		{
			ConnectionString = conn;
		}

		internal bool IsOpen
		{
			get {return bOpen;}
		}

		#region IDbConnection Members

		public void ChangeDatabase(string databaseName)
		{
			throw new NotImplementedException("ChangeDatabase method not supported.");
		}

		public IDbTransaction BeginTransaction(System.Data.IsolationLevel il)
		{
			throw new NotImplementedException("BeginTransaction method not supported.");
		}

		IDbTransaction System.Data.IDbConnection.BeginTransaction()
		{
			throw new NotImplementedException("BeginTransaction method not supported.");
		}

		public System.Data.ConnectionState State
		{
			get
			{
				throw new NotImplementedException("State not implemented");
			}
		}

		public string ConnectionString
		{
			get
			{
				return _Connection;
			}
			set
			{
				string c = value;
				// Now parse the connection string;
				Array args = c.Split (',');
				string directory=null;
				foreach(string arg in args)
				{
					if (arg.Trim().ToLower().StartsWith("directory="))	// Only have one type of argument right now
						directory = arg.Trim().Split('=').GetValue(1) as string;
				}
				_Connection = value;
			}
		}

		public IDbCommand CreateCommand()
		{
			return new WebServiceCommand(this);
		}

		public void Open()
		{
			bOpen = true;
		}

		public void Close()
		{
			bOpen = false;
		}

		public string Database
		{
			get
			{
				return null;			// don't really have a database
			}
		}

		public int ConnectionTimeout
		{
			get
			{
				return 0;
			}
		}

		#endregion

		#region IDisposable Members

		public void Dispose()
		{
			this.Close();
		}

		#endregion
	}
}


================================================
FILE: DataProviders/WebServiceDataParameter.cs
================================================

using System;
using System.Xml;
using System.Data;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// WebServiceDataParameter
	/// </summary>
	public class WebServiceDataParameter : BaseDataParameter
	{
		public WebServiceDataParameter():base()
		{
		}
	}
}


================================================
FILE: DataProviders/WebServiceDataReader.cs
================================================

using System;
using System.Xml;
using System.Xml.XPath;
using System.Data;
using System.Collections;
using System.Collections.Specialized;
using System.IO;
using System.Net;

using System.Reflection;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// Summary description for Class1.
	/// </summary>
	public class WebServiceDataReader : IDataReader
	{
		WebServiceConnection _wsconn;
		WebServiceCommand _wscmd;
		System.Data.CommandBehavior _behavior;
		static Type[] BASE_TYPES = new Type[] {System.String.Empty.GetType(),
									  System.Double.MinValue.GetType(),
									  System.Single.MinValue.GetType(),
									  System.Decimal.MinValue.GetType(),
									  System.DateTime.MinValue.GetType(),
									  System.Char.MinValue.GetType(),
									  new bool().GetType(),
									  System.Int32.MinValue.GetType(),
									  System.Int16.MinValue.GetType(),
									  System.Int64.MinValue.GetType(),
									  System.Byte.MinValue.GetType(),
									  System.UInt16.MinValue.GetType(),
									  System.UInt32.MinValue.GetType(),
									  System.UInt64.MinValue.GetType()};

		// column information
		ArrayList _RowData;			// array of Data rows; 
		IEnumerator _ie;			//  enumerator thru rows
		object[] _Data;				// data values of the columns
		ArrayList _Names;			// names of the columns
		ArrayList _Types;			// types of the columns

		public WebServiceDataReader(System.Data.CommandBehavior behavior, WebServiceConnection conn, WebServiceCommand cmd)
		{
			_wsconn = conn;
			_wscmd = cmd;
			_behavior = behavior;

			WebServiceWsdl wsw = WebServiceWsdl.GetWebServiceWsdl(_wscmd.Url);

			// build the structure of the result
			BuildMetaData(wsw);

			if (_behavior == CommandBehavior.SchemaOnly)
				return;

			// build the array that will hold the data
			BuildData(wsw);
			return;
		}

		void BuildData(WebServiceWsdl wsw)
		{
			_RowData = new ArrayList();

			object result = wsw.Invoke(_wscmd.Service, _wscmd.Operation, 
				_wscmd.Parameters as DataParameterCollection, _wscmd.CommandTimeout);

			if (result == null)
			{
				_ie = null;
				return;
			}

			int ci=0;
			object[] row=null;
			GetDataProperties(null, result.GetType(), result, ref ci, ref row);
			_ie = _RowData.GetEnumerator();
		}

		void GetDataProperties(string name, Type t, object data, ref int ci, ref object[] row)
		{
			// Handle arrays
			if (t.IsArray)
			{
				Type at = t.GetElementType();
				if (data == null)		// even with null we need to go down the tree
					GetDataProperties(name, at, null, ref ci, ref row);
				else 
				{
					int saveci = ci;
					foreach (object d in data as Array)
					{
						ci = saveci;			// seems funny, but we need to restore before each call
						GetDataProperties(name, at, d, ref ci, ref row);
						if (name != _wscmd.RepeatField)		// only loop thru once if not the repeat field
							break;
						row = null;				// we'll want another row
					}
				}
				return;
			}

			// Base types go no further
			if (IsBaseType(t))
			{
				if (name == null)
					name = "result";

				if (row == null)
				{
					row = new object[_Names.Count];
					_RowData.Add(row);
				}
				row[ci++] = data;
				return;
			}
			
			// Handle complex type; get all its fields
			FieldInfo[] fis = t.GetFields();
			foreach (FieldInfo fi in fis)
			{
				string column_name = name == null? fi.Name: name + "." + fi.Name;
				if (fi.FieldType.IsArray)
				{
					Array da = data == null? null: fi.GetValue(data) as Array;
					if (da == null)	// still need to go down path even with null
						GetDataProperties(column_name, fi.FieldType.GetElementType(), null, ref ci, ref row);
					else 
					{	// loop thru the object
						object[] save_row = row;
						int saveci = ci;
						foreach (object d in da)
						{
							ci = saveci;			// seems funny, but we need to restore before each call
							GetDataProperties(column_name, fi.FieldType.GetElementType(), d, ref ci, ref row);
							if (column_name != _wscmd.RepeatField)		// only loop thru once if not the repeat field
								break;
							row = null;				// we'll want another row after this one
						}
						row = save_row;
					}
				}
				else
					GetDataProperties(column_name, fi.FieldType, data == null? null: fi.GetValue(data), ref ci, ref row);
			}
		}

		void BuildMetaData(WebServiceWsdl wsw)
		{
			_Names = new ArrayList();
			_Types = new ArrayList();

			MethodInfo mi = wsw.GetMethodInfo(_wscmd.Service, _wscmd.Operation);

			GetProperties(null, mi.ReturnType);
		}

		void GetProperties(string name, Type t)
		{
			// Handle arrays
			if (t.IsArray)
			{
				GetProperties(name, t.GetElementType());
				return;
			}

			// Base types go no further
			if (IsBaseType(t))
			{
				if (name == null)
					name = "result";

				_Names.Add(name);
				_Types.Add(t);
				return;
			}
			
			// Handle complex type; get all its fields
			FieldInfo[] fis = t.GetFields();
			foreach (FieldInfo fi in fis)
			{
				string column_name = name == null? fi.Name: name + "." + fi.Name;
				if (fi.FieldType.IsArray)
				{
					if (_wscmd.RepeatField == null)			// if no RepeatField specified use first Array encountered
						_wscmd.RepeatField = column_name;
					GetProperties(column_name, fi.FieldType.GetElementType());
				}
				else
					GetProperties(column_name, fi.FieldType);
			}
		}

		// Determines if underlying type is a primitive
		bool IsBaseType(Type t)
		{
			foreach (Type bt in BASE_TYPES)
			{
				if (bt == t)
					return true;
			}

			return false;
		}

		#region IDataReader Members

		public int RecordsAffected
		{
			get
			{
				return 0;
			}
		}

		public bool IsClosed
		{
			get
			{
				return _RowData != null;
			}
		}

		public bool NextResult()
		{
			return false;
		}

		public void Close()
		{
			_RowData = null;		// get rid of the data & metadata
			_ie = null;
			_Data = null;
			_Names = null;
			_Types = null;
		}

		public bool Read()
		{
			if (_ie == null || !_ie.MoveNext())
				return false;

			_Data = _ie.Current as object[];

			return true;
		}

		public int Depth
		{
			get
			{
				return 0;
			}
		}

		public DataTable GetSchemaTable()
		{
			// TODO:  Add XmlDataReader.GetSchemaTable implementation
			return null;
		}

		#endregion

		#region IDisposable Members

		public void Dispose()
		{
			this.Close();
		}

		#endregion

		#region IDataRecord Members

		public int GetInt32(int i)
		{
			return Convert.ToInt32(_Data[i]);
		}

		public object this[string name]
		{
			get
			{
				int ci = this.GetOrdinal(name);
				return _Data[ci];
			}
		}

		object System.Data.IDataRecord.this[int i]
		{
			get
			{
				return _Data[i];
			}
		}

		public object GetValue(int i)
		{
			return _Data[i];
		}

		public bool IsDBNull(int i)
		{
			return _Data[i] == null;
		}

		public long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length)
		{
			throw new NotImplementedException("GetBytes not implemented.");
		}

		public byte GetByte(int i)
		{
			return Convert.ToByte(_Data[i]);
		}

		public Type GetFieldType(int i)
		{
			return this._Types[i] as Type;
		}

		public decimal GetDecimal(int i)
		{
			return Convert.ToDecimal(_Data[i]);
		}

		public int GetValues(object[] values)
		{
			int i;
			for (i=0; i < values.Length; i++)
			{
				values[i] = i >= _Data.Length? System.DBNull.Value: _Data[i];
			}

			return Math.Min(values.Length, _Data.Length);
		}

		public string GetName(int i)
		{
			return _Names[i] as string;
		}

		public int FieldCount
		{
			get
			{
				return _Names == null? 0: _Names.Count;
			}
		}

		public long GetInt64(int i)
		{
			return Convert.ToInt64(_Data[i]);
		}

		public double GetDouble(int i)
		{
			return Convert.ToDouble(_Data[i]);
		}

		public bool GetBoolean(int i)
		{
			return Convert.ToBoolean(_Data[i]);
		}

		public Guid GetGuid(int i)
		{
			throw new NotImplementedException("GetGuid not implemented.");
		}

		public DateTime GetDateTime(int i)
		{
			return Convert.ToDateTime(_Data[i]);
		}

		public int GetOrdinal(string name)
		{
			int ci=0;
			// do case sensitive lookup
			foreach (string cname in _Names)
			{
				if (cname == name)
					return ci;
				ci++;
			}

			// do case insensitive lookup
			ci=0;
			name = name.ToLower();
			foreach (string cname in _Names)
			{
				if (cname.ToLower() == name)
					return ci;
				ci++;
			}

			throw new ArgumentException(string.Format("Column '{0}' not known.", name));
		}

		public string GetDataTypeName(int i)
		{
			Type t = _Types[i] as Type;
			return t.ToString();
		}

		public float GetFloat(int i)
		{
			return Convert.ToSingle(_Data[i]);
		}

		public IDataReader GetData(int i)
		{
			throw new NotImplementedException("GetData not implemented.");
		}

		public long GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, int length)
		{
			throw new NotImplementedException("GetChars not implemented.");
		}

		public string GetString(int i)
		{
			return Convert.ToString(_Data[i]);
		}

		public char GetChar(int i)
		{
			return Convert.ToChar(_Data[i]);
		}

		public short GetInt16(int i)
		{
			return Convert.ToInt16(_Data[i]);
		}

		#endregion
	}
}


================================================
FILE: DataProviders/WebServiceWsdl.cs
================================================

using System;
using System.Xml;
using System.Data;
using System.Collections;
#if !NETSTANDARD2_0 && !NET6_0_OR_GREATER
using System.Web.Services;
using System.Web.Services.Description;
using System.Web.Services.Protocols;
#endif
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Text;
using System.Reflection;
using System.IO;
using System.Net;
using Microsoft.CSharp;
using System.Net.Http;
using System.Threading.Tasks;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// WebServiceWsdl handles generation and caching of Assemblies containing WSDL proxies
	///   It also will invoke proxies with the proper arguments.  These arguments must be 
	///   provided as a WebServiceParameter.
	/// </summary>
	public class WebServiceWsdl
	{
		// Cache the compiled assemblies
		const string _Namespace = "fyireporting.ws";
		static Hashtable _cache = Hashtable.Synchronized(new Hashtable());	
		string _url;					// url for this assembly
		Assembly _WsdlAssembly;			// Assembly ready for invokation

		static internal WebServiceWsdl GetWebServiceWsdl(string url)
		{
			WebServiceWsdl w = _cache[url] as WebServiceWsdl;
			if (w != null)
				return w;

			return new WebServiceWsdl(url);
		}

		static public void ClearCache()
		{
			_cache.Clear();
		}

		public MethodInfo GetMethodInfo(string service, string operation)
		{
			// Create an instance of the service object proxy   
			object o = _WsdlAssembly.CreateInstance(_Namespace + "." + service, false);
			if (o == null)
				throw new Exception(string.Format("Unable to create instance of service '{0}'.", service));

			// Get information about the method
			MethodInfo mi = o.GetType().GetMethod(operation);
			if (mi == null)
				throw new Exception(string.Format("Unable to find operation '{0}' in service '{1}'.", operation, service));

			return mi;
		}

		// Invoke the operation for the requested service
		public object Invoke(string service, string operation, DataParameterCollection dpc, int timeout)
		{
			// Create an instance of the service object proxy
			object o = _WsdlAssembly.CreateInstance(_Namespace + "." + service, false);
			if (o == null)
				throw new Exception(string.Format("Unable to create instance of service '{0}'.", service));

			// Get information about the method
			MethodInfo mi = o.GetType().GetMethod(operation);
			if (mi == null)
				throw new Exception(string.Format("Unable to find operation '{0}' in service '{1}'.", operation, service));

			// Go thru the parameters building up an object array with the proper parameters
			ParameterInfo[] pis = mi.GetParameters();
			object[] args = new object[pis.Length];
			int ai=0;
			foreach (ParameterInfo pi in pis)
			{
				BaseDataParameter dp = dpc[pi.Name] as BaseDataParameter;
				if (dp == null)		// retry with '@' in front!
					dp = dpc["@"+pi.Name] as BaseDataParameter;
				if (dp == null || dp.Value == null)
					args[ai] = null;
				else if (pi.ParameterType == dp.Value.GetType())
					args[ai] = dp.Value;
				else	// we need to do conversion
					args[ai] = Convert.ChangeType(dp.Value, pi.ParameterType);
				ai++;
			}
#if !NETSTANDARD2_0 && !NET6_0_OR_GREATER
            SoapHttpClientProtocol so = o as SoapHttpClientProtocol;
			if (so != null && timeout != 0)
				so.Timeout = timeout;
			return mi.Invoke(o, args);
#else
            throw new NotImplementedException("Some classes are not available on .NET STANDARD");
#endif
		}

		// constructor
		private WebServiceWsdl(string url)
		{
			_url = url;						
			_WsdlAssembly = GetAssembly();
			_cache.Add(url, this);
		}

		private Assembly GetAssembly()
		{
#if !NETSTANDARD2_0 && !NET6_0_OR_GREATER
            ServiceDescription sd=null;
                
            // HACK: We need to run the async method synchronously here, but we can't use .Result or .Wait() because it can cause deadlocks. So we use Task.Run to run it on a separate thread and then wait for the result.
            Task.Run(async()=> sd = await GetServiceDescription()).GetAwaiter().GetResult();

			// ServiceDescriptionImporter provide means for generating client proxy classes for XML Web services 
			CodeNamespace cns = new CodeNamespace(_Namespace);
			ServiceDescriptionImporter sdi = new ServiceDescriptionImporter();
			sdi.AddServiceDescription(sd, null, null);
			sdi.ProtocolName = "Soap";
			sdi.Import(cns, null);

			// Generate the proxy source code
			CSharpCodeProvider cscp = new CSharpCodeProvider();
			StringBuilder sb = new StringBuilder();
			StringWriter sw = new StringWriter(sb);
			cscp.GenerateCodeFromNamespace(cns, sw, null);
			string proxy = sb.ToString();
			sw.Close();

			// debug code !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//			StreamWriter tsw = File.CreateText(@"c:\temp\proxy.cs");
//			tsw.Write(proxy);
//			tsw.Close();
			// debug code !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   

			// Create Assembly
			CompilerParameters cp = new CompilerParameters();
			cp.ReferencedAssemblies.Add("System.dll");
			cp.ReferencedAssemblies.Add("System.Xml.dll");
			cp.ReferencedAssemblies.Add("System.Web.Services.dll");
			cp.GenerateExecutable = false;
			cp.GenerateInMemory = false;			// just loading into memory causes problems when instantiating
			cp.IncludeDebugInformation = false; 
			CompilerResults cr = cscp.CompileAssemblyFromSource(cp, proxy);
			if(cr.Errors.Count > 0)
			{
				StringBuilder err = new StringBuilder(string.Format("WSDL proxy compile has {0} error(s).", cr.Errors.Count));
				foreach (CompilerError ce in cr.Errors)
				{
					err.AppendFormat("\r\n{0} {1}", ce.ErrorNumber, ce.ErrorText);
				}
				throw new Exception(err.ToString()); 
			}

			return Assembly.LoadFrom(cr.PathToAssembly);	// We need an assembly loaded from the file system
															//   or instantiation of object complains
#else
            throw new NotImplementedException("Some classes are missing on .NET STANDARD");
#endif
		}

#if !NETSTANDARD2_0 && !NET6_0_OR_GREATER
        public async Task<ServiceDescription> GetServiceDescription()
        {
            ServiceDescription sd = new ServiceDescription();
            Stream sr=null;
            try
            {
                sr = await GetStream();
                sd = ServiceDescription.Read(sr);
            }
            finally
            {
                if (sr != null)
                    sr.Close();
            }

            return sd;
        }
#endif
        
        async Task<Stream> GetStream()
        {
            string fname = _url;
            Stream strm = null;

            if (fname.StartsWith("http:") || fname.StartsWith("file:") || fname.StartsWith("https:"))
            {
                using (HttpClient client = new HttpClient())
                {
                    client.AddMajorsilenceReportingUserAgent();
                    HttpResponseMessage response = await client.GetAsync(fname);
                    if (response.IsSuccessStatusCode)
                    {
                        strm = await response.Content.ReadAsStreamAsync();
                    }
                    else
                    {
                        throw new Exception($"Failed to get response from {fname}. Status code: {response.StatusCode}");
                    }
                }
            }
            else
            {
                strm = new FileStream(fname, System.IO.FileMode.Open, FileAccess.Read);
            }

            return strm;
        }

	}
}


================================================
FILE: DataProviders/XmlCommand.cs
================================================

using System;
using System.Xml;
using System.Data;
using System.Collections;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// Summary description for Class1.
	/// </summary>
	public class XmlCommand : IDbCommand
	{
		XmlConnection _xc;			// connection we're running under
		string _cmd;				// command to execute
		// parsed constituents of the command
		string _Url;				// url of the xml file 
		string _RowsXPath;			// XPath specifying rows selection
		ArrayList _ColumnsXPath;		// XPath for each column
		string _Type;				// type of request
		DataParameterCollection _Parameters = new DataParameterCollection();

		public XmlCommand(XmlConnection conn)
		{
			_xc = conn;
		}

		internal string Url
		{
			get 
			{
				// Check to see if "Url" or "@Url" is a parameter
				IDbDataParameter dp= _Parameters["Url"] as IDbDataParameter;
				if (dp == null)
					dp= _Parameters["@Url"] as IDbDataParameter;
				// Then check to see if the Url value is a parameter?
				if (dp == null)
					dp = _Parameters[_Url] as IDbDataParameter;
				if (dp != null)
					return dp.Value != null? dp.Value.ToString(): _Url;	// don't pass null; pass existing value
				return _Url;	// the value must be a constant
			}
			set {_Url = value;}
		}

		internal string RowsXPath
		{
			get 
			{
				IDbDataParameter dp= _Parameters["RowsXPath"] as IDbDataParameter;
				if (dp == null)
					dp= _Parameters["@RowsXPath"] as IDbDataParameter;
				// Then check to see if the RowsXPath value is a parameter?
				if (dp == null)
					dp = _Parameters[_RowsXPath] as IDbDataParameter;
				if (dp != null)
					return dp.Value != null? dp.Value.ToString(): _RowsXPath;	// don't pass null; pass existing value
				return _RowsXPath;	// the value must be a constant
			}
			set {_RowsXPath = value;}
		}

		internal ArrayList ColumnsXPath
		{
			get {return _ColumnsXPath;}
			set {_ColumnsXPath = value;}
		}

		internal string Type
		{
			get {return _Type;}
			set {_Type = value;}
		}

		#region IDbCommand Members

		public void Cancel()
		{
			throw new NotImplementedException("Cancel not implemented");
		}

		public void Prepare()
		{
			return;			// Prepare is a noop
		}

		public System.Data.CommandType CommandType
		{
			get
			{
				throw new NotImplementedException("CommandType not implemented");
			}
			set
			{
				throw new NotImplementedException("CommandType not implemented");
			}
		}

		public IDataReader ExecuteReader(System.Data.CommandBehavior behavior)
		{
			if (!(behavior == CommandBehavior.SingleResult || 
				  behavior == CommandBehavior.SchemaOnly))
				throw new ArgumentException("ExecuteReader supports SingleResult and SchemaOnly only.");
			return new XmlDataReader(behavior, _xc, this);
		}

		IDataReader System.Data.IDbCommand.ExecuteReader()
		{
			return ExecuteReader(System.Data.CommandBehavior.SingleResult);
		}

		public object ExecuteScalar()
		{
			throw new NotImplementedException("ExecuteScalar not implemented");
		}

		public int ExecuteNonQuery()
		{
			throw new NotImplementedException("ExecuteNonQuery not implemented");
		}

		public int CommandTimeout
		{
			get
			{
				return 0;
			}
			set
			{
				throw new NotImplementedException("CommandTimeout not implemented");
			}
		}

		public IDbDataParameter CreateParameter()
		{
			return new XmlDataParameter();
		}

		public IDbConnection Connection
		{
			get
			{
				return this._xc;
			}
			set
			{
				throw new NotImplementedException("Setting Connection not implemented");
			}
		}

		public System.Data.UpdateRowSource UpdatedRowSource
		{
			get
			{
				throw new NotImplementedException("UpdatedRowSource not implemented");
			}
			set
			{
				throw new NotImplementedException("UpdatedRowSource not implemented");
			}
		}

		public string CommandText
		{
			get
			{
				return this._cmd;
			}
			set
			{
				// Parse the command string for keyword value pairs separated by ';'
				string[] args = value.Split(';');
				string url=null;
				string[] colxpaths=null;
				string rowsxpath=null;
				string type="both";		// assume we want both attributes and elements
				foreach(string arg in args)
				{
					string[] param = arg.Trim().Split('=');
					if (param == null || param.Length != 2)
						continue;
					string key = param[0].Trim().ToLower();
					string val = param[1];
					switch (key)
					{
						case "url":
						case "file":
							url = val;
							break;
						case "rowsxpath":
							rowsxpath = val;
							break;
						case "type":
						{
							type = val.Trim().ToLower();
							if (!(type == "attributes" || type == "elements" || type == "both"))
								throw new ArgumentException(string.Format("type '{0}' is invalid.  Must be 'attributes', 'elements' or 'both'", val));
							break;
						}
						case "columnsxpath":
							// column list is separated by ','
							colxpaths = val.Trim().Split(',');
							break;
						default:
							throw new ArgumentException(string.Format("{0} is an unknown parameter key", param[0]));
					}
				}
				// User must specify both the url and the RowsXPath
				if (url == null)
					throw new ArgumentException("CommandText requires a 'Url=' parameter.");
				if (rowsxpath == null)
					throw new ArgumentException("CommandText requires a 'RowsXPath=' parameter.");
				_cmd = value;
				_Url = url;
				_Type = type;
				_RowsXPath = rowsxpath;
				if (colxpaths != null)
					_ColumnsXPath = new ArrayList(colxpaths);
			}
		}

		public IDataParameterCollection Parameters
		{
			get
			{
				return _Parameters;
			}
		}

		public IDbTransaction Transaction
		{
			get
			{
				throw new NotImplementedException("Transaction not implemented");
			}
			set
			{
				throw new NotImplementedException("Transaction not implemented");
			}
		}

		#endregion

		#region IDisposable Members

		public void Dispose()
		{
			// nothing to dispose of
		}

		#endregion
	}
}


================================================
FILE: DataProviders/XmlConnection.cs
================================================

using System;
using System.Xml;
using System.Data;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// XmlConnection handles connections for XML  
	/// </summary>
	public class XmlConnection : IDbConnection
	{
		string _Connection;				// the connection string; of format directory=
		bool bOpen=false;
		public XmlConnection(string conn)
		{
			ConnectionString = conn;
		}

		internal bool IsOpen
		{
			get {return bOpen;}
		}

		#region IDbConnection Members

		public void ChangeDatabase(string databaseName)
		{
			throw new NotImplementedException("ChangeDatabase method not supported.");
		}

		public IDbTransaction BeginTransaction(System.Data.IsolationLevel il)
		{
			throw new NotImplementedException("BeginTransaction method not supported.");
		}

		IDbTransaction System.Data.IDbConnection.BeginTransaction()
		{
			throw new NotImplementedException("BeginTransaction method not supported.");
		}

		public System.Data.ConnectionState State
		{
			get
			{
				throw new NotImplementedException("State not implemented");
			}
		}

		public string ConnectionString
		{
			get
			{
				return _Connection;
			}
			set
			{
				string c = value;
				// Now parse the connection string;
				Array args = c.Split (',');
				string directory=null;
				foreach(string arg in args)
				{
					if (arg.Trim().ToLower().StartsWith("directory="))	// Only have one type of argument right now
						directory = arg.Trim().Split('=').GetValue(1) as string;
				}
				_Connection = value;
			}
		}

		public IDbCommand CreateCommand()
		{
			return new XmlCommand(this);
		}

		public void Open()
		{
			bOpen = true;
		}

		public void Close()
		{
			bOpen = false;
		}

		public string Database
		{
			get
			{
				return null;			// don't really have a database
			}
		}

		public int ConnectionTimeout
		{
			get
			{
				return 0;
			}
		}

		#endregion

		#region IDisposable Members

		public void Dispose()
		{
			this.Close();
		}

		#endregion
	}
}


================================================
FILE: DataProviders/XmlDataParameter.cs
================================================

using System;
using System.Xml;
using System.Data;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// XmlDataParameter
	/// </summary>
	public class XmlDataParameter : BaseDataParameter
	{
		public XmlDataParameter():base()
		{
		}
	}
}


================================================
FILE: DataProviders/XmlDataReader.cs
================================================

using System;
using System.Xml;
using System.Xml.XPath;
using System.Data;
using System.Collections;
using System.Collections.Specialized;
using System.IO;

namespace Majorsilence.Reporting.Data
{
	/// <summary>
	/// Summary description for XmlDataReader.
	/// </summary>
	public class XmlDataReader : IDataReader
	{
		XmlConnection _xconn;
		XmlCommand _xcmd;
		System.Data.CommandBehavior _behavior;
		// xpath 
		XPathDocument _xpd;			// the document		
		XPathNavigator _xpn;		// the navigator
		XPathNodeIterator _xpni;	// the main iterator
		XmlNamespaceManager _nsmgr;	// name space manager
		ListDictionary _NameSpaces;		// names spaces used in xml document

		// column information
		object[] _Data;				// data values of the columns
		ArrayList _Names;				// names of the columns
		ArrayList _Types;				// types of the columns

		public XmlDataReader(System.Data.CommandBehavior behavior, XmlConnection conn, XmlCommand cmd)
		{
			_xconn = conn;
			_xcmd = cmd;
			_behavior = behavior;

            // create an iterator to the selected rows
            if (_xcmd.Url.Trim() == "") {
                //Use an empty XML to allow rendering from memory
                _xpd = new XPathDocument(new StringReader("<empty/>"));
            }
            else {
                _xpd = new XPathDocument(_xcmd.Url);
            }
			_xpn =  _xpd.CreateNavigator();
			_xpni =  _xpn.Select(_xcmd.RowsXPath);	// select the rows
			_NameSpaces = new ListDictionary();
			_Names = new ArrayList();
			_Types = new ArrayList();

			// Now determine the actual structure of the row depending on the command
			if (_xcmd.ColumnsXPath != null)
				ColumnsSpecifiedInit();			// xpaths to all columns specified
			else 
			{
				_xcmd.ColumnsXPath = new ArrayList();			// xpath of all columns will simply be the name

				switch (_xcmd.Type)
				{
					case "both":
						ColumnsAttributes();
						ColumnsElements();
						break;
					case "attributes":
						ColumnsAttributes();
						break;
					case "elements":
						ColumnsElements();
						break;
				}
			}
			_Data = new object[_Names.Count];			// allocate enough room for data

			if (_NameSpaces.Count > 0)
			{
				_nsmgr = new XmlNamespaceManager(new NameTable()); 
				foreach (string nsprefix in _NameSpaces.Keys)
				{
					_nsmgr.AddNamespace(nsprefix, _NameSpaces[nsprefix] as string); // setup namespaces
				}
			}
			else
				_nsmgr = null;
		}

		void ColumnsAttributes()
		{
			//go to the first row to get info 
			XPathNodeIterator temp_xpni = _xpni.Clone();	// temporary iterator for determining columns
			temp_xpni.MoveNext();

			XPathNodeIterator ni = temp_xpni.Current.Select("@*");	// select for attributes
			while (ni.MoveNext()) 
			{
				_Types.Add(ni.Current.Value.GetType());
				AddName(ni.Current.Name);
				_xcmd.ColumnsXPath.Add("@" + ni.Current.Name);
			}
		}

		void ColumnsElements()
		{
			//go to the first row to get info 
			XPathNodeIterator temp_xpni = _xpni.Clone();	// temporary iterator for determining columns
			temp_xpni.MoveNext();

			XPathNodeIterator ni = temp_xpni.Current.Select("*"); 
			while (ni.MoveNext()) 
			{
				_Types.Add(ni.Current.Value.GetType());
				AddName(ni.Current.Name);
				_xcmd.ColumnsXPath.Add(ni.Current.Name);
				if (ni.Current.NamespaceURI != String.Empty && 
					ni.Current.Prefix != String.Empty &&
					_NameSpaces[ni.Current.Prefix] == null)
				{
					_NameSpaces.Add(ni.Current.Prefix, ni.Current.NamespaceURI);
				}
			}
		}

		void ColumnsSpecifiedInit()
		{
			XPathNodeIterator temp_xpni = _xpni.Clone();				// temporary iterator for determining columns

			temp_xpni.MoveNext ();
			foreach (string colxpath in _xcmd.ColumnsXPath ) 
			{
				XPathNodeIterator ni = temp_xpni.Current.Select(colxpath); 
				ni.MoveNext ();
				if (ni.Count < 1)
				{	// didn't get anything in the first row; this is ok because 
					//   the element might not exist in the first row.
					_Types.Add("".GetType());	// assume string
					AddName(colxpath);			// just use the name of the path
				}
				else
				{
					_Types.Add(ni.Current.Value.GetType());
					AddName(ni.Current.Name);
				}
			}
		}

		// adds name to array; ensure name is unique in the table
		void AddName(string name)
		{
			int ci=0;
			string wname = name;			
			while (_Names.IndexOf(wname) >= 0)
			{
				wname = name + "_" + (++ci).ToString();
			}
			_Names.Add(wname);
		}

		#region IDataReader Members

		public int RecordsAffected
		{
			get
			{
				return 0;
			}
		}

		public bool
Download .txt
gitextract_uirn_3hj/

├── .editorconfig
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   ├── dependabot.yml
│   └── workflows/
│       ├── codeql.yml
│       ├── jekyll-gh-pages.yml
│       ├── linux.yml
│       ├── mac.yml
│       └── windows.yml
├── .gitignore
├── DataProviders/
│   ├── BaseDataParameter.cs
│   ├── DataParameterCollection.cs
│   ├── DataProviders.sln
│   ├── DictionaryDataReader.cs
│   ├── FileDirCommand.cs
│   ├── FileDirConnection.cs
│   ├── FileDirDataParameter.cs
│   ├── FileDirDataReader.cs
│   ├── FilteredDictionaryDataReader.cs
│   ├── GedcomCommand.cs
│   ├── GedcomConnection.cs
│   ├── GedcomDataParameter.cs
│   ├── GedcomDataReader.cs
│   ├── HttpClientExtension.cs
│   ├── JsonCommand.cs
│   ├── JsonConnection.cs
│   ├── JsonDataReader.cs
│   ├── JsonTableExtractor.cs
│   ├── LexCharReader.cs
│   ├── LexToken.cs
│   ├── LexTokenList.cs
│   ├── LexTokenTypes.cs
│   ├── Lexer.cs
│   ├── LogCommand.cs
│   ├── LogConnection.cs
│   ├── LogDataParameter.cs
│   ├── LogDataReader.cs
│   ├── Majorsilence.Reporting.DataProviders.csproj
│   ├── MultipleStreamReader.cs
│   ├── TxtCommand.cs
│   ├── TxtConnection.cs
│   ├── TxtDataParameter.cs
│   ├── TxtDataReader.cs
│   ├── WebServiceCommand.cs
│   ├── WebServiceConnection.cs
│   ├── WebServiceDataParameter.cs
│   ├── WebServiceDataReader.cs
│   ├── WebServiceWsdl.cs
│   ├── XmlCommand.cs
│   ├── XmlConnection.cs
│   ├── XmlDataParameter.cs
│   ├── XmlDataReader.cs
│   ├── iTunesCommand.cs
│   ├── iTunesConnection.cs
│   ├── iTunesDataParameter.cs
│   └── iTunesDataReader.cs
├── Directory.Build.props
├── Directory.Packages.props
├── EncryptionProvider/
│   ├── EncryptionProvider.csproj
│   ├── Prompt.cs
│   ├── Properties/
│   │   ├── Resources.Designer.cs
│   │   └── Resources.resx
│   └── String/
│       └── StringEncryption.cs
├── Examples/
│   ├── .editorconfig
│   ├── Designer.xsd
│   ├── Examples/
│   │   ├── ChartExampleArea.rdl
│   │   ├── ChartExampleAreaPercentStacked.rdl
│   │   ├── ChartExampleAreaStacked.rdl
│   │   ├── ChartExampleBar.rdl
│   │   ├── ChartExampleBarPercentStacked.rdl
│   │   ├── ChartExampleBarStacked.rdl
│   │   ├── ChartExampleColumn.rdl
│   │   ├── ChartExampleColumnPercentStacked.rdl
│   │   ├── ChartExampleColumnStacked.rdl
│   │   ├── ChartExampleDoughnut.rdl
│   │   ├── ChartExampleLine.rdl
│   │   ├── ChartExamplePie.rdl
│   │   ├── ChartMap.rdl
│   │   ├── ChartMapWorld.rdl
│   │   ├── ChartTypes.rdl
│   │   ├── Contacts.xml
│   │   ├── DrilldownTest.rdl
│   │   ├── DrilldownTwoLevel.rdl
│   │   ├── EmployeeOrg.rdl
│   │   ├── FileDirectoryTest.rdl
│   │   ├── FinancialFunctions.rdl
│   │   ├── ListReport.rdl
│   │   ├── MatrixExample.rdl
│   │   ├── MatrixStaticTest.rdl
│   │   ├── MatrixTest.rdl
│   │   ├── RssShort.rdl
│   │   ├── SalesData.xml
│   │   ├── Suppliers.rdl
│   │   ├── SuppliersStyled.rdl
│   │   ├── TableThreeColumns.rdl
│   │   ├── TabularCountriesFromWizard.rdl
│   │   ├── TextProviderTest.rdl
│   │   ├── ThreeColumns.rdl
│   │   ├── WebLogHitCount.rdl
│   │   ├── WorldFacts.rdl
│   │   ├── WorldFacts.xml
│   │   ├── WorldFactsQueryArgs.rdl
│   │   └── iTunes.rdl
│   ├── Examples.416/
│   │   ├── HIDERIGA_ON_COMMAND.rdl
│   │   ├── HIDERIGA_ON_COMMAND.xml
│   │   ├── STAMPA_TABELLONE_RADIO_CON_DATI.RDL
│   │   ├── TESTRIG.rdl
│   │   ├── TESTXGRUPPO.rdl
│   │   ├── TESTXGRUPPO_Break3.rdl
│   │   └── datI_RADIO.xml
│   ├── Examples.418/
│   │   └── Test for Alignment.rdl
│   ├── Examples.sln
│   ├── JsonExamples/
│   │   └── JsonReport.rdl
│   ├── RdlEngineConfig.xml
│   ├── Readme.txt
│   ├── Sample-Report-Viewer/
│   │   ├── Sample-Report-Viewer/
│   │   │   ├── App.config
│   │   │   ├── Form1.cs
│   │   │   ├── Form1.resx
│   │   │   ├── GlobalSuppressions.cs
│   │   │   ├── Program.cs
│   │   │   ├── Properties/
│   │   │   │   ├── Resources.Designer.cs
│   │   │   │   ├── Resources.resx
│   │   │   │   ├── Settings.Designer.cs
│   │   │   │   └── Settings.settings
│   │   │   ├── SampleApp2-TestReport.rdl
│   │   │   └── SampleReportViewer.csproj
│   │   └── SampleApp2-SetData.sln
│   ├── SampleApp/
│   │   ├── SampleReportApp/
│   │   │   ├── Form1.Designer.vb
│   │   │   ├── Form1.resx
│   │   │   ├── Form1.vb
│   │   │   ├── GlobalSuppressions.vb
│   │   │   ├── My Project/
│   │   │   │   ├── Application.Designer.vb
│   │   │   │   ├── Application.myapp
│   │   │   │   ├── AssemblyInfo.vb
│   │   │   │   ├── Resources.Designer.vb
│   │   │   │   ├── Resources.resx
│   │   │   │   ├── Settings.Designer.vb
│   │   │   │   └── Settings.settings
│   │   │   ├── SampleReportApp.vbproj
│   │   │   └── app.config
│   │   └── SampleReportApp.sln
│   ├── SampleApp2-SetData/
│   │   ├── SampleApp2-SetData/
│   │   │   ├── App.config
│   │   │   ├── Form1.Designer.cs
│   │   │   ├── Form1.cs
│   │   │   ├── Form1.resx
│   │   │   ├── GlobalSuppressions.cs
│   │   │   ├── Program.cs
│   │   │   ├── Properties/
│   │   │   │   ├── Resources.Designer.cs
│   │   │   │   ├── Resources.resx
│   │   │   │   ├── Settings.Designer.cs
│   │   │   │   └── Settings.settings
│   │   │   ├── SampleApp2-SetData.csproj
│   │   │   └── SampleApp2-TestReport.rdl
│   │   └── SampleApp2-SetData.sln
│   ├── SampleAppHyperLinkCustomAction/
│   │   ├── HyperLinkExample/
│   │   │   ├── App.config
│   │   │   ├── Form1.Designer.cs
│   │   │   ├── Form1.cs
│   │   │   ├── Form1.resx
│   │   │   ├── GlobalSuppressions.cs
│   │   │   ├── HyperLinkExample.csproj
│   │   │   ├── Program.cs
│   │   │   └── Properties/
│   │   │       ├── Resources.Designer.cs
│   │   │       ├── Resources.resx
│   │   │       ├── Settings.Designer.cs
│   │   │       └── Settings.settings
│   │   └── SampleReportApp.sln
│   ├── SampleDesignerControl/
│   │   ├── SampleDesignerControl/
│   │   │   ├── App.config
│   │   │   ├── GlobalSuppressions.cs
│   │   │   ├── Program.cs
│   │   │   ├── Properties/
│   │   │   │   ├── Resources.Designer.cs
│   │   │   │   ├── Resources.resx
│   │   │   │   ├── Settings.Designer.cs
│   │   │   │   └── Settings.settings
│   │   │   ├── SampleApp2-TestReport.rdl
│   │   │   └── SampleDesignerControl.csproj
│   │   ├── SampleDesignerControl.sln
│   │   └── SampleDesignerControlWPF/
│   │       ├── App.config
│   │       ├── App.xaml
│   │       ├── App.xaml.cs
│   │       ├── GlobalSuppressions.cs
│   │       ├── MainWindow.xaml
│   │       ├── MainWindow.xaml.cs
│   │       ├── Properties/
│   │       │   ├── Resources.Designer.cs
│   │       │   ├── Resources.resx
│   │       │   ├── Settings.Designer.cs
│   │       │   └── Settings.settings
│   │       └── SampleDesignerControlWPF.csproj
│   ├── SqliteExamples/
│   │   ├── SimpleTest1.rdl
│   │   ├── SimpleTest2.rdl
│   │   ├── SimpleTest3WithParameters.rdl
│   │   ├── SimpleTestConnectionString.rdl
│   │   ├── barcode.rdl
│   │   ├── chart.rdl
│   │   └── functions.rdl
│   ├── config.xml
│   ├── designerstate.xml
│   ├── mostly-empty.rdl
│   ├── readerstate.xml
│   ├── usa_map.xml
│   └── world_map.xml
├── LICENSE.txt
├── LICENSE_short.txt
├── LanguageWrappers/
│   ├── php/
│   │   ├── Examples/
│   │   │   ├── test1.php
│   │   │   ├── test2-connection-string-parameter.php
│   │   │   └── test3-streaming.php
│   │   ├── report.php
│   │   └── viewer.php
│   ├── python/
│   │   ├── Examples/
│   │   │   ├── test1.py
│   │   │   ├── test2-parameters.py
│   │   │   └── test3-streaming.py
│   │   └── report.py
│   └── ruby/
│       ├── Examples/
│       │   ├── test1.rb
│       │   ├── test2-parameters.rb
│       │   └── test3-streaming.rb
│       └── report.rb
├── LibRdlWpfViewer/
│   ├── LibRdlWpfViewer.csproj
│   ├── LibRdlWpfViewer.sln
│   ├── Properties/
│   │   ├── Resources.Designer.cs
│   │   ├── Resources.resx
│   │   ├── Settings.Designer.cs
│   │   └── Settings.settings
│   ├── RdlWpfViewer.xaml
│   └── RdlWpfViewer.xaml.cs
├── Majorsilence.Drawing.Common/
│   ├── Bitmap.cs
│   ├── Brush.cs
│   ├── Brushes.cs
│   ├── CharacterRange.cs
│   ├── Color.cs
│   ├── ColorTranslator.cs
│   ├── Drawing2D/
│   │   ├── CompositingQuality.cs
│   │   ├── DashStyle.cs
│   │   ├── GraphicsPath.cs
│   │   ├── GraphicsState.cs
│   │   ├── HatchBrush.cs
│   │   ├── HatchStyle.cs
│   │   ├── InterpolationMode.cs
│   │   ├── LineCap.cs
│   │   ├── LineJoin.cs
│   │   ├── LinearGradientBrush.cs
│   │   ├── LinearGradientMode.cs
│   │   ├── Matrix.cs
│   │   ├── PixelOffsetMode.cs
│   │   └── SmoothingMode.cs
│   ├── Font.cs
│   ├── FontFamily.cs
│   ├── FontStyle.cs
│   ├── Graphics.cs
│   ├── GraphicsUnit.cs
│   ├── Image.cs
│   ├── Imaging/
│   │   ├── Encoder.cs
│   │   ├── EncoderParameter.cs
│   │   ├── EncoderParameters.cs
│   │   ├── ImageCodecInfo.cs
│   │   ├── ImageFormat.cs
│   │   └── ImageFormatExtensions.cs
│   ├── Majorsilence.Drawing.Common.csproj
│   ├── Pen.cs
│   ├── Pens.cs
│   ├── Point.cs
│   ├── PointF.cs
│   ├── Rectangle.cs
│   ├── RectangleF.cs
│   ├── Region.cs
│   ├── Size.cs
│   ├── SizeF.cs
│   ├── SkiaImageExtensions.cs
│   ├── SolidBrush.cs
│   ├── StringAlignment.cs
│   ├── StringFormat.cs
│   ├── StringFormatFlags.cs
│   ├── StringTrimming.cs
│   └── Text.cs
├── Majorsilence.Reporting.Benchmarks/
│   ├── DrawingCompatJob.cs
│   ├── JsonDataProviderBenchmark.cs
│   ├── Majorsilence.Reporting.Benchmarks.csproj
│   └── Program.cs
├── Majorsilence.Reporting.UI/
│   ├── .gitignore
│   ├── App.axaml
│   ├── App.axaml.cs
│   ├── MainWindow.axaml
│   ├── MainWindow.axaml.cs
│   ├── Majorsilence.Reporting.UI.csproj
│   └── Program.cs
├── Majorsilence.Reporting.UI.RdlAvalonia/
│   ├── Majorsilence.Reporting.UI.RdlAvalonia.csproj
│   └── Viewer/
│       ├── AvaloniaReportViewer.axaml
│       ├── AvaloniaReportViewer.axaml.cs
│       ├── ReportCanvas.cs
│       ├── SkiaPageDrawing.cs
│       └── ZoomMode.cs
├── Majorsilence.Reporting.WebExample/
│   ├── Controllers/
│   │   └── HomeController.cs
│   ├── Majorsilence.Reporting.WebExample.csproj
│   ├── Models/
│   │   └── ErrorViewModel.cs
│   ├── Program.cs
│   ├── Properties/
│   │   └── launchSettings.json
│   ├── Views/
│   │   └── Home/
│   │       └── Index.cshtml
│   ├── appsettings.Development.json
│   └── appsettings.json
├── Majorsilence.WinformUtils/
│   ├── FormExtensions.cs
│   ├── Majorsilence.WinformUtils.csproj
│   ├── Strings.Designer.cs
│   ├── Strings.resx
│   └── WaitForm.cs
├── MajorsilenceReporting-Linux-GtkViewer.sln
├── MajorsilenceReporting.sln
├── OracleSp/
│   ├── AssemblyInfo.cs
│   ├── DataParameter.cs
│   ├── DataParameterCollection.cs
│   ├── OracleSP.csproj
│   ├── OracleSp.sln
│   ├── OracleSpCommand.cs
│   └── OracleSpConnection.cs
├── RdlAsp.Mvc/
│   ├── Majorsilence.Reporting.RdlAsp.Mvc.csproj
│   ├── RdlListReports.cs
│   ├── RdlReport.cs
│   ├── RdlSession.cs
│   ├── ReportHelper.cs
│   └── Settings.cs
├── RdlCmd/
│   ├── GlobalSuppressions.cs
│   ├── RdlCmd.cs
│   ├── RdlCmd.csproj
│   └── runtimeconfig.template.json
├── RdlCreator/
│   ├── Body.cs
│   ├── BorderColor.cs
│   ├── BorderStyle.cs
│   ├── BorderStyleType.cs
│   ├── BorderWidth.cs
│   ├── Card.cs
│   ├── ConnectionProperties.cs
│   ├── Create.cs
│   ├── CustomProperties.cs
│   ├── CustomProperty.cs
│   ├── CustomReportItems.cs
│   ├── DataProviders.cs
│   ├── DataSet.cs
│   ├── DataSets.cs
│   ├── DataSource.cs
│   ├── DataSources.cs
│   ├── Details.cs
│   ├── Document.cs
│   ├── Field.cs
│   ├── Fields.cs
│   ├── Header.cs
│   ├── Majorsilence.Reporting.RdlCreator.csproj
│   ├── Page.cs
│   ├── PageFooter.cs
│   ├── PageHeader.cs
│   ├── Query.cs
│   ├── Report.cs
│   ├── ReportItemImage.cs
│   ├── ReportItemSize.cs
│   ├── ReportItemsBody.cs
│   ├── ReportItemsFooter.cs
│   ├── ReportItemsHeader.cs
│   ├── SizeUnit.cs
│   ├── Style.cs
│   ├── Table.cs
│   ├── TableCell.cs
│   ├── TableCellReportItems.cs
│   ├── TableCells.cs
│   ├── TableColumn.cs
│   ├── TableColumns.cs
│   ├── TableRow.cs
│   ├── TableRows.cs
│   ├── Text.cs
│   └── Value.cs
├── RdlCreator.Tests/
│   ├── Document_Test.cs
│   ├── NestedJsonData.json
│   ├── RdlCreator.Tests.csproj
│   ├── Reports_ChainedTest.cs
│   ├── Reports_DataProviderTest.cs
│   ├── Reports_JsonDataProviderTest.cs
│   ├── Reports_ManualDefinitionTest.cs
│   └── TestData.json
├── RdlCri/
│   ├── AztecCode.cs
│   ├── BarCode128.cs
│   ├── BarCode39.cs
│   ├── BarCodeBookland.cs
│   ├── BarCodeEAN13.cs
│   ├── BarCodeEAN8.cs
│   ├── BarCodeITF14.cs
│   ├── DataMatrix.cs
│   ├── GlobalSuppressions.cs
│   ├── Majorsilence.Reporting.RdlCri.csproj
│   ├── Pdf417Barcode.cs
│   ├── PixelConversions.cs
│   ├── QrCode.cs
│   ├── RdlCri.sln
│   ├── XmlHelpers.cs
│   └── ZxingBarcodes.cs
├── RdlDesign/
│   ├── AssemblyInfo.cs
│   ├── BackgroundCtl.cs
│   ├── BackgroundCtl.resx
│   ├── BackgroundCtl.ru-RU.resx
│   ├── BodyCtl.cs
│   ├── BodyCtl.resx
│   ├── BodyCtl.ru-RU.resx
│   ├── ChartAxisCtl.cs
│   ├── ChartAxisCtl.resx
│   ├── ChartAxisCtl.ru-RU.resx
│   ├── ChartCtl - Copy.cs
│   ├── ChartCtl.cs
│   ├── ChartCtl.resx
│   ├── ChartCtl.ru-RU.resx
│   ├── ChartLegendCtl.cs
│   ├── ChartLegendCtl.resx
│   ├── ChartLegendCtl.ru-RU.resx
│   ├── CodeCtl.cs
│   ├── CodeCtl.resx
│   ├── CodeCtl.ru-RU.resx
│   ├── ColorPicker.cs
│   ├── ColorPickerPopup.Designer.cs
│   ├── ColorPickerPopup.cs
│   ├── ColorPickerPopup.resx
│   ├── Conversions.cs
│   ├── CustomReportItemCtl.cs
│   ├── CustomReportItemCtl.resx
│   ├── DataSetRowsCtl.Designer.cs
│   ├── DataSetRowsCtl.cs
│   ├── DataSetRowsCtl.resx
│   ├── DataSetRowsCtl.ru-RU.resx
│   ├── DataSetsCtl.Designer.cs
│   ├── DataSetsCtl.cs
│   ├── DataSetsCtl.resx
│   ├── DataSetsCtl.ru-RU.resx
│   ├── DesignCtl.Designer.cs
│   ├── DesignCtl.cs
│   ├── DesignCtl.resx
│   ├── DesignCtl.ru-RU.resx
│   ├── DesignEditLines.cs
│   ├── DesignEditLines.resx
│   ├── DesignRuler.cs
│   ├── DesignRuler.resx
│   ├── DesignXmlDraw.cs
│   ├── DesignXmlDraw.resx
│   ├── DesignerUtility.cs
│   ├── DialogAbout.Designer.cs
│   ├── DialogAbout.cs
│   ├── DialogAbout.resx
│   ├── DialogAbout.ru-RU.resx
│   ├── DialogDataSourceRef.Designer.cs
│   ├── DialogDataSourceRef.cs
│   ├── DialogDataSourceRef.resx
│   ├── DialogDataSourceRef.ru-RU.resx
│   ├── DialogDataSources.Designer.cs
│   ├── DialogDataSources.cs
│   ├── DialogDataSources.resx
│   ├── DialogDataSources.ru-RU.resx
│   ├── DialogDatabase.Designer.cs
│   ├── DialogDatabase.cs
│   ├── DialogDatabase.resx
│   ├── DialogDatabase.ru-RU.resx
│   ├── DialogEmbeddedImages.Designer.cs
│   ├── DialogEmbeddedImages.cs
│   ├── DialogEmbeddedImages.resx
│   ├── DialogEmbeddedImages.ru-RU.resx
│   ├── DialogExprEditor.Designer.cs
│   ├── DialogExprEditor.cs
│   ├── DialogExprEditor.resx
│   ├── DialogExprEditor.ru-RU.resx
│   ├── DialogFilterOperator.Designer.cs
│   ├── DialogFilterOperator.cs
│   ├── DialogFilterOperator.resx
│   ├── DialogFilterOperator.ru-RU.resx
│   ├── DialogListOfStrings.Designer.cs
│   ├── DialogListOfStrings.cs
│   ├── DialogListOfStrings.resx
│   ├── DialogListOfStrings.ru-RU.resx
│   ├── DialogNewChart.Designer.cs
│   ├── DialogNewChart.cs
│   ├── DialogNewChart.resx
│   ├── DialogNewChart.ru-RU.resx
│   ├── DialogNewMatrix.Designer.cs
│   ├── DialogNewMatrix.cs
│   ├── DialogNewMatrix.resx
│   ├── DialogNewMatrix.ru-RU.resx
│   ├── DialogNewTable.Designer.cs
│   ├── DialogNewTable.cs
│   ├── DialogNewTable.resx
│   ├── DialogNewTable.ru-RU.resx
│   ├── DialogToolOptions.Designer.cs
│   ├── DialogToolOptions.cs
│   ├── DialogToolOptions.resx
│   ├── DialogToolOptions.ru-RU.resx
│   ├── DialogValidValues.Designer.cs
│   ├── DialogValidValues.cs
│   ├── DialogValidValues.resx
│   ├── DialogValidValues.ru-RU.resx
│   ├── DialogValidateRdl.Designer.cs
│   ├── DialogValidateRdl.cs
│   ├── DialogValidateRdl.resx
│   ├── DialogValidateRdl.ru-RU.resx
│   ├── DrillParametersDialog.Designer.cs
│   ├── DrillParametersDialog.cs
│   ├── DrillParametersDialog.resx
│   ├── DrillParametersDialog.ru-RU.resx
│   ├── FiltersCtl.cs
│   ├── FiltersCtl.resx
│   ├── FiltersCtl.ru-RU.resx
│   ├── FindTab.Designer.cs
│   ├── FindTab.cs
│   ├── FindTab.resx
│   ├── FindTab.ru-RU.resx
│   ├── FontCtl.cs
│   ├── FontCtl.resx
│   ├── FontCtl.ru-RU.resx
│   ├── GridCtl.cs
│   ├── GridCtl.resx
│   ├── GridCtl.ru-RU.resx
│   ├── GroupingCtl.cs
│   ├── GroupingCtl.resx
│   ├── GroupingCtl.ru-RU.resx
│   ├── ImageCtl.cs
│   ├── ImageCtl.resx
│   ├── ImageCtl.ru-RU.resx
│   ├── InteractivityCtl.cs
│   ├── InteractivityCtl.resx
│   ├── InteractivityCtl.ru-RU.resx
│   ├── ListCtl.cs
│   ├── ListCtl.resx
│   ├── ListCtl.ru-RU.resx
│   ├── MDIChild.Designer.cs
│   ├── MDIChild.cs
│   ├── MDIChild.resx
│   ├── MDIChild.ru-RU.resx
│   ├── Majorsilence.Reporting.ReportDesigner.csproj
│   ├── MatrixCtl.cs
│   ├── MatrixCtl.resx
│   ├── MatrixCtl.ru-RU.resx
│   ├── MatrixView.cs
│   ├── ModulesClassesCtl.cs
│   ├── ModulesClassesCtl.resx
│   ├── ModulesClassesCtl.ru-RU.resx
│   ├── PositionCtl.cs
│   ├── PositionCtl.resx
│   ├── PositionCtl.ru-RU.resx
│   ├── Properties/
│   │   ├── Resources.Designer.cs
│   │   └── Resources.resx
│   ├── PropertyCtl.cs
│   ├── PropertyCtl.fr.resx
│   ├── PropertyCtl.resx
│   ├── PropertyCtl.ru-RU.resx
│   ├── PropertyDialog.Designer.cs
│   ├── PropertyDialog.cs
│   ├── PropertyDialog.fr.resx
│   ├── PropertyDialog.resx
│   ├── PropertyDialog.ru-RU.resx
│   ├── QueryParametersCtl.Designer.cs
│   ├── QueryParametersCtl.cs
│   ├── QueryParametersCtl.resx
│   ├── QueryParametersCtl.ru-RU.resx
│   ├── RdlDesign.sln
│   ├── RdlDesigner.Designer.cs
│   ├── RdlDesigner.cs
│   ├── RdlDesigner.fr.resx
│   ├── RdlDesigner.resx
│   ├── RdlDesigner.ru-RU.resx
│   ├── RdlDesignerSavedFileEvent.cs
│   ├── RdlEditPreview.cs
│   ├── RdlEditPreview.fr.resx
│   ├── RdlEditPreview.resx
│   ├── RdlEditPreview.ru-RU.resx
│   ├── RdlProperties/
│   │   ├── Categories.Designer.cs
│   │   ├── Categories.resx
│   │   ├── Categories.ru-RU.resx
│   │   ├── Descriptions.Designer.cs
│   │   ├── Descriptions.resx
│   │   ├── Descriptions.ru-RU.resx
│   │   ├── DisplayNames.Designer.cs
│   │   ├── DisplayNames.resx
│   │   ├── DisplayNames.ru-RU.resx
│   │   ├── LocalizedCategoryAttribute.cs
│   │   ├── LocalizedDescriptionAttribute.cs
│   │   ├── LocalizedDisplayNameAttribute.cs
│   │   ├── PropertyAction.cs
│   │   ├── PropertyAppearance.cs
│   │   ├── PropertyBackground.cs
│   │   ├── PropertyBorder.cs
│   │   ├── PropertyChart.cs
│   │   ├── PropertyDataRegion.cs
│   │   ├── PropertyExpr.cs
│   │   ├── PropertyFilters.cs
│   │   ├── PropertyGrouping.cs
│   │   ├── PropertyImage.cs
│   │   ├── PropertyList.cs
│   │   ├── PropertyLocation.cs
│   │   ├── PropertyMargin.cs
│   │   ├── PropertyMatrix.cs
│   │   ├── PropertyPadding.cs
│   │   ├── PropertyPrintFirstLast.cs
│   │   ├── PropertyRectangle.cs
│   │   ├── PropertyReport.cs
│   │   ├── PropertyReportItem.cs
│   │   ├── PropertySize.cs
│   │   ├── PropertySorting.cs
│   │   ├── PropertySubreport.cs
│   │   ├── PropertyTable.cs
│   │   ├── PropertyTableTab.cs
│   │   ├── PropertyTextbox.cs
│   │   └── PropertyVisibility.cs
│   ├── RdlUserControl.Designer.cs
│   ├── RdlUserControl.cs
│   ├── RdlUserControl.resx
│   ├── RdlUserControl.ru-RU.resx
│   ├── ReportCtl.Designer.cs
│   ├── ReportCtl.cs
│   ├── ReportCtl.fr.resx
│   ├── ReportCtl.resx
│   ├── ReportCtl.ru-RU.resx
│   ├── ReportNames.cs
│   ├── ReportParameterCtl.Designer.cs
│   ├── ReportParameterCtl.cs
│   ├── ReportParameterCtl.fr.resx
│   ├── ReportParameterCtl.resx
│   ├── ReportParameterCtl.ru-RU.resx
│   ├── ReportXmlCtl.cs
│   ├── ReportXmlCtl.resx
│   ├── ReportXmlCtl.ru-RU.resx
│   ├── Resources/
│   │   ├── Strings.Designer.cs
│   │   ├── Strings.fr.resx
│   │   ├── Strings.resx
│   │   └── Strings.ru-RU.resx
│   ├── SQLCtl.Designer.cs
│   ├── SQLCtl.cs
│   ├── SQLCtl.resx
│   ├── SQLCtl.ru-RU.resx
│   ├── SimpleButton.cs
│   ├── SimpleButton.resx
│   ├── SimpleToggle.cs
│   ├── SimpleToggle.resx
│   ├── SingleCtlDialog.Designer.cs
│   ├── SingleCtlDialog.cs
│   ├── SingleCtlDialog.resx
│   ├── SingleCtlDialog.ru-RU.resx
│   ├── SortingCtl.cs
│   ├── SortingCtl.resx
│   ├── SortingCtl.ru-RU.resx
│   ├── StaticSeriesCtl - Copy.cs
│   ├── StaticSeriesCtl.Designer.cs
│   ├── StaticSeriesCtl.cs
│   ├── StaticSeriesCtl.resx
│   ├── StaticSeriesCtl.ru-RU.resx
│   ├── StyleBorderCtl.cs
│   ├── StyleBorderCtl.resx
│   ├── StyleBorderCtl.ru-RU.resx
│   ├── StyleCtl.cs
│   ├── StyleCtl.resx
│   ├── StyleCtl.ru-RU.resx
│   ├── StyleTextCtl.cs
│   ├── StyleTextCtl.resx
│   ├── StyleTextCtl.ru-RU.resx
│   ├── SubreportCtl.cs
│   ├── SubreportCtl.resx
│   ├── SubreportCtl.ru-RU.resx
│   ├── Syntax/
│   │   ├── RdlScriptLexer.cs
│   │   ├── ScintillaExprStyle.cs
│   │   ├── ScintillaSqlStyle.cs
│   │   └── ScintillaXMLStyle.cs
│   ├── TableColumnCtl.cs
│   ├── TableColumnCtl.resx
│   ├── TableColumnCtl.ru-RU.resx
│   ├── TableCtl.cs
│   ├── TableCtl.resx
│   ├── TableCtl.ru-RU.resx
│   ├── TableRowCtl.cs
│   ├── TableRowCtl.resx
│   ├── TableRowCtl.ru-RU.resx
│   ├── ToolStripUserZoomControl.cs
│   ├── Undo.cs
│   ├── UserZoomControl.Designer.cs
│   ├── UserZoomControl.cs
│   ├── VisibilityCtl.cs
│   ├── VisibilityCtl.resx
│   ├── VisibilityCtl.ru-RU.resx
│   ├── app.manifest
│   └── desktop.ini
├── RdlDesktop/
│   ├── BackgroundThread.cs
│   ├── ConnectionThread.cs
│   ├── ConsoleThread.cs
│   ├── FileCache.cs
│   ├── FileReadCache.cs
│   ├── RdlDesktop.cs
│   ├── RdlDesktop.csproj
│   ├── RdlDesktop.sln
│   ├── ReportRender.cs
│   ├── Resources/
│   │   ├── Strings.Designer.cs
│   │   ├── Strings.resx
│   │   └── Strings.ru-RU.resx
│   └── config.xml
├── RdlEngine/
│   ├── Definition/
│   │   ├── Action.cs
│   │   ├── Axis.cs
│   │   ├── AxisTickMarks.cs
│   │   ├── Body.cs
│   │   ├── CategoryAxis.cs
│   │   ├── CategoryGrouping.cs
│   │   ├── CategoryGroupings.cs
│   │   ├── Chart.cs
│   │   ├── ChartBar.cs
│   │   ├── ChartBase.cs
│   │   ├── ChartBubble.cs
│   │   ├── ChartColumn.cs
│   │   ├── ChartData.cs
│   │   ├── ChartElementOutput.cs
│   │   ├── ChartExpression.cs
│   │   ├── ChartGridLines.cs
│   │   ├── ChartLayout.cs
│   │   ├── ChartLine.cs
│   │   ├── ChartMap.cs
│   │   ├── ChartMapData.cs
│   │   ├── ChartPalette.cs
│   │   ├── ChartPie.cs
│   │   ├── ChartSeries.cs
│   │   ├── ChartSubType.cs
│   │   ├── ChartType.cs
│   │   ├── Classes.cs
│   │   ├── Code.cs
│   │   ├── CodeModule.cs
│   │   ├── CodeModules.cs
│   │   ├── ColumnGrouping.cs
│   │   ├── ColumnGroupings.cs
│   │   ├── ConnectionProperties.cs
│   │   ├── Corner.cs
│   │   ├── Custom.cs
│   │   ├── CustomReportItem.cs
│   │   ├── DataElementOutput.cs
│   │   ├── DataElementStyle.cs
│   │   ├── DataElementStyleEnum.cs
│   │   ├── DataInstanceElementOutput.cs
│   │   ├── DataLabel.cs
│   │   ├── DataLabelPosition.cs
│   │   ├── DataPoint.cs
│   │   ├── DataPoints.cs
│   │   ├── DataRegion.cs
│   │   ├── DataSetDefn.cs
│   │   ├── DataSetReference.cs
│   │   ├── DataSetsDefn.cs
│   │   ├── DataSourceDefn.cs
│   │   ├── DataSourceReference.cs
│   │   ├── DataSourcesDefn.cs
│   │   ├── DataType.cs
│   │   ├── DataValue.cs
│   │   ├── DataValues.cs
│   │   ├── DefaultValue.cs
│   │   ├── Details.cs
│   │   ├── Drillthrough.cs
│   │   ├── DrillthroughParameter.cs
│   │   ├── DrillthroughParameters.cs
│   │   ├── DynamicCategories.cs
│   │   ├── DynamicColumns.cs
│   │   ├── DynamicExpression.cs
│   │   ├── DynamicRows.cs
│   │   ├── DynamicSeries.cs
│   │   ├── EMFConverter/
│   │   │   └── EMFRecords/
│   │   │       ├── EMF.cs
│   │   │       ├── EMFDrawingRecords/
│   │   │       │   ├── Comment.cs
│   │   │       │   ├── DrawBase.cs
│   │   │       │   ├── DrawCurve.cs
│   │   │       │   ├── DrawEllipse.cs
│   │   │       │   ├── DrawLines.cs
│   │   │       │   ├── DrawPie.cs
│   │   │       │   ├── DrawRects.cs
│   │   │       │   ├── DrawString.cs
│   │   │       │   ├── FillEllipse.cs
│   │   │       │   ├── FillPie.cs
│   │   │       │   ├── FillPolygon.cs
│   │   │       │   └── FillRects.cs
│   │   │       ├── EMFObjects/
│   │   │       │   ├── EMFBrush.cs
│   │   │       │   ├── EMFFont.cs
│   │   │       │   ├── EMFPen.cs
│   │   │       │   └── EMFStringFormat.cs
│   │   │       ├── EMFRecordObject.cs
│   │   │       └── EMFTransform/
│   │   │           └── EMFSetPageTransform.cs
│   │   ├── EmbeddedImage.cs
│   │   ├── EmbeddedImages.cs
│   │   ├── Expression.cs
│   │   ├── ExpressionType.cs
│   │   ├── Field.cs
│   │   ├── Fields.cs
│   │   ├── Filter.cs
│   │   ├── FilterOperator.cs
│   │   ├── FilterValue.cs
│   │   ├── FilterValues.cs
│   │   ├── Filters.cs
│   │   ├── Footer.cs
│   │   ├── GroupEntry.cs
│   │   ├── GroupExpression.cs
│   │   ├── GroupExpressions.cs
│   │   ├── Grouping.cs
│   │   ├── Header.cs
│   │   ├── Image.cs
│   │   ├── ImageSizing.cs
│   │   ├── ImageSource.cs
│   │   ├── Legend.cs
│   │   ├── LegendLayout.cs
│   │   ├── LegendPosition.cs
│   │   ├── Line.cs
│   │   ├── List.cs
│   │   ├── Marker.cs
│   │   ├── MarkerType.cs
│   │   ├── Matrix.cs
│   │   ├── MatrixCell.cs
│   │   ├── MatrixCellDataElementOutput.cs
│   │   ├── MatrixCellEntry.cs
│   │   ├── MatrixCells.cs
│   │   ├── MatrixColumn.cs
│   │   ├── MatrixColumns.cs
│   │   ├── MatrixEntry.cs
│   │   ├── MatrixLayoutDirection.cs
│   │   ├── MatrixRow.cs
│   │   ├── MatrixRows.cs
│   │   ├── Name.cs
│   │   ├── NameLookup.cs
│   │   ├── PageFooter.cs
│   │   ├── PageHeader.cs
│   │   ├── ParameterValue.cs
│   │   ├── ParameterValues.cs
│   │   ├── PlotArea.cs
│   │   ├── PlotType.cs
│   │   ├── Query.cs
│   │   ├── QueryColumn.cs
│   │   ├── QueryCommandType.cs
│   │   ├── QueryParameter.cs
│   │   ├── QueryParameters.cs
│   │   ├── RDLParser.cs
│   │   ├── RSize.cs
│   │   ├── Rectangle.cs
│   │   ├── ReportClass.cs
│   │   ├── ReportDefn.cs
│   │   ├── ReportItem.cs
│   │   ├── ReportItems.cs
│   │   ├── ReportLink.cs
│   │   ├── ReportLog.cs
│   │   ├── ReportParameter.cs
│   │   ├── ReportParameters.cs
│   │   ├── Row.cs
│   │   ├── RowGrouping.cs
│   │   ├── RowGroupings.cs
│   │   ├── Rows.cs
│   │   ├── SeriesGrouping.cs
│   │   ├── SeriesGroupings.cs
│   │   ├── SortBy.cs
│   │   ├── SortDirection.cs
│   │   ├── Sorting.cs
│   │   ├── StaticCategories.cs
│   │   ├── StaticColumn.cs
│   │   ├── StaticColumns.cs
│   │   ├── StaticMember.cs
│   │   ├── StaticRow.cs
│   │   ├── StaticRows.cs
│   │   ├── StaticSeries.cs
│   │   ├── Style.cs
│   │   ├── StyleBackgroundImage.cs
│   │   ├── StyleBackgroundImageSource.cs
│   │   ├── StyleBorderColor.cs
│   │   ├── StyleBorderStyle.cs
│   │   ├── StyleBorderWidth.cs
│   │   ├── Subreport.cs
│   │   ├── SubreportParameter.cs
│   │   ├── SubreportParameters.cs
│   │   ├── Subtotal.cs
│   │   ├── SubtotalPosition.cs
│   │   ├── Table.cs
│   │   ├── TableCell.cs
│   │   ├── TableCells.cs
│   │   ├── TableColumn.cs
│   │   ├── TableColumns.cs
│   │   ├── TableGroup.cs
│   │   ├── TableGroups.cs
│   │   ├── TableRow.cs
│   │   ├── TableRows.cs
│   │   ├── Textbox.cs
│   │   ├── ThreeDProperties.cs
│   │   ├── ThreeDPropertiesDrawingStyle.cs
│   │   ├── ThreeDPropertiesProjectionMode.cs
│   │   ├── ThreeDPropertiesShading.cs
│   │   ├── Title.cs
│   │   ├── TitlePosition.cs
│   │   ├── ToggleImage.cs
│   │   ├── TrueFalseAuto.cs
│   │   ├── ValidValues.cs
│   │   ├── ValueAxis.cs
│   │   ├── Values.cs
│   │   └── Visibility.cs
│   ├── ExprParser/
│   │   ├── CharReader.cs
│   │   ├── LaxBinder.cs
│   │   ├── Lexer.cs
│   │   ├── Parser.cs
│   │   ├── ParserException.cs
│   │   ├── Token.cs
│   │   ├── TokenList.cs
│   │   └── TokenTypes.cs
│   ├── Functions/
│   │   ├── Constant.cs
│   │   ├── ConstantBoolean.cs
│   │   ├── ConstantDateTime.cs
│   │   ├── ConstantDecimal.cs
│   │   ├── ConstantDouble.cs
│   │   ├── ConstantError.cs
│   │   ├── ConstantInteger.cs
│   │   ├── ConstantString.cs
│   │   ├── Financial.cs
│   │   ├── FunctionAggr.cs
│   │   ├── FunctionAggrArray.cs
│   │   ├── FunctionAggrAvg.cs
│   │   ├── FunctionAggrCount.cs
│   │   ├── FunctionAggrCountDistinct.cs
│   │   ├── FunctionAggrCountRows.cs
│   │   ├── FunctionAggrFirst.cs
│   │   ├── FunctionAggrLast.cs
│   │   ├── FunctionAggrLevel.cs
│   │   ├── FunctionAggrMax.cs
│   │   ├── FunctionAggrMin.cs
│   │   ├── FunctionAggrNext.cs
│   │   ├── FunctionAggrPrevious.cs
│   │   ├── FunctionAggrRvAvg.cs
│   │   ├── FunctionAggrRvCount.cs
│   │   ├── FunctionAggrRvMax.cs
│   │   ├── FunctionAggrRvMin.cs
│   │   ├── FunctionAggrRvStdev.cs
│   │   ├── FunctionAggrRvStdevp.cs
│   │   ├── FunctionAggrRvSum.cs
│   │   ├── FunctionAggrRvVar.cs
│   │   ├── FunctionAggrRvVarp.cs
│   │   ├── FunctionAggrStdev.cs
│   │   ├── FunctionAggrStdevp.cs
│   │   ├── FunctionAggrSum.cs
│   │   ├── FunctionAggrVar.cs
│   │   ├── FunctionAggrVarp.cs
│   │   ├── FunctionAnd.cs
│   │   ├── FunctionBinary.cs
│   │   ├── FunctionChoose.cs
│   │   ├── FunctionCode.cs
│   │   ├── FunctionCustomInstance.cs
│   │   ├── FunctionCustomStatic.cs
│   │   ├── FunctionDiv.cs
│   │   ├── FunctionDivDecimal.cs
│   │   ├── FunctionExecutionTime.cs
│   │   ├── FunctionExp.cs
│   │   ├── FunctionField.cs
│   │   ├── FunctionFieldCollection.cs
│   │   ├── FunctionFieldIsMissing.cs
│   │   ├── FunctionFormat.cs
│   │   ├── FunctionGlobalCollection.cs
│   │   ├── FunctionIif.cs
│   │   ├── FunctionMinus.cs
│   │   ├── FunctionMinusDecimal.cs
│   │   ├── FunctionMinusInt32.cs
│   │   ├── FunctionModulus.cs
│   │   ├── FunctionMult.cs
│   │   ├── FunctionMultDecimal.cs
│   │   ├── FunctionNot.cs
│   │   ├── FunctionOr.cs
│   │   ├── FunctionPageNumber.cs
│   │   ├── FunctionParameterCollection.cs
│   │   ├── FunctionPlus.cs
│   │   ├── FunctionPlusDecimal.cs
│   │   ├── FunctionPlusInt32.cs
│   │   ├── FunctionPlusString.cs
│   │   ├── FunctionRelopEQ.cs
│   │   ├── FunctionRelopGT.cs
│   │   ├── FunctionRelopGTE.cs
│   │   ├── FunctionRelopLT.cs
│   │   ├── FunctionRelopLTE.cs
│   │   ├── FunctionRelopNE.cs
│   │   ├── FunctionReportFolder.cs
│   │   ├── FunctionReportItemCollection.cs
│   │   ├── FunctionReportName.cs
│   │   ├── FunctionReportParameter.cs
│   │   ├── FunctionReportParameterLabel.cs
│   │   ├── FunctionSwitch.cs
│   │   ├── FunctionSystem.cs
│   │   ├── FunctionTextbox.cs
│   │   ├── FunctionTotalPages.cs
│   │   ├── FunctionUnaryMinus.cs
│   │   ├── FunctionUnaryMinusDecimal.cs
│   │   ├── FunctionUnaryMinusInteger.cs
│   │   ├── FunctionUserCollection.cs
│   │   ├── FunctionUserID.cs
│   │   ├── FunctionUserLanguage.cs
│   │   ├── ICacheData.cs
│   │   ├── IExpr.cs
│   │   ├── Identifier.cs
│   │   ├── IdentifierKey.cs
│   │   └── VBFunctions.cs
│   ├── GlobalSuppressions.cs
│   ├── GraphicsExtended.cs
│   ├── Majorsilence.Reporting.RdlEngine.csproj
│   ├── PageDrawing.cs
│   ├── RDLBaseEBN.cs
│   ├── RdlEngine.sln
│   ├── RdlEngineConfig.xml
│   ├── RdlException.cs
│   ├── RdlPrint.cs
│   ├── Render/
│   │   ├── CompilationExtensions.cs
│   │   ├── DelimitedTextWriter.cs
│   │   ├── ExcelConverter/
│   │   │   ├── ExcelCell.cs
│   │   │   ├── ExcelCellStyle.cs
│   │   │   ├── ExcelCellsBuilder.cs
│   │   │   ├── ExcelColumn.cs
│   │   │   ├── ExcelImage.cs
│   │   │   ├── ExcelLine.cs
│   │   │   ├── ExcelRow.cs
│   │   │   └── ExcelTable.cs
│   │   ├── HtmlConverter/
│   │   │   ├── RenderHtmlTable.cs
│   │   │   └── TablePositioner.cs
│   │   ├── IPresent.cs
│   │   ├── IStreamGen.cs
│   │   ├── MemoryStreamGen.cs
│   │   ├── MhtConverter/
│   │   │   ├── MhtBuilder.cs
│   │   │   ├── MhtWebClientLocal.cs
│   │   │   └── MhtWebFile.cs
│   │   ├── OneFileStreamGen.cs
│   │   ├── PdfPageSize.cs
│   │   ├── ProcessReport.cs
│   │   ├── RenderBase.cs
│   │   ├── RenderCsv.cs
│   │   ├── RenderExcel2007.cs
│   │   ├── RenderExcel2007DataOnly.cs
│   │   ├── RenderHtml.cs
│   │   ├── RenderPdf_iTextSharp.cs
│   │   ├── RenderRtf.cs
│   │   ├── RenderTif.cs
│   │   ├── RenderXml.cs
│   │   └── StreamGen.cs
│   ├── Resources/
│   │   ├── Strings.Designer.cs
│   │   ├── Strings.resx
│   │   ├── Strings.ru-RU.Designer.cs
│   │   └── Strings.ru-RU.resx
│   ├── Runtime/
│   │   ├── DataSet.cs
│   │   ├── DataSets.cs
│   │   ├── DataSource.cs
│   │   ├── DataSources.cs
│   │   ├── ICustomReportItem.cs
│   │   ├── ImageQualityManager.cs
│   │   ├── Page.cs
│   │   ├── PageItems/
│   │   │   ├── PageCurve.cs
│   │   │   ├── PageEllipse.cs
│   │   │   ├── PageImage.cs
│   │   │   ├── PageItem.cs
│   │   │   ├── PageLine.cs
│   │   │   ├── PagePie.cs
│   │   │   ├── PagePolygon.cs
│   │   │   ├── PageRectangle.cs
│   │   │   └── PageText.cs
│   │   ├── PageTextHtml.cs
│   │   ├── PageTextHtmlCmdLexer.cs
│   │   ├── PageTextHtmlLexer.cs
│   │   ├── Pages.cs
│   │   ├── ParameterLexer.cs
│   │   ├── RdlEngineConfig.cs
│   │   ├── Report.cs
│   │   ├── StyleInfo.cs
│   │   ├── XmlUtil.cs
│   │   └── ZipWrap.cs
│   ├── Utility/
│   │   ├── HttpClientExtension.cs
│   │   ├── Measurement.cs
│   │   └── Paths.cs
│   ├── usa_map.xml
│   └── world_map.xml
├── RdlGtk3/
│   ├── CairoPdfWriter.cs
│   ├── Extensions/
│   │   └── CairoExtensions.cs
│   ├── GlobalSuppressions.cs
│   ├── MainWindow.cs
│   ├── Majorsilence.Reporting.RdlGtk3.csproj
│   ├── ParameterPrompt.cs
│   ├── RenderCairo.cs
│   ├── ReportArea.cs
│   ├── ReportExporter.cs
│   ├── ReportViewer.cs
│   └── app.desktop
├── RdlGtk3Viewer/
│   ├── Program.cs
│   ├── RdlGtk3Viewer.csproj
│   └── runtimeconfig.template.json
├── RdlMapFile/
│   ├── DPSimp.cs
│   ├── DesignXmlDraw.cs
│   ├── DesignXmlDraw.resx
│   ├── DialogAbout.Designer.cs
│   ├── DialogAbout.cs
│   ├── DialogAbout.resx
│   ├── DialogAbout.ru-RU.resx
│   ├── DialogFindByKey.Designer.cs
│   ├── DialogFindByKey.cs
│   ├── DialogFindByKey.resx
│   ├── DialogFindByKey.ru-RU.resx
│   ├── MapFile.Designer.cs
│   ├── MapFile.cs
│   ├── MapFile.resx
│   ├── MapFile.ru-RU.resx
│   ├── Properties/
│   │   ├── Resources.Designer.cs
│   │   ├── Resources.resx
│   │   ├── Settings.Designer.cs
│   │   └── Settings.settings
│   ├── RdlMapFile.cs
│   ├── RdlMapFile.csproj
│   ├── RdlMapFile.sln
│   ├── RdlProperties/
│   │   ├── Categories.Designer.cs
│   │   ├── Categories.resx
│   │   ├── Categories.ru-RU.resx
│   │   ├── Descriptions.Designer.cs
│   │   ├── Descriptions.resx
│   │   ├── Descriptions.ru-RU.resx
│   │   ├── DisplayNames.Designer.cs
│   │   ├── DisplayNames.resx
│   │   ├── DisplayNames.ru-RU.resx
│   │   ├── LocalizedCategoryAttribute.cs
│   │   ├── LocalizedDescriptionAttribute.cs
│   │   ├── LocalizedDisplayNameAttribute.cs
│   │   ├── PropertyBase.cs
│   │   ├── PropertyLine.cs
│   │   ├── PropertyPolygon.cs
│   │   └── PropertyText.cs
│   ├── Resources/
│   │   ├── Strings.Designer.cs
│   │   ├── Strings.resx
│   │   └── Strings.ru-RU.resx
│   ├── ShapeFile.cs
│   └── Undo.cs
├── RdlReader/
│   ├── DialogAbout.Designer.cs
│   ├── DialogAbout.cs
│   ├── DialogAbout.resx
│   ├── DialogAbout.ru-RU.resx
│   ├── MDIChild.Designer.cs
│   ├── MDIChild.cs
│   ├── MDIChild.resx
│   ├── Properties/
│   │   ├── Resources.Designer.cs
│   │   └── Resources.resx
│   ├── RdlReader.Designer.cs
│   ├── RdlReader.cs
│   ├── RdlReader.csproj
│   ├── RdlReader.fr.resx
│   ├── RdlReader.resx
│   ├── RdlReader.ru-RU.resx
│   ├── Resources/
│   │   ├── Strings.Designer.cs
│   │   ├── Strings.resx
│   │   └── Strings.ru-RU.resx
│   ├── ZoomTo.Designer.cs
│   ├── ZoomTo.cs
│   ├── ZoomTo.resx
│   ├── ZoomTo.ru-RU.resx
│   └── app.manifest
├── RdlTests/
│   ├── DataTests/
│   │   ├── AssemblyInfo.cs
│   │   ├── DataTests.cs
│   │   ├── DataTests.csproj
│   │   └── DataTests.resx
│   ├── RdlTests.sln
│   └── TestLibrary/
│       ├── Properties/
│       │   └── AssemblyInfo.cs
│       ├── TestClass.cs
│       └── TestLibrary.csproj
├── RdlViewer/
│   ├── DataSourcePassword.Designer.cs
│   ├── DataSourcePassword.cs
│   ├── DataSourcePassword.resx
│   ├── DataSourcePassword.ru-RU.resx
│   ├── DialogMessages.Designer.cs
│   ├── DialogMessages.cs
│   ├── DialogMessages.resx
│   ├── DialogMessages.ru-RU.resx
│   ├── PageDrawing.cs
│   ├── PageDrawing.resx
│   ├── RdlViewer.Designer.cs
│   ├── RdlViewer.cs
│   ├── RdlViewer.csproj
│   ├── RdlViewer.fr.resx
│   ├── RdlViewer.resx
│   ├── RdlViewer.ru-RU.resx
│   ├── RdlViewer.sln
│   ├── RdlViewerFind.cs
│   ├── RdlViewerFind.resx
│   ├── RdlViewerFind.ru-RU.resx
│   ├── Resources/
│   │   ├── Strings.Designer.cs
│   │   ├── Strings.resx
│   │   └── Strings.ru-RU.resx
│   └── ViewerToolstrip.cs
├── RdlViewer.Tests/
│   ├── ParameterSettingMethodsTest.cs
│   ├── RdlEngineConfig.xml
│   └── RdlViewer.Tests.csproj
├── Readme.md
├── References/
│   ├── Linux.txt
│   ├── dot net 4/
│   │   └── xwt-license.txt
│   └── postgresql-license.txt
├── Release-Builds/
│   └── setup-majorsilence-reporting.warsetup
├── ReportDesigner/
│   ├── Program.cs
│   └── ReportDesigner.csproj
├── ReportTests/
│   ├── DatabaseInfo.cs
│   ├── ExampleTest.cs
│   ├── ExcelValetTests.cs
│   ├── FunctionTest.cs
│   ├── MajorsilenceDarawingColorTranslatorTests.cs
│   ├── RenderPdf_Base64ImageParameter.cs
│   ├── RenderPdf_WithBarcodeParameter.cs
│   ├── RenderPdf_iTextSharpTests.cs
│   ├── ReportDefnDisposeTest.cs
│   ├── ReportTests.csproj
│   ├── Reports/
│   │   ├── BaseTestReport.rdl
│   │   ├── ChartTypes.rdl
│   │   ├── FunctionTest.rdl
│   │   ├── LineObjects.rdl
│   │   ├── ListReport.rdl
│   │   ├── MatrixExample.rdl
│   │   ├── WorldFacts.rdl
│   │   ├── WorldFacts.xml
│   │   └── testdata.rdl
│   ├── Utils/
│   │   ├── GeneralUtils.cs
│   │   ├── OpenXmlUtils.cs
│   │   ├── RandomDateTime.cs
│   │   └── RdlUtils.cs
│   └── iTextSharpTests.cs
├── ReportTests.Windows/
│   ├── DesignerUtilityTests.cs
│   ├── ReportTests.Windows.csproj
│   └── StringEncryptionTests.cs
├── Specification.md
├── Tests/
│   ├── TestParameterNameExtraction.cs
│   └── Tests.csproj
├── build-mac-wine-package.sh
├── build-release-rdlcmd-linux.ps1
├── build-release.ps1
└── jekyll_site/
    ├── .gitattributes
    ├── .gitignore
    ├── CNAME
    ├── _config.yml
    ├── _includes/
    │   ├── blogpost/
    │   │   ├── author.html
    │   │   ├── date.html
    │   │   ├── meta.html
    │   │   └── tags.html
    │   ├── blogpost.html
    │   ├── disqus.html
    │   ├── footer.html
    │   ├── opengraph.html
    │   ├── page_header.html
    │   ├── search.html
    │   └── toc.html
    ├── _layouts/
    │   ├── base.html
    │   ├── main.html
    │   └── post.html
    ├── _posts/
    │   └── 2025-12-28-quick-start.md
    ├── assets/
    │   ├── css/
    │   │   ├── bundle.css
    │   │   └── main.css
    │   └── js/
    │       ├── bundle.js
    │       └── main.js
    ├── index.html
    ├── posts/
    │   ├── index.html
    │   └── listings.html
    ├── robots.txt
    ├── schemas/
    │   └── reporting/
    │       └── 2025/
    │           └── 12/
    │               └── reportdefinition/
    │                   ├── ReportDefinition.xsd
    │                   └── index.html
    └── stylesheets/
        ├── menu.css
        ├── normalize.css
        └── vertical-responsive-menu.css
Download .txt
Showing preview only (712K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (7807 symbols across 793 files)

FILE: DataProviders/BaseDataParameter.cs
  class BaseDataParameter (line 11) | public class BaseDataParameter : IDbDataParameter
    method BaseDataParameter (line 16) | public BaseDataParameter()

FILE: DataProviders/DataParameterCollection.cs
  class DataParameterCollection (line 11) | public class DataParameterCollection : IDataParameterCollection
    method DataParameterCollection (line 15) | public DataParameterCollection()
    method RemoveAt (line 40) | public void RemoveAt(string parameterName)
    method Contains (line 45) | public bool Contains(string parameterName)
    method IndexOf (line 50) | public int IndexOf(string parameterName)
    method RemoveAt (line 86) | void System.Collections.IList.RemoveAt(int index)
    method Insert (line 91) | public void Insert(int index, object value)
    method Remove (line 96) | public void Remove(object value)
    method Contains (line 101) | bool System.Collections.IList.Contains(object value)
    method Clear (line 106) | public void Clear()
    method IndexOf (line 111) | int System.Collections.IList.IndexOf(object value)
    method Add (line 116) | public int Add(object value)
    method CopyTo (line 149) | public void CopyTo(Array array, int index)
    method GetEnumerator (line 166) | public System.Collections.IEnumerator GetEnumerator()

FILE: DataProviders/DictionaryDataReader.cs
  class DictionaryDataReader (line 8) | public class DictionaryDataReader : IDataReader
    method DictionaryDataReader (line 15) | public DictionaryDataReader(List<Dictionary<string, object>> data)
    method GetOrdinal (line 37) | public int GetOrdinal(string name)
    method Read (line 45) | public bool Read() => ++_currentRow < _data.Count;
    method GetName (line 47) | public string GetName(int i) => _fieldNames[i];
    method GetValue (line 49) | public object GetValue(int i)
    method GetValues (line 56) | public int GetValues(object[] values)
    method IsDBNull (line 67) | public bool IsDBNull(int i) => GetValue(i) == DBNull.Value;
    method GetFieldType (line 70) | public Type GetFieldType(int i) => GetValue(i)?.GetType() ?? typeof(ob...
    method Close (line 73) | public void Close() { }
    method Dispose (line 74) | public void Dispose() { }
    method NextResult (line 75) | public bool NextResult() => false;
    method GetSchemaTable (line 81) | public DataTable GetSchemaTable()
    method GetBoolean (line 112) | public bool GetBoolean(int i) => (bool)GetValue(i);
    method GetByte (line 113) | public byte GetByte(int i) => (byte)GetValue(i);
    method GetBytes (line 115) | public long GetBytes(int i, long fieldOffset, byte[] buffer, int buffe...
    method GetChar (line 132) | public char GetChar(int i) => (char)GetValue(i);
    method GetChars (line 134) | public long GetChars(int i, long fieldOffset, char[] buffer, int buffe...
    method GetData (line 163) | public IDataReader GetData(int i)
    method GetDataTypeName (line 194) | public string GetDataTypeName(int i) => GetFieldType(i).Name;
    method GetDateTime (line 195) | public DateTime GetDateTime(int i) => (DateTime)GetValue(i);
    method GetDecimal (line 196) | public decimal GetDecimal(int i) => (decimal)GetValue(i);
    method GetDouble (line 197) | public double GetDouble(int i) => (double)GetValue(i);
    method GetFloat (line 198) | public float GetFloat(int i) => (float)GetValue(i);
    method GetGuid (line 199) | public Guid GetGuid(int i) => (Guid)GetValue(i);
    method GetInt16 (line 200) | public short GetInt16(int i) => (short)GetValue(i);
    method GetInt32 (line 201) | public int GetInt32(int i) => (int)GetValue(i);
    method GetInt64 (line 202) | public long GetInt64(int i) => (long)GetValue(i);
    method GetString (line 203) | public string GetString(int i) => GetValue(i)?.ToString();

FILE: DataProviders/FileDirCommand.cs
  class FileDirCommand (line 12) | public class FileDirCommand : IDbCommand
    method FileDirCommand (line 23) | public FileDirCommand(FileDirConnection conn)
    method Cancel (line 108) | public void Cancel()
    method Prepare (line 113) | public void Prepare()
    method ExecuteReader (line 130) | public IDataReader ExecuteReader(System.Data.CommandBehavior behavior)
    method ExecuteReader (line 138) | IDataReader System.Data.IDbCommand.ExecuteReader()
    method ExecuteScalar (line 143) | public object ExecuteScalar()
    method ExecuteNonQuery (line 148) | public int ExecuteNonQuery()
    method CreateParameter (line 165) | public IDbDataParameter CreateParameter()
    method Dispose (line 263) | public void Dispose()

FILE: DataProviders/FileDirConnection.cs
  class FileDirConnection (line 11) | public class FileDirConnection : IDbConnection
    method FileDirConnection (line 16) | public FileDirConnection(string conn)
    method ChangeDatabase (line 34) | public void ChangeDatabase(string databaseName)
    method BeginTransaction (line 39) | public IDbTransaction BeginTransaction(System.Data.IsolationLevel il)
    method BeginTransaction (line 44) | IDbTransaction System.Data.IDbConnection.BeginTransaction()
    method CreateCommand (line 77) | public IDbCommand CreateCommand()
    method Open (line 82) | public void Open()
    method Close (line 87) | public void Close()
    method Dispose (line 112) | public void Dispose()

FILE: DataProviders/FileDirDataParameter.cs
  class FileDirDataParameter (line 11) | public class FileDirDataParameter : BaseDataParameter
    method FileDirDataParameter (line 13) | public FileDirDataParameter():base()

FILE: DataProviders/FileDirDataReader.cs
  class FileDirDataReader (line 14) | public class FileDirDataReader : IDataReader
    method FileDirDataReader (line 44) | static FileDirDataReader()
    method FileDirDataReader (line 77) | public FileDirDataReader(System.Data.CommandBehavior behavior, FileDir...
    method PopulateData (line 101) | long PopulateData(DirectoryInfo di, int parent)
    method NextResult (line 176) | public bool NextResult()
    method Close (line 181) | public void Close()
    method Read (line 188) | public bool Read()
    method GetSchemaTable (line 206) | public DataTable GetSchemaTable()
    method Dispose (line 215) | public void Dispose()
    method GetInt32 (line 224) | public int GetInt32(int i)
    method GetValue (line 246) | public object GetValue(int i)
    method IsDBNull (line 251) | public bool IsDBNull(int i)
    method GetBytes (line 256) | public long GetBytes(int i, long fieldOffset, byte[] buffer, int buffe...
    method GetByte (line 261) | public byte GetByte(int i)
    method GetFieldType (line 266) | public Type GetFieldType(int i)
    method GetDecimal (line 271) | public decimal GetDecimal(int i)
    method GetValues (line 276) | public int GetValues(object[] values)
    method GetName (line 287) | public string GetName(int i)
    method GetInt64 (line 300) | public long GetInt64(int i)
    method GetDouble (line 305) | public double GetDouble(int i)
    method GetBoolean (line 310) | public bool GetBoolean(int i)
    method GetGuid (line 315) | public Guid GetGuid(int i)
    method GetDateTime (line 320) | public DateTime GetDateTime(int i)
    method GetOrdinal (line 325) | public int GetOrdinal(string name)
    method GetDataTypeName (line 349) | public string GetDataTypeName(int i)
    method GetFloat (line 355) | public float GetFloat(int i)
    method GetData (line 360) | public IDataReader GetData(int i)
    method GetChars (line 365) | public long GetChars(int i, long fieldoffset, char[] buffer, int buffe...
    method GetString (line 370) | public string GetString(int i)
    method GetChar (line 375) | public char GetChar(int i)
    method GetInt16 (line 380) | public short GetInt16(int i)

FILE: DataProviders/FilteredDictionaryDataReader.cs
  class FilteredDictionaryDataReader (line 6) | public class FilteredDictionaryDataReader : IDataReader
    method FilteredDictionaryDataReader (line 12) | public FilteredDictionaryDataReader(DictionaryDataReader reader, strin...
    method GetName (line 27) | public string GetName(int i) => _columnNames[i];
    method GetOrdinal (line 28) | public int GetOrdinal(string name) => Array.IndexOf(_columnNames, name);
    method GetValue (line 31) | public object GetValue(int i) => _innerReader.GetValue(_columnMap[i]);
    method GetFieldType (line 32) | public Type GetFieldType(int i) => _innerReader.GetFieldType(_columnMa...
    method Read (line 39) | public bool Read() => _innerReader.Read();
    method Close (line 40) | public void Close() => _innerReader.Close();
    method Dispose (line 41) | public void Dispose() => _innerReader.Dispose();
    method NextResult (line 42) | public bool NextResult() => _innerReader.NextResult();
    method GetValues (line 47) | public int GetValues(object[] values)
    method IsDBNull (line 59) | public bool IsDBNull(int i) => _innerReader.IsDBNull(_columnMap[i]);
    method GetBoolean (line 60) | public bool GetBoolean(int i) => _innerReader.GetBoolean(_columnMap[i]);
    method GetByte (line 61) | public byte GetByte(int i) => _innerReader.GetByte(_columnMap[i]);
    method GetBytes (line 63) | public long GetBytes(int i, long fieldOffset, byte[] buffer, int buffe...
    method GetChar (line 66) | public char GetChar(int i) => _innerReader.GetChar(_columnMap[i]);
    method GetChars (line 68) | public long GetChars(int i, long fieldOffset, char[] buffer, int buffe...
    method GetData (line 71) | public IDataReader GetData(int i) => _innerReader.GetData(_columnMap[i]);
    method GetDataTypeName (line 72) | public string GetDataTypeName(int i) => _innerReader.GetDataTypeName(_...
    method GetDateTime (line 73) | public DateTime GetDateTime(int i) => _innerReader.GetDateTime(_column...
    method GetDecimal (line 74) | public decimal GetDecimal(int i) => _innerReader.GetDecimal(_columnMap...
    method GetDouble (line 75) | public double GetDouble(int i) => _innerReader.GetDouble(_columnMap[i]);
    method GetFloat (line 76) | public float GetFloat(int i) => _innerReader.GetFloat(_columnMap[i]);
    method GetGuid (line 77) | public Guid GetGuid(int i) => _innerReader.GetGuid(_columnMap[i]);
    method GetInt16 (line 78) | public short GetInt16(int i) => _innerReader.GetInt16(_columnMap[i]);
    method GetInt32 (line 79) | public int GetInt32(int i) => _innerReader.GetInt32(_columnMap[i]);
    method GetInt64 (line 80) | public long GetInt64(int i) => _innerReader.GetInt64(_columnMap[i]);
    method GetString (line 81) | public string GetString(int i) => _innerReader.GetString(_columnMap[i]);
    method GetSchemaTable (line 83) | public DataTable GetSchemaTable()

FILE: DataProviders/GedcomCommand.cs
  class GedcomCommand (line 12) | public class GedcomCommand : IDbCommand
    method GedcomCommand (line 20) | public GedcomCommand(GedcomConnection conn)
    method Cancel (line 45) | public void Cancel()
    method Prepare (line 50) | public void Prepare()
    method ExecuteReader (line 67) | public IDataReader ExecuteReader(System.Data.CommandBehavior behavior)
    method ExecuteReader (line 75) | IDataReader System.Data.IDbCommand.ExecuteReader()
    method ExecuteScalar (line 80) | public object ExecuteScalar()
    method ExecuteNonQuery (line 85) | public int ExecuteNonQuery()
    method CreateParameter (line 102) | public IDbDataParameter CreateParameter()
    method Dispose (line 191) | public void Dispose()

FILE: DataProviders/GedcomConnection.cs
  class GedcomConnection (line 11) | public class GedcomConnection : IDbConnection
    method GedcomConnection (line 15) | public GedcomConnection(string conn)
    method ChangeDatabase (line 27) | public void ChangeDatabase(string databaseName)
    method BeginTransaction (line 32) | public IDbTransaction BeginTransaction(System.Data.IsolationLevel il)
    method BeginTransaction (line 37) | IDbTransaction System.Data.IDbConnection.BeginTransaction()
    method CreateCommand (line 71) | public IDbCommand CreateCommand()
    method Open (line 76) | public void Open()
    method Close (line 81) | public void Close()
    method Dispose (line 106) | public void Dispose()

FILE: DataProviders/GedcomDataParameter.cs
  class GedcomDataParameter (line 11) | public class GedcomDataParameter : BaseDataParameter
    method GedcomDataParameter (line 13) | public GedcomDataParameter():base()

FILE: DataProviders/GedcomDataReader.cs
  class GedcomDataReader (line 14) | public class GedcomDataReader : IDataReader
    method GedcomDataReader (line 40) | public GedcomDataReader(System.Data.CommandBehavior behavior, GedcomCo...
    method NextResult (line 72) | public bool NextResult()
    method Close (line 77) | public void Close()
    method Read (line 87) | public bool Read()
    method GetDateTime (line 181) | object GetDateTime(string v)
    method GetSchemaTable (line 242) | public DataTable GetSchemaTable()
    method Dispose (line 251) | public void Dispose()
    method GetInt32 (line 260) | public int GetInt32(int i)
    method GetValue (line 282) | public object GetValue(int i)
    method IsDBNull (line 287) | public bool IsDBNull(int i)
    method GetBytes (line 292) | public long GetBytes(int i, long fieldOffset, byte[] buffer, int buffe...
    method GetByte (line 297) | public byte GetByte(int i)
    method GetFieldType (line 302) | public Type GetFieldType(int i)
    method GetDecimal (line 307) | public decimal GetDecimal(int i)
    method GetValues (line 312) | public int GetValues(object[] values)
    method GetName (line 323) | public string GetName(int i)
    method GetInt64 (line 336) | public long GetInt64(int i)
    method GetDouble (line 341) | public double GetDouble(int i)
    method GetBoolean (line 346) | public bool GetBoolean(int i)
    method GetGuid (line 351) | public Guid GetGuid(int i)
    method GetDateTime (line 356) | public DateTime GetDateTime(int i)
    method GetOrdinal (line 361) | public int GetOrdinal(string name)
    method GetDataTypeName (line 385) | public string GetDataTypeName(int i)
    method GetFloat (line 391) | public float GetFloat(int i)
    method GetData (line 396) | public IDataReader GetData(int i)
    method GetChars (line 401) | public long GetChars(int i, long fieldoffset, char[] buffer, int buffe...
    method GetString (line 406) | public string GetString(int i)
    method GetChar (line 411) | public char GetChar(int i)
    method GetInt16 (line 416) | public short GetInt16(int i)

FILE: DataProviders/HttpClientExtension.cs
  class HttpClientExtension (line 10) | internal static class HttpClientExtension
    method AddMajorsilenceReportingUserAgent (line 12) | public static void AddMajorsilenceReportingUserAgent(this HttpClient c...

FILE: DataProviders/JsonCommand.cs
  class JsonCommand (line 12) | public class JsonCommand : IDbCommand
    method JsonCommand (line 20) | public JsonCommand(JsonConnection conn)
    method Cancel (line 56) | public void Cancel()
    method Prepare (line 61) | public void Prepare()
    method ExecuteReader (line 77) | public IDataReader ExecuteReader(System.Data.CommandBehavior behavior)
    method ExecuteReader (line 85) | IDataReader System.Data.IDbCommand.ExecuteReader()
    method ExecuteScalar (line 90) | public object ExecuteScalar()
    method ExecuteNonQuery (line 95) | public int ExecuteNonQuery()
    method CreateParameter (line 112) | public IDbDataParameter CreateParameter()
    method Dispose (line 202) | public void Dispose()

FILE: DataProviders/JsonConnection.cs
  class JsonConnection (line 12) | public class JsonConnection : IDbConnection
    method JsonConnection (line 32) | public JsonConnection(string conn) : this(conn, new HttpClient())
    method JsonConnection (line 37) | public JsonConnection(string conn, HttpClient httpClient)
    method ChangeDatabase (line 61) | public void ChangeDatabase(string databaseName)
    method BeginTransaction (line 66) | public IDbTransaction BeginTransaction(System.Data.IsolationLevel il)
    method BeginTransaction (line 71) | IDbTransaction System.Data.IDbConnection.BeginTransaction()
    method CreateCommand (line 97) | public IDbCommand CreateCommand()
    method Open (line 102) | public void Open()
    method Close (line 107) | public void Close()
    method SetUrlFromConnection (line 130) | private void SetUrlFromConnection()
    method Dispose (line 171) | public void Dispose()

FILE: DataProviders/JsonDataReader.cs
  class JsonDataReader (line 13) | public class JsonDataReader : IDataReader
    method JsonDataReader (line 23) | public JsonDataReader(System.Data.CommandBehavior behavior, JsonConnec...
    method GetTable (line 62) | public IDataReader? GetTable(string name) =>
    method Read (line 71) | public bool Read() => _rootReader.Read();
    method GetName (line 73) | public string GetName(int i) => _rootReader.GetName(i);
    method GetOrdinal (line 74) | public int GetOrdinal(string name) => _rootReader.GetOrdinal(name);
    method GetValue (line 75) | public object GetValue(int i) => _rootReader.GetValue(i);
    method GetValues (line 77) | public int GetValues(object[] values)
    method IsDBNull (line 84) | public bool IsDBNull(int i) => _rootReader.IsDBNull(i);
    method GetFieldType (line 85) | public Type GetFieldType(int i) => _rootReader.GetFieldType(i);
    method Close (line 87) | public void Close() => _rootReader.Close();
    method Dispose (line 88) | public void Dispose() => _rootReader.Dispose();
    method NextResult (line 89) | public bool NextResult() => false;
    method GetSchemaTable (line 94) | public DataTable GetSchemaTable() => _rootReader.GetSchemaTable();
    method GetBoolean (line 95) | public bool GetBoolean(int i) => (bool)GetValue(i);
    method GetByte (line 96) | public byte GetByte(int i) => (byte)GetValue(i);
    method GetBytes (line 98) | public long GetBytes(int i, long fieldOffset, byte[] buffer, int buffe...
    method GetChar (line 101) | public char GetChar(int i) => (char)GetValue(i);
    method GetChars (line 103) | public long GetChars(int i, long fieldoffset, char[] buffer, int buffe...
    method GetData (line 106) | public IDataReader GetData(int i) => _rootReader.GetData(i);
    method GetDataTypeName (line 107) | public string GetDataTypeName(int i) => GetFieldType(i).Name;
    method GetDateTime (line 108) | public DateTime GetDateTime(int i) => (DateTime)GetValue(i);
    method GetDecimal (line 109) | public decimal GetDecimal(int i) => (decimal)GetValue(i);
    method GetDouble (line 110) | public double GetDouble(int i) => (double)GetValue(i);
    method GetFloat (line 111) | public float GetFloat(int i) => (float)GetValue(i);
    method GetGuid (line 112) | public Guid GetGuid(int i) => (Guid)GetValue(i);
    method GetInt16 (line 113) | public short GetInt16(int i) => (short)GetValue(i);
    method GetInt32 (line 114) | public int GetInt32(int i) => (int)GetValue(i);
    method GetInt64 (line 115) | public long GetInt64(int i) => (long)GetValue(i);
    method GetString (line 116) | public string GetString(int i) => GetValue(i)?.ToString();
    method GetStream (line 118) | async Task<StreamReader> GetStream()
    method ReadAllJsonAsync (line 156) | private async Task<string> ReadAllJsonAsync()

FILE: DataProviders/JsonTableExtractor.cs
  class JsonTableExtractor (line 9) | public class JsonTableExtractor
    method Extract (line 13) | public Dictionary<string, IDataReader> Extract(string json)
    method Flatten (line 51) | private void Flatten(JsonElement element, Dictionary<string, object> c...
    method GetPrimitiveValue (line 134) | private object? GetPrimitiveValue(JsonElement element)

FILE: DataProviders/LexCharReader.cs
  class LexCharReader (line 9) | internal class LexCharReader
    method LexCharReader (line 22) | internal LexCharReader(TextReader textReader)
    method GetNext (line 32) | internal char GetNext()
    method Peek (line 54) | internal char Peek()
    method UnGet (line 65) | internal void UnGet()
    method EndOfInput (line 83) | internal bool EndOfInput()

FILE: DataProviders/LexToken.cs
  class LexToken (line 9) | internal class LexToken
    method LexToken (line 17) | internal LexToken(string value, LexTokenTypes type)
    method ToString (line 26) | public override string ToString()

FILE: DataProviders/LexTokenList.cs
  class LexTokenList (line 11) | internal class LexTokenList : IEnumerable
    method LexTokenList (line 15) | internal LexTokenList()
    method Add (line 20) | internal void Add(LexToken token)
    method Push (line 25) | internal void Push(LexToken token)
    method Peek (line 30) | internal LexToken Peek()
    method Extract (line 35) | internal LexToken Extract()
    method GetEnumerator (line 50) | public IEnumerator GetEnumerator()

FILE: DataProviders/LexTokenTypes.cs
  type LexTokenTypes (line 9) | internal enum LexTokenTypes

FILE: DataProviders/Lexer.cs
  class Lexer (line 12) | internal class Lexer
    method Lexer (line 25) | internal Lexer(TextReader source)
    method Lex (line 38) | internal LexTokenList Lex()
    method GetNextToken (line 55) | private LexToken GetNextToken()
    method ReadQuoted (line 86) | private LexToken ReadQuoted(char ch)
    method ReadToChar (line 105) | private LexToken ReadToChar(char firstc, char ch)
    method ReadDateTime (line 123) | private LexToken ReadDateTime(char ch)

FILE: DataProviders/LogCommand.cs
  class LogCommand (line 12) | public class LogCommand : IDbCommand
    method LogCommand (line 22) | public LogCommand(LogConnection conn)
    method Cancel (line 79) | public void Cancel()
    method Prepare (line 84) | public void Prepare()
    method ExecuteReader (line 101) | public IDataReader ExecuteReader(System.Data.CommandBehavior behavior)
    method ExecuteReader (line 109) | IDataReader System.Data.IDbCommand.ExecuteReader()
    method ExecuteScalar (line 114) | public object ExecuteScalar()
    method ExecuteNonQuery (line 119) | public int ExecuteNonQuery()
    method CreateParameter (line 136) | public IDbDataParameter CreateParameter()
    method Dispose (line 235) | public void Dispose()

FILE: DataProviders/LogConnection.cs
  class LogConnection (line 11) | public class LogConnection : IDbConnection
    method LogConnection (line 15) | public LogConnection(string conn)
    method ChangeDatabase (line 27) | public void ChangeDatabase(string databaseName)
    method BeginTransaction (line 32) | public IDbTransaction BeginTransaction(System.Data.IsolationLevel il)
    method BeginTransaction (line 37) | IDbTransaction System.Data.IDbConnection.BeginTransaction()
    method CreateCommand (line 71) | public IDbCommand CreateCommand()
    method Open (line 76) | public void Open()
    method Close (line 81) | public void Close()
    method Dispose (line 106) | public void Dispose()

FILE: DataProviders/LogDataParameter.cs
  class LogDataParameter (line 11) | public class LogDataParameter : BaseDataParameter
    method LogDataParameter (line 13) | public LogDataParameter():base()

FILE: DataProviders/LogDataReader.cs
  class LogDataReader (line 14) | public class LogDataReader : IDataReader
    method LogDataReader (line 44) | public LogDataReader(System.Data.CommandBehavior behavior, LogConnecti...
    method NextResult (line 83) | public bool NextResult()
    method Close (line 88) | public void Close()
    method Read (line 99) | public bool Read()
    method CompressString (line 200) | string CompressString(string v)
    method GetDateTime (line 211) | object GetDateTime(string v)
    method GetSchemaTable (line 272) | public DataTable GetSchemaTable()
    method Dispose (line 281) | public void Dispose()
    method GetInt32 (line 290) | public int GetInt32(int i)
    method GetValue (line 312) | public object GetValue(int i)
    method IsDBNull (line 317) | public bool IsDBNull(int i)
    method GetBytes (line 322) | public long GetBytes(int i, long fieldOffset, byte[] buffer, int buffe...
    method GetByte (line 327) | public byte GetByte(int i)
    method GetFieldType (line 332) | public Type GetFieldType(int i)
    method GetDecimal (line 337) | public decimal GetDecimal(int i)
    method GetValues (line 342) | public int GetValues(object[] values)
    method GetName (line 353) | public string GetName(int i)
    method GetInt64 (line 366) | public long GetInt64(int i)
    method GetDouble (line 371) | public double GetDouble(int i)
    method GetBoolean (line 376) | public bool GetBoolean(int i)
    method GetGuid (line 381) | public Guid GetGuid(int i)
    method GetDateTime (line 386) | public DateTime GetDateTime(int i)
    method GetOrdinal (line 391) | public int GetOrdinal(string name)
    method GetDataTypeName (line 415) | public string GetDataTypeName(int i)
    method GetFloat (line 421) | public float GetFloat(int i)
    method GetData (line 426) | public IDataReader GetData(int i)
    method GetChars (line 431) | public long GetChars(int i, long fieldoffset, char[] buffer, int buffe...
    method GetString (line 436) | public string GetString(int i)
    method GetChar (line 441) | public char GetChar(int i)
    method GetInt16 (line 446) | public short GetInt16(int i)

FILE: DataProviders/MultipleStreamReader.cs
  class MultipleStreamReader (line 15) | public class MultipleStreamReader : TextReader
    method MultipleStreamReader (line 26) | public MultipleStreamReader(string pathlist)
    method GetFileList (line 34) | void GetFileList(string pathlist)
    method AddFileToQueue (line 76) | void AddFileToQueue(string f, bool asis)
    method GetStream (line 96) | async Task<StreamReader> GetStream()
    method Close (line 127) | public override void Close()
    method ReadLine (line 138) | public override string ReadLine()

FILE: DataProviders/TxtCommand.cs
  class TxtCommand (line 12) | public class TxtCommand : IDbCommand
    method TxtCommand (line 23) | public TxtCommand(TxtConnection conn)
    method Cancel (line 108) | public void Cancel()
    method Prepare (line 113) | public void Prepare()
    method ExecuteReader (line 130) | public IDataReader ExecuteReader(System.Data.CommandBehavior behavior)
    method ExecuteReader (line 138) | IDataReader System.Data.IDbCommand.ExecuteReader()
    method ExecuteScalar (line 143) | public object ExecuteScalar()
    method ExecuteNonQuery (line 148) | public int ExecuteNonQuery()
    method CreateParameter (line 165) | public IDbDataParameter CreateParameter()
    method Dispose (line 280) | public void Dispose()

FILE: DataProviders/TxtConnection.cs
  class TxtConnection (line 11) | public class TxtConnection : IDbConnection
    method TxtConnection (line 15) | public TxtConnection(string conn)
    method ChangeDatabase (line 27) | public void ChangeDatabase(string databaseName)
    method BeginTransaction (line 32) | public IDbTransaction BeginTransaction(System.Data.IsolationLevel il)
    method BeginTransaction (line 37) | IDbTransaction System.Data.IDbConnection.BeginTransaction()
    method CreateCommand (line 71) | public IDbCommand CreateCommand()
    method Open (line 76) | public void Open()
    method Close (line 81) | public void Close()
    method Dispose (line 106) | public void Dispose()

FILE: DataProviders/TxtDataParameter.cs
  class TxtDataParameter (line 11) | public class TxtDataParameter : BaseDataParameter
    method TxtDataParameter (line 13) | public TxtDataParameter():base()

FILE: DataProviders/TxtDataReader.cs
  class TxtDataReader (line 16) | public class TxtDataReader : IDataReader
    method TxtDataReader (line 29) | public TxtDataReader(System.Data.CommandBehavior behavior, TxtConnecti...
    method FillData (line 114) | void FillData(LexTokenList ll)
    method GetLine (line 144) | LexTokenList GetLine()
    method GetTypeOfString (line 162) | Type GetTypeOfString(string v)
    method GetStream (line 167) | async Task<StreamReader> GetStream()
    method NextResult (line 214) | public bool NextResult()
    method Close (line 219) | public void Close()
    method Read (line 231) | public bool Read()
    method GetDateTime (line 254) | object GetDateTime(string v)
    method GetSchemaTable (line 338) | public DataTable GetSchemaTable()
    method Dispose (line 348) | public void Dispose()
    method GetInt32 (line 357) | public int GetInt32(int i)
    method GetValue (line 379) | public object GetValue(int i)
    method IsDBNull (line 384) | public bool IsDBNull(int i)
    method GetBytes (line 389) | public long GetBytes(int i, long fieldOffset, byte[] buffer, int buffe...
    method GetByte (line 394) | public byte GetByte(int i)
    method GetFieldType (line 399) | public Type GetFieldType(int i)
    method GetDecimal (line 404) | public decimal GetDecimal(int i)
    method GetValues (line 409) | public int GetValues(object[] values)
    method GetName (line 420) | public string GetName(int i)
    method GetInt64 (line 433) | public long GetInt64(int i)
    method GetDouble (line 438) | public double GetDouble(int i)
    method GetBoolean (line 443) | public bool GetBoolean(int i)
    method GetGuid (line 448) | public Guid GetGuid(int i)
    method GetDateTime (line 453) | public DateTime GetDateTime(int i)
    method GetOrdinal (line 458) | public int GetOrdinal(string name)
    method GetDataTypeName (line 481) | public string GetDataTypeName(int i)
    method GetFloat (line 487) | public float GetFloat(int i)
    method GetData (line 492) | public IDataReader GetData(int i)
    method GetChars (line 497) | public long GetChars(int i, long fieldoffset, char[] buffer, int buffe...
    method GetString (line 502) | public string GetString(int i)
    method GetChar (line 507) | public char GetChar(int i)
    method GetInt16 (line 512) | public short GetInt16(int i)

FILE: DataProviders/WebServiceCommand.cs
  class WebServiceCommand (line 12) | public class WebServiceCommand : IDbCommand
    method WebServiceCommand (line 25) | public WebServiceCommand(WebServiceConnection conn)
    method Cancel (line 104) | public void Cancel()
    method Prepare (line 109) | public void Prepare()
    method ExecuteReader (line 126) | public IDataReader ExecuteReader(System.Data.CommandBehavior behavior)
    method ExecuteReader (line 134) | IDataReader System.Data.IDbCommand.ExecuteReader()
    method ExecuteScalar (line 139) | public object ExecuteScalar()
    method ExecuteNonQuery (line 144) | public int ExecuteNonQuery()
    method CreateParameter (line 161) | public IDbDataParameter CreateParameter()
    method Dispose (line 267) | public void Dispose()

FILE: DataProviders/WebServiceConnection.cs
  class WebServiceConnection (line 11) | public class WebServiceConnection : IDbConnection
    method WebServiceConnection (line 15) | public WebServiceConnection(string conn)
    method ChangeDatabase (line 27) | public void ChangeDatabase(string databaseName)
    method BeginTransaction (line 32) | public IDbTransaction BeginTransaction(System.Data.IsolationLevel il)
    method BeginTransaction (line 37) | IDbTransaction System.Data.IDbConnection.BeginTransaction()
    method CreateCommand (line 71) | public IDbCommand CreateCommand()
    method Open (line 76) | public void Open()
    method Close (line 81) | public void Close()
    method Dispose (line 106) | public void Dispose()

FILE: DataProviders/WebServiceDataParameter.cs
  class WebServiceDataParameter (line 11) | public class WebServiceDataParameter : BaseDataParameter
    method WebServiceDataParameter (line 13) | public WebServiceDataParameter():base()

FILE: DataProviders/WebServiceDataReader.cs
  class WebServiceDataReader (line 18) | public class WebServiceDataReader : IDataReader
    method WebServiceDataReader (line 45) | public WebServiceDataReader(System.Data.CommandBehavior behavior, WebS...
    method BuildData (line 64) | void BuildData(WebServiceWsdl wsw)
    method GetDataProperties (line 83) | void GetDataProperties(string name, Type t, object data, ref int ci, r...
    method BuildMetaData (line 151) | void BuildMetaData(WebServiceWsdl wsw)
    method GetProperties (line 161) | void GetProperties(string name, Type t)
    method IsBaseType (line 198) | bool IsBaseType(Type t)
    method NextResult (line 227) | public bool NextResult()
    method Close (line 232) | public void Close()
    method Read (line 241) | public bool Read()
    method GetSchemaTable (line 259) | public DataTable GetSchemaTable()
    method Dispose (line 269) | public void Dispose()
    method GetInt32 (line 278) | public int GetInt32(int i)
    method GetValue (line 300) | public object GetValue(int i)
    method IsDBNull (line 305) | public bool IsDBNull(int i)
    method GetBytes (line 310) | public long GetBytes(int i, long fieldOffset, byte[] buffer, int buffe...
    method GetByte (line 315) | public byte GetByte(int i)
    method GetFieldType (line 320) | public Type GetFieldType(int i)
    method GetDecimal (line 325) | public decimal GetDecimal(int i)
    method GetValues (line 330) | public int GetValues(object[] values)
    method GetName (line 341) | public string GetName(int i)
    method GetInt64 (line 354) | public long GetInt64(int i)
    method GetDouble (line 359) | public double GetDouble(int i)
    method GetBoolean (line 364) | public bool GetBoolean(int i)
    method GetGuid (line 369) | public Guid GetGuid(int i)
    method GetDateTime (line 374) | public DateTime GetDateTime(int i)
    method GetOrdinal (line 379) | public int GetOrdinal(string name)
    method GetDataTypeName (line 403) | public string GetDataTypeName(int i)
    method GetFloat (line 409) | public float GetFloat(int i)
    method GetData (line 414) | public IDataReader GetData(int i)
    method GetChars (line 419) | public long GetChars(int i, long fieldoffset, char[] buffer, int buffe...
    method GetString (line 424) | public string GetString(int i)
    method GetChar (line 429) | public char GetChar(int i)
    method GetInt16 (line 434) | public short GetInt16(int i)

FILE: DataProviders/WebServiceWsdl.cs
  class WebServiceWsdl (line 28) | public class WebServiceWsdl
    method GetWebServiceWsdl (line 36) | static internal WebServiceWsdl GetWebServiceWsdl(string url)
    method ClearCache (line 45) | static public void ClearCache()
    method GetMethodInfo (line 50) | public MethodInfo GetMethodInfo(string service, string operation)
    method Invoke (line 66) | public object Invoke(string service, string operation, DataParameterCo...
    method WebServiceWsdl (line 106) | private WebServiceWsdl(string url)
    method GetAssembly (line 113) | private Assembly GetAssembly()
    method GetServiceDescription (line 169) | public async Task<ServiceDescription> GetServiceDescription()
    method GetStream (line 188) | async Task<Stream> GetStream()

FILE: DataProviders/XmlCommand.cs
  class XmlCommand (line 12) | public class XmlCommand : IDbCommand
    method XmlCommand (line 23) | public XmlCommand(XmlConnection conn)
    method Cancel (line 77) | public void Cancel()
    method Prepare (line 82) | public void Prepare()
    method ExecuteReader (line 99) | public IDataReader ExecuteReader(System.Data.CommandBehavior behavior)
    method ExecuteReader (line 107) | IDataReader System.Data.IDbCommand.ExecuteReader()
    method ExecuteScalar (line 112) | public object ExecuteScalar()
    method ExecuteNonQuery (line 117) | public int ExecuteNonQuery()
    method CreateParameter (line 134) | public IDbDataParameter CreateParameter()
    method Dispose (line 246) | public void Dispose()

FILE: DataProviders/XmlConnection.cs
  class XmlConnection (line 11) | public class XmlConnection : IDbConnection
    method XmlConnection (line 15) | public XmlConnection(string conn)
    method ChangeDatabase (line 27) | public void ChangeDatabase(string databaseName)
    method BeginTransaction (line 32) | public IDbTransaction BeginTransaction(System.Data.IsolationLevel il)
    method BeginTransaction (line 37) | IDbTransaction System.Data.IDbConnection.BeginTransaction()
    method CreateCommand (line 71) | public IDbCommand CreateCommand()
    method Open (line 76) | public void Open()
    method Close (line 81) | public void Close()
    method Dispose (line 106) | public void Dispose()

FILE: DataProviders/XmlDataParameter.cs
  class XmlDataParameter (line 11) | public class XmlDataParameter : BaseDataParameter
    method XmlDataParameter (line 13) | public XmlDataParameter():base()

FILE: DataProviders/XmlDataReader.cs
  class XmlDataReader (line 15) | public class XmlDataReader : IDataReader
    method XmlDataReader (line 32) | public XmlDataReader(System.Data.CommandBehavior behavior, XmlConnecti...
    method ColumnsAttributes (line 87) | void ColumnsAttributes()
    method ColumnsElements (line 102) | void ColumnsElements()
    method ColumnsSpecifiedInit (line 123) | void ColumnsSpecifiedInit()
    method AddName (line 147) | void AddName(string name)
    method NextResult (line 176) | public bool NextResult()
    method Close (line 181) | public void Close()
    method Read (line 192) | public bool Read()
    method GetSchemaTable (line 226) | public DataTable GetSchemaTable()
    method Dispose (line 236) | public void Dispose()
    method GetInt32 (line 245) | public int GetInt32(int i)
    method GetValue (line 267) | public object GetValue(int i)
    method IsDBNull (line 272) | public bool IsDBNull(int i)
    method GetBytes (line 277) | public long GetBytes(int i, long fieldOffset, byte[] buffer, int buffe...
    method GetByte (line 282) | public byte GetByte(int i)
    method GetFieldType (line 287) | public Type GetFieldType(int i)
    method GetDecimal (line 292) | public decimal GetDecimal(int i)
    method GetValues (line 297) | public int GetValues(object[] values)
    method GetName (line 308) | public string GetName(int i)
    method GetInt64 (line 321) | public long GetInt64(int i)
    method GetDouble (line 326) | public double GetDouble(int i)
    method GetBoolean (line 331) | public bool GetBoolean(int i)
    method GetGuid (line 336) | public Guid GetGuid(int i)
    method GetDateTime (line 341) | public DateTime GetDateTime(int i)
    method GetOrdinal (line 346) | public int GetOrdinal(string name)
    method GetDataTypeName (line 370) | public string GetDataTypeName(int i)
    method GetFloat (line 376) | public float GetFloat(int i)
    method GetData (line 381) | public IDataReader GetData(int i)
    method GetChars (line 386) | public long GetChars(int i, long fieldoffset, char[] buffer, int buffe...
    method GetString (line 391) | public string GetString(int i)
    method GetChar (line 396) | public char GetChar(int i)
    method GetInt16 (line 401) | public short GetInt16(int i)

FILE: DataProviders/iTunesCommand.cs
  class iTunesCommand (line 12) | public class iTunesCommand : IDbCommand
    method iTunesCommand (line 20) | public iTunesCommand(iTunesConnection conn)
    method Cancel (line 45) | public void Cancel()
    method Prepare (line 50) | public void Prepare()
    method ExecuteReader (line 67) | public IDataReader ExecuteReader(System.Data.CommandBehavior behavior)
    method ExecuteReader (line 75) | IDataReader System.Data.IDbCommand.ExecuteReader()
    method ExecuteScalar (line 80) | public object ExecuteScalar()
    method ExecuteNonQuery (line 85) | public int ExecuteNonQuery()
    method CreateParameter (line 102) | public IDbDataParameter CreateParameter()
    method Dispose (line 190) | public void Dispose()

FILE: DataProviders/iTunesConnection.cs
  class iTunesConnection (line 12) | public class iTunesConnection : IDbConnection
    method iTunesConnection (line 17) | public iTunesConnection(string conn)
    method ChangeDatabase (line 29) | public void ChangeDatabase(string databaseName)
    method BeginTransaction (line 34) | public IDbTransaction BeginTransaction(System.Data.IsolationLevel il)
    method BeginTransaction (line 39) | IDbTransaction System.Data.IDbConnection.BeginTransaction()
    method CreateCommand (line 88) | public IDbCommand CreateCommand()
    method Open (line 93) | public void Open()
    method Close (line 98) | public void Close()
    method Dispose (line 123) | public void Dispose()

FILE: DataProviders/iTunesDataParameter.cs
  class iTunesDataParameter (line 11) | public class iTunesDataParameter : BaseDataParameter
    method iTunesDataParameter (line 13) | public iTunesDataParameter():base()

FILE: DataProviders/iTunesDataReader.cs
  class iTunesDataReader (line 15) | public class iTunesDataReader : IDataReader
    method iTunesDataReader (line 115) | public iTunesDataReader(System.Data.CommandBehavior behavior, iTunesCo...
    method GetTracksColumns (line 153) | XPathNodeIterator GetTracksColumns()
    method PositionToTracks (line 195) | XPathNodeIterator PositionToTracks()
    method NextResult (line 248) | public bool NextResult()
    method Close (line 253) | public void Close()
    method Read (line 263) | public bool Read()
    method GetSchemaTable (line 352) | public DataTable GetSchemaTable()
    method Dispose (line 362) | public void Dispose()
    method GetInt32 (line 371) | public int GetInt32(int i)
    method GetValue (line 393) | public object GetValue(int i)
    method IsDBNull (line 398) | public bool IsDBNull(int i)
    method GetBytes (line 403) | public long GetBytes(int i, long fieldOffset, byte[] buffer, int buffe...
    method GetByte (line 408) | public byte GetByte(int i)
    method GetFieldType (line 413) | public Type GetFieldType(int i)
    method GetDecimal (line 418) | public decimal GetDecimal(int i)
    method GetValues (line 423) | public int GetValues(object[] values)
    method GetName (line 434) | public string GetName(int i)
    method GetInt64 (line 447) | public long GetInt64(int i)
    method GetDouble (line 452) | public double GetDouble(int i)
    method GetBoolean (line 457) | public bool GetBoolean(int i)
    method GetGuid (line 462) | public Guid GetGuid(int i)
    method GetDateTime (line 467) | public DateTime GetDateTime(int i)
    method GetOrdinal (line 472) | public int GetOrdinal(string name)
    method GetDataTypeName (line 495) | public string GetDataTypeName(int i)
    method GetFloat (line 501) | public float GetFloat(int i)
    method GetData (line 506) | public IDataReader GetData(int i)
    method GetChars (line 511) | public long GetChars(int i, long fieldoffset, char[] buffer, int buffe...
    method GetString (line 516) | public string GetString(int i)
    method GetChar (line 521) | public char GetChar(int i)
    method GetInt16 (line 526) | public short GetInt16(int i)

FILE: EncryptionProvider/Prompt.cs
  class Prompt (line 11) | public static class Prompt
    method ShowDialog (line 13) | public static string ShowDialog(string text, string caption)

FILE: EncryptionProvider/Properties/Resources.Designer.cs
  class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: EncryptionProvider/String/StringEncryption.cs
  class StringEncryption (line 10) | public class StringEncryption
    method StringEncryption (line 17) | public StringEncryption(string pass)
    method Encrypt (line 50) | public string Encrypt(string unencrypted)
    method Decrypt (line 58) | public string Decrypt(string encrypted)
    method Encrypt (line 71) | private byte[] Encrypt(byte[] buffer, byte[] vector)
    method Decrypt (line 77) | private byte[] Decrypt(byte[] buffer, byte[] vector)
    method Transform (line 83) | private byte[] Transform(byte[] buffer, ICryptoTransform transform)

FILE: Examples/Sample-Report-Viewer/Sample-Report-Viewer/Form1.cs
  class Form1 (line 15) | public class Form1 : Form
    method Form1 (line 20) | public Form1()
    method InitializeViewer (line 25) | private void InitializeViewer()
    method InitializeComponent (line 38) | private void InitializeComponent()

FILE: Examples/Sample-Report-Viewer/Sample-Report-Viewer/Program.cs
  class Program (line 9) | static class Program
    method Main (line 14) | [STAThread]

FILE: Examples/Sample-Report-Viewer/Sample-Report-Viewer/Properties/Resources.Designer.cs
  class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Examples/Sample-Report-Viewer/Sample-Report-Viewer/Properties/Settings.Designer.cs
  class Settings (line 14) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

FILE: Examples/SampleApp2-SetData/SampleApp2-SetData/Form1.Designer.cs
  class Form1 (line 3) | partial class Form1
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: Examples/SampleApp2-SetData/SampleApp2-SetData/Form1.cs
  class Form1 (line 14) | public partial class Form1 : Form
    method Form1 (line 19) | public Form1()
    method Form1_Load (line 37) | private async void Form1_Load(object sender, EventArgs e)
    method ExampleViaSourceRdlNoLoad (line 58) | private async Task ExampleViaSourceRdlNoLoad(string filepath, DataTabl...
    method ExampleViaSetSourceFile (line 67) | private async Task ExampleViaSetSourceFile(string filepath, DataTable dt)
    method GetTable (line 76) | private async Task<DataTable> GetTable(SqliteCommand cmd)

FILE: Examples/SampleApp2-SetData/SampleApp2-SetData/Program.cs
  class Program (line 9) | static class Program
    method Main (line 14) | [STAThread]

FILE: Examples/SampleApp2-SetData/SampleApp2-SetData/Properties/Resources.Designer.cs
  class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Examples/SampleApp2-SetData/SampleApp2-SetData/Properties/Settings.Designer.cs
  class Settings (line 14) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

FILE: Examples/SampleAppHyperLinkCustomAction/HyperLinkExample/Form1.Designer.cs
  class Form1 (line 3) | partial class Form1
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: Examples/SampleAppHyperLinkCustomAction/HyperLinkExample/Form1.cs
  class Form1 (line 14) | public partial class Form1 : Form
    method Form1 (line 19) | public Form1()
    method ButtonReloadReport_Click (line 24) | private async void ButtonReloadReport_Click(object sender, EventArgs e)
    method LoadReport (line 29) | private async Task LoadReport()
    method rdlViewer1_Hyperlink (line 35) | private void rdlViewer1_Hyperlink(object source, Majorsilence.Reportin...

FILE: Examples/SampleAppHyperLinkCustomAction/HyperLinkExample/Program.cs
  class Program (line 9) | static class Program
    method Main (line 14) | [STAThread]

FILE: Examples/SampleAppHyperLinkCustomAction/HyperLinkExample/Properties/Resources.Designer.cs
  class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Examples/SampleAppHyperLinkCustomAction/HyperLinkExample/Properties/Settings.Designer.cs
  class Settings (line 14) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

FILE: Examples/SampleDesignerControl/SampleDesignerControl/Program.cs
  class Program (line 9) | static class Program
    method Main (line 14) | [STAThread]

FILE: Examples/SampleDesignerControl/SampleDesignerControl/Properties/Resources.Designer.cs
  class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Examples/SampleDesignerControl/SampleDesignerControl/Properties/Settings.Designer.cs
  class Settings (line 14) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

FILE: Examples/SampleDesignerControl/SampleDesignerControlWPF/App.xaml.cs
  class App (line 14) | public partial class App : Application

FILE: Examples/SampleDesignerControl/SampleDesignerControlWPF/MainWindow.xaml.cs
  class MainWindow (line 21) | public partial class MainWindow : Window
    method MainWindow (line 23) | public MainWindow()
    method Window_Loaded_1 (line 28) | private void Window_Loaded_1(object sender, RoutedEventArgs e)

FILE: Examples/SampleDesignerControl/SampleDesignerControlWPF/Properties/Resources.Designer.cs
  class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Examples/SampleDesignerControl/SampleDesignerControlWPF/Properties/Settings.Designer.cs
  class Settings (line 14) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

FILE: LanguageWrappers/php/report.php
  class Report (line 4) | class Report {
    method __construct (line 13) | public function __construct($report_path, $rdl_cmd_path, $dotnet_path ...
    method set_parameter (line 26) | public function set_parameter($name, $value){
    method set_connection_string (line 31) | public function set_connection_string($connection_string){
    method export (line 40) | public function export($type, $export_path){
    method export_to_memory (line 111) | public function export_to_memory($type){
    method endsWith (line 136) | private function endsWith($haystack, $needle)

FILE: LanguageWrappers/php/viewer.php
  class Viewer (line 6) | class Viewer {
    method __construct (line 13) | public function __construct($rpt){
    method show (line 21) | public function show(){

FILE: LanguageWrappers/python/report.py
  class Report (line 8) | class Report :
    method __init__ (line 53) | def __init__(self, report_path: str, rdl_cmd_path: str, path_to_dotnet...
    method set_parameter (line 58) | def set_parameter(self, name, value):
    method set_connection_string (line 67) | def set_connection_string(self, connection_string: str):
    method export (line 76) | def export(self, type : str, export_path : str):
    method export_to_memory (line 133) | def export_to_memory(self, type : str) -> bytes | str :

FILE: LanguageWrappers/ruby/report.rb
  class Report (line 3) | class Report
    method initialize (line 5) | def initialize(report_path, rdl_cmd_path, path_to_dotnet = nil)
    method set_parameter (line 12) | def set_parameter(name, value)
    method set_connection_string (line 21) | def set_connection_string(connection_string)
    method export (line 28) | def export(type, export_path)
    method export_to_memory (line 96) | def export_to_memory(type)

FILE: LibRdlWpfViewer/Properties/Resources.Designer.cs
  class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: LibRdlWpfViewer/Properties/Settings.Designer.cs
  class Settings (line 14) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

FILE: LibRdlWpfViewer/RdlWpfViewer.xaml.cs
  class RdlWpfViewer (line 21) | public partial class RdlWpfViewer : UserControl
    method RdlWpfViewer (line 23) | public RdlWpfViewer()
    method Rebuild (line 28) | public async Task Rebuild()
    method SaveAs (line 33) | public async Task SaveAs(string FileName, Majorsilence.Reporting.Rdl.O...
    method SetSourceFile (line 46) | public async Task SetSourceFile(Uri value)
    method SetSourceRdl (line 59) | public async Task SetSourceRdl(string value)
    method Report (line 76) | public async Task<Majorsilence.Reporting.Rdl.Report> Report()

FILE: Majorsilence.Drawing.Common/Bitmap.cs
  class Bitmap (line 8) | public class Bitmap : Image, IDisposable
    method Bitmap (line 12) | public Bitmap(int width, int height) : base(width, height)
    method Bitmap (line 17) | public Bitmap(string filename) : base(filename)
    method Bitmap (line 21) | public Bitmap(MemoryStream ms) : base(ms)
    method Bitmap (line 26) | public Bitmap(SKBitmap skBitmap) : base(skBitmap)
    method Save (line 32) | public void Save(string filename, ImageFormat format, EncoderParameter...
    method Save (line 38) | public new void Save(Stream stream, ImageFormat format)
    method GetGraphics (line 44) | public Graphics GetGraphics()
    method Dispose (line 50) | public new void Dispose()
    method FromFile (line 57) | public static new Bitmap FromFile(string filename)

FILE: Majorsilence.Drawing.Common/Brush.cs
  class Brush (line 7) | public class Brush : IDisposable
    method Brush (line 11) | public Brush(Color color)
    method Dispose (line 20) | public void Dispose()
    method ToSkPaint (line 26) | internal SKPaint ToSkPaint()

FILE: Majorsilence.Drawing.Common/Brushes.cs
  class Brushes (line 9) | public static class Brushes

FILE: Majorsilence.Drawing.Common/CharacterRange.cs
  class CharacterRange (line 9) | public class CharacterRange
    method CharacterRange (line 13) | public CharacterRange(int first, int length)

FILE: Majorsilence.Drawing.Common/Color.cs
  class Color (line 9) | public class Color
    method GetColorName (line 117) | private static string GetColorName(SKColor color)
    method Color (line 145) | public Color(int r, int g, int b, int a = 255)
    method Color (line 154) | public Color(byte r, byte g, byte b, byte a = 255)
    method FromRgb (line 163) | public static Color FromRgb(int a, int r, int g, int b)
    method FromArgb (line 168) | public static Color FromArgb(int a, int r, int g, int b)
    method FromName (line 173) | public static Color FromName(string name)
    method ToSkColor (line 261) | public SKColor ToSkColor()

FILE: Majorsilence.Drawing.Common/ColorTranslator.cs
  class ColorTranslator (line 9) | public class ColorTranslator
    method ColorTranslator (line 11) | public ColorTranslator() { }
    method FromHtml (line 13) | public static Color FromHtml(string html)

FILE: Majorsilence.Drawing.Common/Drawing2D/CompositingQuality.cs
  type CompositingQuality (line 3) | public enum CompositingQuality

FILE: Majorsilence.Drawing.Common/Drawing2D/DashStyle.cs
  type DashStyle (line 9) | public enum DashStyle

FILE: Majorsilence.Drawing.Common/Drawing2D/GraphicsPath.cs
  class GraphicsPath (line 6) | public class GraphicsPath
    method GraphicsPath (line 10) | public GraphicsPath()
    method AddLine (line 15) | public void AddLine(float x1, float y1, float x2, float y2)
    method AddRectangle (line 21) | public void AddRectangle(float x, float y, float width, float height)
    method ToSKPath (line 26) | public SKPath ToSKPath() => _path;

FILE: Majorsilence.Drawing.Common/Drawing2D/GraphicsState.cs
  class GraphicsState (line 6) | public class GraphicsState
    method GraphicsState (line 10) | internal GraphicsState(SKCanvas canvas)

FILE: Majorsilence.Drawing.Common/Drawing2D/HatchBrush.cs
  class HatchBrush (line 10) | public sealed class HatchBrush : Brush
    method HatchBrush (line 16) | public HatchBrush(HatchStyle hatchStyle, Color foreColor, Color backCo...
    method ToSkPaint (line 24) | internal new SKPaint ToSkPaint()
    method CreateTwoColorHatchShader (line 32) | private SKShader CreateTwoColorHatchShader(HatchStyle hatchStyle, SKCo...

FILE: Majorsilence.Drawing.Common/Drawing2D/HatchStyle.cs
  type HatchStyle (line 9) | public enum HatchStyle

FILE: Majorsilence.Drawing.Common/Drawing2D/InterpolationMode.cs
  type InterpolationMode (line 3) | public enum InterpolationMode

FILE: Majorsilence.Drawing.Common/Drawing2D/LineCap.cs
  type LineCap (line 3) | public enum LineCap

FILE: Majorsilence.Drawing.Common/Drawing2D/LineJoin.cs
  type LineJoin (line 3) | public enum LineJoin

FILE: Majorsilence.Drawing.Common/Drawing2D/LinearGradientBrush.cs
  class LinearGradientBrush (line 10) | public sealed class LinearGradientBrush : Brush
    method LinearGradientBrush (line 12) | public LinearGradientBrush(Color color) : base(color)
    method LinearGradientBrush (line 16) | public LinearGradientBrush(Color color1, Color color2, float angle) : ...
    method LinearGradientBrush (line 21) | public LinearGradientBrush(Rectangle rect, Color color1, Color color2,...

FILE: Majorsilence.Drawing.Common/Drawing2D/LinearGradientMode.cs
  type LinearGradientMode (line 3) | public enum LinearGradientMode

FILE: Majorsilence.Drawing.Common/Drawing2D/Matrix.cs
  class Matrix (line 6) | public class Matrix
    method Matrix (line 10) | public Matrix()
    method Translate (line 15) | public void Translate(float dx, float dy)
    method Scale (line 20) | public void Scale(float scaleX, float scaleY)
    method Rotate (line 25) | public void Rotate(float angle)
    method ToSKMatrix (line 30) | public SKMatrix ToSKMatrix() => _matrix;

FILE: Majorsilence.Drawing.Common/Drawing2D/PixelOffsetMode.cs
  type PixelOffsetMode (line 3) | public enum PixelOffsetMode

FILE: Majorsilence.Drawing.Common/Drawing2D/SmoothingMode.cs
  type SmoothingMode (line 3) | public enum SmoothingMode

FILE: Majorsilence.Drawing.Common/Font.cs
  class Font (line 7) | public class Font : IDisposable
    method Font (line 18) | public Font(string fontFamily, float size)
    method Font (line 24) | public Font(string fontFamily, float size, FontStyle style)
    method Font (line 57) | public Font(Drawing.FontFamily fontFamily, float size, FontStyle style)
    method GetHeight (line 62) | public double GetHeight(Graphics g)
    method ToSkFont (line 78) | public SKFont ToSkFont()
    method Dispose (line 84) | public void Dispose()
    method ToString (line 91) | public override string ToString()

FILE: Majorsilence.Drawing.Common/FontFamily.cs
  class FontFamily (line 3) | public class FontFamily
    method FontFamily (line 9) | public FontFamily(string name)
    method GetCellDescent (line 14) | public float GetCellDescent(FontStyle fs)
    method GetEmHeight (line 32) | public float GetEmHeight(FontStyle fs)
    method ToString (line 50) | public override string ToString()

FILE: Majorsilence.Drawing.Common/FontStyle.cs
  type FontStyle (line 10) | [Flags]

FILE: Majorsilence.Drawing.Common/Graphics.cs
  class Graphics (line 9) | public class Graphics : IDisposable
    method Graphics (line 23) | public Graphics(SKCanvas canvas)
    method DrawRectangle (line 31) | public void DrawRectangle(Pen pen, Rectangle rectangle)
    method FillRectangle (line 36) | public void FillRectangle(Brush brush, Rectangle rectangle)
    method FillRectangle (line 41) | public void FillRectangle(Brush brush, int x, int y, int width, int he...
    method FillRectangle (line 46) | public void FillRectangle(Brush brush, float x, float y, float width, ...
    method DrawImage (line 51) | public void DrawImage(Image image, Rectangle rect)
    method DrawImage (line 61) | public void DrawImage(Bitmap bitmap, Rectangle rect)
    method FillEllipse (line 66) | public void FillEllipse(Brush brush, int x, int y, int width, int height)
    method FillEllipse (line 70) | public void FillEllipse(Brush brush, Point point)
    method FillEllipse (line 75) | public void FillEllipse(Brush brush, Rectangle r)
    method FillPolygon (line 80) | public void FillPolygon(Brush b, PointF[] points)
    method DrawEllipse (line 95) | public void DrawEllipse(Pen pen, Point p)
    method DrawEllipse (line 100) | public void DrawEllipse(Pen pen, Rectangle r)
    method DrawPolygon (line 105) | public void DrawPolygon(Pen pen, PointF[] points)
    method DrawRectangle (line 119) | public void DrawRectangle(Pen pen, int x, int y, int width, int height)
    method DrawCurve (line 124) | public void DrawCurve(Pen pen, Point[] points, float tension)
    method FillPie (line 151) | public void FillPie(Brush brush, Rectangle r, float startAngle, float ...
    method DrawPie (line 162) | public void DrawPie(Pen p, Rectangle r, float startAngle, float endAngle)
    method DrawLines (line 173) | public void DrawLines(Pen p, Point[] points)
    method DrawLine (line 184) | public void DrawLine(Pen pen, Point pt1, Point pt2)
    method DrawString (line 190) | public void DrawString(string s, Font font, Brush brush, PointF point)
    method DrawString (line 196) | public void DrawString(string s, Font font, Brush brush, Rectangle lay...
    method DrawString (line 255) | public void DrawString(string s, Font font, Brush brush, RectangleF la...
    method Dispose (line 263) | public void Dispose()
    method Save (line 268) | public Drawing2D.GraphicsState Save()
    method MeasureString (line 275) | public SizeF MeasureString(string text, Font font)
    method MeasureString (line 280) | public SizeF MeasureString(string text, Font font, SizeF layoutArea, S...
    method MeasureString (line 285) | public SizeF MeasureString(string text, Font font, int maxWidth, Strin...
    method MeasureCharacterRanges (line 357) | public Region[] MeasureCharacterRanges(string text, Font font, Rectang...
    method ResetTransform (line 382) | public void ResetTransform()
    method AddMetafileComment (line 387) | public void AddMetafileComment(byte[] data)
    method Restore (line 393) | public void Restore(Drawing2D.GraphicsState state)
    method FromImage (line 398) | public static Graphics FromImage(Bitmap bm)

FILE: Majorsilence.Drawing.Common/GraphicsUnit.cs
  type GraphicsUnit (line 3) | public enum GraphicsUnit

FILE: Majorsilence.Drawing.Common/Image.cs
  class Image (line 9) | public class Image : IDisposable
    method Image (line 21) | public Image(SKBitmap bitmap)
    method Image (line 26) | public Image(int width, int height)
    method Image (line 32) | public Image(string filename)
    method Image (line 40) | public Image(MemoryStream ms)
    method FromFile (line 46) | public static Image FromFile(string path)
    method Save (line 56) | public void Save(string path, ImageFormat format)
    method Save (line 66) | public void Save(Stream stream, ImageFormat format)
    method Save (line 74) | public void Save(Stream stream, ImageFormat format, int quality)
    method Save (line 82) | public void Save(Stream stream, ImageCodecInfo codec, EncoderParameter...
    method GetSkFormat (line 90) | private SKEncodedImageFormat GetSkFormat(ImageFormat format)
    method FromStream (line 115) | public static Image FromStream(Stream stream)
    method Dispose (line 136) | public void Dispose()

FILE: Majorsilence.Drawing.Common/Imaging/Encoder.cs
  class Encoder (line 4) | public class Encoder
    method Encoder (line 11) | private Encoder(string parameterName)

FILE: Majorsilence.Drawing.Common/Imaging/EncoderParameter.cs
  class EncoderParameter (line 4) | public class EncoderParameter
    method EncoderParameter (line 9) | public EncoderParameter(Encoder encoder, object value)

FILE: Majorsilence.Drawing.Common/Imaging/EncoderParameters.cs
  class EncoderParameters (line 4) | public class EncoderParameters
    method EncoderParameters (line 9) | public EncoderParameters(int count)
    method Add (line 15) | public void Add(EncoderParameter parameter)
    method GetParameters (line 21) | public List<EncoderParameter> GetParameters() => _parameters;

FILE: Majorsilence.Drawing.Common/Imaging/ImageCodecInfo.cs
  class ImageCodecInfo (line 4) | public class ImageCodecInfo
    method GetImageEncoders (line 30) | public static ImageCodecInfo[] GetImageEncoders()

FILE: Majorsilence.Drawing.Common/Imaging/ImageFormat.cs
  type ImageFormat (line 4) | public enum ImageFormat

FILE: Majorsilence.Drawing.Common/Imaging/ImageFormatExtensions.cs
  class ImageFormatExtensions (line 7) | public static class ImageFormatExtensions
    method ToSkImageEncodeFormat (line 9) | public static SKEncodedImageFormat ToSkImageEncodeFormat(this ImageFor...

FILE: Majorsilence.Drawing.Common/Pen.cs
  class Pen (line 11) | public class Pen : IDisposable
    method Pen (line 15) | public Pen(Color color)
    method Pen (line 25) | public Pen(Brush brush)
    method Pen (line 35) | public Pen(Color color, float width)
    method Pen (line 45) | public Pen(Brush brush, float width)
    method Dispose (line 59) | public void Dispose()
    method ToSkPaint (line 65) | public SKPaint ToSkPaint()

FILE: Majorsilence.Drawing.Common/Pens.cs
  class Pens (line 3) | public static class Pens

FILE: Majorsilence.Drawing.Common/Point.cs
  type Point (line 5) | public struct Point : IEquatable<Point>
    method Point (line 11) | public Point(int x, int y)
    method ToString (line 17) | public override string ToString()
    method Equals (line 36) | public override bool Equals(object? obj)
    method Equals (line 56) | public bool Equals(Point other)
    method GetHashCode (line 62) | public override int GetHashCode()

FILE: Majorsilence.Drawing.Common/PointF.cs
  class PointF (line 4) | public class PointF
    method PointF (line 8) | public PointF() { }
    method PointF (line 9) | public PointF(float x, float y)
    method ToString (line 14) | public override string ToString()

FILE: Majorsilence.Drawing.Common/Rectangle.cs
  type Rectangle (line 4) | public struct Rectangle
    method Rectangle (line 15) | public Rectangle(int x, int y, int width, int height)
    method Rectangle (line 23) | public Rectangle(Point p, Size s)
    method IntersectsWith (line 31) | public bool IntersectsWith(Rectangle other)
    method Equals (line 39) | public override bool Equals(object? obj)
    method GetHashCode (line 49) | public override int GetHashCode()

FILE: Majorsilence.Drawing.Common/RectangleF.cs
  type RectangleF (line 4) | public struct RectangleF
    method RectangleF (line 11) | public RectangleF(float x, float y, float width, float height)
    method Contains (line 26) | public bool Contains(float x, float y)
    method IntersectsWith (line 31) | public bool IntersectsWith(RectangleF rect)
    method Intersect (line 36) | public static RectangleF Intersect(RectangleF a, RectangleF b)
    method Union (line 48) | public static RectangleF Union(RectangleF a, RectangleF b)
    method ToString (line 61) | public override string ToString()

FILE: Majorsilence.Drawing.Common/Region.cs
  class Region (line 9) | public class Region : IDisposable
    method Region (line 16) | public Region(int x, int y, int width, int height)
    method Area (line 24) | public int Area()
    method Contains (line 29) | public bool Contains(int x, int y)
    method GetBounds (line 34) | public RectangleF GetBounds(Graphics g)
    method ToString (line 44) | public override string ToString()
    method Dispose (line 49) | public void Dispose()

FILE: Majorsilence.Drawing.Common/Size.cs
  type Size (line 4) | public struct Size
    method Size (line 8) | public Size(int width, int height)
    method ToString (line 16) | public override string ToString()

FILE: Majorsilence.Drawing.Common/SizeF.cs
  type SizeF (line 4) | public struct SizeF
    method SizeF (line 8) | public SizeF(float width, float height)
    method ToString (line 16) | public override string ToString()

FILE: Majorsilence.Drawing.Common/SkiaImageExtensions.cs
  class SkiaImageExtensions (line 8) | public static class SkiaImageExtensions
    method ToSkImageEncodeOptions (line 11) | public static SKEncodedImageFormat ToSkImageEncodeOptions(this Encoder...

FILE: Majorsilence.Drawing.Common/SolidBrush.cs
  class SolidBrush (line 9) | public sealed class SolidBrush : Brush
    method SolidBrush (line 11) | public SolidBrush(Color color) : base(color)

FILE: Majorsilence.Drawing.Common/StringAlignment.cs
  type StringAlignment (line 3) | public enum StringAlignment

FILE: Majorsilence.Drawing.Common/StringFormat.cs
  class StringFormat (line 4) | public class StringFormat : IDisposable
    method StringFormat (line 19) | public StringFormat()
    method SetMeasurableCharacterRanges (line 27) | public void SetMeasurableCharacterRanges(CharacterRange[] ranges)
    method Clone (line 36) | public object Clone()
    method Dispose (line 41) | public void Dispose()

FILE: Majorsilence.Drawing.Common/StringFormatFlags.cs
  type StringFormatFlags (line 3) | [Flags]

FILE: Majorsilence.Drawing.Common/StringTrimming.cs
  type StringTrimming (line 3) | public enum StringTrimming

FILE: Majorsilence.Drawing.Common/Text.cs
  class Text (line 6) | public class Text
    type TextRenderingHint (line 14) | public enum TextRenderingHint
    method Text (line 22) | public Text(string content, Color color, float size, string fontFamily...
    method ToSkFont (line 32) | public SKFont ToSkFont()

FILE: Majorsilence.Reporting.Benchmarks/DrawingCompatJob.cs
  class DrawingCompatJob (line 12) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly, Allo...
    method DrawingCompatJob (line 17) | public DrawingCompatJob(
    method CreateJob (line 31) | private static Job CreateJob(string? id, int launchCount, int warmupCo...

FILE: Majorsilence.Reporting.Benchmarks/JsonDataProviderBenchmark.cs
  class JsonDataProviderBenchmark (line 14) | [AsciiDocExporter]
    method NestedJson (line 25) | [Benchmark]

FILE: Majorsilence.Reporting.UI.RdlAvalonia/Viewer/AvaloniaReportViewer.axaml.cs
  class AvaloniaReportViewer (line 14) | public partial class AvaloniaReportViewer : UserControl
    method AvaloniaReportViewer (line 26) | public AvaloniaReportViewer()
    method SetSourceFileAsync (line 41) | public async Task SetSourceFileAsync(Uri fileUri)
    method SetSourceRdlAsync (line 49) | public async Task SetSourceRdlAsync(string rdl)
    method SetReportParametersAmpersandSeparated (line 56) | public void SetReportParametersAmpersandSeparated(string parameterString)
    method RebuildAsync (line 77) | public async Task RebuildAsync()
    method InitializeUi (line 98) | private void InitializeUi()
    method OnScrollViewerPointerWheelChanged (line 124) | private void OnScrollViewerPointerWheelChanged(object? sender, Pointer...
    method OpenButtonOnClick (line 135) | private async void OpenButtonOnClick(object? sender, RoutedEventArgs e)
    method SaveButtonOnClick (line 160) | private async void SaveButtonOnClick(object? sender, RoutedEventArgs e)
    method PrintButtonOnClick (line 224) | private async void PrintButtonOnClick(object? sender, RoutedEventArgs e)
    method SaveAsAsync (line 254) | private async Task SaveAsAsync(string filePath, OutputPresentationType...
    method GetReportAsync (line 298) | private async Task<Report?> GetReportAsync()
    method BuildPagesAsync (line 330) | private async Task<Pages?> BuildPagesAsync(Report report)
    method UpdatePageUi (line 350) | private void UpdatePageUi()
    method UpdateErrorsUi (line 364) | private void UpdateErrorsUi()
    method SetPage (line 379) | private void SetPage(int page)
    method SetZoom (line 396) | private void SetZoom(double zoom)
    method ApplyZoomMode (line 404) | private void ApplyZoomMode()
    method ZoomModeComboBoxOnSelectionChanged (line 441) | private void ZoomModeComboBoxOnSelectionChanged(object? sender, Select...
    method PageTextBoxOnLostFocus (line 450) | private void PageTextBoxOnLostFocus(object? sender, RoutedEventArgs e)
    method ApplyParametersButtonOnClick (line 458) | private async void ApplyParametersButtonOnClick(object? sender, Routed...
    method ErrorsToggleOnChanged (line 464) | private void ErrorsToggleOnChanged(object? sender, RoutedEventArgs e)

FILE: Majorsilence.Reporting.UI.RdlAvalonia/Viewer/ReportCanvas.cs
  class HitListEntry (line 20) | public class HitListEntry
    method HitListEntry (line 25) | public HitListEntry(Rect rect, PageItem pageItem)
    method Contains (line 31) | public bool Contains(Point p) => Rect.Contains(p);
  class ReportCanvas (line 34) | public sealed class ReportCanvas : Control
    method ReportCanvas (line 52) | public ReportCanvas()
    method AppendHtmlText (line 127) | private static void AppendHtmlText(PageTextHtml pth, StringBuilder sb)
    method CopySelection (line 150) | public async void CopySelection()
    method SelectAll (line 166) | public void SelectAll()
    method ClearSelection (line 183) | public void ClearSelection()
    method SetReport (line 190) | public void SetReport(Report? report, Pages? pages)
    method SetPage (line 201) | public void SetPage(int pageIndex)
    method SetZoom (line 211) | public void SetZoom(double zoom)
    method MeasureOverride (line 237) | protected override Size MeasureOverride(Size availableSize)
    method OnPointerPressed (line 245) | protected override void OnPointerPressed(PointerPressedEventArgs e)
    method OnPointerMoved (line 270) | protected override void OnPointerMoved(PointerEventArgs e)
    method OnPointerReleased (line 281) | protected override void OnPointerReleased(PointerReleasedEventArgs e)
    method OnKeyDown (line 301) | protected override void OnKeyDown(KeyEventArgs e)
    method UpdateSelectionFromRect (line 326) | private void UpdateSelectionFromRect(Rect selectionRect, bool ctrlPres...
    method CreateRect (line 349) | private static Rect CreateRect(Point p1, Point p2)
    method Render (line 358) | public override void Render(DrawingContext context)
    method DrawSelectionHighlights (line 389) | private void DrawSelectionHighlights(DrawingContext context)
    method RenderPage (line 404) | private void RenderPage()
    method BuildHitList (line 455) | private void BuildHitList(int pageIndex, double dpi)
    method BuildHitListFromPage (line 470) | private void BuildHitListFromPage(Page page, double scale)
    method PointsToLogical (line 516) | private double PointsToLogical(float points, double scale)

FILE: Majorsilence.Reporting.UI.RdlAvalonia/Viewer/SkiaPageDrawing.cs
  class SkiaPageDrawing (line 10) | public class SkiaPageDrawing
    method SkiaPageDrawing (line 15) | public SkiaPageDrawing(Pages pages, float zoom = 1.0f)
    method ToDrawingColor (line 25) | private static Drawing.Color ToDrawingColor(dynamic color)
    method Draw (line 40) | public void Draw(Majorsilence.Drawing.Graphics g, int pageIndex)
    method ProcessPage (line 51) | private void ProcessPage(Drawing.Graphics g, Page page)
    method ProcessHtml (line 127) | private void ProcessHtml(PageTextHtml? pth, Drawing.Graphics g)
    method DrawLine (line 158) | private void DrawLine(PageLine? pl, Drawing.Graphics g)
    method DrawString (line 175) | private void DrawString(PageText? pt, Drawing.Graphics g, Drawing.Rect...
    method DrawImage (line 194) | private void DrawImage(PageImage? pi, Drawing.Graphics g, Drawing.Rect...
    method DrawBackground (line 218) | private void DrawBackground(Drawing.Graphics g, Drawing.Rectangle rect...
    method DrawEllipse (line 241) | private void DrawEllipse(PageEllipse? pe, Drawing.Graphics g, Drawing....
    method DrawPie (line 263) | private void DrawPie(PagePie? pp, Drawing.Graphics g, Drawing.Rectangl...
    method DrawPolygon (line 285) | private void DrawPolygon(PagePolygon? ppo, Drawing.Graphics g, Drawing...
    method DrawCurve (line 316) | private void DrawCurve(PageCurve? pc, Drawing.Graphics g, Drawing.Rect...
    method ConvertXtoPixels (line 340) | private float ConvertXtoPixels(float x)
    method ConvertYtoPixels (line 345) | private float ConvertYtoPixels(float y)
    method CreatePen (line 350) | private Drawing.Pen? CreatePen(Drawing.Color color, BorderStyleEnum? s...
    method GetBrush (line 380) | private Drawing.Brush? GetBrush(Drawing.Color color)
    method GetFont (line 390) | private Drawing.Font? GetFont(PageText? pt)
    method GetStringFormat (line 414) | private Drawing.StringFormat GetStringFormat(PageText pt)

FILE: Majorsilence.Reporting.UI.RdlAvalonia/Viewer/ZoomMode.cs
  type ZoomMode (line 3) | public enum ZoomMode

FILE: Majorsilence.Reporting.UI/App.axaml.cs
  class App (line 7) | public partial class App : Application
    method Initialize (line 9) | public override void Initialize()
    method OnFrameworkInitializationCompleted (line 14) | public override void OnFrameworkInitializationCompleted()

FILE: Majorsilence.Reporting.UI/MainWindow.axaml.cs
  class MainWindow (line 5) | public partial class MainWindow : Window
    method MainWindow (line 7) | public MainWindow()

FILE: Majorsilence.Reporting.UI/Program.cs
  class Program (line 6) | class Program
    method Main (line 11) | [STAThread]
    method BuildAvaloniaApp (line 16) | public static AppBuilder BuildAvaloniaApp()

FILE: Majorsilence.Reporting.WebExample/Controllers/HomeController.cs
  class HomeController (line 7) | public class HomeController : Controller
    method HomeController (line 11) | public HomeController(ILogger<HomeController> logger)
    method Index (line 16) | public IActionResult Index()
    method Privacy (line 21) | public IActionResult Privacy()
    method Error (line 26) | [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, No...

FILE: Majorsilence.Reporting.WebExample/Models/ErrorViewModel.cs
  class ErrorViewModel (line 3) | public class ErrorViewModel

FILE: Majorsilence.WinformUtils/FormExtensions.cs
  class FormExtensions (line 5) | public static class FormExtensions
    method ShowWaiter (line 9) | public static void ShowWaiter(this UserControl parent)
    method ShowWaiter (line 17) | public static void ShowWaiter(this ContainerControl parent)
    method Parent_SizeChanged (line 48) | private static void Parent_SizeChanged(object? sender, EventArgs e)
    method Parent_Closed (line 61) | private static void Parent_Closed(object? sender, EventArgs e)
    method Parent_Move (line 70) | private static void Parent_Move(object? sender, EventArgs e)
    method HideWaiter (line 82) | public static void HideWaiter(this UserControl parent)
    method HideWaiter (line 91) | public static void HideWaiter(this ContainerControl parent)

FILE: Majorsilence.WinformUtils/Strings.Designer.cs
  class Strings (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Strings (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: Majorsilence.WinformUtils/WaitForm.cs
  class WaitForm (line 3) | internal class WaitForm : Form
    method WaitForm (line 11) | public WaitForm()
    method PlaceControls (line 40) | private void PlaceControls()
    method WaitForm_Move (line 48) | private void WaitForm_Move(object? sender, EventArgs e)
    method WaitForm_SizeChanged (line 53) | private void WaitForm_SizeChanged(object? sender, EventArgs e)
    method timer1_Tick (line 58) | private async Task timer1_Tick(object sender, EventArgs e)
    method Dispose (line 75) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 85) | private void InitializeComponent()

FILE: OracleSp/DataParameter.cs
  class DataParameter (line 32) | public class DataParameter : IDbDataParameter
    method DataParameter (line 37) | public DataParameter()

FILE: OracleSp/DataParameterCollection.cs
  class DataParameterCollection (line 32) | public class DataParameterCollection : IDataParameterCollection
    method DataParameterCollection (line 36) | public DataParameterCollection()
    method RemoveAt (line 61) | public void RemoveAt(string parameterName)
    method Contains (line 66) | public bool Contains(string parameterName)
    method IndexOf (line 71) | public int IndexOf(string parameterName)
    method RemoveAt (line 107) | void System.Collections.IList.RemoveAt(int index)
    method Insert (line 112) | public void Insert(int index, object value)
    method Remove (line 117) | public void Remove(object value)
    method Contains (line 122) | bool System.Collections.IList.Contains(object value)
    method Clear (line 127) | public void Clear()
    method IndexOf (line 132) | int System.Collections.IList.IndexOf(object value)
    method Add (line 137) | public int Add(object value)
    method CopyTo (line 170) | public void CopyTo(Array array, int index)
    method GetEnumerator (line 187) | public System.Collections.IEnumerator GetEnumerator()

FILE: OracleSp/OracleSpCommand.cs
  class OracleSpCommand (line 35) | public class OracleSpCommand : IDbCommand
    method OracleSpCommand (line 41) | public OracleSpCommand(OracleSpConnection conn)
    method Cancel (line 49) | public void Cancel()
    method Prepare (line 54) | public void Prepare()
    method ExecuteReader (line 71) | public IDataReader ExecuteReader(System.Data.CommandBehavior behavior)
    method ExecuteReader (line 97) | IDataReader System.Data.IDbCommand.ExecuteReader()
    method ExecuteScalar (line 102) | public object ExecuteScalar()
    method ExecuteNonQuery (line 107) | public int ExecuteNonQuery()
    method CreateParameter (line 118) | public IDbDataParameter CreateParameter()
    method Dispose (line 178) | public void Dispose()

FILE: OracleSp/OracleSpConnection.cs
  class OracleSpConnection (line 33) | public class OracleSpConnection : IDbConnection
    method OracleSpConnection (line 37) | public OracleSpConnection(string conn)
    method ChangeDatabase (line 49) | public void ChangeDatabase(string databaseName)
    method BeginTransaction (line 54) | public IDbTransaction BeginTransaction(System.Data.IsolationLevel il)
    method BeginTransaction (line 59) | IDbTransaction System.Data.IDbConnection.BeginTransaction()
    method CreateCommand (line 84) | public IDbCommand CreateCommand()
    method Open (line 89) | public void Open()
    method Close (line 94) | public void Close()
    method Dispose (line 116) | public void Dispose()

FILE: RdlAsp.Mvc/RdlListReports.cs
  class RdlListReports (line 16) | public class RdlListReports : Controller
    method RdlListReports (line 26) | public RdlListReports(Settings settings)
    method Index (line 31) | [HttpGet]

FILE: RdlAsp.Mvc/RdlReport.cs
  class RdlReport (line 19) | public class RdlReport : Controller
    method RdlReport (line 45) | public RdlReport(IWebHostEnvironment webHostEnvironment, IMemoryCache ...
    method Render (line 53) | [HttpGet]
    method SetReportFile (line 148) | private async Task SetReportFile(string value)
    method GetPassword (line 190) | private string GetPassword()
    method DoRender (line 267) | private async Task DoRender(string file)
    method AddError (line 319) | private void AddError(int severity, string err, params object[] args)
    method AddError (line 330) | private void AddError(int severity, IList errors)
    method DoStatistics (line 346) | private void DoStatistics(ref StringBuilder htmlContent)
    method GetCacheEntries (line 365) | private List<string> GetCacheEntries(IMemoryCache cache)
    method Generate (line 382) | private async Task Generate(Report report)
    method GetRenderType (line 445) | private OutputPresentationType GetRenderType(string type)
    method FindReportFile (line 474) | private string FindReportFile(string file)
    method GetReport (line 503) | private async Task<Report> GetReport(string prog, string file)

FILE: RdlAsp.Mvc/RdlSession.cs
  class RdlSession (line 13) | public class RdlSession
    method RdlSession (line 17) | public RdlSession()

FILE: RdlAsp.Mvc/ReportHelper.cs
  class ReportHelper (line 15) | internal class ReportHelper
    method ReportHelper (line 21) | private ReportHelper()
    method Get (line 27) | static internal ReportHelper Get(IMemoryCache app)
    method IncrHits (line 37) | static internal void IncrHits(IMemoryCache app)
    method IncrMisses (line 45) | static internal void IncrMisses(IMemoryCache app)
    method GetCachedReport (line 54) | static internal Report GetCachedReport(string file, IMemoryCache c)
    method SaveCachedReport (line 75) | static internal void SaveCachedReport(Report r, string file, IMemoryCa...
    method GetParameters (line 84) | static internal ListDictionary GetParameters(string parms)
    method GetSource (line 106) | static internal string GetSource(string file)
    method SetUserContext (line 123) | static internal void SetUserContext(Report r, HttpContext context, Nee...
    method GetParameterHtml (line 149) | static internal string GetParameterHtml(Report rpt, IDictionary pd, Ht...
    method AppendExports (line 280) | static private void AppendExports(StringBuilder pHtml, HttpContext con...

FILE: RdlAsp.Mvc/Settings.cs
  class Settings (line 3) | public class Settings

FILE: RdlCmd/RdlCmd.cs
  class RdlCmd (line 25) | public class RdlCmd
    method Main (line 37) | [STAThread]
    method GetPassword (line 137) | private string GetPassword()
    method DoRender (line 143) | private async Task DoRender(string dir, string[] files, string[] types...
    method GetParameters (line 236) | private ListDictionary GetParameters(string parms)
    method GetSource (line 258) | private string GetSource(string file)
    method GetReport (line 281) | private async Task<Report> GetReport(string prog, string file, string ...
    method SaveAs (line 339) | private async Task SaveAs(Report report, string FileName, string type)
    method SaveAsPdf (line 437) | private async Task SaveAsPdf(Report report, OneFileStreamGen sg)
    method Size (line 548) | private float Size(string t)
    method WriteHelp (line 625) | static private void WriteHelp()
    method WriteLicense (line 653) | static private void WriteLicense()

FILE: RdlCreator.Tests/Document_Test.cs
  class Document_Test (line 15) | [TestFixture]
    method SinglePagePdfDiskExport (line 18) | [Test]
    method MultiPagePdfTest (line 34) | [Test]
    method LoadTest (line 50) | [Test]
    method ImageTestPdfDiskExport (line 63) | [Test]
    method PdfInfoAddedTest (line 79) | [Test]
    method GenerateData (line 106) | private RdlCreator.Document GenerateData(int pageCount = 1)
    method GenerateImageDocument (line 198) | private RdlCreator.Document GenerateImageDocument()

FILE: RdlCreator.Tests/Reports_ChainedTest.cs
  class Reports_ChainedTest (line 21) | [TestFixture]
    method PdfStreamExport (line 27) | [Test]
    method PdfDiskExport (line 61) | [Test]
    method HtmlDiskExport (line 87) | [Test]
    method GenerateTestData (line 108) | private RdlCreator.Report GenerateTestData()

FILE: RdlCreator.Tests/Reports_DataProviderTest.cs
  class Reports_DataProviderTest (line 13) | [TestFixture]
    method Setup (line 19) | [SetUp]
    method TestMethodCsv (line 40) | [Test]
    method TestMethodExcelLegacy (line 69) | [Test]
    method TestMethodExcel2007 (line 91) | [Test]
    method TestMethodExcel2007DataOnly (line 109) | [Test]
    method TestMethodPdf (line 127) | [Test]
    method TestReportFromDataTable (line 149) | [Test]
    class Category (line 188) | class Category
    method TestReportFromEnumerable (line 195) | [Test]
    method NormalizeEOL (line 233) | private string NormalizeEOL(string input)

FILE: RdlCreator.Tests/Reports_JsonDataProviderTest.cs
  class Reports_JsonDataProviderTest (line 13) | [TestFixture]
    method Setup (line 41) | [SetUp]
    method TestConnectionStrings (line 59) | [Test]
    method NestedJson (line 89) | [Test]
    method NormalizeEOL (line 120) | private string NormalizeEOL(string input)

FILE: RdlCreator.Tests/Reports_ManualDefinitionTest.cs
  class Reports_ManualDefinitionTest (line 20) | [TestFixture]
    method CsvExport (line 26) | [Test]
    method HtmlExport (line 52) | [Test]
    method PdfStreamExport (line 68) | [Test]
    method PdfDiskExport (line 87) | [Test]
    method NormalizeEOL (line 110) | private string NormalizeEOL(string input)
    method GenerateTestData (line 115) | private RdlCreator.Report GenerateTestData()

FILE: RdlCreator/Body.cs
  class Body (line 9) | public class Body

FILE: RdlCreator/BorderColor.cs
  class BorderColor (line 5) | public class BorderColor

FILE: RdlCreator/BorderStyle.cs
  class BorderStyle (line 5) | public class BorderStyle

FILE: RdlCreator/BorderStyleType.cs
  class BorderStyleType (line 3) | public class BorderStyleType
    method BorderStyleType (line 7) | public BorderStyleType()
    method BorderStyleType (line 11) | public BorderStyleType(string value)
    method ToString (line 24) | public override string ToString()

FILE: RdlCreator/BorderWidth.cs
  class BorderWidth (line 5) | public class BorderWidth

FILE: RdlCreator/Card.cs
  class Card (line 7) | public class Card
    method Card (line 11) | public Card() { }
    method Card (line 13) | public Card(Report rpt)
    method Add (line 38) | public void Add(Text text)
    method Add (line 52) | public void Add(CustomReportItems cri)

FILE: RdlCreator/ConnectionProperties.cs
  class ConnectionProperties (line 6) | public class ConnectionProperties

FILE: RdlCreator/Create.cs
  class Create (line 15) | public class Create
    method GenerateRdl (line 17) | public async Task<Rdl.Report> GenerateRdl(Report report)
    method ValidateReport (line 44) | private static void ValidateReport(Rdl.Report fyiReport)
    method GenerateRdl (line 58) | public async Task<Rdl.Report> GenerateRdl(DataTable data,
    method GenerateRdl (line 124) | public async Task<Rdl.Report> GenerateRdl<T>(IEnumerable<T> data,
    method GetDataProviderString (line 195) | private string GetDataProviderString(DataProviders dataProvider)
    method GenerateRdl (line 220) | public async Task<Rdl.Report> GenerateRdl(DataProviders dataProvider,
    method GenerateRdl (line 254) | public async Task<Rdl.Report> GenerateRdl(string dataProvider,
    method InternalReportCreation (line 338) | private static string InternalReportCreation(string dataProvider, stri...
  class Utf8StringWriter (line 486) | public class Utf8StringWriter : StringWriter

FILE: RdlCreator/CustomProperties.cs
  class CustomProperties (line 6) | public class CustomProperties

FILE: RdlCreator/CustomProperty.cs
  class CustomProperty (line 5) | public class CustomProperty

FILE: RdlCreator/CustomReportItems.cs
  class CustomReportItems (line 5) | public class CustomReportItems

FILE: RdlCreator/DataProviders.cs
  type DataProviders (line 3) | public enum DataProviders

FILE: RdlCreator/DataSet.cs
  class DataSet (line 6) | public class DataSet

FILE: RdlCreator/DataSets.cs
  class DataSets (line 6) | public class DataSets

FILE: RdlCreator/DataSource.cs
  class DataSource (line 6) | public class DataSource

FILE: RdlCreator/DataSources.cs
  class DataSources (line 6) | public class DataSources

FILE: RdlCreator/Details.cs
  class Details (line 6) | public class Details

FILE: RdlCreator/Document.cs
  class Document (line 16) | [XmlRoot(ElementName = "Report", Namespace = "http://schemas.microsoft.c...
    method WithDescription (line 57) | public Document WithDescription(string description)
    method WithAuthor (line 62) | public Document WithAuthor(string author)
    method WithName (line 68) | public Document WithName(string name)
    method WithPageHeight (line 74) | public Document WithPageHeight(string pageHeight)
    method WithPageWidth (line 80) | public Document WithPageWidth(string pageWidth)
    method WithTopMargin (line 92) | public Document WithTopMargin(string topMargin)
    method WithLeftMargin (line 98) | public Document WithLeftMargin(string leftMargin)
    method WithRightMargin (line 104) | public Document WithRightMargin(string rightMargin)
    method WithBottomMargin (line 110) | public Document WithBottomMargin(string bottomMargin)
    method WithPage (line 116) | public Document WithPage(Page page)
    method WithPage (line 122) | public Document WithPage(Action<Page> options)
    method Create (line 130) | public async Task<byte[]>Create()
    method Create (line 137) | public async Task Create(Stream output)

FILE: RdlCreator/Field.cs
  class Field (line 6) | public class Field

FILE: RdlCreator/Fields.cs
  class Fields (line 7) | public class Fields

FILE: RdlCreator/Header.cs
  class Header (line 6) | public class Header

FILE: RdlCreator/Page.cs
  class Page (line 10) | public class Page
    method WithHeight (line 21) | public Page WithHeight(ReportItemSize height)
    method WithWidth (line 31) | public Page WithWidth(ReportItemSize width)
    method WithPageHeader (line 41) | public Page WithPageHeader(PageHeader pageHeader)
    method WithPageFooter (line 46) | public Page WithPageFooter(PageFooter pageFooter)
    method WithText (line 52) | public Page WithText(Text textbox)
    method WithCard (line 61) | public Page WithCard(Card card)
    method WithTableColumns (line 70) | public Page WithTableColumns(TableColumns tableColumns)
    method WithTableHeader (line 77) | public Page WithTableHeader(TableRow header, string repeatOnNewPage = ...
    method WithTableDetails (line 91) | public Page WithTableDetails(TableRow row)
    method WithTableNoRows (line 102) | public Page WithTableNoRows(string noRows)
    method WithTableName (line 110) | public Page WithTableName(string tableName)
    method WithImage (line 117) | public Page WithImage(ReportItemImage image)
    method InitReportItemBody (line 128) | private void InitReportItemBody(bool includeTable)

FILE: RdlCreator/PageFooter.cs
  class PageFooter (line 6) | public class PageFooter

FILE: RdlCreator/PageHeader.cs
  class PageHeader (line 6) | public class PageHeader

FILE: RdlCreator/Query.cs
  class Query (line 6) | public class Query

FILE: RdlCreator/Report.cs
  class Report (line 9) | [XmlRoot(ElementName = "Report", Namespace = "http://schemas.microsoft.c...
    method WithDescription (line 59) | public Report WithDescription(string description)
    method WithAuthor (line 65) | public Report WithAuthor(string author)
    method WithName (line 71) | public Report WithName(string name)
    method WithPageHeight (line 77) | public Report WithPageHeight(ReportItemSize pageHeight)
    method WithPageWidth (line 83) | public Report WithPageWidth(ReportItemSize pageWidth)
    method WithDataSources (line 89) | public Report WithDataSources(DataSources dataSources)
    method WithWidth (line 95) | public Report WithWidth(ReportItemSize width)
    method WithTopMargin (line 101) | public Report WithTopMargin(ReportItemSize topMargin)
    method WithLeftMargin (line 107) | public Report WithLeftMargin(ReportItemSize leftMargin)
    method WithRightMargin (line 113) | public Report WithRightMargin(ReportItemSize rightMargin)
    method WithBottomMargin (line 119) | public Report WithBottomMargin(ReportItemSize bottomMargin)
    method WithDataSets (line 125) | public Report WithDataSets(DataSets dataSets)
    method WithPageHeader (line 131) | public Report WithPageHeader(PageHeader pageHeader)
    method WithBody (line 137) | public Report WithBody(ReportItemSize height)
    method WithBody (line 146) | public Report WithBody(Body body)
    method WithPageBreak (line 152) | public Report WithPageBreak()
    method WithPageBreak (line 157) | public Report WithPageBreak(ReportItemSize yPos)
    method WithPageFooter (line 171) | public Report WithPageFooter(PageFooter pageFooter)
    method WithTable (line 177) | public Report WithTable()
    method WithReportText (line 183) | public Report WithReportText(Text textbox)
    method InitReportItemBody (line 191) | private void InitReportItemBody(bool includeTable)
    method WithCard (line 209) | public Report WithCard(Card card)
    method WithTableColumns (line 218) | public Report WithTableColumns(TableColumns tableColumns)
    method WithTableHeader (line 224) | public Report WithTableHeader(TableRow header, string repeatOnNewPage ...
    method WithTableDetails (line 237) | public Report WithTableDetails(TableRow row)
    method WithTableDataSetName (line 247) | public Report WithTableDataSetName(string dataSetName)
    method WithTableNoRows (line 253) | public Report WithTableNoRows(string noRows)
    method WithTableName (line 259) | public Report WithTableName(string tableName)
    method WithImage (line 265) | public Report WithImage(ReportItemImage image)

FILE: RdlCreator/ReportItemImage.cs
  class ReportItemImage (line 10) | public class ReportItemImage

FILE: RdlCreator/ReportItemSize.cs
  class ReportItemSize (line 5) | public class ReportItemSize : System.Xml.Serialization.IXmlSerializable
    method ToString (line 78) | public override string ToString()
    method FromInches (line 88) | public static ReportItemSize FromInches(float inches)
    method FromCentimeters (line 93) | public static ReportItemSize FromCentimeters(float centimeters)
    method FromPoints (line 98) | public static ReportItemSize FromPoints(float points)
    method FromPicas (line 103) | public static ReportItemSize FromPicas(float picas)
    method FromMillimeters (line 108) | public static ReportItemSize FromMillimeters(float millimeters)
    method GetSchema (line 113) | System.Xml.Schema.XmlSchema System.Xml.Serialization.IXmlSerializable....
    method ReadXml (line 118) | void System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlR...
    method WriteXml (line 126) | void System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.Xml...

FILE: RdlCreator/ReportItemsBody.cs
  class ReportItemsBody (line 7) | public class ReportItemsBody

FILE: RdlCreator/ReportItemsFooter.cs
  class ReportItemsFooter (line 6) | public class ReportItemsFooter

FILE: RdlCreator/ReportItemsHeader.cs
  class ReportItemsHeader (line 6) | public class ReportItemsHeader

FILE: RdlCreator/SizeUnit.cs
  type SizeUnit (line 3) | public enum SizeUnit

FILE: RdlCreator/Style.cs
  class Style (line 5) | public class Style

FILE: RdlCreator/Table.cs
  class Table (line 6) | public class Table

FILE: RdlCreator/TableCell.cs
  class TableCell (line 6) | public class TableCell

FILE: RdlCreator/TableCellReportItems.cs
  class TableCellReportItems (line 5) | public class TableCellReportItems

FILE: RdlCreator/TableCells.cs
  class TableCells (line 6) | public class TableCells

FILE: RdlCreator/TableColumn.cs
  class TableColumn (line 6) | public class TableColumn

FILE: RdlCreator/TableColumns.cs
  class TableColumns (line 7) | public class TableColumns

FILE: RdlCreator/TableRow.cs
  class TableRow (line 7) | public class TableRow

FILE: RdlCreator/TableRows.cs
  class TableRows (line 6) | public class TableRows

FILE: RdlCreator/Text.cs
  class Text (line 6) | public class Text

FILE: RdlCreator/Value.cs
  class Value (line 6) | public class Value

FILE: RdlCri/AztecCode.cs
  class AztecCode (line 15) | public class AztecCode : ZxingBarcodes
    method AztecCode (line 17) | public AztecCode() : base(35.91f, 35.91f) // Optimal width at mag 1

FILE: RdlCri/BarCode128.cs
  class BarCode128 (line 15) | public class BarCode128 : ZxingBarcodes
    method BarCode128 (line 17) | public BarCode128() : base(35.91f, 65.91f) // Optimal width at mag 1

FILE: RdlCri/BarCode39.cs
  class BarCode39 (line 16) | public class BarCode39 : ZxingBarcodes
    method BarCode39 (line 18) | public BarCode39() : base(35.91f, 65.91f) // Optimal width at mag 1

FILE: RdlCri/BarCodeBookland.cs
  class BarCodeBookland (line 24) | public class BarCodeBookland: ICustomReportItem
    method BarCodeBookland (line 29) | public BarCodeBookland()        // Need to be able to create an instance
    method DrawImage (line 39) | public void DrawImage(ref Draw2.Bitmap bm)
    method DrawDesignerImage (line 49) | public void DrawDesignerImage(ref Draw2.Bitmap bm)
    method IsDataRegion (line 58) | public bool IsDataRegion()
    method SetProperties (line 67) | public void SetProperties(IDictionary<string, object> props)
    method GetCustomReportItemXml (line 115) | public string GetCustomReportItemXml()
    method GetPropertiesInstance (line 133) | public object GetPropertiesInstance(XmlNode iNode)
    method SetPropertiesInstance (line 159) | public void SetPropertiesInstance(XmlNode node, object inst)
    method CreateChild (line 171) | void CreateChild(XmlNode node, string nm, string val)
    method Dispose (line 186) | public void Dispose()
    method GetNamedElementValue (line 202) | string GetNamedElementValue(XmlNode xNode, string name, string def)
    class BarCodeBooklandProperties (line 220) | public class BarCodeBooklandProperties
      method BarCodeBooklandProperties (line 226) | internal BarCodeBooklandProperties(BarCodeBookland bcbl, XmlNode node)
      method SetISBN (line 233) | internal void SetISBN(string isbn)

FILE: RdlCri/BarCodeEAN13.cs
  class BarCodeEAN13 (line 22) | public class BarCodeEAN13 : ICustomReportItem
    method BarCodeEAN13 (line 94) | public BarCodeEAN13() // Need to be able to create an instance
    method DrawImage (line 104) | public void DrawImage(ref Draw2.Bitmap bm)
    method DrawDesignerImage (line 116) | public void DrawDesignerImage(ref Draw2.Bitmap bm)
    method DrawImage (line 126) | internal void DrawImage(Draw2.Bitmap bm, string upcode)
    method IsDataRegion (line 185) | public bool IsDataRegion()
    method SetProperties (line 194) | public void SetProperties(IDictionary<string, object> props)
    method GetCustomReportItemXml (line 255) | public string GetCustomReportItemXml()
    method GetPropertiesInstance (line 281) | public object GetPropertiesInstance(XmlNode iNode)
    method SetPropertiesInstance (line 313) | public void SetPropertiesInstance(XmlNode node, object inst)
    method CreateChild (line 331) | void CreateChild(XmlNode node, string nm, string val)
    method Dispose (line 346) | public void Dispose()
    method GetEncoding (line 361) | string GetEncoding(string upccode)
    method CheckSum (line 421) | int CheckSum(string upccode)
    method GetNamedElementValue (line 445) | string GetNamedElementValue(XmlNode xNode, string name, string def)
    class BarCodeProperties (line 464) | public class BarCodeProperties
      method BarCodeProperties (line 472) | internal BarCodeProperties(BarCodeEAN13 bc, XmlNode node)
      method SetNumberSystem (line 478) | internal void SetNumberSystem(string ns)
      method SetManufacturerCode (line 496) | internal void SetManufacturerCode(string mc)
      method SetProductCode (line 514) | internal void SetProductCode(string pc)

FILE: RdlCri/BarCodeEAN8.cs
  class BarCodeEAN8 (line 15) | public class BarCodeEAN8 : ZxingBarcodes
    method BarCodeEAN8 (line 17) | public BarCodeEAN8() : base(35.91f, 65.91f) // Optimal width at mag 1

FILE: RdlCri/BarCodeITF14.cs
  class BarCodeITF14 (line 20) | public class BarCodeITF14 : ICustomReportItem
    method Dispose (line 27) | public void Dispose()
    method DrawDesignerImage (line 32) | public void DrawDesignerImage(ref Bitmap bm)
    method DrawImage (line 37) | public void DrawImage(ref Bitmap bm)
    method InternalDraw (line 42) | private void InternalDraw(ref Bitmap bm, string value)
    method GetCustomReportItemXml (line 58) | public string GetCustomReportItemXml()
    method GetPropertiesInstance (line 71) | public object GetPropertiesInstance(XmlNode iNode)
    method IsDataRegion (line 93) | public bool IsDataRegion()
    method SetProperties (line 98) | public void SetProperties(IDictionary<string, object> props)
    method SetPropertiesInstance (line 114) | public void SetPropertiesInstance(XmlNode node, object inst)
    class BarCodePropertiesItf14 (line 130) | public class BarCodePropertiesItf14
      method BarCodePropertiesItf14 (line 136) | internal BarCodePropertiesItf14(BarCodeITF14 bc, XmlNode node)
      method SetITF14 (line 142) | internal void SetITF14(string ns)

FILE: RdlCri/DataMatrix.cs
  class DataMatrix (line 3) | public class DataMatrix : ZxingBarcodes
    method DataMatrix (line 5) | public DataMatrix() : base(35.91f, 65.91f) // Optimal width at mag 1

FILE: RdlCri/Pdf417Barcode.cs
  class Pdf417Barcode (line 16) | public class Pdf417Barcode : ZxingBarcodes
    method Pdf417Barcode (line 18) | public Pdf417Barcode() : base(35.91f, 65.91f) // Optimal width at mag 1

FILE: RdlCri/PixelConversions.cs
  class PixelConversions (line 9) | internal class PixelConversions
    method MmXFromPixel (line 11) | static public int MmXFromPixel(Graphics g, float x)
    method MmYFromPixel (line 18) | static public int MmYFromPixel(Graphics g, float y)
    method PixelXFromMm (line 25) | static public int PixelXFromMm(Graphics g, float x)
    method PixelYFromMm (line 32) | static public int PixelYFromMm(Graphics g, float y)
    method GetMagnification (line 48) | static public float GetMagnification(Graphics g, int width, int height...

FILE: RdlCri/QrCode.cs
  class QrCode (line 16) | public class QrCode : ZxingBarcodes
    method QrCode (line 18) | public QrCode() : base(35.91f, 35.91f) // Optimal width at mag 1

FILE: RdlCri/XmlHelpers.cs
  class XmlHelpers (line 8) | public class XmlHelpers
    method GetNamedElementValue (line 19) | public static string GetNamedElementValue(XmlNode xNode, string name, ...
    method CreateChild (line 33) | public static void CreateChild(XmlNode node, string nm, string val)

FILE: RdlCri/ZxingBarcodes.cs
  class ZxingBarcodes (line 16) | public class ZxingBarcodes : ICustomReportItem
    method ZxingBarcodes (line 29) | public ZxingBarcodes() : this(35.91f, 65.91f)
    method ZxingBarcodes (line 33) | public ZxingBarcodes(float optimalHeight, float optimalWidth)
    method IsDataRegion (line 39) | bool ICustomReportItem.IsDataRegion()
    method DrawImage (line 44) | void ICustomReportItem.DrawImage(ref Draw2.Bitmap bm)
    method DrawImage (line 54) | internal void DrawImage(ref Draw2.Bitmap bm, string qrcode)
    method DrawDesignerImage (line 93) | void ICustomReportItem.DrawDesignerImage(ref Draw2.Bitmap bm)
    method SetProperties (line 100) | void ICustomReportItem.SetProperties(IDictionary<string, object> props)
    method GetPropertiesInstance (line 125) | object ICustomReportItem.GetPropertiesInstance(System.Xml.XmlNode iNode)
    method SetPropertiesInstance (line 146) | public void SetPropertiesInstance(System.Xml.XmlNode node, object inst)
    method GetCustomReportItemXml (line 166) | string ICustomReportItem.GetCustomReportItemXml()
    method Dispose (line 183) | void IDisposable.Dispose()
    class ZxingBarCodeProperties (line 194) | public class ZxingBarCodeProperties
      method ZxingBarCodeProperties (line 200) | internal ZxingBarCodeProperties(ZxingBarcodes bc, XmlNode node)
      method SetCode (line 206) | internal void SetCode(string ns)

FILE: RdlDesign/BackgroundCtl.cs
  class BackgroundCtl (line 17) | internal class BackgroundCtl : System.Windows.Forms.UserControl, IProperty
    method BackgroundCtl (line 59) | internal BackgroundCtl(DesignXmlDraw dxDraw, string[] names, List<XmlN...
    method InitValues (line 71) | private void InitValues(XmlNode node)
    method Dispose (line 135) | protected override void Dispose( bool disposing )
    method InitializeComponent (line 152) | private void InitializeComponent()
    method IsValid (line 433) | public bool IsValid()
    method Apply (line 438) | public void Apply()
    method bColor_Click (line 452) | private void bColor_Click(object sender, System.EventArgs e)
    method cbBackColor_SelectedIndexChanged (line 477) | private void cbBackColor_SelectedIndexChanged(object sender, System.Ev...
    method cbGradient_SelectedIndexChanged (line 482) | private void cbGradient_SelectedIndexChanged(object sender, System.Eve...
    method cbEndColor_SelectedIndexChanged (line 487) | private void cbEndColor_SelectedIndexChanged(object sender, System.Eve...
    method BackImage_Changed (line 492) | private void BackImage_Changed(object sender, System.EventArgs e)
    method rbSource_CheckedChanged (line 497) | private void rbSource_CheckedChanged(object sender, System.EventArgs e)
    method ApplyChanges (line 508) | private void ApplyChanges(XmlNode rNode)
    method bExternal_Click (line 554) | private void bExternal_Click(object sender, System.EventArgs e)
    method bEmbedded_Click (line 573) | private void bEmbedded_Click(object sender, System.EventArgs e)
    method bExpr_Click (line 593) | private void bExpr_Click(object sender, System.EventArgs e)

FILE: RdlDesign/BodyCtl.cs
  class BodyCtl (line 15) | internal class BodyCtl : System.Windows.Forms.UserControl, IProperty
    method BodyCtl (line 29) | internal BodyCtl(DesignXmlDraw dxDraw)
    method InitValues (line 39) | private void InitValues()
    method Dispose (line 51) | protected override void Dispose( bool disposing )
    method InitializeComponent (line 68) | private void InitializeComponent()
    method IsValid (line 126) | public bool IsValid()
    method Apply (line 131) | public void Apply()

FILE: RdlDesign/ChartAxisCtl.cs
  class ChartAxisCtl (line 16) | internal class ChartAxisCtl : System.Windows.Forms.UserControl, IProperty
    method ChartAxisCtl (line 75) | internal ChartAxisCtl(DesignXmlDraw dxDraw, List<XmlNode> ris)
    method InitValues (line 85) | private void InitValues()
    method InitGridLines (line 118) | private void InitGridLines(XmlNode node, string type, CheckBox show, C...
    method Dispose (line 149) | protected override void Dispose( bool disposing )
    method InitializeComponent (line 166) | private void InitializeComponent()
    method IsValid (line 549) | public bool IsValid()
    method Apply (line 554) | public void Apply()
    method ApplyChanges (line 571) | public void ApplyChanges(XmlNode node)
    method ApplyGridLines (line 639) | private void ApplyGridLines(XmlNode node, string type, CheckBox show, ...
    method cbMajorTickMarks_SelectedIndexChanged (line 668) | private void cbMajorTickMarks_SelectedIndexChanged(object sender, Syst...
    method cbMinorTickMarks_SelectedIndexChanged (line 673) | private void cbMinorTickMarks_SelectedIndexChanged(object sender, Syst...
    method cbMajorGLStyle_SelectedIndexChanged (line 678) | private void cbMajorGLStyle_SelectedIndexChanged(object sender, System...
    method cbMajorGLColor_SelectedIndexChanged (line 683) | private void cbMajorGLColor_SelectedIndexChanged(object sender, System...
    method tbMajorGLWidth_TextChanged (line 688) | private void tbMajorGLWidth_TextChanged(object sender, System.EventArg...
    method cbMinorGLStyle_SelectedIndexChanged (line 693) | private void cbMinorGLStyle_SelectedIndexChanged(object sender, System...
    method cbMinorGLColor_SelectedIndexChanged (line 698) | private void cbMinorGLColor_SelectedIndexChanged(object sender, System...
    method tbMinorGLWidth_TextChanged (line 703) | private void tbMinorGLWidth_TextChanged(object sender, System.EventArg...
    method tbMajorInterval_TextChanged (line 708) | private void tbMajorInterval_TextChanged(object sender, System.EventAr...
    method tbMinorInterval_TextChanged (line 713) | private void tbMinorInterval_TextChanged(object sender, System.EventAr...
    method tbMin_TextChanged (line 718) | private void tbMin_TextChanged(object sender, System.EventArgs e)
    method tbMax_TextChanged (line 723) | private void tbMax_TextChanged(object sender, System.EventArgs e)
    method chkMonth_CheckedChanged (line 728) | private void chkMonth_CheckedChanged(object sender, System.EventArgs e)
    method chkVisible_CheckedChanged (line 733) | private void chkVisible_CheckedChanged(object sender, System.EventArgs e)
    method chkLogScale_CheckedChanged (line 738) | private void chkLogScale_CheckedChanged(object sender, System.EventArg...
    method chkCanOmit_CheckedChanged (line 743) | private void chkCanOmit_CheckedChanged(object sender, System.EventArgs e)
    method chkMargin_CheckedChanged (line 748) | private void chkMargin_CheckedChanged(object sender, System.EventArgs e)
    method chkScalar_CheckedChanged (line 753) | private void chkScalar_CheckedChanged(object sender, System.EventArgs e)
    method chkReverse_CheckedChanged (line 758) | private void chkReverse_CheckedChanged(object sender, System.EventArgs e)
    method chkInterlaced_CheckedChanged (line 763) | private void chkInterlaced_CheckedChanged(object sender, System.EventA...
    method chkMajorGLShow_CheckedChanged (line 768) | private void chkMajorGLShow_CheckedChanged(object sender, System.Event...
    method chkMinorGLShow_CheckedChanged (line 773) | private void chkMinorGLShow_CheckedChanged(object sender, System.Event...
    method bMajorGLColor_Click (line 778) | private void bMajorGLColor_Click(object sender, System.EventArgs e)
    method bMinorGLColor_Click (line 783) | private void bMinorGLColor_Click(object sender, System.EventArgs e)
    method SetColor (line 788) | private void SetColor(ComboBox cbColor)
    method bExpr_Click (line 812) | private void bExpr_Click(object sender, System.EventArgs e)

FILE: RdlDesign/ChartCtl - Copy.cs
  class ChartCtl (line 37) | internal class ChartCtl : System.Windows.Forms.UserControl, IProperty
    method ChartCtl (line 84) | internal ChartCtl(DesignXmlDraw dxDraw, List<XmlNode> ris)
    method InitValues (line 95) | private void InitValues()
    method Dispose (line 219) | protected override void Dispose( bool disposing )
    method InitializeComponent (line 236) | private void InitializeComponent()
    method IsValid (line 662) | public bool IsValid()
    method Apply (line 667) | public void Apply()
    method ApplyChanges (line 683) | public void ApplyChanges(XmlNode node)
    method cbChartType_SelectedIndexChanged (line 772) | private void cbChartType_SelectedIndexChanged(object sender, System.Ev...
    method cbVector_SelectedIndexChanged (line 835) | private void cbVector_SelectedIndexChanged(object sender, EventArgs e)
    method cbSubType_SelectedIndexChanged (line 840) | private void cbSubType_SelectedIndexChanged(object sender, System.Even...
    method cbPalette_SelectedIndexChanged (line 845) | private void cbPalette_SelectedIndexChanged(object sender, System.Even...
    method cbRenderElement_SelectedIndexChanged (line 850) | private void cbRenderElement_SelectedIndexChanged(object sender, Syste...
    method tbPercentWidth_ValueChanged (line 855) | private void tbPercentWidth_ValueChanged(object sender, System.EventAr...
    method tbNoRows_TextChanged (line 860) | private void tbNoRows_TextChanged(object sender, System.EventArgs e)
    method cbDataSet_SelectedIndexChanged (line 865) | private void cbDataSet_SelectedIndexChanged(object sender, System.Even...
    method chkPageBreakStart_CheckedChanged (line 870) | private void chkPageBreakStart_CheckedChanged(object sender, System.Ev...
    method chkPageBreakEnd_CheckedChanged (line 875) | private void chkPageBreakEnd_CheckedChanged(object sender, System.Even...
    method cbChartData_Changed (line 880) | private void cbChartData_Changed(object sender, System.EventArgs e)
    method bDataExpr_Click (line 884) | private void bDataExpr_Click(object sender, System.EventArgs e)
    method chkDataLabel_CheckedChanged (line 937) | private void chkDataLabel_CheckedChanged(object sender, EventArgs e)
    method bDataLabelExpr_Click (line 942) | private void bDataLabelExpr_Click(object sender, EventArgs e)

FILE: RdlDesign/ChartCtl.cs
  class ChartCtl (line 16) | internal class ChartCtl : System.Windows.Forms.UserControl, IProperty
    method ChartCtl (line 71) | internal ChartCtl(DesignXmlDraw dxDraw, List<XmlNode> ris)
    method InitValues (line 82) | private void InitValues()
    method Dispose (line 214) | protected override void Dispose( bool disposing )
    method InitializeComponent (line 231) | private void InitializeComponent()
    method IsValid (line 597) | public bool IsValid()
    method Apply (line 602) | public void Apply()
    method ApplyChanges (line 618) | public void ApplyChanges(XmlNode node)
    method cbChartType_SelectedIndexChanged (line 724) | private void cbChartType_SelectedIndexChanged(object sender, System.Ev...
    method cbVector_SelectedIndexChanged (line 787) | private void cbVector_SelectedIndexChanged(object sender, EventArgs e)
    method cbSubType_SelectedIndexChanged (line 792) | private void cbSubType_SelectedIndexChanged(object sender, System.Even...
    method cbPalette_SelectedIndexChanged (line 797) | private void cbPalette_SelectedIndexChanged(object sender, System.Even...
    method cbRenderElement_SelectedIndexChanged (line 802) | private void cbRenderElement_SelectedIndexChanged(object sender, Syste...
    method tbPercentWidth_ValueChanged (line 807) | private void tbPercentWidth_ValueChanged(object sender, System.EventAr...
    method tbNoRows_TextChanged (line 812) | private void tbNoRows_TextChanged(object sender, System.EventArgs e)
    method cbDataSet_SelectedIndexChanged (line 817) | private void cbDataSet_SelectedIndexChanged(object sender, System.Even...
    method chkPageBreakStart_CheckedChanged (line 822) | private void chkPageBreakStart_CheckedChanged(object sender, System.Ev...
    method chkPageBreakEnd_CheckedChanged (line 827) | private void chkPageBreakEnd_CheckedChanged(object sender, System.Even...
    method cbChartData_Changed (line 832) | private void cbChartData_Changed(object sender, System.EventArgs e)
    method bDataExpr_Click (line 836) | private void bDataExpr_Click(object sender, System.EventArgs e)
    method chkDataLabel_CheckedChanged (line 889) | private void chkDataLabel_CheckedChanged(object sender, EventArgs e)
    method bDataLabelExpr_Click (line 894) | private void bDataLabelExpr_Click(object sender, EventArgs e)
    method chkToolTip_CheckedChanged (line 912) | private void chkToolTip_CheckedChanged(object sender, EventArgs e)
    method checkBox1_CheckedChanged (line 917) | private void checkBox1_CheckedChanged(object sender, EventArgs e)
    method txtYToolFormat_TextChanged (line 922) | private void txtYToolFormat_TextChanged(object sender, EventArgs e)
    method txtXToolFormat_TextChanged (line 927) | private void txtXToolFormat_TextChanged(object sender, EventArgs e)

FILE: RdlDesign/ChartLegendCtl.cs
  class ChartLegendCtl (line 16) | internal class ChartLegendCtl : System.Windows.Forms.UserControl, IProperty
    method ChartLegendCtl (line 32) | internal ChartLegendCtl(DesignXmlDraw dxDraw, List<XmlNode> ris)
    method InitValues (line 43) | private void InitValues()
    method Dispose (line 58) | protected override void Dispose( bool disposing )
    method InitializeComponent (line 75) | private void InitializeComponent()
    method IsValid (line 155) | public bool IsValid()
    method Apply (line 160) | public void Apply()
    method ApplyChanges (line 174) | public void ApplyChanges(XmlNode node)
    method cbPosition_SelectedIndexChanged (line 194) | private void cbPosition_SelectedIndexChanged(object sender, System.Eve...
    method cbLayout_SelectedIndexChanged (line 199) | private void cbLayout_SelectedIndexChanged(object sender, System.Event...
    method chkVisible_CheckedChanged (line 204) | private void chkVisible_CheckedChanged(object sender, System.EventArgs e)
    method chkInsidePlotArea_CheckedChanged (line 209) | private void chkInsidePlotArea_CheckedChanged(object sender, System.Ev...

FILE: RdlDesign/CodeCtl.cs
  class CodeCtl (line 23) | internal class CodeCtl : System.Windows.Forms.UserControl, IProperty
    method CodeCtl (line 38) | internal CodeCtl(DesignXmlDraw dxDraw)
    method InitValues (line 48) | private void InitValues()
    method Dispose (line 72) | protected override void Dispose( bool disposing )
    method InitializeComponent (line 89) | private void InitializeComponent()
    method IsValid (line 154) | public bool IsValid()
    method Apply (line 159) | public void Apply()
    method bCheckSyntax_Click (line 168) | private void bCheckSyntax_Click(object sender, System.EventArgs e)
    method CheckAssembly (line 173) | private void CheckAssembly()
    method lbErrors_SelectedIndexChanged (line 272) | private void lbErrors_SelectedIndexChanged(object sender, System.Event...
    method Goto (line 294) | public void Goto(int nLine)

FILE: RdlDesign/ColorPicker.cs
  class ColorPicker (line 10) | public class ColorPicker : ComboBox
    method ColorPicker (line 17) | public ColorPicker()
    method OnDrawItem (line 46) | protected override void OnDrawItem(DrawItemEventArgs e)
    method OnDropDown (line 72) | protected override void OnDropDown(System.EventArgs e)

FILE: RdlDesign/ColorPickerPopup.Designer.cs
  class ColorPickerPopup (line 9) | public partial class ColorPickerPopup : System.Windows.Forms.Form
    method InitializeComponent (line 16) | private void InitializeComponent()
    method Dispose (line 58) | protected override void Dispose( bool disposing )

FILE: RdlDesign/ColorPickerPopup.cs
  class ColorPickerPopup (line 13) | public partial class ColorPickerPopup
    method ColorPickerPopup (line 18) | public ColorPickerPopup(ColorPicker cp)
    method OnPaint (line 29) | protected override void OnPaint(PaintEventArgs e)
    method lbColors_Hide (line 54) | private void lbColors_Hide(object sender, EventArgs e)
    method ColorPickerPopup_MouseDown (line 59) | private void ColorPickerPopup_MouseDown(object sender, MouseEventArgs e)
    method ColorPickerPopup_MouseMove (line 73) | private void ColorPickerPopup_MouseMove(object sender, MouseEventArgs e)
    method ColorPickerPopup_Shown (line 107) | private void ColorPickerPopup_Shown(object sender, EventArgs e)
    method ColorPickerPopup_KeyPress (line 112) | private void ColorPickerPopup_KeyPress(object sender, KeyPressEventArg...
    method ColorPickerPopup_Load (line 119) | private void ColorPickerPopup_Load(object sender, EventArgs e)

FILE: RdlDesign/Conversions.cs
  class Conversions (line 8) | public class Conversions
    method MeasurementTypeAsHundrethsOfAnInch (line 11) | public static int MeasurementTypeAsHundrethsOfAnInch(string value)

FILE: RdlDesign/CustomReportItemCtl.cs
  class CustomReportItemCtl (line 20) | internal class CustomReportItemCtl : System.Windows.Forms.UserControl, I...
    method CustomReportItemCtl (line 33) | internal CustomReportItemCtl(DesignXmlDraw dxDraw, List<XmlNode> repor...
    method InitValues (line 45) | private void InitValues()
    method Dispose (line 69) | protected override void Dispose( bool disposing )
    method InitializeComponent (line 86) | private void InitializeComponent()
    method IsValid (line 117) | public bool IsValid()
    method Apply (line 122) | public void Apply()
    method bExpr_Click (line 146) | private void bExpr_Click(object sender, EventArgs e)

FILE: RdlDesign/DataSetRowsCtl.Designer.cs
  class DataSetRowsCtl (line 3) | partial class DataSetRowsCtl
    method Dispose (line 13) | protected override void Dispose( bool disposing )
    method InitializeComponent (line 30) | private void InitializeComponent()

FILE: RdlDesign/DataSetRowsCtl.cs
  class DataSetRowsCtl (line 20) | internal partial class DataSetRowsCtl : System.Windows.Forms.UserControl...
    method DataSetRowsCtl (line 27) | internal DataSetRowsCtl(DesignXmlDraw dxDraw, XmlNode dsNode, DataSetV...
    method InitValues (line 39) | private void InitValues()
    method CreateDataTable (line 63) | private void CreateDataTable()
    method PopulateRows (line 84) | private void PopulateRows(XmlNode rows)
    method IsValid (line 148) | public bool IsValid()
    method Apply (line 158) | public void Apply()
    method bDelete_Click (line 180) | private void bDelete_Click(object sender, System.EventArgs e)
    method bUp_Click (line 185) | private void bUp_Click(object sender, System.EventArgs e)
    method bDown_Click (line 198) | private void bDown_Click(object sender, System.EventArgs e)
    method SwapRow (line 213) | private void SwapRow(DataRow tdr, DataRow fdr)
    method chkRowsFile_CheckedChanged (line 225) | private void chkRowsFile_CheckedChanged(object sender, System.EventArg...
    method bRowsFile_Click (line 236) | private void bRowsFile_Click(object sender, System.EventArgs e)
    method DidFieldsChange (line 262) | private bool DidFieldsChange()
    method GetXmlData (line 288) | private XmlNode GetXmlData()
    method DataSetRowsCtl_VisibleChanged (line 322) | private void DataSetRowsCtl_VisibleChanged(object sender, System.Event...
    method bClear_Click (line 337) | private void bClear_Click(object sender, System.EventArgs e)
    method bLoad_Click (line 342) | private void bLoad_Click(object sender, System.EventArgs e)

FILE: RdlDesign/DataSetsCtl.Designer.cs
  class DataSetsCtl (line 6) | partial class DataSetsCtl
    method Dispose (line 16) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 33) | private void InitializeComponent()

FILE: RdlDesign/DataSetsCtl.cs
  class DataSetsCtl (line 15) | internal partial class DataSetsCtl : System.Windows.Forms.UserControl, I...
    method DataSetsCtl (line 22) | internal DataSetsCtl(DesignXmlDraw dxDraw, XmlNode dsNode)
    method InitValues (line 39) | private void InitValues()
    method SetupScintilla (line 135) | private void SetupScintilla()
    method IsValid (line 140) | public bool IsValid()
    method Apply (line 151) | public void Apply()
    method tbDSName_TextChanged (line 217) | private void tbDSName_TextChanged(object sender, System.EventArgs e)
    method cbDataSource_SelectedIndexChanged (line 222) | private void cbDataSource_SelectedIndexChanged(object sender, System.E...
    method tbSQL_TextChanged (line 227) | private void tbSQL_TextChanged(object sender, System.EventArgs e)
    method bDeleteField_Click (line 232) | private void bDeleteField_Click(object sender, System.EventArgs e)
    method bRefresh_Click (line 239) | private void bRefresh_Click(object sender, System.EventArgs e)
    method bEditSQL_Click (line 265) | private void bEditSQL_Click(object sender, System.EventArgs e)
    method tbTimeout_ValueChanged (line 282) | private void tbTimeout_ValueChanged(object sender, System.EventArgs e)
  class DataSetValues (line 288) | internal class DataSetValues
    method DataSetValues (line 299) | internal DataSetValues(string name)
    method ToString (line 346) | override public string ToString()

FILE: RdlDesign/DesignCtl.Designer.cs
  class DesignCtl (line 9) | public partial class DesignCtl : System.Windows.Forms.UserControl
    method InitializeComponent (line 146) | private void InitializeComponent()

FILE: RdlDesign/DesignCtl.cs
  class DesignCtl (line 24) | public partial class DesignCtl
    method DesignCtl (line 61) | public DesignCtl()
    method SignalReportChanged (line 115) | public void SignalReportChanged()
    method SignalSelectionMoved (line 120) | public void SignalSelectionMoved()
    method ClearUndo (line 242) | public void ClearUndo()
    method Undo (line 251) | public void Undo()
    method Redo (line 282) | public void Redo()
    method StartUndoGroup (line 296) | public void StartUndoGroup(string description)
    method EndUndoGroup (line 301) | public void EndUndoGroup(bool keepChanges)
    method Align (line 306) | public void Align(TextAlignEnum ta)
    method AlignLefts (line 318) | public void AlignLefts()
    method AlignRights (line 338) | public void AlignRights()
    method AlignCenters (line 372) | public void AlignCenters()
    method HorizontalCenterInsideContainer (line 415) | public void HorizontalCenterInsideContainer()
    method VerticalCenterInsideContainer (line 471) | public void VerticalCenterInsideContainer()
    method AlignTops (line 505) | public void AlignTops()
    method AlignBottoms (line 525) | public void AlignBottoms()
    method AlignMiddles (line 559) | public void AlignMiddles()
    method SizeHeights (line 594) | public void SizeHeights()
    method SizeWidths (line 613) | public void SizeWidths()
    method SizeBoth (line 632) | public void SizeBoth()
    method HorzSpacing (line 657) | void HorzSpacing(float diff)
    method HorzSpacingDiff (line 683) | float HorzSpacingDiff()
    method HorzSpacingMakeEqual (line 703) | public void HorzSpacingMakeEqual()
    method HorzSpacingIncrease (line 711) | public void HorzSpacingIncrease()
    method HorzSpacingDecrease (line 717) | public void HorzSpacingDecrease()
    method HorzSpacingMakeZero (line 725) | public void HorzSpacingMakeZero()
    method VertSpacing (line 730) | void VertSpacing(float diff)
    method VertSpacingDiff (line 756) | float VertSpacingDiff()
    method VertSpacingMakeEqual (line 776) | public void VertSpacingMakeEqual()
    method VertSpacingIncrease (line 784) | public void VertSpacingIncrease()
    method VertSpacingDecrease (line 790) | public void VertSpacingDecrease()
    method VertSpacingMakeZero (line 798) | public void VertSpacingMakeZero()
    method SetPadding (line 803) | public void SetPadding(string name, int diff)
    method Cut (line 829) | public void Cut()
    method Copy (line 841) | public void Copy()
    method Clear (line 846) | public void Clear()
    method Delete (line 851) | public void Delete()
    method Paste (line 865) | public void Paste()
    method SelectAll (line 870) | public void SelectAll()
    method ApplyStyleToSelected (line 998) | public void ApplyStyleToSelected(string name, string v)
    method SetSelectedText (line 1009) | public void SetSelectedText(string v)
    method BuildContextMenus (line 1025) | private void BuildContextMenus()
    method BuildContextMenusCustom (line 1030) | private void BuildContextMenusCustom(ToolStripDropDownItem menuItem)
    method DrawPanelPaint (line 1074) | private async void DrawPanelPaint(object sender, System.Windows.Forms....
    method Internal_DrawPanelPaint (line 1094) | private async Task Internal_DrawPanelPaint()
    method CreateEmptyReportDoc (line 1134) | private void CreateEmptyReportDoc()
    method DrawPanelResize (line 1142) | private void DrawPanelResize(object sender, EventArgs e)
    method PointsX (line 1149) | internal float PointsX(float x)		// pixels to points
    method PointsY (line 1154) | internal float PointsY(float y)
    method PixelsX (line 1159) | internal int PixelsX(float x)		// points to pixels
    method PixelsY (line 1164) | internal int PixelsY(float y)
    method SetScrollControls (line 1170) | internal void SetScrollControls()
    method SetScrollControlsV (line 1182) | private void SetScrollControlsV()
    method SetScrollControlsH (line 1212) | private void SetScrollControlsH()
    method HorizontalScroll (line 1243) | private new void HorizontalScroll(object sender, System.Windows.Forms....
    method VerticalScroll (line 1253) | private new void VerticalScroll(object sender, System.Windows.Forms.Sc...
    method DrawPanelMouseUp (line 1263) | private void DrawPanelMouseUp(object sender, MouseEventArgs E)
    method DrawPanelContextMenu (line 1303) | private void DrawPanelContextMenu(Point p)
    method DrawPanelContextMenuChart (line 1323) | private void DrawPanelContextMenuChart(Point p, XmlNode riNode)
    method DrawPanelContextMenuDefault (line 1372) | private void DrawPanelContextMenuDefault(Point p)
    method DrawPanelContextMenuMatrix (line 1377) | private void DrawPanelContextMenuMatrix(Point p, XmlNode riNode)
    method DrawPanelContextMenuSubreport (line 1424) | private void DrawPanelContextMenuSubreport(Point p, XmlNode sr)
    method DrawPanelContextMenuTable (line 1429) | private void DrawPanelContextMenuTable(Point p, XmlNode riNode)
    method DrawPanelMouseMove (line 1464) | private void DrawPanelMouseMove(object sender, MouseEventArgs E)
    method DrawPanelMouseDown (line 1616) | private void DrawPanelMouseDown(object sender, MouseEventArgs E)
    method SetSelection (line 1667) | internal void SetSelection(XmlNode node)
    method DrawPanelMouseDownRubberBand (line 1676) | private bool DrawPanelMouseDownRubberBand(object sender, MouseEventArg...
    method DrawPanelMouseDownTableColumnResize (line 1732) | private bool DrawPanelMouseDownTableColumnResize(object sender, MouseE...
    method DrawPanelMouseDownTableRowResize (line 1741) | private bool DrawPanelMouseDownTableRowResize(object sender, MouseEven...
    method DrawPanelMouseDownInsert (line 1750) | private bool DrawPanelMouseDownInsert(HitLocation hl, object sender, M...
    method DrawPanelDoubleClick (line 1808) | private void DrawPanelDoubleClick(object sender, EventArgs e)
    method DrawPanelRubberBand (line 1813) | private void DrawPanelRubberBand(Point p1, Point p2)
    method DrawPanelRectFromPoints (line 1828) | private Rectangle DrawPanelRectFromPoints(Point p1, Point p2)
    method DrawPanelSetCursor (line 1856) | private void DrawPanelSetCursor(XmlNode node, HitLocationEnum hle)
    method DrawPanelMouseWheel (line 1914) | private void DrawPanelMouseWheel(object sender, MouseEventArgs E)
    method DrawPanelKeyDown (line 1950) | private void DrawPanelKeyDown(object sender, KeyEventArgs e)
    method DesignCtl_Layout (line 2050) | private void DesignCtl_Layout(object sender, LayoutEventArgs e)
    method menuCopy_Click (line 2063) | private void menuCopy_Click(object sender, EventArgs e)
    method GetCopy (line 2068) | private string GetCopy()
    method menuPaste_Click (line 2109) | private void menuPaste_Click(object sender, EventArgs e)
    method DoPaste (line 2143) | private void DoPaste(XmlNode lNode, PointF p)
    method menuDelete_Click (line 2195) | private void menuDelete_Click(object sender, EventArgs e)
    method menuInsertChart_Click (line 2200) | private void menuInsertChart_Click(object sender, EventArgs e)
    method menuInsertCustomReportItem_Click (line 2266) | private void menuInsertCustomReportItem_Click(object sender, EventArgs e)
    method menuInsertCustomReportItem (line 2272) | private void menuInsertCustomReportItem(object sender, EventArgs e, st...
    method menuInsertGrid_Click (line 2306) | private void menuInsertGrid_Click(object sender, EventArgs e)
    method menuInsertLine_Click (line 2525) | private void menuInsertLine_Click(object sender, EventArgs e)
    method menuInsertList_Click (line 2531) | private void menuInsertList_Click(object sender, EventArgs e)
    method menuInsertImage_Click (line 2548) | private void menuInsertImage_Click(object sender, EventArgs e)
    method menuInsertMatrix_Click (line 2554) | private void menuInsertMatrix_Click(object sender, EventArgs e)
    method menuInsertRectangle_Click (line 2614) | private void menuInsertRectangle_Click(object sender, EventArgs e)
    method menuInsertReportItem (line 2620) | private void menuInsertReportItem(object sender, EventArgs e, string r...
    method menuInsertReportItem (line 2630) | private void menuInsertReportItem(HitLocation hl, string reportItem)
    method menuInsertSubreport_Click (line 2661) | private void menuInsertSubreport_Click(object sender, EventArgs e)
    method menuInsertTable_Click (line 2678) | private void menuInsertTable_Click(object sender, EventArgs e)
    method menuInsertTextbox_Click (line 2738) | private void menuInsertTextbox_Click(object sender, EventArgs e)
    method menuOpenSubreport_Click (line 2745) | private void menuOpenSubreport_Click(object sender, EventArgs e)
    method menuSelectAll_Click (line 2762) | private void menuSelectAll_Click(object sender, EventArgs e)
    method doSelectAll (line 2767) | private void doSelectAll()
    method menuProperties_Click (line 2786) | internal void menuProperties_Click(object sender, EventArgs e)
    method menuProperties_Click (line 2791) | internal void menuProperties_Click()
    method menuChartDeleteGrouping_Click (line 2804) | private void menuChartDeleteGrouping_Click(object sender, EventArgs e)
    method menuChartEditGrouping_Click (line 2827) | private void menuChartEditGrouping_Click(object sender, EventArgs e)
    method menuChartInsertCategoryGrouping_Click (line 2860) | private void menuChartInsertCategoryGrouping_Click(object sender, Even...
    method menuChartInsertSeriesGrouping_Click (line 2898) | private void menuChartInsertSeriesGrouping_Click(object sender, EventA...
    method menuPropertiesLegend_Click (line 2934) | private void menuPropertiesLegend_Click(object sender, EventArgs e)
    method menuPropertiesCategoryAxis_Click (line 2939) | private void menuPropertiesCategoryAxis_Click(object sender, EventArgs e)
    method menuPropertiesValueAxis_Click (line 2944) | private void menuPropertiesValueAxis_Click(object sender, EventArgs e)
    method menuPropertiesCategoryAxisTitle_Click (line 2949) | private void menuPropertiesCategoryAxisTitle_Click(object sender, Even...
    method menuPropertiesValueAxisTitle_Click (line 2954) | private void menuPropertiesValueAxisTitle_Click(object sender, EventAr...
    method menuPropertiesValueAxis2Title_Click (line 2959) | private void menuPropertiesValueAxis2Title_Click(object sender, EventA...
    method menuPropertiesChartTitle_Click (line 2964) | private void menuPropertiesChartTitle_Click(object sender, EventArgs e)
    method menuMatrixProperties_Click (line 2969) | private void menuMatrixProperties_Click(object sender, EventArgs e)
    method menuMatrixDelete_Click (line 2998) | private void menuMatrixDelete_Click(object sender, EventArgs e)
    method menuMatrixDeleteGroup_Click (line 3016) | private void menuMatrixDeleteGroup_Click(object sender, EventArgs e)
    method menuMatrixEditGroup_Click (line 3040) | private void menuMatrixEditGroup_Click(object sender, EventArgs e)
    method menuMatrixInsertColumnGroup_Click (line 3073) | private void menuMatrixInsertColumnGroup_Click(object sender, EventArg...
    method menuMatrixInsertRowGroup_Click (line 3107) | private void menuMatrixInsertRowGroup_Click(object sender, EventArgs e)
    method menuTableDeleteColumn_Click (line 3141) | private void menuTableDeleteColumn_Click(object sender, EventArgs e)
    method menuTableDelete_Click (line 3160) | private void menuTableDelete_Click(object sender, EventArgs e)
    method menuTableDeleteRow_Click (line 3178) | private void menuTableDeleteRow_Click(object sender, EventArgs e)
    method menuTableDeleteGroup_Click (line 3196) | private void menuTableDeleteGroup_Click(object sender, EventArgs e)
    method menuTableEditGroup_Click (line 3219) | private void menuTableEditGroup_Click(object sender, EventArgs e)
    method menuTableInsertColumnBefore_Click (line 3252) | private void menuTableInsertColumnBefore_Click(object sender, EventArg...
    method menuTableInsertColumnAfter_Click (line 3268) | private void menuTableInsertColumnAfter_Click(object sender, EventArgs e)
    method menuTableInsertGroup_Click (line 3284) | private void menuTableInsertGroup_Click(object sender, EventArgs e)
    method menuTableInsertRowBefore_Click (line 3321) | private void menuTableInsertRowBefore_Click(object sender, EventArgs e)
    method menuTableInsertRowAfter_Click (line 3338) | private void menuTableInsertRowAfter_Click(object sender, EventArgs e)
    method menuTableProperties_Click (line 3354) | private void menuTableProperties_Click(object sender, EventArgs e)
    method DoPropertyDialog (line 3385) | private void DoPropertyDialog(PropertyTypeEnum type)
    method SetFocus (line 3406) | internal void SetFocus()
    method menuContext_Popup (line 3411) | private void menuContext_Popup(object sender, EventArgs e)
    method Dispose (line 3441) | protected override void Dispose(bool disposing)
  class SubReportEventArgs (line 3453) | public class SubReportEventArgs : EventArgs
    method SubReportEventArgs (line 3456) | public SubReportEventArgs(string name) : base()
  class HeightEventArgs (line 3467) | public class HeightEventArgs : EventArgs
    method HeightEventArgs (line 3471) | public HeightEventArgs(XmlNode node, string height)
  class MouseEventArgsE (line 3491) | public class MouseEventArgsE : EventArgs
    method MouseEventArgsE (line 3512) | public MouseEventArgsE(MouseEventArgs B, float ScaleX, float ScaleY)

FILE: RdlDesign/DesignEditLines.cs
  class DesignEditLines (line 18) | public class DesignEditLines : UserControl, System.ComponentModel.ISuppo...
    method DesignEditLines (line 24) | public DesignEditLines()
    method DesignEditLinesPaint (line 46) | private void DesignEditLinesPaint(object sender, System.Windows.Forms....
    method Lines_Draw (line 51) | private void Lines_Draw(Graphics g)
    method editor_Resize (line 97) | private void editor_Resize(object sender, EventArgs e)
    method editor_VScroll (line 105) | private void editor_VScroll(object sender, EventArgs e)
    method editor_TextChanged (line 113) | private void editor_TextChanged(object sender, System.EventArgs e)
    method BeginInit (line 132) | void System.ComponentModel.ISupportInitialize.BeginInit()
    method EndInit (line 137) | void System.ComponentModel.ISupportInitialize.EndInit()

FILE: RdlDesign/DesignRuler.cs
  class DesignRuler (line 19) | internal class DesignRuler : UserControl, System.ComponentModel.ISupport...
    method DesignRuler (line 32) | internal DesignRuler()
    method DesignRulerPaint (line 94) | private void DesignRulerPaint(object sender, System.Windows.Forms.Pain...
    method HeightChanged (line 105) | private void HeightChanged(object sender, HeightEventArgs e)
    method ScrollChanged (line 119) | private void ScrollChanged(object sender, System.EventArgs e)
    method Ruler_DrawHorz (line 125) | private void Ruler_DrawHorz(Graphics g)
    method Ruler_DrawVert (line 215) | private void Ruler_DrawVert(Graphics g)
    method Ruler_DrawVertPart (line 322) | private void Ruler_DrawVertPart(Graphics g, Font f, StringFormat df, f...
    method BeginInit (line 383) | void System.ComponentModel.ISupportInitialize.BeginInit()
    method EndInit (line 388) | void System.ComponentModel.ISupportInitialize.EndInit()

FILE: RdlDesign/DesignXmlDraw.cs
  class DesignXmlDraw (line 26) | public class DesignXmlDraw: UserControl
    method DesignXmlDraw (line 84) | internal DesignXmlDraw():base()
    method IsInputKey (line 117) | override protected bool IsInputKey(Keys keyData)
    method GetRectangle (line 241) | internal RectangleF GetRectangle(XmlNode xNode)
    method GetRectReportPrimaryRegions (line 263) | private float GetRectReportPrimaryRegions(XmlNode xNode, float xLoc, f...
    method GetRectReportItems (line 292) | private void GetRectReportItems(XmlNode xNode, RectangleF r)
    method GetRectRI (line 332) | private RectangleF GetRectRI(XmlNode xNode, RectangleF r)
    method GetRectListRectangle (line 338) | private RectangleF GetRectListRectangle(XmlNode xNode, RectangleF r)
    method GetRectMatrix (line 350) | private RectangleF GetRectMatrix(XmlNode xNode, RectangleF r)
    method GetRectTable (line 361) | private RectangleF GetRectTable(XmlNode xNode, RectangleF r)
    method GetReportItemContainer (line 411) | internal XmlNode GetReportItemContainer(XmlNode xNode)
    method GetReportItemDataRegionContainer (line 432) | internal XmlNode GetReportItemDataRegionContainer(XmlNode xNode)
    method IsDataRegion (line 444) | internal bool IsDataRegion(XmlNode node)
    method GetReportItemDataRegionFields (line 461) | internal string[] GetReportItemDataRegionFields(XmlNode xNode, bool bE...
    method ApplyStyleToSelected (line 478) | internal void ApplyStyleToSelected(string name, string v)
    method DataSourceName (line 505) | internal XmlNode DataSourceName(string dsn)
    method GetFields (line 518) | internal string[] GetFields(string dataSetName, bool asExpression)
    method GetReportParameterDefaultValue (line 523) | internal string GetReportParameterDefaultValue(string parameterExpress...
    method GetReportParameters (line 528) | internal string[] GetReportParameters(bool asExpression)
    method GetReportModules (line 538) | internal string[] GetReportModules(bool asExpression)
    method GetReportClasses (line 548) | internal string[] GetReportClasses(bool asExpression)
    method SelectionPosition (line 554) | internal PointF SelectionPosition(XmlNode xNode)
    method SelectionSize (line 560) | internal SizeF SelectionSize(XmlNode xNode)
    method AddRemoveSelection (line 607) | internal void AddRemoveSelection(XmlNode node)
    method AddSelection (line 616) | internal void AddSelection(XmlNode node)
    method ClearSelected (line 624) | internal void ClearSelected()
    method DeleteSelected (line 633) | internal void DeleteSelected()
    method IsNodeSelected (line 647) | internal bool IsNodeSelected(XmlNode node)
    method RemoveSelection (line 661) | internal void RemoveSelection(XmlNode node)
    method SelectNext (line 667) | internal bool SelectNext(bool bReverse)
    method CountChildren (line 683) | static internal int CountChildren(XmlNode node, params string[] names)
    method CountChildren (line 688) | static private int CountChildren(XmlNode node, string[] names, int index)
    method FindCreateNextInHierarchy (line 703) | internal XmlNode FindCreateNextInHierarchy(XmlNode xNode, params strin...
    method FindNextInHierarchy (line 726) | static internal XmlNode FindNextInHierarchy(XmlNode xNode, params stri...
    method SetSelection (line 772) | internal void SetSelection(XmlNode node, bool bGroup)
    method RightMost (line 814) | private float RightMost(XmlNode xNode)
    method RightMostRI (line 835) | private float RightMostRI(XmlNode xNode)
    method DeleteMatrix (line 876) | internal bool DeleteMatrix(XmlNode node)
    method DeleteReportItem (line 893) | internal bool DeleteReportItem(XmlNode node)
    method DeleteTable (line 941) | internal bool DeleteTable(XmlNode node)
    method Draw (line 958) | internal async Task Draw(Graphics ag, float hScroll, float vScroll, Sy...
    method ProcessReport (line 994) | private void ProcessReport(XmlNode xNode)
    method CreatePrimaryRegion (line 1061) | private XmlNode CreatePrimaryRegion(string name)
    method DrawReportPrimaryRegions (line 1077) | private async Task<float> DrawReportPrimaryRegions(XmlNode xNode, floa...
    method DrawReportItems (line 1174) | private async Task DrawReportItems(XmlNode xNode, RectangleF r)
    method DrawReportItemsOrdered (line 1242) | private List<XmlNode> DrawReportItemsOrdered(XmlNode xNode)
    method DrawReportItemsOrdered (line 1247) | private List<XmlNode> DrawReportItemsOrdered(XmlNode xNode, bool reverse)
    method GetReportItemRect (line 1269) | public RectangleF GetReportItemRect(XmlNode xNode, RectangleF r)
    method GetOutOfBoundsRightReportItemRect (line 1287) | private RectangleF GetOutOfBoundsRightReportItemRect(XmlNode xNode, Re...
    method GetOutOfBoundsBottomReportItemRect (line 1313) | private RectangleF GetOutOfBoundsBottomReportItemRect(XmlNode xNode, R...
    method GetReportItemRect (line 1342) | internal RectangleF GetReportItemRect(XmlNode xNode)
    method GetLineEnds (line 1374) | private void GetLineEnds(XmlNode xNode, RectangleF r, out PointF l1, o...
    method SetReportItemHeightWidth (line 1408) | private void SetReportItemHeightWidth(XmlNode xNode, float height, flo...
    method SetReportItemXY (line 1414) | private void SetReportItemXY(XmlNode xNode, float x, float y)
    method RemoveReportItemLTHW (line 1420) | private void RemoveReportItemLTHW(XmlNode ri)
    method DrawChart (line 1436) | private async Task<RectangleF> DrawChart(XmlNode xNode, RectangleF r)
    method GetCustomReportItemType (line 1465) | internal string GetCustomReportItemType(string type)
    method DrawCustomReportItem (line 1502) | private async Task<RectangleF> DrawCustomReportItem(XmlNode xNode, Rec...
    method DrawImage (line 1549) | private async Task<RectangleF> DrawImage(XmlNode xNode, RectangleF r)
    method DrawImageEmbedded (line 1593) | private bool DrawImageEmbedded(XmlNode iNode, XmlNode sNode, XmlNode v...
    method GetImageEmbedded (line 1650) | private System.Drawing.Image GetImageEmbedded(string emName)
    method DrawImageExternal (line 1698) | private async Task<bool> DrawImageExternal(XmlNode iNode, XmlNode sNod...
    method GetSizing (line 1745) | ImageSizingEnum GetSizing(XmlNode iNode)
    method DrawImageSized (line 1754) | private bool DrawImageSized(XmlNode iNode, Image im, StyleInfo si, Rec...
    method DrawImageSized (line 1759) | private bool DrawImageSized(XmlNode iNode, ImageSizingEnum ise, Image ...
    method DrawImageSized (line 1764) | private bool DrawImageSized(XmlNode iNode, Image im, StyleInfo si, Rec...
    method DrawImageSized (line 1770) | private bool DrawImageSized(XmlNode iNode, ImageSizingEnum ise, Image ...
    method DrawList (line 1869) | private async Task<RectangleF> DrawList(XmlNode xNode, RectangleF r)
    method DrawLine (line 1884) | private async Task<RectangleF> DrawLine(XmlNode xNode, RectangleF r)
    method DrawMatrix (line 1903) | private async Task<RectangleF> DrawMatrix(XmlNode xNode, RectangleF r)
    method DrawRectangle (line 1935) | private async Task<RectangleF> DrawRectangle(XmlNode xNode, RectangleF r)
    method DrawSelected (line 1950) | private void DrawSelected(XmlNode xNode, RectangleF r)
    method HighLightTableRegion (line 1997) | private void HighLightTableRegion(XmlNode xNode,RectangleF r)
    method DrawSelectedLine (line 2069) | private void DrawSelectedLine(XmlNode xNode, RectangleF r)
    method DrawOutOfBounds (line 2083) | private async Task DrawOutOfBounds(XmlNode xNode, RectangleF r)
    method DrawSubreport (line 2104) | private async Task<RectangleF> DrawSubreport(XmlNode xNode, RectangleF r)
    method DrawTable (line 2114) | private async Task<RectangleF> DrawTable(XmlNode xNode, RectangleF r)
    method GetTableColumnCount (line 2168) | private int GetTableColumnCount(XmlNode tblNode)
    method GetTableSections (line 2182) | private Dictionary<string, List<XmlNode>> GetTableSections(XmlNode xNode)
    method GetTableRows (line 2237) | private List<XmlNode> GetTableRows(XmlNode xNode)
    method GetTableGroupsRows (line 2273) | private void GetTableGroupsRows(XmlNode xNode, List<XmlNode> trs, stri...
    method GetTableGroupRowsNodes (line 2302) | private Dictionary<string,List<XmlNode>> GetTableGroupRowsNodes(XmlNod...
    method GetTableRowsAdd (line 2329) | private void GetTableRowsAdd(XmlNode xNode, List<XmlNode> trs)
    method GetTableRowsNodes (line 2342) | private List<XmlNode> GetTableRowsNodes(XmlNode xNode)
    method GetTableRowsHeight (line 2360) | private float GetTableRowsHeight(List<XmlNode> trs)
    method GetTableColumnWidths (line 2372) | private float[] GetTableColumnWidths(XmlNode xNode)
    method DrawTextbox (line 2392) | private async Task<RectangleF> DrawTextbox(XmlNode xNode, RectangleF r)
    method DrawMargins (line 2405) | private void DrawMargins(RectangleF behindPage)
    method GetNamedChildNode (line 2432) | internal XmlNode GetNamedChildNode(XmlNode xNode, string elementName, ...
    method GetNamedChildNode (line 2451) | internal XmlNode GetNamedChildNode(XmlNode xNode, string name)
    method GetCreateNamedChildNode (line 2471) | internal XmlNode GetCreateNamedChildNode(XmlNode xNode, string name)
    method GetCreateNamedChildNode (line 2489) | internal XmlNode GetCreateNamedChildNode(XmlNode xNode, string name, s...
    method GetStyleInfo (line 2505) | internal async Task<StyleInfo> GetStyleInfo(XmlNode xNode)
    method GetStyleColor (line 2608) | private Color GetStyleColor(string c)
    method GetStyleInfoBorderColor (line 2625) | private void GetStyleInfoBorderColor(XmlNode xNode, StyleInfo si)
    method GetStyleInfoBorderStyle (line 2663) | private void GetStyleInfoBorderStyle(XmlNode xNode, StyleInfo si)
    method GetBorderStyle (line 2700) | BorderStyleEnum GetBorderStyle(string v, BorderStyleEnum def)
    method GetStyleInfoBorderWidth (line 2714) | private void GetStyleInfoBorderWidth(XmlNode xNode, StyleInfo si)
    method GetStyleInfoBackgroundImage (line 2750) | private async Task GetStyleInfoBackgroundImage(XmlNode xNode, StyleInf...
    method GetSize (line 2860) | internal float GetSize(XmlNode pNode, string name)
    method GetSize (line 2868) | static internal float GetSize(string t)
    method DrawBackground (line 2937) | private void DrawBackground(System.Drawing.RectangleF rect, StyleInfo si)
    method DrawImageBackground (line 3007) | private void DrawImageBackground(PageImage pi, StyleInfo si, Rectangle...
    method DrawBorder (line 3079) | private void DrawBorder(StyleInfo si, RectangleF r)
    method DrawCircle (line 3098) | private void DrawCircle(Color c, BorderStyleEnum bs, float penWidth, f...
    method DrawLine (line 3143) | private void DrawLine(Color c, BorderStyleEnum bs, float w,
    method DrawString (line 3197) | private void DrawString(string text, StyleInfo si, RectangleF r, bool ...
    method PasteImage (line 3334) | internal void PasteImage(XmlNode parent, System.Drawing.Bitmap img, Po...
    method ReplaceReportItems (line 3387) | internal void ReplaceReportItems(HitLocation hl, string rItems)
    method PasteReportItems (line 3402) | internal void PasteReportItems(XmlNode parent, string rItems, PointF p)
    method PasteValidate (line 3478) | void PasteValidate(XmlNode parent, XmlNode pitems)
    method PasteValidateRecurse (line 3487) | void PasteValidateRecurse(XmlNode pitems)
    method ReplaceTableMatrixOrChart (line 3510) | internal XmlNode ReplaceTableMatrixOrChart(HitLocation hl, string rTable)
    method PasteTableMatrixOrChart (line 3525) | internal XmlNode PasteTableMatrixOrChart(XmlNode parent, string sTable...
    method PasteNewNames (line 3576) | private void PasteNewNames(XmlNode node)
    method SelectInRectangle (line 3618) | internal void SelectInRectangle(Rectangle r, float hScroll, float vScr...
    method SelectInReportItems (line 3679) | private void SelectInReportItems(XmlNode xNode, RectangleF r)
    method AdvancedLineCollision (line 3744) | private bool AdvancedLineCollision(PointF p1, PointF p2, RectangleF _hr)
    method IsIntersectingLineSegments (line 3778) | static bool IsIntersectingLineSegments(PointF a, PointF b, PointF c, P...
    method SelectInList (line 3793) | private void SelectInList(XmlNode xNode, RectangleF r)
    method SelectInMatrix (line 3808) | private void SelectInMatrix(XmlNode xNode, RectangleF r)
    method SelectInRectangle (line 3838) | private void SelectInRectangle(XmlNode xNode, RectangleF r)
    method SelectInTable (line 3853) | private void SelectInTable(XmlNode xNode, RectangleF r)
    method TableColumnResize (line 3908) | internal bool TableColumnResize(XmlNode tcNode, int xInc)
    method TableRowResize (line 3922) | internal bool TableRowResize(XmlNode trNode, int yInc)
    method HitContainer (line 3942) | internal HitLocation HitContainer(Point p, float hScroll, float vScroll)
    method HitNode (line 3960) | internal HitLocation HitNode(Point p, float hScroll, float vScroll)
    method HitNode (line 3972) | internal HitLocation HitNode(Point p, float hScroll, float vScroll, bo...
    method HitNodeTest (line 4045) | internal HitLocation HitNodeTest(RectangleF rf, PointF _HitPoint, XmlN...
    method ChangeHeight (line 4075) | internal bool ChangeHeight(XmlNode b, int inc, float minValue)
    method ChangeWidth (line 4101) | internal bool ChangeWidth(XmlNode b, int inc, float minValue)
    method HitReportItems (line 4121) | private HitLocation HitReportItems(XmlNode xNode, RectangleF r)
    method HitList (line 4167) | private HitLocation HitList(XmlNode xNode, RectangleF r)
    method HitLine (line 4172) | private HitLocation HitLine(XmlNode xNode, RectangleF r)
    method InsidePolygon (line 4222) | private bool InsidePolygon(PointF[] points, PointF p)
    method HitMatrix (line 4234) | private HitLocation HitMatrix(XmlNode xNode, RectangleF r)
    method HitMatrixColumnResize (line 4282) | private HitLocation HitMatrixColumnResize(XmlNode xNode, MatrixView ma...
    method HitMatrixRowResize (line 4351) | private HitLocation HitMatrixRowResize(XmlNode xNode, MatrixView matri...
    method HitRectangle (line 4420) | private HitLocation HitRectangle(XmlNode xNode, RectangleF r)
    method HitReportItem (line 4442) | private HitLocation HitReportItem(XmlNode xNode, RectangleF r)
    method HitTable (line 4497) | private HitLocation HitTable(XmlNode xNode, RectangleF r)
    method HitTableColumnResize (line 4572) | private HitLocation HitTableColumnResize(XmlNode xNode, RectangleF r, ...
    method HitTableRowResize (line 4614) | private HitLocation HitTableRowResize(XmlNode xNode, RectangleF r, Lis...
    method MoveReportItem (line 4639) | internal bool MoveReportItem(XmlNode b, int xInc, int yInc)
    method MoveSelectedItems (line 4701) | internal bool MoveSelectedItems(int xInc, int yInc, HitLocationEnum hle)
    method ResizeReportItem (line 4739) | internal bool ResizeReportItem(XmlNode xNode, int xInc, int yInc, HitL...
    method CreateElement (line 4899) | internal XmlElement CreateElement(XmlNode parent, string name, string ...
    method NameError (line 4933) | internal string NameError(XmlNode xNode, string name)
    method GroupingNameCheck (line 4938) | internal string GroupingNameCheck(XmlNode xNode, string name)
    method SetName (line 4943) | internal bool SetName(XmlNode xNode, string name)
    method SetGroupName (line 4948) | internal bool SetGroupName(XmlNode xNode, string name)
    method SetElementAttribute (line 4953) | internal void SetElementAttribute(XmlNode parent, string name, string ...
    method RemoveElement (line 4970) | internal void RemoveElement(XmlNode parent, string name)
    method RemoveElementAll (line 4980) | internal void RemoveElementAll(XmlNode parent, string name)
    method GetDataSetNameValue (line 4991) | internal string GetDataSetNameValue(XmlNode dataRegion)
    method GetElementAttribute (line 5015) | internal string GetElementAttribute(XmlNode parent, string name, strin...
    method GetElementValue (line 5024) | internal string GetElementValue(XmlNode parent, string name, string de...
    method SetElement (line 5033) | internal XmlNode SetElement(XmlNode parent, string name, string val)
    method SetTableCellColSpan (line 5043) | internal void SetTableCellColSpan(XmlNode tcell, string val)
    method GetReportNode (line 5097) | internal XmlNode GetReportNode()
    method GetReportItems (line 5102) | internal IEnumerable GetReportItems(string query)
    method DeleteChartGrouping (line 5132) | internal bool DeleteChartGrouping(XmlNode dynamic)
    method DeleteChartGrouping (line 5153) | internal bool DeleteChartGrouping(XmlNode chart, string gname)
    method GetChartCategoryGroupNames (line 5166) | internal string[] GetChartCategoryGroupNames(XmlNode chart)
    method GetChartSeriesGroupNames (line 5192) | internal string[] GetChartSeriesGroupNames(XmlNode chart)
    method GetChartGrouping (line 5218) | internal XmlNode GetChartGrouping(XmlNode chart, string gname)
    method GetChartGroupName (line 5231) | XmlNode GetChartGroupName(XmlNode chart, string gname, string search1,...
    method InsertChartCategoryGrouping (line 5251) | internal XmlNode InsertChartCategoryGrouping(XmlNode chart)
    method InsertChartSeriesGrouping (line 5267) | internal XmlNode InsertChartSeriesGrouping(XmlNode chart)
    method InMatrix (line 5283) | internal bool InMatrix(XmlNode node)
    method GetMatrixFromReportItem (line 5307) | internal XmlNode GetMatrixFromReportItem(XmlNode riNode)
    method GetMatrixColumnGroupNames (line 5323) | internal string[] GetMatrixColumnGroupNames(XmlNode riNode)
    method GetMatrixRowGroupNames (line 5355) | internal string[] GetMatrixRowGroupNames(XmlNode riNode)
    method InsertMatrixColumnGroup (line 5382) | internal XmlNode InsertMatrixColumnGroup(XmlNode node)
    method InsertMatrixRowGroup (line 5402) | internal XmlNode InsertMatrixRowGroup(XmlNode node)
    method DeleteMatrixGroup (line 5422) | internal bool DeleteMatrixGroup(XmlNode dynamic)
    method DeleteMatrixGroup (line 5440) | internal bool DeleteMatrixGroup(XmlNode riNode, string gname)
    method GetMatrixGroup (line 5466) | internal XmlNode GetMatrixGroup(XmlNode riNode, string gname)
    method GetMatrixColumnGroupFromName (line 5480) | internal XmlNode GetMatrixColumnGroupFromName(XmlNode matrix, string g...
    method GetMatrixRowGroupFromName (line 5500) | internal XmlNode GetMatrixRowGroupFromName(XmlNode matrix, string gname)
    method GetTableFromReportItem (line 5520) | internal XmlNode GetTableFromReportItem(XmlNode riNode)
    method GetTableCell (line 5535) | internal XmlNode GetTableCell(XmlNode node)
    method GetTableColumn (line 5552) | internal XmlNode GetTableColumn(XmlNode node)
    method GetTableRow (line 5591) | internal XmlNode GetTableRow(XmlNode node)
    method DeleteTableColumn (line 5608) | internal bool DeleteTableColumn(XmlNode node)
    method DeleteTableColumn (line 5652) | private void DeleteTableColumn(XmlNode sNode, int col)
    method GetTableColumnNumber (line 5698) | private int GetTableColumnNumber(XmlNode tcell)
    method DeleteTableRow (line 5719) | internal bool DeleteTableRow(XmlNode node)
    method DeleteTableGroup (line 5763) | internal bool DeleteTableGroup(XmlNode riNode, string gname)
    method GetTableGroup (line 5805) | internal XmlNode GetTableGroup(XmlNode riNode, string gname)
    method GetTableGroupNames (line 5835) | internal string[] GetTableGroupNames(XmlNode riNode)
    method InsertTableColumn (line 5868) | internal bool InsertTableColumn(XmlNode node, bool before)
    method InsertTableColumn (line 5930) | private void InsertTableColumn(XmlNode tcells, int col, bool before)
    method InsertTableColumn (line 5971) | private void InsertTableColumn(XmlNode tcells, XmlNode refCell, bool b...
    method InsertTableGroup (line 6003) | internal XmlNode InsertTableGroup(XmlNode node)
    method DeleteTableGroup (line 6024) | internal void DeleteTableGroup(XmlNode tgrp)
    method InsertTableRow (line 6044) | internal bool InsertTableRow(XmlNode node, bool before)
    method InsertTableRow (line 6120) | internal bool InsertTableRow(XmlNode tblRows)
    method InPageHeaderOrFooter (line 6157) | internal bool InPageHeaderOrFooter(XmlNode node)
    method InTable (line 6172) | internal bool InTable(XmlNode node)
    method InGrid (line 6189) | internal bool InGrid(XmlNode node)
    method TMParent (line 6206) | internal XmlNode TMParent(XmlNode node)
    method PixelsX (line 6218) | private int PixelsX(float x)		// points to pixels
    method PixelsY (line 6223) | private int PixelsY(float y)
    method PointsX (line 6228) | private float PointsX(float x)		// pixels to points
    method PointsY (line 6233) | private float PointsY(float y)
    method SectionBelongsTo (line 6243) | public string SectionBelongsTo(XmlNode node)
    method WidthOfContainer (line 6261) | public float WidthOfContainer(XmlNode node)
    method HeightOfContainer (line 6281) | public float HeightOfContainer(XmlNode node)
  type HitLocationEnum (line 6313) | internal enum HitLocationEnum
  class HitLocation (line 6331) | internal class HitLocation
    method HitLocation (line 6337) | internal HitLocation (XmlNode hn, XmlNode hc, HitLocationEnum location...
  class ReportItemSorter (line 6345) | internal class ReportItemSorter: IComparer<XmlNode>
    method ReportItemSorter (line 6348) | internal ReportItemSorter(DesignXmlDraw d)
    method Compare (line 6355) | public int Compare(XmlNode x, XmlNode y)
  class ReportItemReverseSorter (line 6367) | internal class ReportItemReverseSorter : IComparer<XmlNode>
    method ReportItemReverseSorter (line 6370) | [System.Diagnostics.DebuggerStepThrough]
    method Compare (line 6378) | [System.Diagnostics.DebuggerStepThrough]

FILE: RdlDesign/DesignerUtility.cs
  class DesignerUtility (line 24) | internal static class DesignerUtility
    method ColorFromHtml (line 26) | static internal Color ColorFromHtml(string sc, Color dc)
    method FillOdbcNames (line 43) | static internal void FillOdbcNames(ComboBox cbOdbcNames)
    method FormatXml (line 92) | static internal string FormatXml(string sDoc)
    method GetSharedConnectionInfo (line 109) | static internal bool GetSharedConnectionInfo(RdlUserControl dsr, strin...
    method GetSharedConnectionInfo (line 153) | static internal bool GetSharedConnectionInfo(RdlDesigner dsr, string f...
    method GetSqlData (line 195) | static internal void GetSqlData(string dataProvider, string connection...
    method GetConnnectionInfo (line 248) | static internal bool GetConnnectionInfo(DesignXmlDraw d, string ds, ou...
    method ExtractParameterNameFromParameterExpression (line 300) | public static string ExtractParameterNameFromParameterExpression(strin...
    method GetSqlColumns (line 312) | static internal List<SqlColumn> GetSqlColumns(DesignXmlDraw d, string ...
    method GetSqlColumns (line 325) | static internal List<SqlColumn> GetSqlColumns(DesignXmlDraw d, string ...
    method GetSqlColumns (line 371) | static internal List<SqlColumn> GetSqlColumns(string dataProvider, str...
    method GetSchemaInfo (line 425) | static internal List<SqlSchemaInfo> GetSchemaInfo(DesignXmlDraw d, str...
    method GetSchemaInfo (line 436) | static internal List<SqlSchemaInfo> GetSchemaInfo(string dataProvider,...
    method GetSchemaInfo (line 520) | static internal List<SqlSchemaInfo> GetSchemaInfo(System.Data.SqlClien...
    method GetSchemaInfo (line 559) | static internal List<SqlSchemaInfo> GetSchemaInfo(System.Data.OleDb.Ol...
    method GetSchemaInfo (line 589) | static internal List<SqlSchemaInfo> GetSchemaInfo(System.Data.Odbc.Odb...
    method NormalizeSqlName (line 619) | static internal string NormalizeSqlName(string name)
    method TestConnection (line 649) | static internal bool TestConnection(string dataProvider, string connec...
    method IsNumeric (line 674) | static internal bool IsNumeric(Type t)
    method ValidateSize (line 698) | internal static void ValidateSize(string t, bool bZero, bool bMinus)
    method MakeValidSize (line 746) | static internal string MakeValidSize(string t, bool bZero)
    method MakeValidSize (line 756) | static internal string MakeValidSize(string t, bool bZero, bool bNegat...
    method AddParameters (line 783) | static private void AddParameters(IDbCommand cmSQL, DataTable parameters)
    method AddParameters (line 805) | static private void AddParameters(IDbCommand cmSQL, IList parameters)
    method RelativePathTo (line 864) | public static string RelativePathTo(string fromDirectory, string toPath)
  class SqlColumn (line 914) | internal class SqlColumn
    method ToString (line 919) | override public string ToString()
  class SqlSchemaInfo (line 937) | internal class SqlSchemaInfo : IComparable<SqlSchemaInfo>
    method CompareTo (line 956) | int IComparable<SqlSchemaInfo>.CompareTo(SqlSchemaInfo other)
  class ReportParm (line 966) | internal class ReportParm
    method ReportParm (line 986) | internal ReportParm(string name)
    method ToString (line 1120) | override public string ToString()
  class ParameterValueItem (line 1126) | internal class ParameterValueItem
  class StaticLists (line 1132) | internal static class StaticLists
    method ArrayToFormattedList (line 1514) | public static List<string> ArrayToFormattedList(IEnumerable<string> ar...

FILE: RdlDesign/DialogAbout.Designer.cs
  class DialogAbout (line 9) | public partial class DialogAbout : System.Windows.Forms.Form
    method InitializeComponent (line 23) | private void InitializeComponent()
    method Dispose (line 116) | protected override void Dispose( bool disposing )

FILE: RdlDesign/DialogAbout.cs
  class DialogAbout (line 12) | public partial class DialogAbout
    method DialogAbout (line 14) | public DialogAbout()
    method lnk_LinkClicked (line 27) | private void lnk_LinkClicked(object sender, LinkLabelLinkClickedEventA...

FILE: RdlDesign/DialogDataSourceRef.Designer.cs
  class DialogDataSourceRef (line 9) | public partial class DialogDataSourceRef : System.Windows.Forms.Form
    method InitializeComponent (line 33) | private void InitializeComponent()
    method Dispose (line 201) | protected override void Dispose( bool disposing )

FILE: RdlDesign/DialogDataSourceRef.cs
  class DialogDataSourceRef (line 16) | public partial class DialogDataSourceRef
    method DialogDataSourceRef (line 18) | public DialogDataSourceRef()
    method bGetFilename_Click (line 33) | private void bGetFilename_Click(object sender, System.EventArgs e)
    method validate_TextChanged (line 58) | private void validate_TextChanged(object sender, System.EventArgs e)
    method bOK_Click (line 70) | private void bOK_Click(object sender, System.EventArgs e)
    method bTestConnection_Click (line 98) | private void bTestConnection_Click(object sender, System.EventArgs e)
    method cbDataProvider_SelectedIndexChanged (line 105) | private void cbDataProvider_SelectedIndexChanged(object sender, System...
    method cbOdbcNames_SelectedIndexChanged (line 119) | private void cbOdbcNames_SelectedIndexChanged(object sender, System.Ev...

FILE: RdlDesign/DialogDataSources.Designer.cs
  class DialogDataSources (line 9) | internal partial class DialogDataSources : System.Windows.Forms.Form
    method InitializeComponent (line 34) | private void InitializeComponent()
    method Dispose (line 212) | protected override void Dispose( bool disposing )

FILE: RdlDesign/DialogDataSources.cs
  class DialogDataSources (line 18) | internal partial class DialogDataSources
    method DialogDataSources (line 23) | internal DialogDataSources(Uri filename, DesignXmlDraw draw)
    method InitValues (line 35) | private void InitValues()
    method Apply (line 91) | public void Apply()
    method bGetFilename_Click (line 123) | private void bGetFilename_Click(object sender, System.EventArgs e)
    method tbFilename_TextChanged (line 172) | private void tbFilename_TextChanged(object sender, System.EventArgs e)
    method bOK_Click (line 186) | private void bOK_Click(object sender, System.EventArgs e)
    method bTestConnection_Click (line 220) | private void bTestConnection_Click(object sender, System.EventArgs e)
    method tbDSName_TextChanged (line 238) | private void tbDSName_TextChanged(object sender, System.EventArgs e)
    method chkSharedDataSource_CheckedChanged (line 260) | private void chkSharedDataSource_CheckedChanged(object sender, System....
    method lbDataSources_SelectedIndexChanged (line 286) | private void lbDataSources_SelectedIndexChanged(object sender, System....
    method bAdd_Click (line 306) | private void bAdd_Click(object sender, System.EventArgs e)
    method bRemove_Click (line 316) | private void bRemove_Click(object sender, System.EventArgs e)
    method tbDSName_Validating (line 330) | private void tbDSName_Validating(object sender, System.ComponentModel....
    method tbConnection_TextChanged (line 345) | private void tbConnection_TextChanged(object sender, System.EventArgs e)
    method tbPrompt_TextChanged (line 358) | private void tbPrompt_TextChanged(object sender, System.EventArgs e)
    method cbDataProvider_SelectedIndexChanged (line 371) | private void cbDataProvider_SelectedIndexChanged(object sender, System...
    method ckbIntSecurity_CheckedChanged (line 384) | private void ckbIntSecurity_CheckedChanged(object sender, System.Event...
    method bExprConnect_Click (line 397) | private void bExprConnect_Click(object sender, System.EventArgs e)
  class DataSourceValues (line 413) | class DataSourceValues
    method DataSourceValues (line 424) | internal DataSourceValues(string name)
    method ToString (line 477) | override public string ToString()

FILE: RdlDesign/DialogDatabase.Designer.cs
  class DialogDatabase (line 3) | public partial class DialogDatabase : System.Windows.Forms.Form
    method Dispose (line 7) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 20) | private void InitializeComponent()

FILE: RdlDesign/DialogDatabase.cs
  class DialogDatabase (line 24) | public partial class DialogDatabase
    method DialogDatabase (line 258) | public DialogDatabase(RdlDesigner rDesigner)
    method DialogDatabase (line 275) | public DialogDatabase(RdlUserControl rDesigner)
    type ConnectionType (line 290) | public enum ConnectionType
    method SetConnection (line 308) | public void SetConnection(string connectionString, bool hideConnection...
    method btnOK_Click (line 354) | private void btnOK_Click(object sender, System.EventArgs e)
    method tabControl1_SelectedIndexChanged (line 363) | private async void tabControl1_SelectedIndexChanged(object sender, Sys...
    method DoSqlSchema (line 391) | private void DoSqlSchema()
    method DoGrouping (line 445) | private void DoGrouping()
    method DoReportSyntax (line 467) | private bool DoReportSyntax(bool UseFullSharedDSName)
    method GetFieldName (line 809) | private string GetFieldName(string sqlName)
    method DoAlignAndCanGrow (line 822) | private void DoAlignAndCanGrow(Type t, out string canGrow, out string ...
    method DoReportSyntaxParameters (line 848) | private void DoReportSyntaxParameters(CultureInfo cinfo, StringBuilder...
    method DoReportSyntaxQParameters (line 889) | private void DoReportSyntaxQParameters(CultureInfo cinfo, StringBuilde...
    method DoReportPreview (line 921) | private async Task<bool> DoReportPreview()
    method GetDataProvider (line 938) | private string GetDataProvider()
    method GetDataConnection (line 962) | private string GetDataConnection()
    method tvTablesColumns_BeforeExpand (line 967) | private void tvTablesColumns_BeforeExpand(object sender, System.Window...
    method tvTablesColumns_ExpandTable (line 972) | private void tvTablesColumns_ExpandTable(TreeNode tNode)
    method tbSQL_DragEnter (line 1001) | private void tbSQL_DragEnter(object sender, System.Windows.Forms.DragE...
    method tbSQL_DragDrop (line 1007) | private void tbSQL_DragDrop(object sender, System.Windows.Forms.DragEv...
    method tvTablesColumns_MouseDown (line 1013) | private void tvTablesColumns_MouseDown(object sender, System.Windows.F...
    method DialogDatabase_Closed (line 1050) | private void DialogDatabase_Closed(object sender, System.EventArgs e)
    method tbSQL_TextChanged (line 1056) | private void tbSQL_TextChanged(object sender, System.EventArgs e)
    method tbReportName_TextChanged (line 1065) | private void tbReportName_TextChanged(object sender, System.EventArgs e)
    method tbReportDescription_TextChanged (line 1070) | private void tbReportDescription_TextChanged(object sender, System.Eve...
    method tbReportAuthor_TextChanged (line 1075) | private void tbReportAuthor_TextChanged(object sender, System.EventArg...
    method rbTable_CheckedChanged (line 1080) | private void rbTable_CheckedChanged(object sender, System.EventArgs e)
    method rbList_CheckedChanged (line 1094) | private void rbList_CheckedChanged(object sender, System.EventArgs e)
    method rbMatrix_CheckedChanged (line 1099) | private void rbMatrix_CheckedChanged(object sender, System.EventArgs e)
    method rbChart_CheckedChanged (line 1104) | private void rbChart_CheckedChanged(object sender, System.EventArgs e)
    method tbConnection_TextChanged (line 1274) | private void tbConnection_TextChanged(object sender, System.EventArgs e)
    method emptyReportSyntax (line 1279) | private void emptyReportSyntax(object sender, System.EventArgs e)
    method bMove_Click (line 1284) | private void bMove_Click(object sender, System.EventArgs e)
    method cbConnectionTypes_SelectedIndexChanged (line 1345) | private void cbConnectionTypes_SelectedIndexChanged(object sender, Sys...
    method cbOdbcNames_SelectedIndexChanged (line 1413) | private void cbOdbcNames_SelectedIndexChanged(object sender, System.Ev...
    method bTestConnection_Click (line 1419) | private void bTestConnection_Click(object sender, System.EventArgs e)
    method DBConnection_Validating (line 1436) | private void DBConnection_Validating(object sender, System.ComponentMo...
    method bShared_Click (line 1442) | private void bShared_Click(object sender, System.EventArgs e)
    method buttonSqliteSelectDatabase_Click (line 1467) | private void buttonSqliteSelectDatabase_Click(object sender, EventArgs e)
    method buttonSearchSqlServers_Click (line 1514) | private void buttonSearchSqlServers_Click(object sender, EventArgs e)
    method buttonDatabaseSearch_Click (line 1546) | private void buttonDatabaseSearch_Click(object sender, EventArgs e)
    method tbSQL_KeyDown (line 1601) | private void tbSQL_KeyDown(object sender, KeyEventArgs e)
    method DialogDatabase_Load (line 1610) | private void DialogDatabase_Load(object sender, EventArgs e)
    method comboServerList_SelectedIndexChanged (line 1615) | private void comboServerList_SelectedIndexChanged(object sender, Event...
    method comboDatabaseList_SelectedIndexChanged (line 1637) | private void comboDatabaseList_SelectedIndexChanged(object sender, Eve...
    method rbEmpty_CheckedChanged (line 1658) | private void rbEmpty_CheckedChanged(object sender, EventArgs e)

FILE: RdlDesign/DialogEmbeddedImages.Designer.cs
  class DialogEmbeddedImages (line 9) | internal partial class DialogEmbeddedImages : System.Windows.Forms.Form
    method InitializeComponent (line 26) | private void InitializeComponent()
    method Dispose (line 137) | protected override void Dispose( bool disposing )

FILE: RdlDesign/DialogEmbeddedImages.cs
  class DialogEmbeddedImages (line 20) | internal partial class DialogEmbeddedImages
    method DialogEmbeddedImages (line 22) | public DialogEmbeddedImages(DesignXmlDraw draw)
    method InitValues (line 33) | private void InitValues()
    method Apply (line 61) | public void Apply()
    method bPaste_Click (line 82) | private void bPaste_Click(object sender, System.EventArgs e)
    method bImport_Click (line 111) | private void bImport_Click(object sender, System.EventArgs e)
    method bRemove_Click (line 198) | private void bRemove_Click(object sender, System.EventArgs e)
    method lbImages_SelectedIndexChanged (line 212) | private void lbImages_SelectedIndexChanged(object sender, System.Event...
    method GetImage (line 227) | private Image GetImage(string imdata)
    method GetBase64Image (line 250) | private string GetBase64Image(Image img)
    method tbEIName_TextChanged (line 270) | private void tbEIName_TextChanged(object sender, System.EventArgs e)
    method bOK_Click (line 293) | private void bOK_Click(object sender, System.EventArgs e)
    method tbEIName_Validating (line 326) | private void tbEIName_Validating(object sender, System.ComponentModel....
  class EmbeddedImageValues (line 337) | class EmbeddedImageValues
    method EmbeddedImageValues (line 343) | public EmbeddedImageValues(string name)
    method ToString (line 366) | override public string ToString()

FILE: RdlDesign/DialogExprEditor.Designer.cs
  class DialogExprEditor (line 9) | public partial class DialogExprEditor : System.Windows.Forms.Form
    method InitializeComponent (line 23) | private void InitializeComponent()
    method Dispose (line 130) | protected override void Dispose( bool disposing )

FILE: RdlDesign/DialogExprEditor.cs
  class DialogExprEditor (line 21) | public partial class DialogExprEditor
    method DialogExprEditor (line 48) | internal DialogExprEditor(DesignXmlDraw dxDraw, string expr, XmlNode n...
    method DialogExprEditor (line 53) | internal DialogExprEditor(DesignXmlDraw dxDraw, string expr, XmlNode n...
    method FillLexerByFields (line 91) | void FillLexerByFields(DesignXmlDraw dxDraw)
    method BuildTree (line 103) | void BuildTree(string[] flds)
    method InitTreeNodes (line 135) | void InitTreeNodes(string node, IEnumerable<string> list)
    method InitUsers (line 150) | void InitUsers()
    method InitGlobals (line 156) | void InitGlobals()
    method InitFields (line 162) | void InitFields(string[] flds)
    method InitFieldsIsMissing (line 171) | void InitFieldsIsMissing(string[] flds)
    method InitAggrFunctions (line 181) | void InitAggrFunctions()
    method InitOperators (line 186) | void InitOperators()
    method InitColors (line 191) | void InitColors()
    method InitReportParameters (line 201) | void InitReportParameters()
    method InitReportModulesAndClass (line 218) | void InitReportModulesAndClass()
    method InitFunctions (line 257) | void InitFunctions()
    method RemoveDuplicates (line 297) | List<string> RemoveDuplicates(IEnumerable<string> ar)
    method GroupMethods (line 312) | List<TreeNode> GroupMethods(List<string> ar)
    method InitFunctions (line 359) | void InitFunctions(TreeNode ndRoot)
    method BuildMethods (line 402) | void BuildMethods(List<string> ar, Type ft, string prefix)
    method BuildMethodName (line 416) | string BuildMethodName(MethodInfo mi)
    method IsBaseType (line 437) | bool IsBaseType(Type t)
    method bCopy_Click (line 453) | private void bCopy_Click(object sender, System.EventArgs e)
    method tvOp_DoubleClick (line 474) | private void tvOp_DoubleClick(object sender, EventArgs e)
    method bOK_Click (line 479) | private void bOK_Click(object sender, EventArgs e)

FILE: RdlDesign/DialogFilterOperator.Designer.cs
  class DialogFilterOperator (line 9) | public partial class DialogFilterOperator : System.Windows.Forms.Form
    method InitializeComponent (line 18) | private void InitializeComponent()
    method Dispose (line 87) | protected override void Dispose( bool disposing )

FILE: RdlDesign/DialogFilterOperator.cs
  class DialogFilterOperator (line 18) | public partial class DialogFilterOperator
    method DialogFilterOperator (line 21) | internal DialogFilterOperator(string op)
    method DialogFilterOperator_Validating (line 39) | private void DialogFilterOperator_Validating(object sender, System.Com...

FILE: RdlDesign/DialogListOfStrings.Designer.cs
  class DialogListOfStrings (line 9) | public partial class DialogListOfStrings : System.Windows.Forms.Form
    method InitializeComponent (line 18) | private void InitializeComponent()
    method Dispose (line 69) | protected override void Dispose( bool disposing )

FILE: RdlDesign/DialogListOfStrings.cs
  class DialogListOfStrings (line 14) | public partial class DialogListOfStrings
    method DialogListOfStrings (line 16) | public DialogListOfStrings(List<string> list)
    method lnk_LinkClicked (line 54) | private void lnk_LinkClicked(object sender, LinkLabelLinkClickedEventA...

FILE: RdlDesign/DialogNewChart.Designer.cs
  class DialogNewChart (line 9) | internal partial class DialogNewChart : System.Windows.Forms.Form
    method InitializeComponent (line 43) | private void InitializeComponent()
    method Dispose (line 291) | protected override void Dispose( bool disposing )

FILE: RdlDesign/DialogNewChart.cs
  class DialogNewChart (line 17) | internal partial class DialogNewChart
    method DialogNewChart (line 20) | internal DialogNewChart(DesignXmlDraw dxDraw, XmlNode container)
    method InitValues (line 31) | private void InitValues(XmlNode container)
    method bOK_Click (line 265) | private void bOK_Click(object sender, System.EventArgs e)
    method cbDataSets_SelectedIndexChanged (line 291) | private void cbDataSets_SelectedIndexChanged(object sender, System.Eve...
    method bCategory_Click (line 302) | private void bCategory_Click(object sender, System.EventArgs e)
    method bSeries_Click (line 315) | private void bSeries_Click(object sender, System.EventArgs e)
    method bCategoryUp_Click (line 328) | private void bCategoryUp_Click(object sender, System.EventArgs e)
    method bCategoryDown_Click (line 339) | private void bCategoryDown_Click(object sender, System.EventArgs e)
    method bCategoryDelete_Click (line 350) | private void bCategoryDelete_Click(object sender, System.EventArgs e)
    method bSeriesUp_Click (line 360) | private void bSeriesUp_Click(object sender, System.EventArgs e)
    method bSeriesDown_Click (line 371) | private void bSeriesDown_Click(object sender, System.EventArgs e)
    method bSeriesDelete_Click (line 382) | private void bSeriesDelete_Click(object sender, System.EventArgs e)
    method OkEnable (line 392) | private void OkEnable()
    method cbChartData_Enter (line 409) | private void cbChartData_Enter(object sender, System.EventArgs e)
    method cbChartData_TextChanged (line 425) | private void cbChartData_TextChanged(object sender, System.EventArgs e)
    method cbChartType_SelectedIndexChanged (line 430) | private void cbChartType_SelectedIndexChanged(object sender, System.Ev...

FILE: RdlDesign/DialogNewMatrix.Designer.cs
  class DialogNewMatrix (line 9) | internal partial class DialogNewMatrix : System.Windows.Forms.Form
    method InitializeComponent (line 35) | private void InitializeComponent()
    method Dispose (line 211) | protected override void Dispose( bool disposing )

FILE: RdlDesign/DialogNewMatrix.cs
  class DialogNewMatrix (line 16) | internal partial class DialogNewMatrix
    method DialogNewMatrix (line 18) | internal DialogNewMatrix(DesignXmlDraw dxDraw, XmlNode container)
    method InitValues (line 29) | private void InitValues(XmlNode container)
    method bOK_Click (line 135) | private void bOK_Click(object sender, System.EventArgs e)
    method cbDataSets_SelectedIndexChanged (line 141) | private void cbDataSets_SelectedIndexChanged(object sender, System.Eve...
    method bColumn_Click (line 152) | private void bColumn_Click(object sender, System.EventArgs e)
    method bRow_Click (line 165) | private void bRow_Click(object sender, System.EventArgs e)
    method bColumnUp_Click (line 178) | private void bColumnUp_Click(object sender, System.EventArgs e)
    method bColumnDown_Click (line 189) | private void bColumnDown_Click(object sender, System.EventArgs e)
    method bColumnDelete_Click (line 200) | private void bColumnDelete_Click(object sender, System.EventArgs e)
    method bRowUp_Click (line 210) | private void bRowUp_Click(object sender, System.EventArgs e)
    method bRowDown_Click (line 221) | private void bRowDown_Click(object sender, System.EventArgs e)
    method bRowDelete_Click (line 232) | private void bRowDelete_Click(object sender, System.EventArgs e)
    method OkEnable (line 242) | private void OkEnable()
    method cbMatrixCell_Enter (line 253) | private void cbMatrixCell_Enter(object sender, System.EventArgs e)
    method cbMatrixCell_TextChanged (line 266) | private void cbMatrixCell_TextChanged(object sender, System.EventArgs e)

FILE: RdlDesign/DialogNewTable.Designer.cs
  class DialogNewTable (line 9) | internal partial class DialogNewTable : System.Windows.Forms.Form
    method InitializeComponent (line 36) | private void InitializeComponent()
    method Dispose (line 221) | protected override void Dispose( bool disposing )

FILE: RdlDesign/DialogNewTable.cs
  class DialogNewTable (line 17) | internal partial class DialogNewTable
    method DialogNewTable (line 19) | public DialogNewTable(DesignXmlDraw dxDraw, XmlNode container)
    method InitValues (line 30) | private void InitValues(XmlNode container)
    method Apply (line 241) | public void Apply()
    method bOK_Click (line 246) | private void bOK_Click(object sender, System.EventArgs e)
    method cbDataSets_SelectedIndexChanged (line 253) | private void cbDataSets_SelectedIndexChanged(object sender, System.Eve...
    method bRight_Click (line 263) | private void bRight_Click(object sender, System.EventArgs e)
    method bLeft_Click (line 284) | private void bLeft_Click(object sender, System.EventArgs e)
    method bAllRight_Click (line 307) | private void bAllRight_Click(object sender, System.EventArgs e)
    method bAllLeft_Click (line 317) | private void bAllLeft_Click(object sender, System.EventArgs e)
    method bUp_Click (line 328) | private void bUp_Click(object sender, System.EventArgs e)
    method bDown_Click (line 339) | private void bDown_Click(object sender, System.EventArgs e)
    method cbGroupColumn_Enter (line 350) | private void cbGroupColumn_Enter(object sender, System.EventArgs e)
    method rbHorz_CheckedChanged (line 362) | private void rbHorz_CheckedChanged(object sender, System.EventArgs e)

FILE: RdlDesign/DialogToolOptions.Designer.cs
  class DialogToolOptions (line 9) | public partial class DialogToolOptions : System.Windows.Forms.Form
    method InitializeComponent (line 59) | private void InitializeComponent()
    method Dispose (line 505) | protected override void Dispose( bool disposing )

FILE: RdlDesign/DialogToolOptions.cs
  class DialogToolOptions (line 18) | public partial class DialogToolOptions
    method DialogToolOptions (line 36) | public DialogToolOptions(RdlDesigner rdl)
    method Init (line 48) | private void Init()
    method InitLanguages (line 98) | private void InitLanguages()
    method InitDesktop (line 108) | private void InitDesktop()
    method InitMaps (line 181) | private void InitMaps()
    method InitOperations (line 187) | private void InitOperations()
    method Verify (line 202) | private bool Verify()
    method bOK_Click (line 216) | private void bOK_Click(object sender, System.EventArgs e)
    method DoApply (line 225) | private bool DoApply()
    method HandleProperties (line 258) | private void HandleProperties()
    method HandleDesktop (line 273) | private void HandleDesktop()
    method HandleMaps (line 332) | private void HandleMaps()
    method HandleRecentFilesMax (line 342) | private void HandleRecentFilesMax()
    method HandleToolbar (line 366) | private void HandleToolbar()
    method HandleShows (line 374) | private void HandleShows()
    method bCopyItem_Click (line 390) | private void bCopyItem_Click(object sender, System.EventArgs e)
    method bRemove_Click (line 403) | private void bRemove_Click(object sender, System.EventArgs e)
    method bUp_Click (line 418) | private void bUp_Click(object sender, System.EventArgs e)
    method bDown_Click (line 427) | private void bDown_Click(object sender, System.EventArgs e)
    method Swap (line 441) | private void Swap(int i1, int i2)
    method bReset_Click (line 457) | private void bReset_Click(object sender, System.EventArgs e)
    method bApply_Click (line 469) | private void bApply_Click(object sender, System.EventArgs e)
    method Desktop_Changed (line 474) | private void Desktop_Changed(object sender, System.EventArgs e)
    method bBrowse_Click (line 479) | private void bBrowse_Click(object sender, System.EventArgs e)
    method cbTabInterface_CheckedChanged (line 551) | private void cbTabInterface_CheckedChanged(object sender, EventArgs e)
    method bAddMap_Click (line 556) | private void bAddMap_Click(object sender, EventArgs e)
    method bRemoveMap_Click (line 586) | private void bRemoveMap_Click(object sender, EventArgs e)
    method GetAvailableCultures (line 595) | private static IEnumerable<CultureInfo> GetAvailableCultures()
    method RadioButtonInches_CheckedChanged (line 647) | private void RadioButtonInches_CheckedChanged(object sender, EventArgs e)
    method RadioButtonCm_CheckedChanged (line 652) | private void RadioButtonCm_CheckedChanged(object sender, EventArgs e)
  class DesktopConfig (line 660) | public class DesktopConfig

FILE: RdlDesign/DialogValidValues.Designer.cs
  class DialogValidValues (line 9) | internal partial class DialogValidValues : System.Windows.Forms.Form
    method InitializeComponent (line 18) | private void InitializeComponent()
    method Dispose (line 73) | protected override void Dispose( bool disposing )

FILE: RdlDesign/DialogValidValues.cs
  class DialogValidValues (line 19) | internal partial class DialogValidValues
    method DialogValidValues (line 23) | internal DialogValidValues(List<ParameterValueItem> list)
    method InitValues (line 61) | private void InitValues(List<ParameterValueItem> list)
    method bDelete_Click (line 87) | private void bDelete_Click(object sender, System.EventArgs e)

FILE: RdlDesign/DialogValidateRdl.Designer.cs
  class DialogValidateRdl (line 9) | public partial class DialogValidateRdl : System.Windows.Forms.Form
    method InitializeComponent (line 19) | private void InitializeComponent()
    method Dispose (line 73) | protected override void Dispose( bool disposing )

FILE: RdlDesign/DialogValidateRdl.cs
  class DialogValidateRdl (line 16) | public partial class DialogValidateRdl
    method DialogValidateRdl (line 27) | public DialogValidateRdl(RdlDesigner designer)
    method bValidate_Click (line 39) | private void bValidate_Click(object sender, System.EventArgs e)
    method ValidationHandler (line 106) | public void ValidationHandler(object sender, ValidationEventArgs args)
    method lbSchemaErrors_DoubleClick (line 117) | private void lbSchemaErrors_DoubleClick(object sender, System.EventArg...
    method bClose_Click (line 149) | private void bClose_Click(object sender, System.EventArgs e)
    method DialogValidateRdl_Closing (line 154) | private void DialogValidateRdl_Closing(object sender, System.Component...

FILE: RdlDesign/DrillParametersDialog.Designer.cs
  class DrillParametersDialog (line 9) | internal partial class DrillParametersDialog : System.Windows.Forms.Form
    method InitializeComponent (line 21) | private void InitializeComponent()
    method Dispose (line 102) | protected override void Dispose( bool disposing )

FILE: RdlDesign/DrillParametersDialog.cs
  class DrillParametersDialog (line 21) | internal partial class DrillParametersDialog
    method DrillParametersDialog (line 26) | internal DrillParametersDialog(string report, List<DrillParameter> par...
    method InitValues (line 37) | private void InitValues(List<DrillParameter> parameters)
    method bFile_Click (line 100) | private void bFile_Click(object sender, System.EventArgs e)
    method bRefreshParms_Click (line 125) | private async void bRefreshParms_Click(object sender, System.EventArgs e)
    method GetFileNameWithPath (line 167) | private string GetFileNameWithPath(string file)
    method GetSource (line 173) | private string GetSource(string file)
    method GetReport (line 196) | private async Task<Report> GetReport(string prog, string file)
    method DrillParametersDialog_Validating (line 226) | private void DrillParametersDialog_Validating(object sender, System.Co...
    method bOK_Click (line 248) | private void bOK_Click(object sender, System.EventArgs e)
  class DrillParameter (line 261) | internal class DrillParameter
    method DrillParameter (line 267) | internal DrillParameter(string name, string pvalue, string omit)

FILE: RdlDesign/FiltersCtl.cs
  class FiltersCtl (line 16) | internal class FiltersCtl : System.Windows.Forms.UserControl, IProperty
    method FiltersCtl (line 34) | internal FiltersCtl(DesignXmlDraw dxDraw, XmlNode filterParent)
    method InitValues (line 45) | private void InitValues()
    method Dispose (line 119) | protected override void Dispose( bool disposing )
    method InitializeComponent (line 136) | private void InitializeComponent()
    method IsValid (line 192) | public bool IsValid()
    method Apply (line 197) | public void Apply()
    method bDelete_Click (line 239) | private void bDelete_Click(object sender, System.EventArgs e)
    method bUp_Click (line 255) | private void bUp_Click(object sender, System.EventArgs e)
    method bDown_Click (line 267) | private void bDown_Click(object sender, System.EventArgs e)
    method SwapRow (line 280) | private void SwapRow(DataGridViewRow tdr, DataGridViewRow fdr)
    method bValueExpr_Click (line 297) | private void bValueExpr_Click(object sender, System.EventArgs e)

FILE: RdlDesign/FindTab.Designer.cs
  class FindTab (line 9) | internal partial class FindTab : System.Windows.Forms.Form
    method InitializeComponent (line 40) | private void InitializeComponent()
    method Dispose (line 265) | protected override void Dispose( bool disposing )

FILE: RdlDesign/FindTab.cs
  class FindTab (line 14) | internal partial class FindTab
    method FindTab (line 16) | public FindTab()
    method FindTab (line 28) | internal FindTab(RdlEditPreview pad)
    method btnNext_Click (line 39) | private void btnNext_Click(object sender, System.EventArgs e)
    method txtFind_TextChanged (line 44) | private void txtFind_TextChanged(object sender, System.EventArgs e)
    method btnFindNext_Click (line 52) | private void btnFindNext_Click(object sender, System.EventArgs e)
    method btnReplace_Click (line 58) | private void btnReplace_Click(object sender, System.EventArgs e)
    method txtFindR_TextChanged (line 64) | private void txtFindR_TextChanged(object sender, System.EventArgs e)
    method btnReplaceAll_Click (line 73) | private void btnReplaceAll_Click(object sender, System.EventArgs e)
    method btnGoto_Click (line 80) | private void btnGoto_Click(object sender, System.EventArgs e)
    method btnCancel_Click (line 103) | private void btnCancel_Click(object sender, System.EventArgs e)
    method tcFRG_SelectedIndexChanged (line 108) | private void tcFRG_SelectedIndexChanged(object sender, System.EventArg...
    method tcFRG_Enter (line 132) | private void tcFRG_Enter(object sender, System.EventArgs e)
    method FindTab_FormClosed (line 137) | private void FindTab_FormClosed(object sender, FormClosedEventArgs e)
    method FindNextClick (line 142) | public void FindNextClick()

FILE: RdlDesign/FontCtl.cs
  class FontCtl (line 18) | internal class FontCtl : System.Windows.Forms.UserControl, IProperty
    method FontCtl (line 66) | public FontCtl(DesignXmlDraw dxDraw, string[] names, List<XmlNode> sty...
    method InitTextStyles (line 78) | private void InitTextStyles()
    method Dispose (line 172) | protected override void Dispose( bool disposing )
    method InitializeComponent (line 189) | private void InitializeComponent()
    method IsValid (line 560) | public bool IsValid()
    method Apply (line 579) | public void Apply()
    method ApplyChanges (line 593) | public void ApplyChanges(XmlNode node)
    method bFont_Click (line 646) | private void bFont_Click(object sender, System.EventArgs e)
    method bColor_Click (line 720) | private void bColor_Click(object sender, System.EventArgs e)
    method cbFontFamily_TextChanged (line 745) | private void cbFontFamily_TextChanged(object sender, System.EventArgs e)
    method cbFontSize_TextChanged (line 750) | private void cbFontSize_TextChanged(object sender, System.EventArgs e)
    method cbFontStyle_TextChanged (line 755) | private void cbFontStyle_TextChanged(object sender, System.EventArgs e)
    method cbFontWeight_TextChanged (line 760) | private void cbFontWeight_TextChanged(object sender, System.EventArgs e)
    method cbColor_TextChanged (line 765) | private void cbColor_TextChanged(object sender, System.EventArgs e)
    method cbTextDecoration_TextChanged (line 770) | private void cbTextDecoration_TextChanged(object sender, System.EventA...
    method cbHorzAlign_TextChanged (line 775) | private void cbHorzAlign_TextChanged(object sender, System.EventArgs e)
    method cbVerticalAlign_TextChanged (line 780) | private void cbVerticalAlign_TextChanged(object sender, System.EventAr...
    method cbDirection_TextChanged (line 785) | private void cbDirection_TextChanged(object sender, System.EventArgs e)
    method cbWritingMode_TextChanged (line 790) | private void cbWritingMode_TextChanged(object sender, System.EventArgs e)
    method cbFormat_TextChanged (line 795) | private void cbFormat_TextChanged(object sender, System.EventArgs e)
    method bExpr_Click (line 800) | private void bExpr_Click(object sender, System.EventArgs e)

FILE: RdlDesign/GridCtl.cs
  class GridCtl (line 17) | internal class GridCtl : System.Windows.Forms.UserControl, IProperty
    method GridCtl (line 37) | public GridCtl(DesignXmlDraw dxDraw, List<XmlNode> ris)
    method InitValues (line 48) | private void InitValues()
    method Dispose (line 80) | protected override void Dispose( bool disposing )
    method InitializeComponent (line 97) | private void InitializeComponent()
    method IsValid (line 188) | public bool IsValid()
    method Apply (line 198) | public void Apply()
    method ApplyChanges (line 212) | public void ApplyChanges(XmlNode node)
    method CreateTableRow (line 235) | private void CreateTableRow(XmlNode tblNode, string elementName, bool ...
    method chkPBBefore_CheckedChanged (line 252) | private void chkPBBefore_CheckedChanged(object sender, System.EventArg...
    method chkPBAfter_CheckedChanged (line 257) | private void chkPBAfter_CheckedChanged(object sender, System.EventArgs e)
    method chkRows_CheckedChanged (line 262) | private void chkRows_Check
Copy disabled (too large) Download .json
Condensed preview — 1244 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (13,291K chars).
[
  {
    "path": ".editorconfig",
    "chars": 10235,
    "preview": "# Remove the line below if you want to inherit .editorconfig settings from higher directories\nroot = true\n\n# C# files\n[*"
  },
  {
    "path": ".gitattributes",
    "chars": 483,
    "preview": "# Auto detect text files and perform LF normalization\n* text=auto\n\n# Custom for Visual Studio\n*.cs     diff=csharp\n*.sln"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 834,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Describe the b"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 595,
    "preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Is your fea"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 501,
    "preview": "# To get started with Dependabot version updates, you'll need to specify which\n# package ecosystems to update and where "
  },
  {
    "path": ".github/workflows/codeql.yml",
    "chars": 4897,
    "preview": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# Y"
  },
  {
    "path": ".github/workflows/jekyll-gh-pages.yml",
    "chars": 1422,
    "preview": "# Sample workflow for building and deploying a Jekyll site to GitHub Pages\nname: Deploy Jekyll with GitHub Pages depende"
  },
  {
    "path": ".github/workflows/linux.yml",
    "chars": 1099,
    "preview": "name: linux\n\npermissions:\n  contents: read\n\non:\n  push:\n    branches: [master]\n  pull_request:\n    branches: [master]\n\nj"
  },
  {
    "path": ".github/workflows/mac.yml",
    "chars": 1093,
    "preview": "name: mac\n\npermissions:\n  contents: read\n\non:\n  push:\n    branches: [master]\n  pull_request:\n    branches: [master]\n\njob"
  },
  {
    "path": ".github/workflows/windows.yml",
    "chars": 1249,
    "preview": "name: windows\n\non:\n  push:\n    branches: [master]\n  pull_request:\n    branches: [master]\n\njobs:\n  windows-build:\n    per"
  },
  {
    "path": ".gitignore",
    "chars": 5089,
    "preview": "python_project_root/\n# Created by https://www.gitignore.io\n\n### VisualStudio ###\n## Ignore Visual Studio temporary files"
  },
  {
    "path": "DataProviders/BaseDataParameter.cs",
    "chars": 2063,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t/// <summary>\n\t/// BaseDat"
  },
  {
    "path": "DataProviders/DataParameterCollection.cs",
    "chars": 2589,
    "preview": "\nusing System;\nusing System.Collections;\nusing System.Data;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t/// <summary>\n\t///"
  },
  {
    "path": "DataProviders/DataProviders.sln",
    "chars": 1603,
    "preview": "Microsoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Express 2012 for Web\nProject(\"{FAE04EC0-301F"
  },
  {
    "path": "DataProviders/DictionaryDataReader.cs",
    "chars": 7568,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Data;\nusing System.Linq;\n\nnamespace Majorsilence.Reporting"
  },
  {
    "path": "DataProviders/FileDirCommand.cs",
    "chars": 6567,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\nusing System.Collections;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t"
  },
  {
    "path": "DataProviders/FileDirConnection.cs",
    "chars": 2064,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t/// <summary>\n\t/// LogConn"
  },
  {
    "path": "DataProviders/FileDirDataParameter.cs",
    "chars": 260,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t/// <summary>\n\t/// FileDir"
  },
  {
    "path": "DataProviders/FileDirDataReader.cs",
    "chars": 8539,
    "preview": "\nusing System;\nusing System.Data;\nusing System.Collections;\nusing System.Collections.Specialized;\nusing System.IO;\nusing"
  },
  {
    "path": "DataProviders/FilteredDictionaryDataReader.cs",
    "chars": 4468,
    "preview": "using System;\nusing System.Data;\n\nnamespace Majorsilence.Reporting.Data\n{\n    public class FilteredDictionaryDataReader"
  },
  {
    "path": "DataProviders/GedcomCommand.cs",
    "chars": 4192,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\nusing System.Collections;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t"
  },
  {
    "path": "DataProviders/GedcomConnection.cs",
    "chars": 2108,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t/// <summary>\n\t/// LogConn"
  },
  {
    "path": "DataProviders/GedcomDataParameter.cs",
    "chars": 254,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t/// <summary>\n\t/// XmlData"
  },
  {
    "path": "DataProviders/GedcomDataReader.cs",
    "chars": 8476,
    "preview": "\nusing System;\nusing System.Data;\nusing System.Collections;\nusing System.Collections.Specialized;\nusing System.IO;\nusing"
  },
  {
    "path": "DataProviders/HttpClientExtension.cs",
    "chars": 650,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Net.Http;\nusing System.Text;\nusing Syst"
  },
  {
    "path": "DataProviders/JsonCommand.cs",
    "chars": 4383,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\nusing System.Collections;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t"
  },
  {
    "path": "DataProviders/JsonConnection.cs",
    "chars": 5329,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\nusing System.Net.Http;\n\nnamespace Majorsilence.Reporting.Data\n{\n    "
  },
  {
    "path": "DataProviders/JsonDataReader.cs",
    "chars": 6458,
    "preview": "using System;\nusing System.Xml;\nusing System.Data;\nusing System.Collections;\nusing System.Collections.Generic;\nusing Sys"
  },
  {
    "path": "DataProviders/JsonTableExtractor.cs",
    "chars": 6107,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Data;\nusing System.Linq;\nusing System.Text.Json;\n\nnamespac"
  },
  {
    "path": "DataProviders/LexCharReader.cs",
    "chars": 2224,
    "preview": "using System;\nusing System.IO;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t/// <summary>\n\t/// char reader simply reads ent"
  },
  {
    "path": "DataProviders/LexToken.cs",
    "chars": 564,
    "preview": "\nusing System;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t/// <summary>\n\t/// Token class that used by Lexer.\n\t/// </summa"
  },
  {
    "path": "DataProviders/LexTokenList.cs",
    "chars": 782,
    "preview": "\n\nusing System;\nusing System.Collections;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t/// <summary>\n\t/// Represents a list"
  },
  {
    "path": "DataProviders/LexTokenTypes.cs",
    "chars": 173,
    "preview": "\nusing System;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t/// <summary>\n\t/// Types of tokens\n\t/// </summary>\n\tinternal en"
  },
  {
    "path": "DataProviders/Lexer.cs",
    "chars": 3024,
    "preview": "\nusing System;\nusing System.IO;\nusing System.Collections;\nusing System.Text;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t/"
  },
  {
    "path": "DataProviders/LogCommand.cs",
    "chars": 5523,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\nusing System.Collections;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t"
  },
  {
    "path": "DataProviders/LogConnection.cs",
    "chars": 1964,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t/// <summary>\n\t/// LogConn"
  },
  {
    "path": "DataProviders/LogDataParameter.cs",
    "chars": 248,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t/// <summary>\n\t/// XmlData"
  },
  {
    "path": "DataProviders/LogDataReader.cs",
    "chars": 9414,
    "preview": "\nusing System;\nusing System.Data;\nusing System.Collections;\nusing System.Collections.Specialized;\nusing System.IO;\nusing"
  },
  {
    "path": "DataProviders/Majorsilence.Reporting.DataProviders.csproj",
    "chars": 1495,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\t<PropertyGroup>\n\t\t<ProjectType>Local</ProjectType>\n\t\t<DelaySign>false</DelaySign>\n\t\t"
  },
  {
    "path": "DataProviders/MultipleStreamReader.cs",
    "chars": 4620,
    "preview": "\nusing System;\nusing System.IO;\nusing System.Collections;\nusing System.Net;\nusing System.Text;\nusing System.Net.Http;\nus"
  },
  {
    "path": "DataProviders/TxtCommand.cs",
    "chars": 6851,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\nusing System.Collections;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t"
  },
  {
    "path": "DataProviders/TxtConnection.cs",
    "chars": 1964,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t/// <summary>\n\t/// LogConn"
  },
  {
    "path": "DataProviders/TxtDataParameter.cs",
    "chars": 248,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t/// <summary>\n\t/// TxtData"
  },
  {
    "path": "DataProviders/TxtDataReader.cs",
    "chars": 14520,
    "preview": "\nusing System;\nusing System.Data;\nusing System.Collections;\nusing System.Collections.Specialized;\nusing System.IO;\nusing"
  },
  {
    "path": "DataProviders/WebServiceCommand.cs",
    "chars": 6477,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\nusing System.Collections;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t"
  },
  {
    "path": "DataProviders/WebServiceConnection.cs",
    "chars": 2003,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t/// <summary>\n\t/// WebServ"
  },
  {
    "path": "DataProviders/WebServiceDataParameter.cs",
    "chars": 269,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t/// <summary>\n\t/// WebServ"
  },
  {
    "path": "DataProviders/WebServiceDataReader.cs",
    "chars": 9121,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Xml.XPath;\nusing System.Data;\nusing System.Collections;\nusing System.Colle"
  },
  {
    "path": "DataProviders/WebServiceWsdl.cs",
    "chars": 7422,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\nusing System.Collections;\n#if !NETSTANDARD2_0 && !NET6_0_OR_GREATER\n"
  },
  {
    "path": "DataProviders/XmlCommand.cs",
    "chars": 5868,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\nusing System.Collections;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t"
  },
  {
    "path": "DataProviders/XmlConnection.cs",
    "chars": 1967,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t/// <summary>\n\t/// XmlConn"
  },
  {
    "path": "DataProviders/XmlDataParameter.cs",
    "chars": 248,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t/// <summary>\n\t/// XmlData"
  },
  {
    "path": "DataProviders/XmlDataReader.cs",
    "chars": 8412,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Xml.XPath;\nusing System.Data;\nusing System.Collections;\nusing System.Colle"
  },
  {
    "path": "DataProviders/iTunesCommand.cs",
    "chars": 4154,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\nusing System.Collections;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t"
  },
  {
    "path": "DataProviders/iTunesConnection.cs",
    "chars": 2557,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\nusing System.IO;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t/// <summ"
  },
  {
    "path": "DataProviders/iTunesDataParameter.cs",
    "chars": 257,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Data;\n\nnamespace Majorsilence.Reporting.Data\n{\n\t/// <summary>\n\t/// iTunesD"
  },
  {
    "path": "DataProviders/iTunesDataReader.cs",
    "chars": 13347,
    "preview": "\nusing System;\nusing System.Xml;\nusing System.Xml.XPath;\nusing System.Data;\nusing System.Collections;\nusing System.Colle"
  },
  {
    "path": "Directory.Build.props",
    "chars": 1118,
    "preview": "<Project>\n  <PropertyGroup Condition=\"'$(Configuration)' == 'Release-DrawingCompat' Or '$(Configuration)' == 'Debug-Draw"
  },
  {
    "path": "Directory.Packages.props",
    "chars": 4040,
    "preview": "<Project>\n  <PropertyGroup>\n    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>\n    <CentralPackag"
  },
  {
    "path": "EncryptionProvider/EncryptionProvider.csproj",
    "chars": 676,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\t<PropertyGroup>\n\t\t<OutputType>Library</OutputType>\n\t\t<UseWindowsForms>true</UseWindow"
  },
  {
    "path": "EncryptionProvider/Prompt.cs",
    "chars": 1784,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing Syste"
  },
  {
    "path": "EncryptionProvider/Properties/Resources.Designer.cs",
    "chars": 3098,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "EncryptionProvider/Properties/Resources.resx",
    "chars": 5786,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "EncryptionProvider/String/StringEncryption.cs",
    "chars": 2977,
    "preview": "using System;\nusing System.IO;\nusing System.Linq;\nusing System.Security.Cryptography;\nusing System.Text;\n\n\nnamespace En"
  },
  {
    "path": "Examples/.editorconfig",
    "chars": 5978,
    "preview": "# Remove the line below if you want to inherit .editorconfig settings from higher directories\nroot = true\n\n# Visual Basi"
  },
  {
    "path": "Examples/Designer.xsd",
    "chars": 2337,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?> \n<xsd:schema \ntargetNamespace=\"http://www.fyireporting.com/schemas\" xmlns:xsd=\""
  },
  {
    "path": "Examples/Examples/ChartExampleArea.rdl",
    "chars": 6942,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <Description>\n  </Description>\n  <Author>fyiReporting Software"
  },
  {
    "path": "Examples/Examples/ChartExampleAreaPercentStacked.rdl",
    "chars": 12375,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <Description>\n  </Description>\n  <Author>fyiReporting Software"
  },
  {
    "path": "Examples/Examples/ChartExampleAreaStacked.rdl",
    "chars": 12307,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <Description>\n  </Description>\n  <Author>fyiReporting Software"
  },
  {
    "path": "Examples/Examples/ChartExampleBar.rdl",
    "chars": 12755,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <PageHeight>8.5 in</PageHeight>\n  <PageWidth>11 in</PageWidth>"
  },
  {
    "path": "Examples/Examples/ChartExampleBarPercentStacked.rdl",
    "chars": 12629,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <Description>\n  </Description>\n  <Author>fyiReporting Software"
  },
  {
    "path": "Examples/Examples/ChartExampleBarStacked.rdl",
    "chars": 12647,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <Description>\n  </Description>\n  <Author>fyiReporting Software"
  },
  {
    "path": "Examples/Examples/ChartExampleColumn.rdl",
    "chars": 12316,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <Description>\n  </Description>\n  <Author>fyiReporting Software"
  },
  {
    "path": "Examples/Examples/ChartExampleColumnPercentStacked.rdl",
    "chars": 12604,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <PageHeight>8.5in</PageHeight>\n  <PageWidth>11in</PageWidth>\n "
  },
  {
    "path": "Examples/Examples/ChartExampleColumnStacked.rdl",
    "chars": 12316,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <Description>\n  </Description>\n  <Author>fyiReporting Software"
  },
  {
    "path": "Examples/Examples/ChartExampleDoughnut.rdl",
    "chars": 12639,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <Description>\n  </Description>\n  <Author>fyiReporting Software"
  },
  {
    "path": "Examples/Examples/ChartExampleLine.rdl",
    "chars": 12268,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <Description>\n  </Description>\n  <Author>\n  </Author>\n  <DataS"
  },
  {
    "path": "Examples/Examples/ChartExamplePie.rdl",
    "chars": 12579,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <Description>\n  </Description>\n  <Author>\n  </Author>\n  <DataS"
  },
  {
    "path": "Examples/Examples/ChartMap.rdl",
    "chars": 50732,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <Description>\n  </Description>\n  <Author>\n  </Author>\n  <PageH"
  },
  {
    "path": "Examples/Examples/ChartMapWorld.rdl",
    "chars": 41390,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <Description>\n  </Description>\n  <Author>\n  </Author>\n  <PageH"
  },
  {
    "path": "Examples/Examples/ChartTypes.rdl",
    "chars": 66906,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <Description>\n  </Description>\n  <Author>\n  </Author>\n  <PageH"
  },
  {
    "path": "Examples/Examples/Contacts.xml",
    "chars": 7429,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<Rows>\n<Row><ContactName>Alejandra Camino</ContactName><Phone>(91) 745 6200</Phon"
  },
  {
    "path": "Examples/Examples/DrilldownTest.rdl",
    "chars": 9595,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"DrilldownTest\">\n  <Description>\n  </Description>\n  <Author>fyiRepor"
  },
  {
    "path": "Examples/Examples/DrilldownTwoLevel.rdl",
    "chars": 11123,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <Description>Drilldown with two level</Description>\n  <Author>"
  },
  {
    "path": "Examples/Examples/EmployeeOrg.rdl",
    "chars": 15167,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Report>\n  <PageHeader>\n    <Height>27.4pt</Height>\n    <ReportItems>\n      <Text"
  },
  {
    "path": "Examples/Examples/FileDirectoryTest.rdl",
    "chars": 20524,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <Description>\n  </Description>\n  <Author>\n  </Author>\n  <PageH"
  },
  {
    "path": "Examples/Examples/FinancialFunctions.rdl",
    "chars": 40259,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <Description>\n  </Description>\n  <Author>\n  </Author>\n  <DataS"
  },
  {
    "path": "Examples/Examples/ListReport.rdl",
    "chars": 4324,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"EmployeeReport\">\n  <Description>This is the very first report</Desc"
  },
  {
    "path": "Examples/Examples/MatrixExample.rdl",
    "chars": 31414,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <Description>\n  </Description>\n  <Author>\n  </Author>\n  <PageH"
  },
  {
    "path": "Examples/Examples/MatrixStaticTest.rdl",
    "chars": 22254,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdef"
  },
  {
    "path": "Examples/Examples/MatrixTest.rdl",
    "chars": 6014,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <Description>\n  </Description>\n  <Author>\n  </Author>\n  <PageH"
  },
  {
    "path": "Examples/Examples/RssShort.rdl",
    "chars": 9653,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <Description>RSS Reporting</Description>\n  <Author>\n  </Author"
  },
  {
    "path": "Examples/Examples/SalesData.xml",
    "chars": 4762,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<Rows>\n\t<Row><Category>Component</Category><Year>2002</Year><Sales>525</Sales></R"
  },
  {
    "path": "Examples/Examples/Suppliers.rdl",
    "chars": 14886,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"Suppliers\">\n  <PageHeight>8.5 in</PageHeight>\n  <PageWidth>11 in</P"
  },
  {
    "path": "Examples/Examples/SuppliersStyled.rdl",
    "chars": 22943,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"Suppliers\">\n  <PageHeight>8.5 in</PageHeight>\n  <PageWidth>11 in</P"
  },
  {
    "path": "Examples/Examples/TableThreeColumns.rdl",
    "chars": 3838,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Report>\n  <RightMargin>0.25in</RightMargin>\n  <Body>\n    <ReportItems>\n      <Ta"
  },
  {
    "path": "Examples/Examples/TabularCountriesFromWizard.rdl",
    "chars": 45075,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <Description>\n  </Description>\n  <Author>fyiReporting Software"
  },
  {
    "path": "Examples/Examples/TextProviderTest.rdl",
    "chars": 6416,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <Description>\n  </Description>\n  <Author>\n  </Author>\n  <PageH"
  },
  {
    "path": "Examples/Examples/ThreeColumns.rdl",
    "chars": 4470,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Report xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2003/10/reportdef"
  },
  {
    "path": "Examples/Examples/WebLogHitCount.rdl",
    "chars": 10290,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"\">\n  <Description>\n  </Description>\n  <Author>\n  </Author>\n  <PageH"
  },
  {
    "path": "Examples/Examples/WorldFacts.rdl",
    "chars": 17576,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"WorldFacts\">\n  <Description>Worlds Facts - test data from MySQL Wor"
  },
  {
    "path": "Examples/Examples/WorldFacts.xml",
    "chars": 52477,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<Rows>\n<Row><Code>DZA</Code><Continent>Africa</Continent><Name>Algeria</Name><Reg"
  },
  {
    "path": "Examples/Examples/WorldFactsQueryArgs.rdl",
    "chars": 21728,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report Name=\"WorldFacts\">\n  <Description>Worlds Facts - test data from MySQL Wor"
  },
  {
    "path": "Examples/Examples/iTunes.rdl",
    "chars": 51462,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdef"
  },
  {
    "path": "Examples/Examples.416/HIDERIGA_ON_COMMAND.rdl",
    "chars": 8185,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdef"
  },
  {
    "path": "Examples/Examples.416/HIDERIGA_ON_COMMAND.xml",
    "chars": 136,
    "preview": "<Rows>\n<Row><VALORE>A</VALORE></Row>\n<Row><VALORE>B</VALORE></Row>\n<Row><VALORE>C</VALORE></Row>\n<Row><VALORE>D</VALORE>"
  },
  {
    "path": "Examples/Examples.416/STAMPA_TABELLONE_RADIO_CON_DATI.RDL",
    "chars": 81444,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdef"
  },
  {
    "path": "Examples/Examples.416/TESTRIG.rdl",
    "chars": 8176,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdef"
  },
  {
    "path": "Examples/Examples.416/TESTXGRUPPO.rdl",
    "chars": 12088,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdef"
  },
  {
    "path": "Examples/Examples.416/TESTXGRUPPO_Break3.rdl",
    "chars": 12199,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdef"
  },
  {
    "path": "Examples/Examples.416/datI_RADIO.xml",
    "chars": 271247,
    "preview": "<Rows>\n<Row><ID>1</ID><TIPOCOLONNA>0</TIPOCOLONNA><GPIANIF>TC</GPIANIF><MATRICOLA>001117</MATRICOLA><NOME>Aloia Daniele"
  },
  {
    "path": "Examples/Examples.418/Test for Alignment.rdl",
    "chars": 9256,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdef"
  },
  {
    "path": "Examples/Examples.sln",
    "chars": 3899,
    "preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 17\nVisualStudioVersion = 17.12.355"
  },
  {
    "path": "Examples/JsonExamples/JsonReport.rdl",
    "chars": 9354,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdef"
  },
  {
    "path": "Examples/RdlEngineConfig.xml",
    "chars": 5960,
    "preview": "<?xml version='1.0' encoding='UTF-8' ?>\n<config>\n\t<DataSources>\n\t\t<DataSource>\n\t\t\t<DataProvider>SQL</DataProvider>\n\t\t\t<T"
  },
  {
    "path": "Examples/Readme.txt",
    "chars": 45,
    "preview": "northwindEF.db is a sqlite 3 sample database."
  },
  {
    "path": "Examples/Sample-Report-Viewer/Sample-Report-Viewer/App.config",
    "chars": 178,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n    <startup> \n        <supportedRuntime version=\"v4.0\" sku=\".NET"
  },
  {
    "path": "Examples/Sample-Report-Viewer/Sample-Report-Viewer/Form1.cs",
    "chars": 1873,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nu"
  },
  {
    "path": "Examples/Sample-Report-Viewer/Sample-Report-Viewer/Form1.resx",
    "chars": 5696,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "Examples/Sample-Report-Viewer/Sample-Report-Viewer/GlobalSuppressions.cs",
    "chars": 463,
    "preview": "// This file is used by Code Analysis to maintain SuppressMessage\n// attributes that are applied to this project.\n// Pr"
  },
  {
    "path": "Examples/Sample-Report-Viewer/Sample-Report-Viewer/Program.cs",
    "chars": 517,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows.F"
  },
  {
    "path": "Examples/Sample-Report-Viewer/Sample-Report-Viewer/Properties/Resources.Designer.cs",
    "chars": 2800,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Examples/Sample-Report-Viewer/Sample-Report-Viewer/Properties/Resources.resx",
    "chars": 5494,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "Examples/Sample-Report-Viewer/Sample-Report-Viewer/Properties/Settings.Designer.cs",
    "chars": 1073,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Examples/Sample-Report-Viewer/Sample-Report-Viewer/Properties/Settings.settings",
    "chars": 240,
    "preview": "<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\""
  },
  {
    "path": "Examples/Sample-Report-Viewer/Sample-Report-Viewer/SampleApp2-TestReport.rdl",
    "chars": 6952,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdef"
  },
  {
    "path": "Examples/Sample-Report-Viewer/Sample-Report-Viewer/SampleReportViewer.csproj",
    "chars": 954,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <TargetFramework>net8.0-windows</TargetFramework>\n    <OutputTy"
  },
  {
    "path": "Examples/Sample-Report-Viewer/SampleApp2-SetData.sln",
    "chars": 5732,
    "preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Express 2012 for Windows Desktop\nProject(\""
  },
  {
    "path": "Examples/SampleApp/SampleReportApp/Form1.Designer.vb",
    "chars": 5276,
    "preview": "<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _\nPartial Class Form1\n    Inherits System.Windows.F"
  },
  {
    "path": "Examples/SampleApp/SampleReportApp/Form1.resx",
    "chars": 5896,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "Examples/SampleApp/SampleReportApp/Form1.vb",
    "chars": 814,
    "preview": "Public Class Form1\n\n    Private file As String\n\n    Private Sub ButtonSelectReport_Click(sender As Object, e As EventAr"
  },
  {
    "path": "Examples/SampleApp/SampleReportApp/GlobalSuppressions.vb",
    "chars": 429,
    "preview": "' This file is used by Code Analysis to maintain SuppressMessage\n' attributes that are applied to this project.\n' Proje"
  },
  {
    "path": "Examples/SampleApp/SampleReportApp/My Project/Application.Designer.vb",
    "chars": 1833,
    "preview": "'------------------------------------------------------------------------------\n' <auto-generated>\n'     This code was "
  },
  {
    "path": "Examples/SampleApp/SampleReportApp/My Project/Application.myapp",
    "chars": 497,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<MyApplicationData xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:x"
  },
  {
    "path": "Examples/SampleApp/SampleReportApp/My Project/AssemblyInfo.vb",
    "chars": 1145,
    "preview": "Imports System\nImports System.Reflection\nImports System.Runtime.InteropServices\n\n' General Information about an assembl"
  },
  {
    "path": "Examples/SampleApp/SampleReportApp/My Project/Resources.Designer.vb",
    "chars": 2720,
    "preview": "'------------------------------------------------------------------------------\n' <auto-generated>\n'     This code was "
  },
  {
    "path": "Examples/SampleApp/SampleReportApp/My Project/Resources.resx",
    "chars": 5494,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "Examples/SampleApp/SampleReportApp/My Project/Settings.Designer.vb",
    "chars": 2906,
    "preview": "'------------------------------------------------------------------------------\n' <auto-generated>\n'     This code was "
  },
  {
    "path": "Examples/SampleApp/SampleReportApp/My Project/Settings.settings",
    "chars": 270,
    "preview": "<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\""
  },
  {
    "path": "Examples/SampleApp/SampleReportApp/SampleReportApp.vbproj",
    "chars": 1732,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <TargetFramework>net8.0-windows</TargetFramework>\n    <OutputTy"
  },
  {
    "path": "Examples/SampleApp/SampleReportApp/app.config",
    "chars": 2461,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <configSections>\n    <!-- For more information on Entity Framew"
  },
  {
    "path": "Examples/SampleApp/SampleReportApp.sln",
    "chars": 1548,
    "preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 2013\nVisualStudioVersion = 12.0.31101.0\nMi"
  },
  {
    "path": "Examples/SampleApp2-SetData/SampleApp2-SetData/App.config",
    "chars": 514,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n    <startup> \n        <supportedRuntime version=\"v4.0\" sku=\".NET"
  },
  {
    "path": "Examples/SampleApp2-SetData/SampleApp2-SetData/Form1.Designer.cs",
    "chars": 1433,
    "preview": "namespace SampleApp2_SetData\n{\n    partial class Form1\n    {\n        /// <summary>\n        /// Required designer variab"
  },
  {
    "path": "Examples/SampleApp2-SetData/SampleApp2-SetData/Form1.cs",
    "chars": 3581,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nu"
  },
  {
    "path": "Examples/SampleApp2-SetData/SampleApp2-SetData/Form1.resx",
    "chars": 5627,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!--\n    Microsoft ResX Schema\n\n    Version 2.0\n\n    The primary goals "
  },
  {
    "path": "Examples/SampleApp2-SetData/SampleApp2-SetData/GlobalSuppressions.cs",
    "chars": 463,
    "preview": "// This file is used by Code Analysis to maintain SuppressMessage\n// attributes that are applied to this project.\n// Pr"
  },
  {
    "path": "Examples/SampleApp2-SetData/SampleApp2-SetData/Program.cs",
    "chars": 517,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows.F"
  },
  {
    "path": "Examples/SampleApp2-SetData/SampleApp2-SetData/Properties/Resources.Designer.cs",
    "chars": 2800,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Examples/SampleApp2-SetData/SampleApp2-SetData/Properties/Resources.resx",
    "chars": 5494,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "Examples/SampleApp2-SetData/SampleApp2-SetData/Properties/Settings.Designer.cs",
    "chars": 1073,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Examples/SampleApp2-SetData/SampleApp2-SetData/Properties/Settings.settings",
    "chars": 240,
    "preview": "<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\""
  },
  {
    "path": "Examples/SampleApp2-SetData/SampleApp2-SetData/SampleApp2-SetData.csproj",
    "chars": 959,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <TargetFramework>net8.0-windows</TargetFramework>\n    <OutputTy"
  },
  {
    "path": "Examples/SampleApp2-SetData/SampleApp2-SetData/SampleApp2-TestReport.rdl",
    "chars": 6925,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdef"
  },
  {
    "path": "Examples/SampleApp2-SetData/SampleApp2-SetData.sln",
    "chars": 1553,
    "preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 2013\nVisualStudioVersion = 12.0.31101.0\nMi"
  },
  {
    "path": "Examples/SampleAppHyperLinkCustomAction/HyperLinkExample/App.config",
    "chars": 178,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n    <startup> \n        <supportedRuntime version=\"v4.0\" sku=\".NET"
  },
  {
    "path": "Examples/SampleAppHyperLinkCustomAction/HyperLinkExample/Form1.Designer.cs",
    "chars": 4422,
    "preview": "namespace HyperLinkExample\n{\n    partial class Form1\n    {\n        /// <summary>\n        /// Required designer variable"
  },
  {
    "path": "Examples/SampleAppHyperLinkCustomAction/HyperLinkExample/Form1.cs",
    "chars": 1262,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nu"
  },
  {
    "path": "Examples/SampleAppHyperLinkCustomAction/HyperLinkExample/Form1.resx",
    "chars": 5827,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!--\n    Microsoft ResX Schema\n\n    Version 2.0\n\n    The primary goals "
  },
  {
    "path": "Examples/SampleAppHyperLinkCustomAction/HyperLinkExample/GlobalSuppressions.cs",
    "chars": 463,
    "preview": "// This file is used by Code Analysis to maintain SuppressMessage\n// attributes that are applied to this project.\n// Pr"
  },
  {
    "path": "Examples/SampleAppHyperLinkCustomAction/HyperLinkExample/HyperLinkExample.csproj",
    "chars": 752,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <TargetFramework>net8.0-windows</TargetFramework>\n    <OutputTy"
  },
  {
    "path": "Examples/SampleAppHyperLinkCustomAction/HyperLinkExample/Program.cs",
    "chars": 515,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows.F"
  },
  {
    "path": "Examples/SampleAppHyperLinkCustomAction/HyperLinkExample/Properties/Resources.Designer.cs",
    "chars": 2796,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Examples/SampleAppHyperLinkCustomAction/HyperLinkExample/Properties/Resources.resx",
    "chars": 5494,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "Examples/SampleAppHyperLinkCustomAction/HyperLinkExample/Properties/Settings.Designer.cs",
    "chars": 1071,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Examples/SampleAppHyperLinkCustomAction/HyperLinkExample/Properties/Settings.settings",
    "chars": 240,
    "preview": "<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\""
  },
  {
    "path": "Examples/SampleAppHyperLinkCustomAction/SampleReportApp.sln",
    "chars": 2927,
    "preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 17\nVisualStudioVersion = 17.9.3472"
  },
  {
    "path": "Examples/SampleDesignerControl/SampleDesignerControl/App.config",
    "chars": 178,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n    <startup> \n        <supportedRuntime version=\"v4.0\" sku=\".NET"
  },
  {
    "path": "Examples/SampleDesignerControl/SampleDesignerControl/GlobalSuppressions.cs",
    "chars": 463,
    "preview": "// This file is used by Code Analysis to maintain SuppressMessage\n// attributes that are applied to this project.\n// Pr"
  },
  {
    "path": "Examples/SampleDesignerControl/SampleDesignerControl/Program.cs",
    "chars": 811,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows.F"
  },
  {
    "path": "Examples/SampleDesignerControl/SampleDesignerControl/Properties/Resources.Designer.cs",
    "chars": 2800,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Examples/SampleDesignerControl/SampleDesignerControl/Properties/Resources.resx",
    "chars": 5494,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "Examples/SampleDesignerControl/SampleDesignerControl/Properties/Settings.Designer.cs",
    "chars": 1073,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Examples/SampleDesignerControl/SampleDesignerControl/Properties/Settings.settings",
    "chars": 240,
    "preview": "<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\""
  },
  {
    "path": "Examples/SampleDesignerControl/SampleDesignerControl/SampleApp2-TestReport.rdl",
    "chars": 6925,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdef"
  },
  {
    "path": "Examples/SampleDesignerControl/SampleDesignerControl/SampleDesignerControl.csproj",
    "chars": 949,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <TargetFramework>net8.0-windows</TargetFramework>\n    <OutputTy"
  },
  {
    "path": "Examples/SampleDesignerControl/SampleDesignerControl.sln",
    "chars": 7660,
    "preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Express 2012 for Windows Desktop\nProject(\""
  },
  {
    "path": "Examples/SampleDesignerControl/SampleDesignerControlWPF/App.config",
    "chars": 178,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n    <startup> \n        <supportedRuntime version=\"v4.0\" sku=\".NET"
  },
  {
    "path": "Examples/SampleDesignerControl/SampleDesignerControlWPF/App.xaml",
    "chars": 325,
    "preview": "<Application x:Class=\"SampleDesignerControlWPF.App\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/pr"
  },
  {
    "path": "Examples/SampleDesignerControl/SampleDesignerControlWPF/App.xaml.cs",
    "chars": 338,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Configuration;\nusing System.Data;\nusing System.Linq;\nusing"
  },
  {
    "path": "Examples/SampleDesignerControl/SampleDesignerControlWPF/GlobalSuppressions.cs",
    "chars": 463,
    "preview": "// This file is used by Code Analysis to maintain SuppressMessage\n// attributes that are applied to this project.\n// Pr"
  },
  {
    "path": "Examples/SampleDesignerControl/SampleDesignerControlWPF/MainWindow.xaml",
    "chars": 677,
    "preview": "<Window x:Class=\"SampleDesignerControlWPF.MainWindow\"\n        xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/prese"
  },
  {
    "path": "Examples/SampleDesignerControl/SampleDesignerControlWPF/MainWindow.xaml.cs",
    "chars": 927,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
  },
  {
    "path": "Examples/SampleDesignerControl/SampleDesignerControlWPF/Properties/Resources.Designer.cs",
    "chars": 2812,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Examples/SampleDesignerControl/SampleDesignerControlWPF/Properties/Resources.resx",
    "chars": 5494,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "Examples/SampleDesignerControl/SampleDesignerControlWPF/Properties/Settings.Designer.cs",
    "chars": 1079,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "Examples/SampleDesignerControl/SampleDesignerControlWPF/Properties/Settings.settings",
    "chars": 193,
    "preview": "<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"uri:settings\" CurrentProfile=\"(Default)\">\n  <Profiles>\n    "
  },
  {
    "path": "Examples/SampleDesignerControl/SampleDesignerControlWPF/SampleDesignerControlWPF.csproj",
    "chars": 731,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <TargetFramework>net8.0-windows</TargetFramework>\n    <OutputTy"
  },
  {
    "path": "Examples/SqliteExamples/SimpleTest1.rdl",
    "chars": 26072,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdef"
  },
  {
    "path": "Examples/SqliteExamples/SimpleTest2.rdl",
    "chars": 13174,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdef"
  },
  {
    "path": "Examples/SqliteExamples/SimpleTest3WithParameters.rdl",
    "chars": 13206,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdef"
  },
  {
    "path": "Examples/SqliteExamples/SimpleTestConnectionString.rdl",
    "chars": 25729,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdef"
  },
  {
    "path": "Examples/SqliteExamples/barcode.rdl",
    "chars": 28219,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdef"
  },
  {
    "path": "Examples/SqliteExamples/chart.rdl",
    "chars": 18186,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdef"
  },
  {
    "path": "Examples/SqliteExamples/functions.rdl",
    "chars": 17854,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Report xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdef"
  },
  {
    "path": "Examples/config.xml",
    "chars": 2156,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<config> \n\t<localhostonly>true</localhostonly>\t<!-- change to 'false' if you want"
  },
  {
    "path": "Examples/designerstate.xml",
    "chars": 1789,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<designerstate>\n  <CurrentFiles>\n  </CurrentFiles>\n  <RecentFilesMax>5</RecentFil"
  },
  {
    "path": "Examples/mostly-empty.rdl",
    "chars": 2182,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Report xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xmlns:xsd=\"http:/"
  },
  {
    "path": "Examples/readerstate.xml",
    "chars": 120,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<readerstate>\n  <CurrentFiles />\n  <RecentFiles>\n  </RecentFiles>\n</readerstate> "
  },
  {
    "path": "Examples/usa_map.xml",
    "chars": 25241,
    "preview": "<MapData>\n  <Polygon>\n    <Points>32,4,30,9,32,16,32,24,30,32,30,36,39,42,40,50,53,52,61,55,71,55,82,54,92,58,100,58,100"
  }
]

// ... and 1044 more files (download for full content)

About this extraction

This page contains the full source code of the majorsilence/My-FyiReporting GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1244 files (11.8 MB), approximately 3.2M tokens, and a symbol index with 7807 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!