diff --git a/.gitignore b/.gitignore index 8bb09d809..072080890 100644 --- a/.gitignore +++ b/.gitignore @@ -221,3 +221,5 @@ pip-log.txt #Mr Developer .mr.developer.cfg +/.vs/slnx.sqlite +/.vs/slnx.sqlite diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json new file mode 100644 index 000000000..6b6114114 --- /dev/null +++ b/.vs/VSWorkspaceState.json @@ -0,0 +1,6 @@ +{ + "ExpandedNodes": [ + "" + ], + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..9237fc19a --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,4 @@ +## CodeStyling Guidelines + +When contributing to the [**sciBASIC#**](http://github.com/xieguigang/sciBASIC) project, If possible, please follow this [**sciBASIC Code Style Guidelines**](https://github.com/xieguigang/sciBASIC/tree/master/docs/vb_codestyle). We have been using this coding style for many years, please make your patches conform to these guidelines. + diff --git a/CPOL.htm b/CPOL.htm deleted file mode 100644 index 6f758c8cd..000000000 --- a/CPOL.htm +++ /dev/null @@ -1,251 +0,0 @@ -? - -The Code Project Open License (CPOL) - - - - -

The Code Project Open License (CPOL) 1.02

-
- -
-
- -

Preamble

-

- This License governs Your use of the Work. This License is intended to allow developers - to use the Source Code and Executable Files provided as part of the Work in any - application in any form. -

-

- The main points subject to the terms of the License are:

- - -

- This License is entered between You, the individual or other entity reading or otherwise - making use of the Work licensed pursuant to this License and the individual or other - entity which offers the Work under the terms of this License ("Author").

- -

License

-

- THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CODE PROJECT OPEN - LICENSE ("LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE - LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT - LAW IS PROHIBITED.

-

- BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HEREIN, YOU ACCEPT AND AGREE TO BE - BOUND BY THE TERMS OF THIS LICENSE. THE AUTHOR GRANTS YOU THE RIGHTS CONTAINED HEREIN - IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. IF YOU DO NOT - AGREE TO ACCEPT AND BE BOUND BY THE TERMS OF THIS LICENSE, YOU CANNOT MAKE ANY - USE OF THE WORK.

- -
    -
  1. Definitions. - -
      -
    1. "Articles" means, collectively, all articles written by Author - which describes how the Source Code and Executable Files for the Work may be used - by a user.
    2. -
    3. "Author" means the individual or entity that offers the Work under the terms - of this License.
    4. -
    5. "Derivative Work" means a work based upon the Work or upon the - Work and other pre-existing works.
    6. -
    7. "Executable Files" refer to the executables, binary files, configuration - and any required data files included in the Work.
    8. -
    9. "Publisher" means the provider of the website, magazine, CD-ROM, DVD or other - medium from or by which the Work is obtained by You.
    10. -
    11. "Source Code" refers to the collection of source code and configuration files - used to create the Executable Files.
    12. -
    13. "Standard Version" refers to such a Work if it has not been modified, or - has been modified in accordance with the consent of the Author, such consent being - in the full discretion of the Author.
    14. -
    15. "Work" refers to the collection of files distributed by the Publisher, including - the Source Code, Executable Files, binaries, data files, documentation, whitepapers - and the Articles.
    16. -
    17. "You" is you, an individual or entity wishing to use the Work and exercise - your rights under this License. -
    18. -
    -
  2. - -
  3. Fair Use/Fair Use Rights. Nothing in this License is intended to - reduce, limit, or restrict any rights arising from fair use, fair dealing, first - sale or other limitations on the exclusive rights of the copyright owner under copyright - law or other applicable laws. -
  4. - -
  5. License Grant. Subject to the terms and conditions of this License, - the Author hereby grants You a worldwide, royalty-free, non-exclusive, perpetual - (for the duration of the applicable copyright) license to exercise the rights in - the Work as stated below: - -
      -
    1. You may use the standard version of the Source Code or Executable Files in Your - own applications.
    2. -
    3. You may apply bug fixes, portability fixes and other modifications obtained from - the Public Domain or from the Author. A Work modified in such a way shall still - be considered the standard version and will be subject to this License.
    4. -
    5. You may otherwise modify Your copy of this Work (excluding the Articles) in any - way to create a Derivative Work, provided that You insert a prominent notice in - each changed file stating how, when and where You changed that file.
    6. -
    7. You may distribute the standard version of the Executable Files and Source Code - or Derivative Work in aggregate with other (possibly commercial) programs as part - of a larger (possibly commercial) software distribution.
    8. -
    9. The Articles discussing the Work published in any form by the author may not be - distributed or republished without the Author's consent. The author retains - copyright to any such Articles. You may use the Executable Files and Source Code - pursuant to this License but you may not repost or republish or otherwise distribute - or make available the Articles, without the prior written consent of the Author.
    10. -
    - - Any subroutines or modules supplied by You and linked into the Source Code or Executable - Files of this Work shall not be considered part of this Work and will not be subject - to the terms of this License. -
  6. - -
  7. Patent License. Subject to the terms and conditions of this License, - each Author hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, - irrevocable (except as stated in this section) patent license to make, have made, use, import, - and otherwise transfer the Work.
  8. - -
  9. Restrictions. The license granted in Section 3 above is expressly - made subject to and limited by the following restrictions: - -
      -
    1. You agree not to remove any of the original copyright, patent, trademark, and - attribution notices and associated disclaimers that may appear in the Source Code - or Executable Files.
    2. -
    3. You agree not to advertise or in any way imply that this Work is a product of Your - own.
    4. -
    5. The name of the Author may not be used to endorse or promote products derived from - the Work without the prior written consent of the Author.
    6. -
    7. You agree not to sell, lease, or rent any part of the Work. This does not restrict - you from including the Work or any part of the Work inside a larger software - distribution that itself is being sold. The Work by itself, though, cannot be sold, - leased or rented.
    8. -
    9. You may distribute the Executable Files and Source Code only under the terms of - this License, and You must include a copy of, or the Uniform Resource Identifier - for, this License with every copy of the Executable Files or Source Code You distribute - and ensure that anyone receiving such Executable Files and Source Code agrees that - the terms of this License apply to such Executable Files and/or Source Code. You - may not offer or impose any terms on the Work that alter or restrict the terms of - this License or the recipients' exercise of the rights granted hereunder. You - may not sublicense the Work. You must keep intact all notices that refer to this - License and to the disclaimer of warranties. You may not distribute the Executable - Files or Source Code with any technological measures that control access or use - of the Work in a manner inconsistent with the terms of this License.
    10. -
    11. You agree not to use the Work for illegal, immoral or improper purposes, or on pages - containing illegal, immoral or improper material. The Work is subject to applicable - export laws. You agree to comply with all such laws and regulations that may apply - to the Work after Your receipt of the Work. -
    12. -
    -
  10. - -
  11. Representations, Warranties and Disclaimer. THIS WORK IS PROVIDED - "AS IS", "WHERE IS" AND "AS AVAILABLE", WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES - OR CONDITIONS OR GUARANTEES. YOU, THE USER, ASSUME ALL RISK IN ITS USE, INCLUDING - COPYRIGHT INFRINGEMENT, PATENT INFRINGEMENT, SUITABILITY, ETC. AUTHOR EXPRESSLY - DISCLAIMS ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES OR CONDITIONS, INCLUDING - WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF MERCHANTABILITY, MERCHANTABLE QUALITY - OR FITNESS FOR A PARTICULAR PURPOSE, OR ANY WARRANTY OF TITLE OR NON-INFRINGEMENT, - OR THAT THE WORK (OR ANY PORTION THEREOF) IS CORRECT, USEFUL, BUG-FREE OR FREE OF - VIRUSES. YOU MUST PASS THIS DISCLAIMER ON WHENEVER YOU DISTRIBUTE THE WORK OR DERIVATIVE - WORKS. -
  12. - -
  13. Indemnity. You agree to defend, indemnify and hold harmless the Author and - the Publisher from and against any claims, suits, losses, damages, liabilities, - costs, and expenses (including reasonable legal or attorneys’ fees) resulting from - or relating to any use of the Work by You. -
  14. - -
  15. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE - LAW, IN NO EVENT WILL THE AUTHOR OR THE PUBLISHER BE LIABLE TO YOU ON ANY LEGAL - THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES - ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK OR OTHERWISE, EVEN IF THE AUTHOR - OR THE PUBLISHER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -
  16. - -
  17. Termination. - -
      -
    1. This License and the rights granted hereunder will terminate automatically upon - any breach by You of any term of this License. Individuals or entities who have - received Derivative Works from You under this License, however, will not have their - licenses terminated provided such individuals or entities remain in full compliance - with those licenses. Sections 1, 2, 6, 7, 8, 9, 10 and 11 will survive any termination - of this License.
    2. - -
    3. If You bring a copyright, trademark, patent or any other infringement claim against - any contributor over infringements You claim are made by the Work, your License - from such contributor to the Work ends automatically.
    4. - -
    5. Subject to the above terms and conditions, this License is perpetual (for the duration - of the applicable copyright in the Work). Notwithstanding the above, the Author - reserves the right to release the Work under different license terms or to stop - distributing the Work at any time; provided, however that any such election will - not serve to withdraw this License (or any other license that has been, or is required - to be, granted under the terms of this License), and this License will continue - in full force and effect unless terminated as stated above. -
    6. -
    -
  18. - -
  19. Publisher. The parties hereby confirm that the Publisher shall - not, under any circumstances, be responsible for and shall not have any liability - in respect of the subject matter of this License. The Publisher makes no warranty - whatsoever in connection with the Work and shall not be liable to You or any party - on any legal theory for any damages whatsoever, including without limitation any - general, special, incidental or consequential damages arising in connection to this - license. The Publisher reserves the right to cease making the Work available to - You at any time without notice
  20. - -
  21. Miscellaneous - -
      -
    1. This License shall be governed by the laws of the location of the head office of - the Author or if the Author is an individual, the laws of location of the principal - place of residence of the Author.
    2. -
    3. If any provision of this License is invalid or unenforceable under applicable law, - it shall not affect the validity or enforceability of the remainder of the terms - of this License, and without further action by the parties to this License, such - provision shall be reformed to the minimum extent necessary to make such provision - valid and enforceable.
    4. -
    5. No term or provision of this License shall be deemed waived and no breach consented - to unless such waiver or consent shall be in writing and signed by the party to - be charged with such waiver or consent.
    6. -
    7. This License constitutes the entire agreement between the parties with respect to - the Work licensed herein. There are no understandings, agreements or representations - with respect to the Work not specified herein. The Author shall not be bound by - any additional provisions that may appear in any communication from You. This License - may not be modified without the mutual written agreement of the Author and You. -
    8. -
    - -
  22. -
- -
-
- - - diff --git a/CPOL.txt b/CPOL.txt deleted file mode 100644 index f04083819..000000000 --- a/CPOL.txt +++ /dev/null @@ -1,23 +0,0 @@ -CPOL credits - -Some control library required for the UI development is list here, all of these libraries you can found at codeproject.com: - -MetroUI Form -Metro UI (Zune like) Interface (form) -http://www.codeproject.com/Articles/138661/Metro-UI-Zune-like-Interface-form - -NeoLua -NeoLua (Lua for the .NET Dynamic Language Runtime) -http://www.codeproject.com/Articles/674128/NeoLua-Lua-for-the-NET-Dynamic-Language-Runtime - -Pavel.CodeEditor -Fast Colored TextBox for Syntax Highlighting -http://www.codeproject.com/Articles/161871/Fast-Colored-TextBox-for-syntax-highlighting - - - - -BSD licensed - -R.NET -https://rdotnet.codeplex.com/ \ No newline at end of file diff --git a/ChangeLogs.src.txt b/ChangeLogs.src.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/ChangeLogs.txt b/ChangeLogs.txt deleted file mode 100644 index 3423f52fe..000000000 --- a/ChangeLogs.txt +++ /dev/null @@ -1,2 +0,0 @@ -2014.12.07 -improved the internal Wiki help system diff --git a/Developer Guides.docx b/Developer Guides.docx deleted file mode 100644 index 130c44167..000000000 Binary files a/Developer Guides.docx and /dev/null differ diff --git a/EndNoteLite/EndNoteLite.vbproj b/EndNoteLite/EndNoteLite.vbproj deleted file mode 100644 index 25cbbdeb0..000000000 --- a/EndNoteLite/EndNoteLite.vbproj +++ /dev/null @@ -1,220 +0,0 @@ - - - - - Debug - AnyCPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C} - Library - EndNoteLite - EndNoteLite - 512 - Windows - v4.6 - - - - true - full - true - true - bin\Debug\ - EndNoteLite.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - pdbonly - false - true - true - ..\..\GCModeller\GCModeller-x64\ - EndNoteLite.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - On - - - Binary - - - Off - - - On - - - true - true - true - bin\x64\Debug\ - EndNoteLite.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x64 - MinimumRecommendedRules.ruleset - - - true - ..\..\GCModeller\GCModeller-x64\ - EndNoteLite.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - bin\Publish\ - EndNoteLite.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - AnyCPU - MinimumRecommendedRules.ruleset - - - true - bin\x64\Publish\ - EndNoteLite.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - true - true - bin\x86\Debug\ - EndNoteLite.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x86 - MinimumRecommendedRules.ruleset - - - true - bin\x86\Release\ - EndNoteLite.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - true - bin\x86\Publish\ - EndNoteLite.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - true - bin\docs\ - EndNoteLite.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - AnyCPU - MinimumRecommendedRules.ruleset - - - true - bin\x64\docs\ - EndNoteLite.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - bin\x86\docs\ - EndNoteLite.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - - - True - Application.myapp - - - True - True - Resources.resx - - - True - Settings.settings - True - - - - - VbMyResourcesResXFileCodeGenerator - Resources.Designer.vb - My.Resources - Designer - - - - - MyApplicationCodeGenerator - Application.Designer.vb - - - SettingsSingleFileGenerator - My - Settings.Designer.vb - - - - - {fecce1fd-e1d4-49e3-a668-60bb5e7aed99} - +Microsoft.VisualBasic.Architecture.Framework - - - - - \ No newline at end of file diff --git a/EndNoteLite/LibraryHtmlDoc.vb b/EndNoteLite/LibraryHtmlDoc.vb deleted file mode 100644 index 723f8e796..000000000 --- a/EndNoteLite/LibraryHtmlDoc.vb +++ /dev/null @@ -1,3 +0,0 @@ -Module LibraryHtmlDoc - -End Module diff --git a/EndNoteLite/My Project/Application.myapp b/EndNoteLite/My Project/Application.myapp deleted file mode 100644 index 758895def..000000000 --- a/EndNoteLite/My Project/Application.myapp +++ /dev/null @@ -1,10 +0,0 @@ - - - false - false - 0 - true - 0 - 1 - true - diff --git a/EndNoteLite/My Project/AssemblyInfo.vb b/EndNoteLite/My Project/AssemblyInfo.vb deleted file mode 100644 index 8604d267c..000000000 --- a/EndNoteLite/My Project/AssemblyInfo.vb +++ /dev/null @@ -1,35 +0,0 @@ -Imports System -Imports System.Reflection -Imports System.Runtime.InteropServices - -' General Information about an assembly is controlled through the following -' set of attributes. Change these attribute values to modify the information -' associated with an assembly. - -' Review the values of the assembly attributes - - - - - - - - - - -'The following GUID is for the ID of the typelib if this project is exposed to COM - - -' Version information for an assembly consists of the following four values: -' -' Major Version -' Minor Version -' Build Number -' Revision -' -' You can specify all the values or you can default the Build and Revision Numbers -' by using the '*' as shown below: -' - - - diff --git a/EndNoteLite/My Project/Resources.Designer.vb b/EndNoteLite/My Project/Resources.Designer.vb deleted file mode 100644 index 072d937a4..000000000 --- a/EndNoteLite/My Project/Resources.Designer.vb +++ /dev/null @@ -1,63 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - -Imports System - -Namespace My.Resources - - 'This class was auto-generated by the StronglyTypedResourceBuilder - 'class via a tool like ResGen or Visual Studio. - 'To add or remove a member, edit your .ResX file then rerun ResGen - 'with the /str option, or rebuild your VS project. - ''' - ''' A strongly-typed resource class, for looking up localized strings, etc. - ''' - _ - Friend Module Resources - - Private resourceMan As Global.System.Resources.ResourceManager - - Private resourceCulture As Global.System.Globalization.CultureInfo - - ''' - ''' Returns the cached ResourceManager instance used by this class. - ''' - _ - Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager - Get - If Object.ReferenceEquals(resourceMan, Nothing) Then - Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("EndNoteLite.Resources", GetType(Resources).Assembly) - resourceMan = temp - End If - Return resourceMan - End Get - End Property - - ''' - ''' Overrides the current thread's CurrentUICulture property for all - ''' resource lookups using this strongly typed resource class. - ''' - _ - Friend Property Culture() As Global.System.Globalization.CultureInfo - Get - Return resourceCulture - End Get - Set - resourceCulture = value - End Set - End Property - End Module -End Namespace diff --git a/EndNoteLite/My Project/Settings.Designer.vb b/EndNoteLite/My Project/Settings.Designer.vb deleted file mode 100644 index c0c17a034..000000000 --- a/EndNoteLite/My Project/Settings.Designer.vb +++ /dev/null @@ -1,73 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - - -Namespace My - - _ - Partial Friend NotInheritable Class MySettings - Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) - -#Region "My.Settings Auto-Save Functionality" -#If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean - - Private Shared addedHandlerLockObject As New Object - - _ - Private Shared Sub AutoSaveSettings( sender As Global.System.Object, e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub -#End If -#End Region - - Public Shared ReadOnly Property [Default]() As MySettings - Get - -#If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If -#End If - Return defaultInstance - End Get - End Property - End Class -End Namespace - -Namespace My - - _ - Friend Module MySettingsProperty - - _ - Friend ReadOnly Property Settings() As Global.EndNoteLite.My.MySettings - Get - Return Global.EndNoteLite.My.MySettings.Default - End Get - End Property - End Module -End Namespace diff --git a/EndNoteLite/PMCFullText.vb b/EndNoteLite/PMCFullText.vb deleted file mode 100644 index 36da63aa9..000000000 --- a/EndNoteLite/PMCFullText.vb +++ /dev/null @@ -1,3 +0,0 @@ -Public Module PMCFullText - -End Module diff --git a/EndNoteLite/academic.enw b/EndNoteLite/academic.enw deleted file mode 100644 index 959fe9bec..000000000 --- a/EndNoteLite/academic.enw +++ /dev/null @@ -1,11 +0,0 @@ -%0 Journal Article -%T A Novel Model, Recurrent Fuzzy Associative Memory, for Recognizing Time-Series Patterns Contained Ambiguity and Its Application -%A Kim, W. -%A Lee, J. -%A Kim, G. -%A Choi, H. -%J The Kips Transactions Partb -%V 11B -%N 4 -%P 449-456 -%D 2004 diff --git a/EndNoteLite/endnote-citations.enw b/EndNoteLite/endnote-citations.enw deleted file mode 100644 index c31ad21c7..000000000 --- a/EndNoteLite/endnote-citations.enw +++ /dev/null @@ -1,17 +0,0 @@ -%A Griffiths-Jones, Sam -%A Bateman, Alex -%A Marshall, Mhairi -%A Khanna, Ajay -%A Eddy, Sean R. -%T Rfam: an RNA family database -%0 Journal Article -%D 2003 -%8 January 1, 2003 -%J Nucleic Acids Research -%P 439-441 -%R 10.1093/nar/gkg006 -%V 31 -%N 1 -%U http://nar.oxfordjournals.org/content/31/1/439.abstract -%X Rfam is a collection of multiple sequence alignments and covariance models representing non-coding RNA families. Rfam is available on the web in the UK at http://www.sanger.ac.uk/Software/Rfam/ and in the US at http://rfam.wustl.edu/. These websites allow the user to search a query sequence against a library of covariance models, and view multiple sequence alignments and family annotation. The database can also be downloaded in flatfile form and searched locally using the INFERNAL package (http://infernal.wustl.edu/). The first release of Rfam (1.0) contains 25 families, which annotate over 50 000 non-coding RNA genes in the taxonomic divisions of the EMBL nucleotide database. - diff --git a/Shoal.v2/Shoal.v2/Resources/gpl.txt b/LICENSE similarity index 99% rename from Shoal.v2/Shoal.v2/Resources/gpl.txt rename to LICENSE index 94a9ed024..733c07236 100644 --- a/Shoal.v2/Shoal.v2/Resources/gpl.txt +++ b/LICENSE @@ -631,8 +631,8 @@ to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. - - Copyright (C) + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: - Copyright (C) + {project} Copyright (C) {year} {fullname} This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. @@ -672,3 +672,4 @@ may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . + diff --git a/LINQ.Extensions.ShoalShell.HybridScripting/API.vb b/LINQ.Extensions.ShoalShell.HybridScripting/API.vb deleted file mode 100644 index 594069ab9..000000000 --- a/LINQ.Extensions.ShoalShell.HybridScripting/API.vb +++ /dev/null @@ -1,34 +0,0 @@ -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.HybridsScripting -Imports Microsoft.VisualBasic.Scripting.ShoalShell -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime -Imports Microsoft.VisualBasic.LINQ.Script - - -<[Namespace]("LINQ", Description:="SQL like query scripting language for the object oriented database.")> -Public Module API - - Dim LINQ As DynamicsRuntime - - - - Public Function Initialize() As Boolean - API.LINQ = New DynamicsRuntime - Return True - End Function - - - - Public Function Evaluate(script As String) As Object - Return LINQ.Evaluate(script) - End Function - - - - Public Function SetValue(var As String, value As Object) As Boolean - If TypeOf value Is IEnumerable Then - Call LINQ.SetObject(var, DirectCast(value, IEnumerable)) - End If - Return True - End Function -End Module diff --git a/LINQ.Extensions.ShoalShell.HybridScripting/LINQ.Extensions.ShoalShell.HybridScripting.vbproj b/LINQ.Extensions.ShoalShell.HybridScripting/LINQ.Extensions.ShoalShell.HybridScripting.vbproj deleted file mode 100644 index 98261917a..000000000 --- a/LINQ.Extensions.ShoalShell.HybridScripting/LINQ.Extensions.ShoalShell.HybridScripting.vbproj +++ /dev/null @@ -1,143 +0,0 @@ - - - - - Debug - AnyCPU - {B2355947-6A37-42F4-9340-CEFF43F37A2B} - Library - LINQExtensions.ShoalShell.HybridScripting - LINQ.Extensions.ShoalShell.HybridScripting - 512 - Windows - v4.6 - - - - true - full - true - true - ..\ShoalShell\bin\Debug\ - LINQ.Extensions.ShoalShell.HybridScripting.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - pdbonly - false - true - true - ..\..\GCModeller\GCModeller\ - LINQ.Extensions.ShoalShell.HybridScripting.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - On - - - Binary - - - Off - - - On - - - true - true - true - bin\x64\Debug\ - LINQ.Extensions.ShoalShell.HybridScripting.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x64 - MinimumRecommendedRules.ruleset - - - true - ..\..\GCModeller\GCModeller-x64\ - LINQ.Extensions.ShoalShell.HybridScripting.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - True - Application.myapp - - - True - True - Resources.resx - - - True - Settings.settings - True - - - - - VbMyResourcesResXFileCodeGenerator - Resources.Designer.vb - My.Resources - Designer - - - - - MyApplicationCodeGenerator - Application.Designer.vb - - - SettingsSingleFileGenerator - My - Settings.Designer.vb - - - - - {a7cb16ff-75c6-4746-8449-86c121d723c4} - ShoalShell_Core.v2 - - - - - - - - - - - \ No newline at end of file diff --git a/LINQ.Extensions.ShoalShell.HybridScripting/My Project/Application.Designer.vb b/LINQ.Extensions.ShoalShell.HybridScripting/My Project/Application.Designer.vb deleted file mode 100644 index 88dd01c78..000000000 --- a/LINQ.Extensions.ShoalShell.HybridScripting/My Project/Application.Designer.vb +++ /dev/null @@ -1,13 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - diff --git a/LINQ.Extensions.ShoalShell.HybridScripting/My Project/Application.myapp b/LINQ.Extensions.ShoalShell.HybridScripting/My Project/Application.myapp deleted file mode 100644 index 758895def..000000000 --- a/LINQ.Extensions.ShoalShell.HybridScripting/My Project/Application.myapp +++ /dev/null @@ -1,10 +0,0 @@ - - - false - false - 0 - true - 0 - 1 - true - diff --git a/LINQ.Extensions.ShoalShell.HybridScripting/My Project/AssemblyInfo.vb b/LINQ.Extensions.ShoalShell.HybridScripting/My Project/AssemblyInfo.vb deleted file mode 100644 index d5e8e4da4..000000000 --- a/LINQ.Extensions.ShoalShell.HybridScripting/My Project/AssemblyInfo.vb +++ /dev/null @@ -1,35 +0,0 @@ -Imports System -Imports System.Reflection -Imports System.Runtime.InteropServices - -' General Information about an assembly is controlled through the following -' set of attributes. Change these attribute values to modify the information -' associated with an assembly. - -' Review the values of the assembly attributes - - - - - - - - - - -'The following GUID is for the ID of the typelib if this project is exposed to COM - - -' Version information for an assembly consists of the following four values: -' -' Major Version -' Minor Version -' Build Number -' Revision -' -' You can specify all the values or you can default the Build and Revision Numbers -' by using the '*' as shown below: -' - - - diff --git a/LINQ.Extensions.ShoalShell.HybridScripting/My Project/Resources.Designer.vb b/LINQ.Extensions.ShoalShell.HybridScripting/My Project/Resources.Designer.vb deleted file mode 100644 index 1b6774d97..000000000 --- a/LINQ.Extensions.ShoalShell.HybridScripting/My Project/Resources.Designer.vb +++ /dev/null @@ -1,104 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - -Imports System - -Namespace My.Resources - - 'This class was auto-generated by the StronglyTypedResourceBuilder - 'class via a tool like ResGen or Visual Studio. - 'To add or remove a member, edit your .ResX file then rerun ResGen - 'with the /str option, or rebuild your VS project. - ''' - ''' A strongly-typed resource class, for looking up localized strings, etc. - ''' - _ - Friend Module Resources - - Private resourceMan As Global.System.Resources.ResourceManager - - Private resourceCulture As Global.System.Globalization.CultureInfo - - ''' - ''' Returns the cached ResourceManager instance used by this class. - ''' - _ - Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager - Get - If Object.ReferenceEquals(resourceMan, Nothing) Then - Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("LINQExtensions.ShoalShell.HybridScripting.Resources", GetType(Resources).Assembly) - resourceMan = temp - End If - Return resourceMan - End Get - End Property - - ''' - ''' Overrides the current thread's CurrentUICulture property for all - ''' resource lookups using this strongly typed resource class. - ''' - _ - Friend Property Culture() As Global.System.Globalization.CultureInfo - Get - Return resourceCulture - End Get - Set - resourceCulture = value - End Set - End Property - - ''' - ''' Looks up a localized string similar to GNU GENERAL PUBLIC LICENSE - ''' Version 3, 29 June 2007 - ''' - ''' Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> - ''' Everyone is permitted to copy and distribute verbatim copies - ''' of this license document, but changing it is not allowed. - ''' - ''' Preamble - ''' - ''' The GNU General Public License is a free, copyleft license for - '''software and other kinds of works. - ''' - ''' The licenses for most software and other practical works are designed - '''to [rest of string was truncated]";. - ''' - Friend ReadOnly Property gpl() As String - Get - Return ResourceManager.GetString("gpl", resourceCulture) - End Get - End Property - - ''' - ''' Looks up a localized string similar to This program is free software: you can redistribute it and/or modify - '''it under the terms of the GNU General Public License as published by - '''the Free Software Foundation, either version 3 of the License, or - '''any later version. - ''' - '''This program is distributed in the hope that it will be useful, - '''but WITHOUT ANY WARRANTY; without even the implied warranty of - '''MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - '''GNU General Public License for more details. - ''' - '''You should have received a copy of the GNU [rest of string was truncated]";. - ''' - Friend ReadOnly Property license() As String - Get - Return ResourceManager.GetString("license", resourceCulture) - End Get - End Property - End Module -End Namespace diff --git a/LINQ.Extensions.ShoalShell.HybridScripting/My Project/Resources.resx b/LINQ.Extensions.ShoalShell.HybridScripting/My Project/Resources.resx deleted file mode 100644 index 5a97acb37..000000000 --- a/LINQ.Extensions.ShoalShell.HybridScripting/My Project/Resources.resx +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - ..\Resources\gpl.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312 - - - ..\Resources\license.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312 - - \ No newline at end of file diff --git a/LINQ.Extensions.ShoalShell.HybridScripting/My Project/Settings.Designer.vb b/LINQ.Extensions.ShoalShell.HybridScripting/My Project/Settings.Designer.vb deleted file mode 100644 index 5300306f6..000000000 --- a/LINQ.Extensions.ShoalShell.HybridScripting/My Project/Settings.Designer.vb +++ /dev/null @@ -1,73 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - - -Namespace My - - _ - Partial Friend NotInheritable Class MySettings - Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) - -#Region "My.Settings Auto-Save Functionality" -#If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean - - Private Shared addedHandlerLockObject As New Object - - _ - Private Shared Sub AutoSaveSettings( sender As Global.System.Object, e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub -#End If -#End Region - - Public Shared ReadOnly Property [Default]() As MySettings - Get - -#If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If -#End If - Return defaultInstance - End Get - End Property - End Class -End Namespace - -Namespace My - - _ - Friend Module MySettingsProperty - - _ - Friend ReadOnly Property Settings() As Global.LINQExtensions.ShoalShell.HybridScripting.My.MySettings - Get - Return Global.LINQExtensions.ShoalShell.HybridScripting.My.MySettings.Default - End Get - End Property - End Module -End Namespace diff --git a/LINQ.Extensions.ShoalShell.HybridScripting/My Project/Settings.settings b/LINQ.Extensions.ShoalShell.HybridScripting/My Project/Settings.settings deleted file mode 100644 index 85b890b3c..000000000 --- a/LINQ.Extensions.ShoalShell.HybridScripting/My Project/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/LINQ.Extensions.ShoalShell.HybridScripting/Resources/gpl.txt b/LINQ.Extensions.ShoalShell.HybridScripting/Resources/gpl.txt deleted file mode 100644 index 94a9ed024..000000000 --- a/LINQ.Extensions.ShoalShell.HybridScripting/Resources/gpl.txt +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/LINQ.Extensions.ShoalShell.HybridScripting/Resources/license.txt b/LINQ.Extensions.ShoalShell.HybridScripting/Resources/license.txt deleted file mode 100644 index da76ca0a9..000000000 --- a/LINQ.Extensions.ShoalShell.HybridScripting/Resources/license.txt +++ /dev/null @@ -1,12 +0,0 @@ -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . \ No newline at end of file diff --git a/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/API.vb b/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/API.vb deleted file mode 100644 index 6111a82a8..000000000 --- a/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/API.vb +++ /dev/null @@ -1,51 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.HybridsScripting -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports Microsoft.VisualBasic.Scripting.ShoalShell -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime -Imports Microsoft.VisualBasic.Scripting.MetaData -Imports Microsoft.VisualBasic.Linq.Extensions - -<[PackageNamespace]("VBMath", - Description:="This package enable Shoal language can be doing the mathematics calculation.", - Publisher:="xie.guigang@gmail.com")> - -Public Module API - - - Public Function Initialize() As Boolean - 'Do not needs any initialization - Return True - End Function - - - - Public Function Evaluate(Script As String) As Object - Return ScriptEngine.Shell(Script) - End Function - - - - Public Function SetValue(var As String, value As Object) As Boolean - Try - Call Mathematical.ScriptEngine.SetVariable(var, value) - Return True - Catch ex As Exception - Return False - End Try - End Function - - - Public Function Ranks(data As Generic.IEnumerable(Of Double), Optional Log2Rank As Boolean = False, Optional Level As Integer = 100) As Integer() - If Log2Rank Then - Return data.Log2Ranks(Level).ToArray(Function(n) CInt(n)) - Else - Return data.GenerateMapping(Level) - End If - End Function - - - Public Function LoadVector(path As String) As Double() - Dim LQuery = (From line As String In IO.File.ReadAllLines(path) Select Val(line)).ToArray - Return LQuery - End Function -End Module diff --git a/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting.vbproj b/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting.vbproj deleted file mode 100644 index edfa82130..000000000 --- a/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting.vbproj +++ /dev/null @@ -1,226 +0,0 @@ - - - - - Debug - AnyCPU - {85E19618-8A67-47DE-892D-4BB4EAF59AE2} - Library - Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting - Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting - 512 - Windows - v4.6 - - - - true - full - true - true - ..\Shoal.v2\Console\bin\Debug\ - Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - pdbonly - false - true - true - ..\..\GCModeller\GCModeller\ - Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - On - - - Binary - - - Off - - - On - - - true - true - true - bin\x64\Debug\ - Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x64 - MinimumRecommendedRules.ruleset - - - true - ..\..\GCModeller\GCModeller-x64\ - Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - bin\Publish\ - Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - AnyCPU - MinimumRecommendedRules.ruleset - - - true - bin\x64\Publish\ - Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - true - true - bin\x86\Debug\ - Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x86 - MinimumRecommendedRules.ruleset - - - true - bin\x86\Release\ - Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - true - bin\x86\Publish\ - Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - true - bin\docs\ - Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - AnyCPU - MinimumRecommendedRules.ruleset - - - true - bin\x64\docs\ - Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - bin\x86\docs\ - Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - True - Application.myapp - - - True - True - Resources.resx - - - True - Settings.settings - True - - - - - VbMyResourcesResXFileCodeGenerator - Resources.Designer.vb - My.Resources - Designer - - - - - MyApplicationCodeGenerator - Application.Designer.vb - - - SettingsSingleFileGenerator - My - Settings.Designer.vb - - - - - {fecce1fd-e1d4-49e3-a668-60bb5e7aed99} - +Microsoft.VisualBasic.Architecture.Framework - - - {e3367b88-5d0c-495a-8273-331656d4b5aa} - Microsoft.VisualBasic.Mathematical - - - {a7cb16ff-75c6-4746-8449-86c121d723c4} - ShoalShell_Core.v2 - - - - - \ No newline at end of file diff --git a/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/My Project/Application.Designer.vb b/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/My Project/Application.Designer.vb deleted file mode 100644 index 88dd01c78..000000000 --- a/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/My Project/Application.Designer.vb +++ /dev/null @@ -1,13 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - diff --git a/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/My Project/Application.myapp b/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/My Project/Application.myapp deleted file mode 100644 index 758895def..000000000 --- a/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/My Project/Application.myapp +++ /dev/null @@ -1,10 +0,0 @@ - - - false - false - 0 - true - 0 - 1 - true - diff --git a/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/My Project/AssemblyInfo.vb b/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/My Project/AssemblyInfo.vb deleted file mode 100644 index 02e133853..000000000 --- a/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/My Project/AssemblyInfo.vb +++ /dev/null @@ -1,35 +0,0 @@ -Imports System -Imports System.Reflection -Imports System.Runtime.InteropServices - -' General Information about an assembly is controlled through the following -' set of attributes. Change these attribute values to modify the information -' associated with an assembly. - -' Review the values of the assembly attributes - - - - - - - - - - -'The following GUID is for the ID of the typelib if this project is exposed to COM - - -' Version information for an assembly consists of the following four values: -' -' Major Version -' Minor Version -' Build Number -' Revision -' -' You can specify all the values or you can default the Build and Revision Numbers -' by using the '*' as shown below: -' - - - diff --git a/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/My Project/Resources.Designer.vb b/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/My Project/Resources.Designer.vb deleted file mode 100644 index 85298ab10..000000000 --- a/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/My Project/Resources.Designer.vb +++ /dev/null @@ -1,63 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - -Imports System - -Namespace My.Resources - - 'This class was auto-generated by the StronglyTypedResourceBuilder - 'class via a tool like ResGen or Visual Studio. - 'To add or remove a member, edit your .ResX file then rerun ResGen - 'with the /str option, or rebuild your VS project. - ''' - ''' A strongly-typed resource class, for looking up localized strings, etc. - ''' - _ - Friend Module Resources - - Private resourceMan As Global.System.Resources.ResourceManager - - Private resourceCulture As Global.System.Globalization.CultureInfo - - ''' - ''' Returns the cached ResourceManager instance used by this class. - ''' - _ - Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager - Get - If Object.ReferenceEquals(resourceMan, Nothing) Then - Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting.Resources", GetType(Resources).Assembly) - resourceMan = temp - End If - Return resourceMan - End Get - End Property - - ''' - ''' Overrides the current thread's CurrentUICulture property for all - ''' resource lookups using this strongly typed resource class. - ''' - _ - Friend Property Culture() As Global.System.Globalization.CultureInfo - Get - Return resourceCulture - End Get - Set - resourceCulture = value - End Set - End Property - End Module -End Namespace diff --git a/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/My Project/Resources.resx b/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/My Project/Resources.resx deleted file mode 100644 index af7dbebba..000000000 --- a/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/My Project/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/My Project/Settings.Designer.vb b/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/My Project/Settings.Designer.vb deleted file mode 100644 index b1e30d245..000000000 --- a/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/My Project/Settings.Designer.vb +++ /dev/null @@ -1,73 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - - -Namespace My - - _ - Partial Friend NotInheritable Class MySettings - Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) - -#Region "My.Settings Auto-Save Functionality" -#If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean - - Private Shared addedHandlerLockObject As New Object - - _ - Private Shared Sub AutoSaveSettings( sender As Global.System.Object, e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub -#End If -#End Region - - Public Shared ReadOnly Property [Default]() As MySettings - Get - -#If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If -#End If - Return defaultInstance - End Get - End Property - End Class -End Namespace - -Namespace My - - _ - Friend Module MySettingsProperty - - _ - Friend ReadOnly Property Settings() As Global.Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting.My.MySettings - Get - Return Global.Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting.My.MySettings.Default - End Get - End Property - End Module -End Namespace diff --git a/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/My Project/Settings.settings b/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/My Project/Settings.settings deleted file mode 100644 index 85b890b3c..000000000 --- a/Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting/My Project/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/IDEPlugIn.vb b/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/IDEPlugIn.vb deleted file mode 100644 index 0ae0d20c0..000000000 --- a/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/IDEPlugIn.vb +++ /dev/null @@ -1,58 +0,0 @@ -Imports System.Windows.Forms -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports Microsoft.VisualBasic.Scripting.ShoalShell -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime -Imports Microsoft.VisualBasic.Windows.Forms -Imports Microsoft.VisualBasic.Language.UnixBash - -<[Namespace]("dynamics.ide_plugins")> -Public Module IDEPlugIn - - Dim CommandName As String - Dim Iconpath As String - Dim Target As ToolStripMenuItem - Dim _currentPath As String - - - Public Function SetName(value As String) As String - CommandName = value - Return IDEPlugIn.CommandName - End Function - - - Public Function SetIcon(value As String) As String - Try - IDEPlugIn.Iconpath = FileIO.FileSystem.GetFileInfo(value).FullName - Catch ex As Exception - Call Console.WriteLine("FILE_NOT_FOUND::menu icon image file ""{0}"" is not found on the filesystem, image will not load.", value) - End Try - Return IDEPlugIn.Iconpath - End Function - - - Public Function Initialize(action As System.Action) As Boolean - Dim CommandEntry = PlugIns.MenuAPI.AddCommand(Target, _currentPath, CommandName) - If Not String.IsNullOrEmpty(Iconpath) AndAlso FileIO.FileSystem.FileExists(Iconpath) Then CommandEntry.Image = System.Drawing.Image.FromFile(Iconpath) - AddHandler CommandEntry.Click, Sub() Call action() 'å…³è”命令 - - Return 0 - End Function - - ''' - ''' - ''' - ''' æ’件的载入点 - ''' ShellScriptæ’件脚本的文件夹路径 - ''' - Public Sub LoadScripts(Entry As ToolStripMenuItem, pluginDIR As String) - Target = Entry - pluginDIR = FileIO.FileSystem.GetDirectoryInfo(pluginDIR).FullName - - Using shoalShell As ScriptEngine = New ScriptEngine - For Each script As String In ls - l - r - wildcards("*.txt", "*.vbss") <= pluginDIR - _currentPath = script.Replace(pluginDIR, "") - Call shoalShell.Exec(script) - Next - End Using - End Sub -End Module diff --git a/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns.vbproj b/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns.vbproj deleted file mode 100644 index e637a52b3..000000000 --- a/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns.vbproj +++ /dev/null @@ -1,194 +0,0 @@ - - - - - Debug - AnyCPU - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F} - Library - Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns - Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns - 512 - Windows - v4.6 - - - - true - full - true - true - bin\Debug\ - Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - pdbonly - false - true - true - ..\..\GCModeller\GCModeller\ - Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - On - - - Binary - - - Off - - - On - - - true - true - true - bin\x64\Debug\ - Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x64 - MinimumRecommendedRules.ruleset - - - true - ..\..\GCModeller\GCModeller-x64\ - Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - bin\Publish\ - Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - AnyCPU - MinimumRecommendedRules.ruleset - - - true - bin\x64\Publish\ - Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - true - true - bin\x86\Debug\ - Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x86 - MinimumRecommendedRules.ruleset - - - true - bin\x86\Release\ - Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - true - bin\x86\Publish\ - Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - - - True - Application.myapp - - - True - True - Resources.resx - - - True - Settings.settings - True - - - - - VbMyResourcesResXFileCodeGenerator - Resources.Designer.vb - My.Resources - Designer - - - - - MyApplicationCodeGenerator - Application.Designer.vb - - - SettingsSingleFileGenerator - My - Settings.Designer.vb - - - - - {fecce1fd-e1d4-49e3-a668-60bb5e7aed99} - +Microsoft.VisualBasic.Architecture.Framework - - - {a7cb16ff-75c6-4746-8449-86c121d723c4} - ShoalShell_Core.v2 - - - - - \ No newline at end of file diff --git a/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/My Project/Application.Designer.vb b/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/My Project/Application.Designer.vb deleted file mode 100644 index 88dd01c78..000000000 --- a/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/My Project/Application.Designer.vb +++ /dev/null @@ -1,13 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - diff --git a/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/My Project/Application.myapp b/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/My Project/Application.myapp deleted file mode 100644 index 758895def..000000000 --- a/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/My Project/Application.myapp +++ /dev/null @@ -1,10 +0,0 @@ - - - false - false - 0 - true - 0 - 1 - true - diff --git a/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/My Project/AssemblyInfo.vb b/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/My Project/AssemblyInfo.vb deleted file mode 100644 index 26cee1937..000000000 --- a/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/My Project/AssemblyInfo.vb +++ /dev/null @@ -1,35 +0,0 @@ -Imports System -Imports System.Reflection -Imports System.Runtime.InteropServices - -' General Information about an assembly is controlled through the following -' set of attributes. Change these attribute values to modify the information -' associated with an assembly. - -' Review the values of the assembly attributes - - - - - - - - - - -'The following GUID is for the ID of the typelib if this project is exposed to COM - - -' Version information for an assembly consists of the following four values: -' -' Major Version -' Minor Version -' Build Number -' Revision -' -' You can specify all the values or you can default the Build and Revision Numbers -' by using the '*' as shown below: -' - - - diff --git a/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/My Project/Resources.Designer.vb b/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/My Project/Resources.Designer.vb deleted file mode 100644 index cb16f5e47..000000000 --- a/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/My Project/Resources.Designer.vb +++ /dev/null @@ -1,63 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - -Imports System - -Namespace My.Resources - - 'This class was auto-generated by the StronglyTypedResourceBuilder - 'class via a tool like ResGen or Visual Studio. - 'To add or remove a member, edit your .ResX file then rerun ResGen - 'with the /str option, or rebuild your VS project. - ''' - ''' A strongly-typed resource class, for looking up localized strings, etc. - ''' - _ - Friend Module Resources - - Private resourceMan As Global.System.Resources.ResourceManager - - Private resourceCulture As Global.System.Globalization.CultureInfo - - ''' - ''' Returns the cached ResourceManager instance used by this class. - ''' - _ - Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager - Get - If Object.ReferenceEquals(resourceMan, Nothing) Then - Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns.Resources", GetType(Resources).Assembly) - resourceMan = temp - End If - Return resourceMan - End Get - End Property - - ''' - ''' Overrides the current thread's CurrentUICulture property for all - ''' resource lookups using this strongly typed resource class. - ''' - _ - Friend Property Culture() As Global.System.Globalization.CultureInfo - Get - Return resourceCulture - End Get - Set - resourceCulture = value - End Set - End Property - End Module -End Namespace diff --git a/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/My Project/Resources.resx b/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/My Project/Resources.resx deleted file mode 100644 index af7dbebba..000000000 --- a/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/My Project/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/My Project/Settings.Designer.vb b/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/My Project/Settings.Designer.vb deleted file mode 100644 index b1d37aedb..000000000 --- a/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/My Project/Settings.Designer.vb +++ /dev/null @@ -1,73 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - - -Namespace My - - _ - Partial Friend NotInheritable Class MySettings - Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) - -#Region "My.Settings Auto-Save Functionality" -#If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean - - Private Shared addedHandlerLockObject As New Object - - _ - Private Shared Sub AutoSaveSettings( sender As Global.System.Object, e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub -#End If -#End Region - - Public Shared ReadOnly Property [Default]() As MySettings - Get - -#If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If -#End If - Return defaultInstance - End Get - End Property - End Class -End Namespace - -Namespace My - - _ - Friend Module MySettingsProperty - - _ - Friend ReadOnly Property Settings() As Global.Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns.My.MySettings - Get - Return Global.Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns.My.MySettings.Default - End Get - End Property - End Module -End Namespace diff --git a/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/My Project/Settings.settings b/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/My Project/Settings.settings deleted file mode 100644 index 85b890b3c..000000000 --- a/Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns/My Project/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/R/R.sln b/R/R.sln new file mode 100644 index 000000000..ffc6ec51a --- /dev/null +++ b/R/R.sln @@ -0,0 +1,108 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26430.12 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "R", "R\R.vbproj", "{0C2EB77C-39F2-460D-A3F8-CE905F867637}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "+Microsoft.VisualBasic.Architecture.Framework", "..\..\..\Source\Repos\sciBASIC\Microsoft.VisualBasic.Architecture.Framework\+Microsoft.VisualBasic.Architecture.Framework.vbproj", "{FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + DEMO|Any CPU = DEMO|Any CPU + DEMO|x64 = DEMO|x64 + DEMO|x86 = DEMO|x86 + docs|Any CPU = docs|Any CPU + docs|x64 = docs|x64 + docs|x86 = docs|x86 + Publish|Any CPU = Publish|Any CPU + Publish|x64 = Publish|x64 + Publish|x86 = Publish|x86 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 + Release2|Any CPU = Release2|Any CPU + Release2|x64 = Release2|x64 + Release2|x86 = Release2|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Debug|x64.ActiveCfg = Debug|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Debug|x64.Build.0 = Debug|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Debug|x86.ActiveCfg = Debug|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Debug|x86.Build.0 = Debug|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.DEMO|Any CPU.ActiveCfg = Debug|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.DEMO|Any CPU.Build.0 = Debug|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.DEMO|x64.ActiveCfg = Debug|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.DEMO|x64.Build.0 = Debug|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.DEMO|x86.ActiveCfg = Debug|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.DEMO|x86.Build.0 = Debug|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.docs|Any CPU.ActiveCfg = Debug|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.docs|Any CPU.Build.0 = Debug|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.docs|x64.ActiveCfg = Debug|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.docs|x64.Build.0 = Debug|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.docs|x86.ActiveCfg = Debug|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.docs|x86.Build.0 = Debug|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Publish|Any CPU.ActiveCfg = Release|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Publish|Any CPU.Build.0 = Release|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Publish|x64.ActiveCfg = Release|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Publish|x64.Build.0 = Release|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Publish|x86.ActiveCfg = Release|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Publish|x86.Build.0 = Release|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Release|Any CPU.Build.0 = Release|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Release|x64.ActiveCfg = Release|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Release|x64.Build.0 = Release|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Release|x86.ActiveCfg = Release|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Release|x86.Build.0 = Release|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Release2|Any CPU.ActiveCfg = Release|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Release2|Any CPU.Build.0 = Release|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Release2|x64.ActiveCfg = Release|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Release2|x64.Build.0 = Release|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Release2|x86.ActiveCfg = Release|Any CPU + {0C2EB77C-39F2-460D-A3F8-CE905F867637}.Release2|x86.Build.0 = Release|Any CPU + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x64.ActiveCfg = Debug|x64 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x64.Build.0 = Debug|x64 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x86.ActiveCfg = Debug|x86 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x86.Build.0 = Debug|x86 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.DEMO|Any CPU.ActiveCfg = DEMO|Any CPU + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.DEMO|Any CPU.Build.0 = DEMO|Any CPU + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.DEMO|x64.ActiveCfg = DEMO|x64 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.DEMO|x64.Build.0 = DEMO|x64 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.DEMO|x86.ActiveCfg = DEMO|x86 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.DEMO|x86.Build.0 = DEMO|x86 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.docs|Any CPU.ActiveCfg = docs|Any CPU + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.docs|Any CPU.Build.0 = docs|Any CPU + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.docs|x64.ActiveCfg = docs|x64 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.docs|x64.Build.0 = docs|x64 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.docs|x86.ActiveCfg = docs|x86 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.docs|x86.Build.0 = docs|x86 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Publish|Any CPU.ActiveCfg = Publish|Any CPU + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Publish|Any CPU.Build.0 = Publish|Any CPU + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Publish|x64.ActiveCfg = Publish|x64 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Publish|x64.Build.0 = Publish|x64 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Publish|x86.ActiveCfg = Publish|x86 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Publish|x86.Build.0 = Publish|x86 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|Any CPU.Build.0 = Release|Any CPU + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x64.ActiveCfg = Release|x64 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x64.Build.0 = Release|x64 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x86.ActiveCfg = Release|x86 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x86.Build.0 = Release|x86 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release2|Any CPU.ActiveCfg = Release2|Any CPU + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release2|Any CPU.Build.0 = Release2|Any CPU + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release2|x64.ActiveCfg = Release2|x64 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release2|x64.Build.0 = Release2|x64 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release2|x86.ActiveCfg = Release2|x86 + {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release2|x86.Build.0 = Release2|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Shoal.Testing/App.config b/R/R/App.config similarity index 60% rename from Shoal.Testing/App.config rename to R/R/App.config index 2d2a12d81..8324aa6ff 100644 --- a/Shoal.Testing/App.config +++ b/R/R/App.config @@ -1,6 +1,6 @@ - + - + - + \ No newline at end of file diff --git a/R/R/LangModels.vb b/R/R/LangModels.vb new file mode 100644 index 000000000..ed35fa1ab --- /dev/null +++ b/R/R/LangModels.vb @@ -0,0 +1,81 @@ +Imports System.Xml.Serialization +Imports langToken = Microsoft.VisualBasic.Scripting.TokenIcer.Token(Of R.LanguageTokens) + +''' +''' +''' +Public Class Statement + + + Public Property Tokens As langToken() + ''' + ''' if/for/do/function堆栈 + ''' + + Public Property Child As Statement() + + Public ReadOnly Property IsEmpty As Boolean + Get + Return Tokens.IsNullOrEmpty AndAlso Child.IsNullOrEmpty + End Get + End Property + +End Class + +Public Class Main + Public Property program As Statement() +End Class + +Public Enum LanguageTokens + + undefine + ''' + ''' identifier, value expression, etc.(å…è®¸ä½¿ç”¨å°æ•°ç‚¹ä½œä¸ºå˜é‡å称的一部分) + ''' + [Object] + ''' + ''' <- + ''' + LeftAssign + ''' + ''' = + ''' + ParameterAssign + [Operator] + ''' + ''' : + ''' + methodCall + ''' + ''' , + ''' + ParameterDelimiter + +#Region "{...}" + StackOpen + StackClose +#End Region +#Region "(...)" + EvalOpen + EvalClose +#End Region +#Region "[...]" + IndexOpen + IndexClose +#End Region + + ''' + ''' & + ''' + StringContact + ''' + ''' Variable declare init + ''' + var + ''' + ''' 字符串值 + ''' + [String] + Comment + +End Enum \ No newline at end of file diff --git a/R/R/Module1.vb b/R/R/Module1.vb new file mode 100644 index 000000000..31190ec99 --- /dev/null +++ b/R/R/Module1.vb @@ -0,0 +1,37 @@ +Module Module1 + + Sub Main() + Call TokenIcer.Parse(" +# run commandline using @ operator in R +var prot.fasta = ""/home/biostack/sample.fasta""; +var [exitCode, std_out] <- @""makeblastdb -in \""{prot.fasta}\"" -dbtype prot""; + +test.integer <- function(x as integer) { + # the type constraint means the parameter only allow the integer vector type + # if the parameter is a string vector, then the interpreter will throw exceptions. +} + +var name <- first.name & "" "" & last.name; +var x <- {1, 2, 3, 4, 5}; +var x <- ""33333333"" & 33:ToString(""F2""); + +if (x:Length <= 10) { + println(x); + + test <- function(...) { + var gg <- ...; + var x <- ...; + var s <- x & global$x; + } + + test(x = x, gg = x, s = x); +} + +do while(TRUE andalso t == ""123 + 555"") { + cat("".""); +} +").ToArray _ +.GetSourceTree _ +.SaveTo("x:\test.xml") + End Sub +End Module diff --git a/EndNoteLite/My Project/Application.Designer.vb b/R/R/My Project/Application.Designer.vb similarity index 100% rename from EndNoteLite/My Project/Application.Designer.vb rename to R/R/My Project/Application.Designer.vb diff --git a/Shoal.Testing/My Project/Application.myapp b/R/R/My Project/Application.myapp similarity index 100% rename from Shoal.Testing/My Project/Application.myapp rename to R/R/My Project/Application.myapp diff --git a/Shoal.Testing/My Project/AssemblyInfo.vb b/R/R/My Project/AssemblyInfo.vb similarity index 57% rename from Shoal.Testing/My Project/AssemblyInfo.vb rename to R/R/My Project/AssemblyInfo.vb index ef807a152..44f6c2db1 100644 --- a/Shoal.Testing/My Project/AssemblyInfo.vb +++ b/R/R/My Project/AssemblyInfo.vb @@ -2,34 +2,34 @@ Imports System.Reflection Imports System.Runtime.InteropServices -' General Information about an assembly is controlled through the following +' General Information about an assembly is controlled through the following ' set of attributes. Change these attribute values to modify the information ' associated with an assembly. ' Review the values of the assembly attributes - - - - - - + + + + + + 'The following GUID is for the ID of the typelib if this project is exposed to COM - + ' Version information for an assembly consists of the following four values: ' ' Major Version -' Minor Version +' Minor Version ' Build Number ' Revision ' -' You can specify all the values or you can default the Build and Revision Numbers +' You can specify all the values or you can default the Build and Revision Numbers ' by using the '*' as shown below: -' +' - - + + diff --git a/ShoalShell.Legacy/TestShellScriptModule/My Project/Resources.Designer.vb b/R/R/My Project/Resources.Designer.vb similarity index 94% rename from ShoalShell.Legacy/TestShellScriptModule/My Project/Resources.Designer.vb rename to R/R/My Project/Resources.Designer.vb index 255c73c62..d5bc74cff 100644 --- a/ShoalShell.Legacy/TestShellScriptModule/My Project/Resources.Designer.vb +++ b/R/R/My Project/Resources.Designer.vb @@ -1,7 +1,7 @@ '------------------------------------------------------------------------------ ' ' This code was generated by a tool. -' Runtime Version:4.0.30319.18444 +' Runtime Version:4.0.30319.42000 ' ' Changes to this file may cause incorrect behavior and will be lost if ' the code is regenerated. @@ -13,7 +13,7 @@ Option Explicit On Namespace My.Resources - + 'This class was auto-generated by the StronglyTypedResourceBuilder 'class via a tool like ResGen or Visual Studio. 'To add or remove a member, edit your .ResX file then rerun ResGen @@ -38,7 +38,7 @@ Namespace My.Resources Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager Get If Object.ReferenceEquals(resourceMan, Nothing) Then - Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("TestShellScriptModule.Resources", GetType(Resources).Assembly) + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("R.Resources", GetType(Resources).Assembly) resourceMan = temp End If Return resourceMan diff --git a/EndNoteLite/My Project/Resources.resx b/R/R/My Project/Resources.resx similarity index 100% rename from EndNoteLite/My Project/Resources.resx rename to R/R/My Project/Resources.resx diff --git a/ShoalShell.Legacy/TestShellScriptModule/My Project/Settings.Designer.vb b/R/R/My Project/Settings.Designer.vb similarity index 87% rename from ShoalShell.Legacy/TestShellScriptModule/My Project/Settings.Designer.vb rename to R/R/My Project/Settings.Designer.vb index 48f744dff..5d551f863 100644 --- a/ShoalShell.Legacy/TestShellScriptModule/My Project/Settings.Designer.vb +++ b/R/R/My Project/Settings.Designer.vb @@ -1,7 +1,7 @@ '------------------------------------------------------------------------------ ' ' This code was generated by a tool. -' Runtime Version:4.0.30319.18444 +' Runtime Version:4.0.30319.42000 ' ' Changes to this file may cause incorrect behavior and will be lost if ' the code is regenerated. @@ -57,16 +57,16 @@ Namespace My End Namespace Namespace My - - _ + + _ Friend Module MySettingsProperty - - _ - Friend ReadOnly Property Settings() As Global.TestShellScriptModule.My.MySettings + + _ + Friend ReadOnly Property Settings() As Global.R.My.MySettings Get - Return Global.TestShellScriptModule.My.MySettings.Default + Return Global.R.My.MySettings.Default End Get End Property End Module diff --git a/EndNoteLite/My Project/Settings.settings b/R/R/My Project/Settings.settings similarity index 100% rename from EndNoteLite/My Project/Settings.settings rename to R/R/My Project/Settings.settings diff --git a/Shoal.Testing/Shoal.Testing.vbproj b/R/R/R.vbproj similarity index 76% rename from Shoal.Testing/Shoal.Testing.vbproj rename to R/R/R.vbproj index 2d93bdfa3..cfe2b1ea0 100644 --- a/Shoal.Testing/Shoal.Testing.vbproj +++ b/R/R/R.vbproj @@ -1,18 +1,18 @@  - + Debug AnyCPU - {9E5436E9-9FA4-47B9-9BDE-F3621622F4B2} + {0C2EB77C-39F2-460D-A3F8-CE905F867637} Exe - Shoal.Testing.Debugger - Shoal.Testing - Shoal.Testing + R.Module1 + R + R 512 Console v4.6 - + true AnyCPU @@ -21,7 +21,7 @@ true true bin\Debug\ - Shoal.Testing.xml + R.xml 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 @@ -31,9 +31,8 @@ true true bin\Release\ - Shoal.Testing.xml + R.xml 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - false On @@ -55,6 +54,7 @@ + @@ -68,8 +68,9 @@ - - + + + True @@ -107,21 +108,10 @@ - - {0be7fd44-d724-49f6-aec0-06c80b4f5527} - ShoalShell_Core - - - {d71e0d55-da94-4b18-b204-252d532ee8ec} - Shoal + + {fecce1fd-e1d4-49e3-a668-60bb5e7aed99} + +Microsoft.VisualBasic.Architecture.Framework - \ No newline at end of file diff --git a/R/R/TokenIcer.vb b/R/R/TokenIcer.vb new file mode 100644 index 000000000..45f42f14a --- /dev/null +++ b/R/R/TokenIcer.vb @@ -0,0 +1,192 @@ +Imports System.Runtime.CompilerServices +Imports Microsoft.VisualBasic.Emit.Marshal +Imports Microsoft.VisualBasic.Language +Imports Microsoft.VisualBasic.Scripting.TokenIcer +Imports Microsoft.VisualBasic.Text +Imports langToken = Microsoft.VisualBasic.Scripting.TokenIcer.Token(Of R.LanguageTokens) + +Public Module TokenIcer + + Public Iterator Function Parse(s$) As IEnumerable(Of Statement) + Dim buffer As New Pointer(Of Char)(Trim(s$)) + Dim it As New Value(Of Statement) + + Do While Not buffer.EndRead + If Not (it = buffer.Parse(Nothing)) Is Nothing AndAlso Not (+it).IsEmpty Then + Yield it + End If + Loop + End Function + + Private Function Parse(buffer As Pointer(Of Char), ByRef parent As List(Of Statement)) As Statement + Dim QuotOpen As Boolean = False + Dim commentOpen As Boolean = False ' 当出现注释符的时候,会一直æŒç»­åˆ°é‡è§æ¢è¡Œç¬¦ä¸ºæ­¢ + Dim tmp As New List(Of Char) + Dim tokens As New List(Of langToken) + Dim last As Statement + Dim varDefInit = Function() + If tokens.Count = 0 AndAlso tmp.SequenceEqual("var") Then + Return True + Else + Return False + End If + End Function + Dim bufferEquals = Function(c As Char) + If tmp.Count = 1 AndAlso tmp.First = c Then + Return True + Else + Return False + End If + End Function + Dim newToken = + Sub() + If tmp.Count = 0 Then + Return + End If + + ' 创建除了字符串之外的其他的token + If varDefInit() Then + tokens += New langToken(LanguageTokens.var, "var") + ElseIf tmp.SequenceEqual("<-") Then + tokens += New langToken(LanguageTokens.LeftAssign, "<-") + Else + tokens += New langToken(LanguageTokens.Object) With { + .Value = New String(tmp) + } + End If + + tmp *= 0 + End Sub + + Do While Not buffer.EndRead + Dim c As Char = +buffer + + If QuotOpen Then ' 当剿‰€è§£æžçš„状æ€ä¸ºå­—ç¬¦ä¸²è§£æž + If c = ASCII.Quot AndAlso Not tmp.StartEscaping Then + ' 当å‰çš„字符为åŒå¼•å·ï¼Œå¹¶ä¸”䏿˜¯è½¬ä¹‰çжæ€ï¼Œåˆ™ç»“æŸå­—符串 + tokens += New langToken With { + .Name = LanguageTokens.String, + .Value = New String(tmp) + } + tmp *= 0 + QuotOpen = False + Else + ' 任然是字符串之中的一部分字符,则继续添加进入tmp之中 + tmp += c + End If + ElseIf commentOpen Then + If c = ASCII.CR OrElse c = ASCII.LF Then + ' é‡è§äº†æ¢è¡Œç¬¦ï¼Œåˆ™ç»“æŸæ³¨é‡Š + tokens += New langToken With { + .Name = LanguageTokens.Comment, + .Value = New String(tmp) + } + tmp *= 0 + commentOpen = False + Else + ' 任然是注释串之中的一部分字符,则继续添加进入tmp之中 + tmp += c + End If + Else + ' é‡è§äº†å­—符串的起始的第一个åŒå¼•å· + If Not QuotOpen AndAlso c = ASCII.Quot Then + QuotOpen = True + newToken() + ElseIf Not commentOpen AndAlso c = "#"c Then + commentOpen = True + newToken() + Else + ' é‡è§äº†è¯­å¥çš„结æŸç¬¦å· + If c = ";"c Then + ' 结æŸå½“å‰çš„statementçš„è§£æž + newToken() + last = New Statement With { + .Tokens = tokens + } + tokens *= 0 + + If parent Is Nothing Then + Return last + Else + parent += last + End If + ElseIf c = ":"c Then + ' è¿™æ˜¯æ–¹æ³•è°ƒç”¨çš„ç¬¦å· + newToken() + tokens += New langToken(LanguageTokens.methodCall, ":") + ElseIf c = "("c Then + ' 新的堆栈 + newToken() + tokens += New langToken(LanguageTokens.EvalOpen, "("c) + ElseIf c = ")"c Then + newToken() + tokens += New langToken(LanguageTokens.EvalClose, ")"c) + ElseIf c = "["c Then + newToken() + tokens += New langToken(LanguageTokens.IndexOpen, "["c) + ElseIf c = "]"c Then + newToken() + tokens += New langToken(LanguageTokens.IndexClose, "]"c) + ElseIf c = "&"c Then + ' 字符串拼接 + newToken() + tokens += New langToken(LanguageTokens.StringContact, "&") + ElseIf c = ","c Then + newToken() + tokens += New langToken(LanguageTokens.ParameterDelimiter, ",") + ElseIf c = "="c Then + If bufferEquals("<"c) Then + tokens += New langToken(LanguageTokens.Operator, "<=") + tmp *= 0 + ElseIf bufferEquals("="c) Then + tokens += New langToken(LanguageTokens.Operator, "==") + tmp *= 0 + Else + If tmp.Count = 0 Then + ' å¯èƒ½æ˜¯==的第一个等å·ï¼Œåˆ™åªæ·»åŠ  + tmp += c + Else + newToken() + End If + End If + ElseIf c = "{"c Then + ' closure stack open + Dim childs As New List(Of Statement) + Call buffer.Parse(childs) + last = New Statement With { + .Tokens = tokens.ToArray, + .Child = childs + } + tokens *= 0 + If Not parent Is Nothing Then + parent += last + Else + Return last + End If + ElseIf c = "}"c Then + ' closure stack close + ' 结æŸå½“å‰çš„statementï¼Œç›¸å½“äºŽåˆ†å· + newToken() + last = New Statement With { + .Tokens = tokens + } + tokens *= 0 + parent += last ' å³èŠ±æ‹¬å·å¿…定是结æŸå †æ ˆ + Return Nothing + ElseIf c = " "c OrElse c = ASCII.TAB OrElse c = ASCII.LF OrElse c = ASCII.CR Then + ' é‡è§äº†ç©ºæ ¼ï¼Œç»“æŸå½“å‰çš„token + newToken() + Else + tmp += c + End If + End If + End If + Loop + + Return New Statement With {.Tokens = tokens} + End Function + + Public Function GetSourceTree(s As IEnumerable(Of Statement)) As String + Return New Main With {.program = s.ToArray}.GetXml + End Function +End Module diff --git a/R/syntax.r b/R/syntax.r new file mode 100644 index 000000000..92918e2d0 --- /dev/null +++ b/R/syntax.r @@ -0,0 +1,56 @@ +# 所有的语å¥å¼ºåˆ¶ä½¿ç”¨åˆ†å·è¿›è¡Œç»“å°¾ +# for/if å¼ºåˆ¶ä½¿ç”¨å¤§æ‹¬å· +# å˜é‡èµ‹å€¼å¼ºåˆ¶ä½¿ç”¨ <-, å˜é‡åœ¨ä½¿ç”¨ä¹‹å‰å¿…é¡»ç»è¿‡var定义 +# 傿•°èµ‹å€¼ä½¿ç”¨ç­‰å· +# + +var x <- {1, 2, 3, 4, 5}; +var m <- mean(x); +var n <- x + m; + +if (m <= 10) { + println("test message %s", m); +} else { + println("test2 %d", m); +} + +## æ•°æ®ç±»åž‹æ˜¯é»˜è®¤ä¸ºå‘é‡ç±»åž‹çš„ +## integer则为integer类型å‘é‡ï¼Œdouble则为double类型的å‘é‡ +## 函数必须è¦ä½¿ç”¨return进行返回,returnä¸å†æ˜¯ä¸€ä¸ªå‡½æ•°è°ƒç”¨ï¼Œä½†æ˜¯ä¹Ÿå¯ä»¥ä½¿ç”¨return (a/b);çš„å½¢å¼ +## 如果没有定义return,则默认返回null +## 函数也是一ç§å˜é‡ç±»åž‹ï¼Œä½†æ˜¯å‡½æ•°å˜é‡çš„åˆå§‹åŒ–ä¸éœ€è¦varå…³é”®è¯ +test <- function(a as integer, b as double) { + + var n <- a/b; + + ## å¯ä»¥ç›´æŽ¥å¼•用全局å˜é‡ï¼Œèµ·å†²çªçš„æ—¶å€™ä½¿ç”¨globalå˜é‡ + return n + global$n; +} + +var c <- test(11, b = 44); + +## 常é‡ï¼Ÿ +imports s <- "123456"; + +## åˆ—è¡¨å‚æ•°ç±»åž‹ +## 函数无返回值,默认返回null +test.list <- function(...) { + + ## 这个表达å¼è¡¨ç¤ºä»Ž...列表之中å–出å˜é‡aå’Œå˜é‡b,当å˜é‡ä¸å­˜åœ¨çš„æ—¶å€™ï¼Œåˆå§‹åŒ–为null. + var a <- ...; + var b <- ...; + + if (a is null) { + println("var a is missing"); + } else if (b is null) { + println("var b is missing"); + } + + println(...); +} + +test.list(a = 3, b = {1,2,3}, c = "yes"); + +## é€»è¾‘å€¼åªæœ‰TRUE/FALSE +var true <- TRUE; +var false <- FALSE; \ No newline at end of file diff --git a/RDotNET.Extensions.ShellScriptAPI/API.vb b/RDotNET.Extensions.ShellScriptAPI/API.vb deleted file mode 100644 index bb48e114f..000000000 --- a/RDotNET.Extensions.ShellScriptAPI/API.vb +++ /dev/null @@ -1,512 +0,0 @@ -Imports RDotNET.Internals -Imports System.Collections -Imports System.Collections.Generic -Imports System.Numerics -Imports System.Runtime.CompilerServices -Imports RDotNET.REngineExtension -Imports RDotNET.SymbolicExpressionExtension -Imports RDotNET.Extensions.VisualBasic.Serialization -Imports RDotNET.Extensions.VisualBasic -Imports RDotNET.Extensions.VisualBasic.RSystem -Imports Microsoft.VisualBasic.Scripting.ShoalShell -Imports Microsoft.VisualBasic.Scripting.MetaData -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.HybridsScripting -Imports Microsoft.VisualBasic.CommandLine.Reflection - - -<[PackageNamespace]("R.NET", - Description:="R API interface to the shoal shell language.", - Category:=APICategories.SoftwareTools, - Publisher:="xie.guigang@gcmodeller.org", - Url:="https://rdotnet.codeplex.com/")> -Public Module API - - Dim REngine As REngine - -#Region "Hybrid Interfaces" - - - - Public Function Init() As RDotNET.REngine - REngine = RServer - Return RSystem.RServer - End Function - - - Public Function Evaluate(scriptLine As String) As Object - Dim value = RSystem.RServer.Evaluate(statement:=scriptLine) - Return value - End Function - - - Public Function SetSymbol(Variable As String, value As Object) As Boolean - Try - Call RServer.SetSymbol(Variable, value) - Catch ex As Exception - Return False - End Try - - Return True - End Function - - - Public Function TypeCast( - RData As RDotNET.SymbolicExpression, - - Type As System.Type) As Object - Return LoadRStream(RData, Type) - End Function - -#End Region - - ''' - ''' Creates a new CharacterVector with the specified values. - ''' - ''' The values. - ''' The new vector. - - - Public Function CreateCharacterVector(vector As IEnumerable(Of Object)) As CharacterVector - Return New CharacterVector(RServer, vector.CT(Of String)) - End Function - - Private Function CT(Of T)(data As Generic.IEnumerable(Of Object)) As T() - Return (From item In data Select CType(item, T)).ToArray - End Function - - ''' - ''' Creates a new ComplexVector with the specified values. - ''' - ''' The values. - ''' The new vector. - - - Public Function CreateComplexVector(vector As IEnumerable(Of Object)) As ComplexVector - Return New ComplexVector(RServer, vector.CT(Of Complex)) - End Function - - ''' - ''' Creates a new IntegerVector with the specified values. - ''' - ''' The values. - ''' The new vector. - - - Public Function CreateIntegerVector(vector As IEnumerable(Of Object)) As IntegerVector - If REngine Is Nothing Then - Throw New ArgumentNullException() - End If - If Not REngine.IsRunning Then - Throw New ArgumentException() - End If - Return New IntegerVector(REngine, vector.CT(Of Integer)) - End Function - - ''' - ''' Creates a new LogicalVector with the specified values. - ''' - ''' The values. - ''' The new vector. - - - Public Function CreateLogicalVector(vector As IEnumerable(Of Object)) As LogicalVector - If REngine Is Nothing Then - Throw New ArgumentNullException() - End If - If Not REngine.IsRunning Then - Throw New ArgumentException() - End If - Return New LogicalVector(REngine, vector.CT(Of Boolean)) - End Function - - ''' - ''' Creates a new NumericVector with the specified values. - ''' - ''' The values. - ''' The new vector. - - - Public Function CreateNumericVector(vector As IEnumerable(Of Object)) As NumericVector - If REngine Is Nothing Then - Throw New ArgumentNullException() - End If - If Not REngine.IsRunning Then - Throw New ArgumentException() - End If - Return New NumericVector(REngine, vector.CT(Of Double)) - End Function - - ''' - ''' Creates a new RawVector with the specified values. - ''' - ''' The values. - ''' The new vector. - - - Public Function CreateRawVector(vector As IEnumerable(Of Object)) As RawVector - If REngine Is Nothing Then - Throw New ArgumentNullException() - End If - If Not REngine.IsRunning Then - Throw New ArgumentException() - End If - Return New RawVector(REngine, vector.CT(Of Byte)) - End Function - - ''' - ''' Create a vector with a single value - ''' - ''' The value - ''' The new vector. - - - Public Function CreateCharacter(value As String) As CharacterVector - Return CreateCharacterVector(New String() {value}) - End Function - - ''' - ''' Create a vector with a single value - ''' - ''' The value - ''' The new vector. - - - Public Function CreateComplex(value As Complex) As ComplexVector - Return CreateComplexVector(New System.Numerics.Complex() {value}) - End Function - - ''' - ''' Create a vector with a single value - ''' - ''' The value - ''' The new vector. - - - Public Function CreateLogical(value As Boolean) As LogicalVector - Return CreateLogicalVector(New Boolean() {value}) - End Function - - ''' - ''' Create a vector with a single value - ''' - ''' The value - ''' The new vector. - - - Public Function CreateNumeric(value As Double) As NumericVector - Return CreateNumericVector(New Double() {value}) - End Function - - ''' - ''' Create an integer vector with a single value - ''' - ''' The value - ''' The new vector. - - - Public Function CreateInteger(value As Integer) As IntegerVector - Return CreateIntegerVector(New Integer() {value}) - End Function - - ''' - ''' Create a vector with a single value - ''' - ''' The value - ''' The new vector. - - - Public Function CreateRaw(value As Byte) As RawVector - Return CreateRawVector(New Byte() {value}) - End Function - - ''' - ''' Creates a new empty CharacterMatrix with the specified size. - ''' - ''' The row size. - ''' The column size. - ''' The new matrix. - - Public Function CreateCharacterMatrix(rowCount As Integer, columnCount As Integer) As CharacterMatrix - If REngine Is Nothing Then - Throw New ArgumentNullException() - End If - If Not REngine.IsRunning Then - Throw New ArgumentException() - End If - Return New CharacterMatrix(REngine, rowCount, columnCount) - End Function - - ''' - ''' Creates a new empty ComplexMatrix with the specified size. - ''' - ''' The row size. - ''' The column size. - ''' The new matrix. - - Public Function CreateComplexMatrix(rowCount As Integer, columnCount As Integer) As ComplexMatrix - If REngine Is Nothing Then - Throw New ArgumentNullException() - End If - If Not REngine.IsRunning Then - Throw New ArgumentException() - End If - Return New ComplexMatrix(REngine, rowCount, columnCount) - End Function - - ''' - ''' Creates a new empty IntegerMatrix with the specified size. - ''' - ''' The row size. - ''' The column size. - ''' The new matrix. - - Public Function CreateIntegerMatrix(rowCount As Integer, columnCount As Integer) As IntegerMatrix - If REngine Is Nothing Then - Throw New ArgumentNullException() - End If - If Not REngine.IsRunning Then - Throw New ArgumentException() - End If - Return New IntegerMatrix(REngine, rowCount, columnCount) - End Function - - ''' - ''' Creates a new empty LogicalMatrix with the specified size. - ''' - ''' The row size. - ''' The column size. - ''' The new matrix. - - Public Function CreateLogicalMatrix(rowCount As Integer, columnCount As Integer) As LogicalMatrix - If REngine Is Nothing Then - Throw New ArgumentNullException() - End If - If Not REngine.IsRunning Then - Throw New ArgumentException() - End If - Return New LogicalMatrix(REngine, rowCount, columnCount) - End Function - - ''' - ''' Creates a new empty NumericMatrix with the specified size. - ''' - ''' The row size. - ''' The column size. - ''' The new matrix. - - Public Function CreateNumericMatrix(rowCount As Integer, columnCount As Integer) As NumericMatrix - If REngine Is Nothing Then - Throw New ArgumentNullException() - End If - If Not REngine.IsRunning Then - Throw New ArgumentException() - End If - Return New NumericMatrix(REngine, rowCount, columnCount) - End Function - - ''' - ''' Creates a new empty RawMatrix with the specified size. - ''' - ''' The row size. - ''' The column size. - ''' The new matrix. - - Public Function CreateRawMatrix(rowCount As Integer, columnCount As Integer) As RawMatrix - If REngine Is Nothing Then - Throw New ArgumentNullException() - End If - If Not REngine.IsRunning Then - Throw New ArgumentException() - End If - Return New RawMatrix(REngine, rowCount, columnCount) - End Function - - ''' - ''' Creates a new CharacterMatrix with the specified values. - ''' - ''' The values. - ''' The new matrix. - - - Public Function CreateCharacterMatrix(matrix As Generic.IEnumerable(Of Generic.IEnumerable(Of Object))) As CharacterMatrix - If REngine Is Nothing Then - Throw New ArgumentNullException() - End If - If Not REngine.IsRunning Then - Throw New ArgumentException() - End If - Return New CharacterMatrix(REngine, matrix.CT(Of String()).VectorCollectionToMatrix) - End Function - - ''' - ''' Creates a new ComplexMatrix with the specified values. - ''' - ''' The values. - ''' The new matrix. - - - Public Function CreateComplexMatrix(matrix As Generic.IEnumerable(Of Generic.IEnumerable(Of Object))) As ComplexMatrix - If REngine Is Nothing Then - Throw New ArgumentNullException() - End If - If Not REngine.IsRunning Then - Throw New ArgumentException() - End If - Return New ComplexMatrix(REngine, matrix.CT(Of Complex()).VectorCollectionToMatrix) - End Function - - ''' - ''' Creates a new IntegerMatrix with the specified values. - ''' - ''' The values. - ''' The new matrix. - - - Public Function CreateIntegerMatrix(matrix As Generic.IEnumerable(Of Generic.IEnumerable(Of Object))) As IntegerMatrix - If REngine Is Nothing Then - Throw New ArgumentNullException() - End If - If Not REngine.IsRunning Then - Throw New ArgumentException() - End If - Return New IntegerMatrix(REngine, matrix.CT(Of Integer()).VectorCollectionToMatrix) - End Function - - ''' - ''' Creates a new LogicalMatrix with the specified values. - ''' - ''' The values. - ''' The new matrix. - - - Public Function CreateLogicalMatrix(matrix As Generic.IEnumerable(Of Generic.IEnumerable(Of Object))) As LogicalMatrix - If REngine Is Nothing Then - Throw New ArgumentNullException() - End If - If Not REngine.IsRunning Then - Throw New ArgumentException() - End If - Return New LogicalMatrix(REngine, matrix.CT(Of Boolean()).VectorCollectionToMatrix) - End Function - - ''' - ''' Creates a new NumericMatrix with the specified values. - ''' - ''' The values. - ''' The new matrix. - - - Public Function CreateNumericMatrix(matrix As Generic.IEnumerable(Of Generic.IEnumerable(Of Object))) As NumericMatrix - If REngine Is Nothing Then - Throw New ArgumentNullException() - End If - If Not REngine.IsRunning Then - Throw New ArgumentException() - End If - Return New NumericMatrix(REngine, matrix.CT(Of Double()).VectorCollectionToMatrix) - End Function - - ''' - ''' Creates a new RawMatrix with the specified values. - ''' - ''' The values. - ''' The new matrix. - - - Public Function CreateRawMatrix(matrix As Generic.IEnumerable(Of Generic.IEnumerable(Of Object))) As RawMatrix - If REngine Is Nothing Then - Throw New ArgumentNullException() - End If - If Not REngine.IsRunning Then - Throw New ArgumentException() - End If - Return New RawMatrix(REngine, matrix.CT(Of Byte()).VectorCollectionToMatrix) - End Function - - ''' - ''' Create an R data frame from managed arrays and objects. - ''' - ''' The columns with the values for the data frame. These must be array of supported types (double, string, bool, integer, byte) - ''' Column names. default: null. - ''' Row names. Default null. - ''' Check rows. See data.frame R documentation - ''' See data.frame R documentation - ''' Should columns of strings be considered as factors (categories). See data.frame R documentation - ''' - - - Public Function CreateDataFrame(columns As Generic.IEnumerable(Of Object), - Optional columnNames As String() = Nothing, - Optional rowNames As String() = Nothing, - Optional checkRows As Boolean = False, - Optional checkNames As Boolean = True, - Optional stringsAsFactors As Boolean = True) As DataFrame - - Dim df = REngine.GetSymbol("data.frame").AsFunction() - Dim colVectors As SymbolicExpression() = ToVectors((From item In columns Select CType(item, IEnumerable)).ToArray) - Dim namedColArgs As Tuple(Of String, SymbolicExpression)() = CreateNamedArgs(colVectors, columnNames) - Dim args = New List(Of Tuple(Of String, SymbolicExpression))(namedColArgs) - If rowNames IsNot Nothing Then - args.Add(Tuple.Create("row.names", DirectCast(REngine.CreateCharacterVector(rowNames), SymbolicExpression))) - End If - args.Add(Tuple.Create("check.rows", DirectCast(REngine.CreateLogical(checkRows), SymbolicExpression))) - args.Add(Tuple.Create("check.names", DirectCast(REngine.CreateLogical(checkNames), SymbolicExpression))) - args.Add(Tuple.Create("stringsAsFactors", DirectCast(REngine.CreateLogical(stringsAsFactors), SymbolicExpression))) - Dim result = df.InvokeNamed(args.ToArray()).AsDataFrame() - Return result - End Function - - Private Function CreateNamedArgs(colVectors As SymbolicExpression(), columnNames As String()) As Tuple(Of String, SymbolicExpression)() - If columnNames IsNot Nothing AndAlso colVectors.Length <> columnNames.Length Then - Throw New ArgumentException("columnNames", "when not null, the number of column names must match the number of SEXP") - End If - Dim args = New List(Of Tuple(Of String, SymbolicExpression))() - For i As Integer = 0 To colVectors.Length - 1 - args.Add(Tuple.Create(If(columnNames IsNot Nothing, columnNames(i), ""), colVectors(i))) - Next - Return args.ToArray() - End Function - - Friend Function ToVectors(columns As IEnumerable()) As SymbolicExpression() - Return Array.ConvertAll(columns, Function(x) ToVector(x)) - End Function - - Friend Function ToVector(values As IEnumerable) As SymbolicExpression - If values Is Nothing Then - Throw New ArgumentNullException("values", "values to transform to an R vector must not be null") - End If - Dim ints As IEnumerable(Of Integer) = TryCast(values, IEnumerable(Of Integer)) - Dim chars As IEnumerable(Of String) = TryCast(values, IEnumerable(Of String)) - Dim cplxs As IEnumerable(Of Complex) = TryCast(values, IEnumerable(Of Complex)) - Dim logicals As IEnumerable(Of Boolean) = TryCast(values, IEnumerable(Of Boolean)) - Dim nums As IEnumerable(Of Double) = TryCast(values, IEnumerable(Of Double)) - Dim raws As IEnumerable(Of Byte) = TryCast(values, IEnumerable(Of Byte)) - Dim sexpVec As SymbolicExpression = TryCast(values, SymbolicExpression) - - If sexpVec IsNot Nothing AndAlso sexpVec.IsVector() Then - Return sexpVec - End If - If ints IsNot Nothing Then - Return REngine.CreateIntegerVector(ints) - End If - If chars IsNot Nothing Then - Return REngine.CreateCharacterVector(chars) - End If - If cplxs IsNot Nothing Then - Return REngine.CreateComplexVector(cplxs) - End If - If logicals IsNot Nothing Then - Return REngine.CreateLogicalVector(logicals) - End If - If nums IsNot Nothing Then - Return REngine.CreateNumericVector(nums) - End If - If raws IsNot Nothing Then - Return REngine.CreateRawVector(raws) - End If - Throw New NotSupportedException(String.Format("Cannot convert type {0} to an R vector", values.[GetType]())) - - End Function -End Module - diff --git a/RDotNET.Extensions.ShellScriptAPI/My Project/Application.Designer.vb b/RDotNET.Extensions.ShellScriptAPI/My Project/Application.Designer.vb deleted file mode 100644 index 88dd01c78..000000000 --- a/RDotNET.Extensions.ShellScriptAPI/My Project/Application.Designer.vb +++ /dev/null @@ -1,13 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - diff --git a/RDotNET.Extensions.ShellScriptAPI/My Project/Application.myapp b/RDotNET.Extensions.ShellScriptAPI/My Project/Application.myapp deleted file mode 100644 index 758895def..000000000 --- a/RDotNET.Extensions.ShellScriptAPI/My Project/Application.myapp +++ /dev/null @@ -1,10 +0,0 @@ - - - false - false - 0 - true - 0 - 1 - true - diff --git a/RDotNET.Extensions.ShellScriptAPI/My Project/AssemblyInfo.vb b/RDotNET.Extensions.ShellScriptAPI/My Project/AssemblyInfo.vb deleted file mode 100644 index 4eed3cdf1..000000000 --- a/RDotNET.Extensions.ShellScriptAPI/My Project/AssemblyInfo.vb +++ /dev/null @@ -1,35 +0,0 @@ -Imports System -Imports System.Reflection -Imports System.Runtime.InteropServices - -' General Information about an assembly is controlled through the following -' set of attributes. Change these attribute values to modify the information -' associated with an assembly. - -' Review the values of the assembly attributes - - - - - - - - - - -'The following GUID is for the ID of the typelib if this project is exposed to COM - - -' Version information for an assembly consists of the following four values: -' -' Major Version -' Minor Version -' Build Number -' Revision -' -' You can specify all the values or you can default the Build and Revision Numbers -' by using the '*' as shown below: -' - - - diff --git a/RDotNET.Extensions.ShellScriptAPI/My Project/Resources.Designer.vb b/RDotNET.Extensions.ShellScriptAPI/My Project/Resources.Designer.vb deleted file mode 100644 index 15af04f2f..000000000 --- a/RDotNET.Extensions.ShellScriptAPI/My Project/Resources.Designer.vb +++ /dev/null @@ -1,63 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - -Imports System - -Namespace My.Resources - - 'This class was auto-generated by the StronglyTypedResourceBuilder - 'class via a tool like ResGen or Visual Studio. - 'To add or remove a member, edit your .ResX file then rerun ResGen - 'with the /str option, or rebuild your VS project. - ''' - ''' A strongly-typed resource class, for looking up localized strings, etc. - ''' - _ - Friend Module Resources - - Private resourceMan As Global.System.Resources.ResourceManager - - Private resourceCulture As Global.System.Globalization.CultureInfo - - ''' - ''' Returns the cached ResourceManager instance used by this class. - ''' - _ - Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager - Get - If Object.ReferenceEquals(resourceMan, Nothing) Then - Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("RDotNET.Extensions.Resources", GetType(Resources).Assembly) - resourceMan = temp - End If - Return resourceMan - End Get - End Property - - ''' - ''' Overrides the current thread's CurrentUICulture property for all - ''' resource lookups using this strongly typed resource class. - ''' - _ - Friend Property Culture() As Global.System.Globalization.CultureInfo - Get - Return resourceCulture - End Get - Set - resourceCulture = value - End Set - End Property - End Module -End Namespace diff --git a/RDotNET.Extensions.ShellScriptAPI/My Project/Resources.resx b/RDotNET.Extensions.ShellScriptAPI/My Project/Resources.resx deleted file mode 100644 index af7dbebba..000000000 --- a/RDotNET.Extensions.ShellScriptAPI/My Project/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/RDotNET.Extensions.ShellScriptAPI/My Project/Settings.Designer.vb b/RDotNET.Extensions.ShellScriptAPI/My Project/Settings.Designer.vb deleted file mode 100644 index c81cda0ce..000000000 --- a/RDotNET.Extensions.ShellScriptAPI/My Project/Settings.Designer.vb +++ /dev/null @@ -1,73 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - - -Namespace My - - _ - Partial Friend NotInheritable Class MySettings - Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) - -#Region "My.Settings Auto-Save Functionality" -#If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean - - Private Shared addedHandlerLockObject As New Object - - _ - Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub -#End If -#End Region - - Public Shared ReadOnly Property [Default]() As MySettings - Get - -#If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If -#End If - Return defaultInstance - End Get - End Property - End Class -End Namespace - -Namespace My - - _ - Friend Module MySettingsProperty - - _ - Friend ReadOnly Property Settings() As Global.RDotNET.Extensions.My.MySettings - Get - Return Global.RDotNET.Extensions.My.MySettings.Default - End Get - End Property - End Module -End Namespace diff --git a/RDotNET.Extensions.ShellScriptAPI/My Project/Settings.settings b/RDotNET.Extensions.ShellScriptAPI/My Project/Settings.settings deleted file mode 100644 index 85b890b3c..000000000 --- a/RDotNET.Extensions.ShellScriptAPI/My Project/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/RDotNET.Extensions.ShellScriptAPI/RDotNET.Extensions.ShellScriptAPI.sln b/RDotNET.Extensions.ShellScriptAPI/RDotNET.Extensions.ShellScriptAPI.sln deleted file mode 100644 index 7fe351394..000000000 --- a/RDotNET.Extensions.ShellScriptAPI/RDotNET.Extensions.ShellScriptAPI.sln +++ /dev/null @@ -1,28 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.25008.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "RDotNET.Extensions", "RDotNET.Extensions.vbproj", "{2A928B27-D8CE-4629-9711-0E792C94A85E}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {2A928B27-D8CE-4629-9711-0E792C94A85E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2A928B27-D8CE-4629-9711-0E792C94A85E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2A928B27-D8CE-4629-9711-0E792C94A85E}.Debug|x64.ActiveCfg = Debug|x64 - {2A928B27-D8CE-4629-9711-0E792C94A85E}.Debug|x64.Build.0 = Debug|x64 - {2A928B27-D8CE-4629-9711-0E792C94A85E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2A928B27-D8CE-4629-9711-0E792C94A85E}.Release|Any CPU.Build.0 = Release|Any CPU - {2A928B27-D8CE-4629-9711-0E792C94A85E}.Release|x64.ActiveCfg = Release|x64 - {2A928B27-D8CE-4629-9711-0E792C94A85E}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/RDotNET.Extensions.ShellScriptAPI/ShoalShell.Plugins.RDotNET.vbproj b/RDotNET.Extensions.ShellScriptAPI/ShoalShell.Plugins.RDotNET.vbproj deleted file mode 100644 index ad122039a..000000000 --- a/RDotNET.Extensions.ShellScriptAPI/ShoalShell.Plugins.RDotNET.vbproj +++ /dev/null @@ -1,232 +0,0 @@ - - - - - Debug - AnyCPU - {2A928B27-D8CE-4629-9711-0E792C94A85E} - Library - RDotNET.Extensions - RDotNET.Extensions - 512 - Windows - v4.6 - - - - true - full - true - true - ..\Shoal.v2\Console\bin\Debug\ - RDotNET.Extensions.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - pdbonly - false - true - true - ..\..\GCModeller\GCModeller\ - RDotNET.Extensions.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - On - - - Binary - - - Off - - - On - - - true - true - true - bin\x64\Debug\ - RDotNET.Extensions.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x64 - MinimumRecommendedRules.ruleset - - - true - ..\..\GCModeller\GCModeller-x64\ - RDotNET.Extensions.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - bin\Publish\ - RDotNET.Extensions.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - AnyCPU - MinimumRecommendedRules.ruleset - - - true - bin\x64\Publish\ - RDotNET.Extensions.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - true - true - bin\x86\Debug\ - RDotNET.Extensions.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x86 - MinimumRecommendedRules.ruleset - - - true - bin\x86\Release\ - RDotNET.Extensions.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - true - bin\x86\Publish\ - RDotNET.Extensions.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - true - bin\docs\ - RDotNET.Extensions.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - AnyCPU - MinimumRecommendedRules.ruleset - - - true - bin\x64\docs\ - RDotNET.Extensions.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - bin\x86\docs\ - RDotNET.Extensions.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - - True - Application.myapp - - - True - True - Resources.resx - - - True - Settings.settings - True - - - - - VbMyResourcesResXFileCodeGenerator - Resources.Designer.vb - My.Resources - Designer - - - - - MyApplicationCodeGenerator - Application.Designer.vb - - - SettingsSingleFileGenerator - My - Settings.Designer.vb - - - - - {ab6e71b0-1be2-4418-ab4b-91d5554cf5a1} - RDotNet.Extensions.VisualBasic - - - {21c35138-455b-4833-9756-b2629f972a22} - RDotNet - - - {fecce1fd-e1d4-49e3-a668-60bb5e7aed99} - +Microsoft.VisualBasic.Architecture.Framework - - - {a7cb16ff-75c6-4746-8449-86c121d723c4} - ShoalShell_Core.v2 - - - - - - \ No newline at end of file diff --git a/README.md b/README.md index 6444be8eb..77bca3e0c 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,299 @@ -# Shoal -Shoal Shell Language for GCModeller Virtual Cell Programming +## R# language design -# What is Shoal -Shoal Shell is a kind of commandline-like scripting language for the programming in the GCModeller, it is written by master xie using Microsoft VisualBasic language. As one of the important user interfaces in the GCModeller, Shoal scripting can makes the bioinformatcis analysis in the GCModeller more easily and automation. The GCModeller API library for shoal language was documented at [gcmodeller.org/library](http://gcmodeller.org/library/index.html) +###### Code comments -The IDE for shoal language development was under progressed. +```R +## This is code comments, it just only allow single line comments. +``` -# Developer Contacts -* Master developer: Mr. Xie() -* Documents maintenance by Miss asuka() +###### Variable -# Developer NOTE -Due to the reason of modular development in the GCModeller team, some of the plugin included in this project depend on other external repository in github: +Variable in ``R#`` should be declared by ``var`` keyword, and its value assign is force using ``<-`` operator: -* General Application Framework of VisualBasic -[VisualBasic_AppFramework (https://github.com/xieguigang/VisualBasic_AppFramework)](https://github.com/xieguigang/VisualBasic_AppFramework) +```R +var s <- "12345"; +var x <- {1, 2, 3, 4, 5}; +var m <- { + {1, 2, 3}, + {4, 5, 6}, + {7, 8, 9} +}; +``` -* Utility tools -[Reference_SharedLib (https://github.com/xieguigang/Reference_SharedLib)](https://github.com/xieguigang/Reference_SharedLib) +Delcare a vector or matrix will no longer required of the ``c(...)`` function or ``matrix`` function. Almost keeps the same as the VisualBasic language it does: -Those repository should downloaded at the same time with this repository. \ No newline at end of file +```vbnet +Dim s = "12345" +Dim x = {1, 2, 3, 4, 5} +Dim m = { + {1, 2, 3}, + {4, 5, 6}, + {7, 8, 9} +} +``` + +###### Types + +``R#`` language have sevral primitive type: + ++ ``integer``, System.Int64 vector ++ ``double``, System.Double vector ++ ``uinteger``, System.UInt64 vector ++ ``string``, System.String vector ++ ``char``, System.Char vector ++ ``boolean``, System.Boolean vector + +And you can declare the user type by using ``list()`` function, example like: + +```R +var obj <- list(); + +# using with for object property initialize +var obj <- list() with { + $a <- 123; + $b <- "+++"; +} +``` + +generally, the parameter in a function is a generic type, so that a function definition like: + +```R +test <- function(x) { +} +``` + +can accept any type you have input. but you can using the ``param as `` for limit the type as a specific type: + +```R +test.integer <- function(x as integer) { + # the type constraint means the parameter only allow the integer vector type + # if the parameter is a string vector, then the interpreter will throw exceptions. +} +``` + +###### Get/Set value + +Get/Set property value keeps the same as the R language: + +```R +var names <- dataframe[, "name"]; +dataframe[, "name"] <- new.names; +``` + +###### String + +Add new string contact and string interploate feature for ``R#``: + +```R +var name <- first.name & " " & last.name; +# or +var my.name <- "{first.name} {last.name}"; +# sprintf function is still avaliable +var his.name <- sprintf("%s %s", first.name, last.name); +``` + +###### Logical operators + ++ and, andalso ++ or, orelse ++ not + +```R +if (x <= 10 andalso y != 99) { + # ...... +} else if(not z is null) { + # ...... +} +``` + +###### Operator binding + +Allows you bind operator on your custom type: + +```R +# binding operator only allows in the with closure in the object declare statement +var me <- list() with { + %+% <- function($, other) { + } + %is% <- function($, other) { + } +} + +# and then using the operator + +var new.me <- me + other; +var predicate <- me is other; + +if (not me is him) { + # ...... +} +``` + +Allows user operator + +|Operator |Description | +|---------|---------------------| +|``+`` | add | +|``-`` | substract | +|``*`` | multiply | +|``/`` | devide | +|``\`` | integer devide | +|``%`` | mod | +|``^`` | power | +|``is`` | object equals | +|``like`` | object similarity | +|``in`` | collection set | +|``which``| index list for true | + +###### pipeline operator + +Extension caller chain in VisualBasic is also named as function pipeline + +```vbnet + Function test1(x) +End Function + + Function test2(x, y) +End Function + + Function test3(a) +End Function + +Dim result = "hello world!" + .test1 + .test2(99) + .test3 +``` + +All of the R function which have at least one parameter can be using in pipeline mode, using ``|`` as the pipeline operator: + +```R +test1 <- function(x) { +} +test2 <- function(x, y) { +} +test3 <- function(a) { +} + +# Doing the exactly the same as VisualBasic pipeline in R language: +var result <- "hello world!" + |test1 + |test2(99) + |test3; +# or you can just using the R function in normal way, and it is much complicated to read: +var result <- test3(test2(test1("hello world"), 99)); +``` + +###### IN operator + +```R +# in list +var booleans <- name in names(obj); +# in range +var booleans <- x in [min, max]; +``` + +###### combine with ``Which`` operator + +```R +var x <- {1, 2, 3, 4, 5}; +var indices.true <- which x in [min, max]; +``` + +###### ``[]`` bracket in R language + +Global variable: + +```R +var g <- "test"; + +test <- function(g as integer) { + # just like the VisualBasic language, you can using [] bracket + # for eliminates the object identifier conflicts in R language. + # string contact of the parameter g with global variable [g] + return g:ToString("F2") & [g]; +} +``` + +Range generator: + +```R +if (mz in [mz.min, mz.max]) { + # range generator only allows numeric type +} +``` + +tuple variable: + +```R +# run commandline using @ operator in R +var prot.fasta = "/home/biostack/sample.fasta"; +var [exitCode, std_out] <- @"makeblastdb -in \"{prot.fasta}\" -dbtype prot"; +``` + +###### Simple external calls + +The ``R#`` language makes more easier for calling external command from CLI, apply a ``@`` operator on a string vector will makes an external system calls: + +```R +var [exitCode, stdout] <- @"/bin/GCModeller/localblast /blastp /query \"{query.fasta}\" /subject \"{COG_myva}\" /out \"{COG_myva.csv}\""; + +# or makes it more clear to read +var CLI <- "/bin/GCModeller/localblast /blastp /query \"{query.fasta}\" /subject \"{COG_myva}\" /out \"{COG_myva.csv}\""; +var [exitCode, stdout] <- @CLI; +``` + +###### Using tuple + +Tuple enable the R function returns multiple value at once: + +```R +tuple.test <- function(a as integer, b as integer) { + return [a, b, a^b]; +} + +var [a, b, c] <- tuple.test(3, 2); + +if (a == 3) { + c = c + a + b; +} +``` + +###### R object to tuple + +You can naturally convert the object as tuple value. The member in the tuple their name should matched the names in an object, so that you can doing something like this example in ``R#``: + +```R +var obj <- list() with { + $a <- 333; + $b <- 999; +} +var [a, b] <- obj; +``` + +But, wait, if the property in an object is not a valid identifier name in ``R#``? Don't worried, you can using alias: + +```R +var obj <- list() with { + $"112233+5" <- 999; + $x <- 1; +} +var [a as "112233+5", b as "x"] <- obj; +``` + +The tuple feature is espacially useful in operates the dataframe: + +```R +var d <- data.frame( + a = {1, 2, 3}, + b = {"a", "g", "y"}, + t = {TRUE, TRUE, FALSE}); + +for([a, b, c as "t"] in d) { + println("%s = %s ? (%s)", a, b, c); +} + +var [a, b, booleans as "t"] <- d; +``` + +If the tuple is applied on a for loop, then it means convert each row in dataframe as tuple, or just applied the tuple on the var declaring, then it means converts the columns in dataframe as the tuple, so that the variable in tuple is a vector with nrows of the dataframe. \ No newline at end of file diff --git a/Shoal.Testing/Debugger.vb b/Shoal.Testing/Debugger.vb deleted file mode 100644 index 1e4613107..000000000 --- a/Shoal.Testing/Debugger.vb +++ /dev/null @@ -1,25 +0,0 @@ -Public Module Debugger - - Sub Main() - - Dim Script As String = -"# ::表示命å空间和函数之间的分隔,当没有导入命å空间的时候需è¦ä½¿ç”¨ 命å空间::函数 çš„å¼•ç”¨æ–¹å¼æ¥è°ƒç”¨å‡½æ•° -var <- namespace::function arg1, arg2, arg3 #使用逗å·çš„æ—¶å€™å˜é‡çš„æŽ’列顺åºå¿…é¡»è¦å’Œå‡½æ•°çš„定义一致 -var = $var -> namespace::function param1 arg1 param2 arg2 /param3 #直接使用空格æ¥åˆ†éš”的时候顺åºçš„ä½ç½®å¯ä»¥ä¸ä¸€è‡´ï¼Œå¹¶ä¸”å¯ä»¥ä½¿ç”¨å¼€å…³æ¥è¡¨ç¤ºBooleanç±»åž‹çš„å‚æ•°å€¼ä¸ºçœŸ -Call $var -> namespace::function param1 arg1 /param2 #进行方法调用必须è¦ä½¿ç”¨Call开头 - -Dim variable = {expression} As type #å˜é‡variable的类型固定为Type类型,å˜é‡çš„定义使用Dim开始 -Dim variable = {expression} #å˜é‡ç±»åž‹ä¸ºObject类型 -Dim variable = {expression} As object #这一å¥å˜é‡çš„申明语å¥å’Œä¸Šä¸€ä¸ªè¯­å¥çš„å«ä¹‰ç›¸åŒ - -For i in => {Delegate(i)} -Do While => {Delegate(expression)} -If => {Delegate(expression)} -ElseIf => {Delegate(expression)} -Else => {Delegate(expression)}" - - Dim ScriptObject = Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.ObjectModels.ScriptModel.ScriptParser(Script, "/home/xieguigang/test.sh") - - End Sub - -End Module diff --git a/Shoal.Testing/My Project/Application.Designer.vb b/Shoal.Testing/My Project/Application.Designer.vb deleted file mode 100644 index 88dd01c78..000000000 --- a/Shoal.Testing/My Project/Application.Designer.vb +++ /dev/null @@ -1,13 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - diff --git a/Shoal.Testing/My Project/Resources.Designer.vb b/Shoal.Testing/My Project/Resources.Designer.vb deleted file mode 100644 index c7a48c64b..000000000 --- a/Shoal.Testing/My Project/Resources.Designer.vb +++ /dev/null @@ -1,63 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - -Imports System - -Namespace My.Resources - - 'This class was auto-generated by the StronglyTypedResourceBuilder - 'class via a tool like ResGen or Visual Studio. - 'To add or remove a member, edit your .ResX file then rerun ResGen - 'with the /str option, or rebuild your VS project. - ''' - ''' A strongly-typed resource class, for looking up localized strings, etc. - ''' - _ - Friend Module Resources - - Private resourceMan As Global.System.Resources.ResourceManager - - Private resourceCulture As Global.System.Globalization.CultureInfo - - ''' - ''' Returns the cached ResourceManager instance used by this class. - ''' - _ - Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager - Get - If Object.ReferenceEquals(resourceMan, Nothing) Then - Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("Shoal.Testing.Resources", GetType(Resources).Assembly) - resourceMan = temp - End If - Return resourceMan - End Get - End Property - - ''' - ''' Overrides the current thread's CurrentUICulture property for all - ''' resource lookups using this strongly typed resource class. - ''' - _ - Friend Property Culture() As Global.System.Globalization.CultureInfo - Get - Return resourceCulture - End Get - Set - resourceCulture = value - End Set - End Property - End Module -End Namespace diff --git a/Shoal.Testing/My Project/Resources.resx b/Shoal.Testing/My Project/Resources.resx deleted file mode 100644 index af7dbebba..000000000 --- a/Shoal.Testing/My Project/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/Shoal.Testing/My Project/Settings.Designer.vb b/Shoal.Testing/My Project/Settings.Designer.vb deleted file mode 100644 index 2300e56a4..000000000 --- a/Shoal.Testing/My Project/Settings.Designer.vb +++ /dev/null @@ -1,73 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - - -Namespace My - - _ - Partial Friend NotInheritable Class MySettings - Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) - -#Region "My.Settings Auto-Save Functionality" -#If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean - - Private Shared addedHandlerLockObject As New Object - - _ - Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub -#End If -#End Region - - Public Shared ReadOnly Property [Default]() As MySettings - Get - -#If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If -#End If - Return defaultInstance - End Get - End Property - End Class -End Namespace - -Namespace My - - _ - Friend Module MySettingsProperty - - _ - Friend ReadOnly Property Settings() As Global.Shoal.Testing.My.MySettings - Get - Return Global.Shoal.Testing.My.MySettings.Default - End Get - End Property - End Module -End Namespace diff --git a/Shoal.Testing/My Project/Settings.settings b/Shoal.Testing/My Project/Settings.settings deleted file mode 100644 index 85b890b3c..000000000 --- a/Shoal.Testing/My Project/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Shoal.Testing/TestingProgram.vb b/Shoal.Testing/TestingProgram.vb deleted file mode 100644 index acb723f58..000000000 --- a/Shoal.Testing/TestingProgram.vb +++ /dev/null @@ -1,240 +0,0 @@ -Imports System.Dynamic -Imports NODE = System.Collections.Generic.KeyValuePair(Of Integer, Char) - -Module TestingProgram - - Sub Main() - - Dim normal_test = "Call {set Z [test1 ui {FALSE}] $var new_value } <- OK!!! -> sum {Test.Generate var1 1234} ""a b {c} d( e f g"" var2 {(double) 33,44,55,66} varXX ""{}{}{}}{}}{ {}{ {}{ {}}}[][][[[[[]]"" var3 [(string()) 1,2,3,4,5]" - normal_test = "1 = [2 ef {abc} gg] + 2" - normal_test = "test_invoke {imports lalal#alalla} #Imports the namespace example here" - Dim expr = Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.ObjectModels.SyntaxParser.Parsing(normal_test) - - Dim script = "imports lalalalalla #Imports the namespace example here -# this is the comments - -library test/path/value -include {test/path value value2 var s} #all of the elements can be dynamics - -goto {44 * $var2} when {testddd sdfsd 1234} # the foto tag can be dynamics, maybe the everything in the script elements can be dynamics! - -imports gcmodeller.compiler #Imports the namespace example here - -savedfile <- {drawing from ""E:\Desktop\xcb_vcell\xcb_model\trunk\xcb.xml""} - - chipdata <- "" E\Desktop\xcb_vcell\chipData_analysis\r_script\xcbChip.csv"" - -metacyc <- E:\BLAST\db\MetaCyc\Xanthomonas_campestris_pv._campestris_str._8004\17.0\data -regprecise <- E:\Desktop\xcb_vcell\Regprecise_TranscriptionFactors_By_Genome.xml -# transcript_regulation <- ""E\Desktop\xcb_vcell\xcb_metabolism_regulations.csv"" - - transcript_regulation <- ""E\Desktop\xcb_vcell\Result\Metabolism.MEME_Filted_0.65\metacyc.pathways_450_0.65.csv"" -44: #just for some test! - mist2 <- E:\Desktop\xcb_vcell\xcb_mist2.xml -mist2_strp_xml <- ""E\Desktop\xcb_vcell\xcb_mist2_strp.xml"" - string-db <- ""E\Desktop\xcb_vcell\xcb_string.xml"" - - ptt_dir <- E:\Desktop\xcb_vcell\Xanthomonas_campestris_8004_uid15 - -myva_cog <- E:\Desktop\xcb_vcell\xcb_myva_COG.csv -door <- ""E:\Desktop\xcb_vcell\xcb_door.opr"" - - array <- array.new ""$myva_cog,$ptt_dir,$door,$chipdata"" - argvs <- string.format expression "" -compile -myva_cog "" {0}"" -ptt_dir ""{1}"" -door ""{2}"" -chipdata ""{3}"""" argvs $array - -$argvs - -#compiler <- gcmodeller.compiler -precompile metacyc $metacyc regprecise_regulator_xml $regprecise transcript_regulation $transcript_regulation mist2 $mist2 mist2_strp_xml $mist2_strp_xml stringdb $string-db -compiled_model <- invoke.compile compiler $compiler argvs $argvs -Call write.cellsystem_model model $compiled_model filepath $savedfile - -argvs <- array.new $savedfile -conf <- string.format expression {0}.inf argvs $argvs - -call gcmodeller.engine_kernel default_configuration $conf" - - - script = "imports {system.extensions} -dd <- basename test.dll -call {basename c:\dddd\fhghthddd.exe} -> cowsay ""-type dead"" --yes" - - - Dim scriptnfggh = Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.ObjectModels.ScriptModel.ScriptParser(script, "") - Dim shoalshellengine As New Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ShellScript - Dim scriptmodel = New Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ObjectModels.ExecuteModel(scriptnfggh, shoalshellengine) - - Call scriptmodel.Execute() - - Dim debugger As Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging.DebuggerListener = New Scripting.ShoalShell.Runtime.Debugging.DebuggerListener("./Shoal.exe", ".\test-shoal-debugger\") - - - Call debugger.PushScript("call ""Hello world"" -> cowsay") - Call debugger.PushScript("sfhsdkjfhsdjklfjksdf") - Call debugger.PushScript("library ""../../../../..\ShoalShell\bin\Debug\ShoalShell.Plugins.Win32API_v2.0_22.0.7601.121__ed1d5d0cd8c60cc9a.dll""" & vbCrLf & - "imports winmm.dll" & vbCrLf & - "filename <- ""F:\Music\NOKIA.wav""" & vbCrLf & -"call winmm.dll playsounda lpszname $filename hmodule 0 dwflags &SND_FILENAME") - - ' Pause(")") - - - Console.ReadLine() - - Call debugger.PushScript("?") - - Console.ReadLine() - ' debugger.Free() - - - End - - Dim test_expression As String = "$($(test2 pp $rt) -> test_func par1 $ffjhg par2 $dee) -> test3 p3 $($(test5 de) -> test4 ppp $gr)" - - Dim hhh = evalue(test_expression) - - ' Dim ex = Microsoft.VisualBasic.Shoal.Runtime.Objects.ObjectModels.ScriptCodeLine.InternalParser(test_expression) - - ' Call Microsoft.VisualBasic.Parallel.LQuerySchedule.PBS_TEST() - - ' Pause() - - 'Dim Shl As Object = Microsoft.VisualBasic.Shoal.Runtime.Objects.Dynamics.CreateDefaultEnvironment("E:\GCModeller\CompiledAssembly") - - ''Call Shl.Evaluate("dd <- 1234") - ''Dim Msg As String = Shl.dd - - ''Call Console.WriteLine("Dynamic variable dd is {0}", Msg) - - ''Call Shl.evaluate("edf <- 33") - - - 'Call Shl.imports("assemblyfile.io") - - 'Dim fasta = Shl.read.fasta("E:\BLAST\db\xcb_prot.fsa") - - 'Call Console.WriteLine(fasta.ToString) - 'Call Console.Read() - End Sub - - Function evalue(expression As String) As Expression - Dim OPTR As New Stack(Of NODE) - Dim model = New Expression With {.Tokens = New List(Of Expression)} - - Call OPTR.Push(New NODE(-1, "("c)) - - For i As Integer = 0 To expression.Length - 1 - Dim ch = expression(i) - - Call Console.Write(ch) - - If ch <> "("c AndAlso ch <> ")"c Then - Continue For - End If - - '下é¢çš„过程之中chå˜é‡åªæœ‰"("或者")"这两个值 - If OPTR.Count = 0 Then - Exit For - End If - - Dim c = OPTR.Peek - Dim p = InternalCompare(c.Value, ch) - - If p < 0 Then - OPTR.Push(New NODE(i, ch)) - i += 1 - Call model.Tokens.Add(evalue(expression, i, OPTR)) - ElseIf p = 0 Then - c = OPTR.Pop - Dim simpletoken = Mid(expression, c.Key + 2, i - c.Key - 1) - Call model.Add(New Expression With {.TokenExpression = simpletoken}) - End If - Next - - Return model - End Function - - Function InternalCompare(op1 As Char, op2 As Char) As Integer - If op1 = "("c Then - If op2 = "("c Then - Return -1 - Else - Return 0 - End If - Else - If op2 = "("c Then - Return -1 - Else - Return 1 - End If - End If - End Function - - Function evalue(expression As String, ByRef start As Integer, ByRef optr As Stack(Of NODE)) As Expression - Dim model = New Expression With {.Tokens = New List(Of Expression)} - - For i As Integer = start To expression.Length - 1 - Dim ch = expression(i) - - Call Console.Write(ch) - - If ch <> "("c AndAlso ch <> ")"c Then - Continue For - End If - - '下é¢çš„过程之中chå˜é‡åªæœ‰"("或者")"这两个值 - Dim c = optr.Peek - If c.Key = -1 Then - '到站定了 - start = i - Return model - End If - Dim p = InternalCompare(c.Value, ch) - - If p < 0 Then - optr.Push(New NODE(i, ch)) - i += 1 - Call model.Tokens.Add(evalue(expression, i, optr)) - ElseIf p = 0 Then - c = optr.Pop - Dim simpletoken = Mid(expression, c.Key + 2, i - c.Key - 1) - Call model.Add(New Expression With {.TokenExpression = simpletoken}) - End If - Next - - Return model - End Function - - ''' - ''' ä¸€ä¸ªè¡¨è¾¾å¼ - ''' - ''' - Public Structure Expression - - ''' - ''' 一个表达å¼çš„æœ€ç®€å•的一个è¯å…ƒå¯èƒ½æ˜¯ç”±å…¶ä»–çš„è¡¨è¾¾å¼æž„æˆçš„ - ''' - ''' - ''' - ''' - Public Property Tokens As List(Of Expression) - ''' - ''' 当å‰çš„è¯å…ƒï¼Œå‡è‹¥æœ¬è¡¨è¾¾å¼å¯¹è±¡æ˜¯æœ€ç®€å•的表达å¼çš„è¯ï¼Œåˆ™æœ¬å±žæ€§å³ä¸ºæœ¬è¡¨è¾¾å¼çš„值 - ''' - ''' - ''' - ''' - Public Property TokenExpression As String - - Public Overrides Function ToString() As String - If Not String.IsNullOrEmpty(TokenExpression) Then - Return TokenExpression - Else - Return "$[ " & String.Join(" ", (From item In Tokens Let s As String = item.ToString Select s).ToArray) & " ]" - End If - End Function - - Public Sub Add(ExpressionToken As Expression) - Call Tokens.Add(ExpressionToken) - End Sub - End Structure -End Module diff --git a/Shoal.VisualStudio/Classification/ClassificationFormat.vb b/Shoal.VisualStudio/Classification/ClassificationFormat.vb deleted file mode 100644 index 2ef926e6f..000000000 --- a/Shoal.VisualStudio/Classification/ClassificationFormat.vb +++ /dev/null @@ -1,78 +0,0 @@ -Imports System.ComponentModel.Composition -Imports Microsoft.VisualStudio.Text.Classification -Imports Microsoft.VisualStudio.Utilities - -Namespace OokLanguage - - ' 在这里定义语法高亮 - -#Region "Format definitions" - - ''' - ''' Defines an editor format for the OrdinaryClassification type that has a purple background - ''' and is underlined. - ''' - - Friend NotInheritable Class OokE - Inherits ClassificationFormatDefinition - - ''' - ''' Defines the visual format for the "ordinary" classification type - ''' - Public Sub New() - Me.DisplayName = "ook!" 'human readable version of the name - Me.ForegroundColor = Colors.BlueViolet - End Sub - - End Class - - ''' - ''' Defines an editor format for the OrdinaryClassification type that has a purple background - ''' and is underlined. - ''' - - Friend NotInheritable Class OokQ - Inherits ClassificationFormatDefinition - - ''' - ''' Defines the visual format for the "ordinary" classification type - ''' - Public Sub New() - Me.DisplayName = "ook?" 'human readable version of the name - Me.ForegroundColor = Colors.Green - End Sub - - End Class - - ''' - ''' Defines an editor format for the OrdinaryClassification type that has a purple background - ''' and is underlined. - ''' - - Friend NotInheritable Class OokP - Inherits ClassificationFormatDefinition - - ''' - ''' Defines the visual format for the "ook" classification type - ''' - Public Sub New() - Me.DisplayName = "ook." 'human readable version of the name - Me.ForegroundColor = Colors.Orange - End Sub - - End Class -#End Region - -End Namespace diff --git a/Shoal.VisualStudio/Classification/ClassificationType.vb b/Shoal.VisualStudio/Classification/ClassificationType.vb deleted file mode 100644 index df3335c06..000000000 --- a/Shoal.VisualStudio/Classification/ClassificationType.vb +++ /dev/null @@ -1,37 +0,0 @@ -Imports System.ComponentModel.Composition -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Parser.Tokens -Imports Microsoft.VisualStudio.Text.Classification -Imports Microsoft.VisualStudio.Utilities - -Namespace OokLanguage - - Module OrdinaryClassificationDefinition - - ''' - ''' Defines the "ordinary" classification type. - ''' - - Public CollectionElement As ClassificationTypeDefinition = Nothing - - ''' - ''' Defines the "ordinary" classification type. - ''' - - Public EntryPoint As ClassificationTypeDefinition = Nothing - - ''' - ''' Defines the "ordinary" classification type. - ''' - - Public InternalExpression As ClassificationTypeDefinition = Nothing - - - Public LeftAssignedVariable As ClassificationTypeDefinition = Nothing - - - Public [Operator] As ClassificationTypeDefinition = Nothing - - - Public ParameterName As ClassificationTypeDefinition = Nothing - End Module -End Namespace diff --git a/Shoal.VisualStudio/Classification/OokClassifier.vb b/Shoal.VisualStudio/Classification/OokClassifier.vb deleted file mode 100644 index bcbe91f0b..000000000 --- a/Shoal.VisualStudio/Classification/OokClassifier.vb +++ /dev/null @@ -1,77 +0,0 @@ -' Copyright (c) Microsoft Corporation -' All rights reserved - -Imports System -Imports System.Collections.Generic -Imports System.ComponentModel.Composition -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.LDM.Expressions -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Parser.Tokens -Imports Microsoft.VisualStudio.Text -Imports Microsoft.VisualStudio.Text.Classification -Imports Microsoft.VisualStudio.Text.Editor -Imports Microsoft.VisualStudio.Text.Tagging -Imports Microsoft.VisualStudio.Utilities - -Namespace OokLanguage - - - Friend NotInheritable Class OokClassifierProvider - Implements ITaggerProvider - - - Friend Shared OokContentType As ContentTypeDefinition = Nothing - - - Friend Shared OokFileType As FileExtensionToContentTypeDefinition = Nothing - - - Friend ClassificationTypeRegistry As IClassificationTypeRegistryService = Nothing - - - Friend aggregatorFactory As IBufferTagAggregatorFactoryService = Nothing - - Public Function CreateTagger(Of T As ITag)(buffer As ITextBuffer) As ITagger(Of T) Implements ITaggerProvider.CreateTagger - Dim ookTagAggregator As ITagAggregator(Of OokTokenTag) = aggregatorFactory.CreateTagAggregator(Of OokTokenTag)(buffer) - Dim cls As Object = New OokClassifier(buffer, ookTagAggregator, ClassificationTypeRegistry) - Dim tagger As ITagger(Of T) = TryCast(cls, ITagger(Of T)) - Return tagger - End Function - - End Class - - Friend NotInheritable Class OokClassifier : Implements ITagger(Of ClassificationTag) - - Private _buffer As ITextBuffer - Private _aggregator As ITagAggregator(Of OokTokenTag) - Private _ookTypes As IDictionary(Of TokenTypes, IClassificationType) - - Friend Sub New(buffer As ITextBuffer, ookTagAggregator As ITagAggregator(Of OokTokenTag), typeService As IClassificationTypeRegistryService) - _buffer = buffer - _aggregator = ookTagAggregator - _ookTypes = New Dictionary(Of TokenTypes, IClassificationType) - _ookTypes(TokenTypes.CollectionElement) = typeService.GetClassificationType(NameOf(TokenTypes.CollectionElement)) - _ookTypes(TokenTypes.EntryPoint) = typeService.GetClassificationType(NameOf(TokenTypes.EntryPoint)) - _ookTypes(TokenTypes.InternalExpression) = typeService.GetClassificationType(NameOf(TokenTypes.InternalExpression)) - _ookTypes(TokenTypes.LeftAssignedVariable) = typeService.GetClassificationType(NameOf(TokenTypes.LeftAssignedVariable)) - _ookTypes(TokenTypes.Operator) = typeService.GetClassificationType(NameOf(TokenTypes.Operator)) - _ookTypes(TokenTypes.ParameterName) = typeService.GetClassificationType(NameOf(TokenTypes.ParameterName)) - End Sub - - Public Function GetTags(spans As NormalizedSnapshotSpanCollection) As IEnumerable(Of ITagSpan(Of ClassificationTag)) Implements ITagger(Of ClassificationTag).GetTags - Dim tags As New List(Of TagSpan(Of ClassificationTag)) - - For Each tagSpan In Me._aggregator.GetTags(spans) - Dim tagSpans = tagSpan.Span.GetSpans(spans(0).Snapshot) - tags.Add(New TagSpan(Of ClassificationTag)(tagSpans(0), New ClassificationTag(_ookTypes(tagSpan.Tag.type)))) - Next tagSpan - - Return tags - End Function - - Public Event TagsChanged(sender As Object, e As SnapshotSpanEventArgs) Implements ITagger(Of Microsoft.VisualStudio.Text.Tagging.ClassificationTag).TagsChanged - - End Class - -End Namespace diff --git a/Shoal.VisualStudio/Codeporium.xml b/Shoal.VisualStudio/Codeporium.xml deleted file mode 100644 index 332c6ba81..000000000 --- a/Shoal.VisualStudio/Codeporium.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/Shoal.VisualStudio/Intellisense/CompletionController.vb b/Shoal.VisualStudio/Intellisense/CompletionController.vb deleted file mode 100644 index e392fa3ec..000000000 --- a/Shoal.VisualStudio/Intellisense/CompletionController.vb +++ /dev/null @@ -1,180 +0,0 @@ -Imports System.ComponentModel.Composition -Imports Microsoft.VisualStudio.Editor -Imports Microsoft.VisualStudio.Language.Intellisense -Imports Microsoft.VisualStudio.OLE.Interop -Imports Microsoft.VisualStudio.Text -Imports Microsoft.VisualStudio.Text.Editor -Imports Microsoft.VisualStudio.TextManager.Interop -Imports Microsoft.VisualStudio.Utilities -Imports Microsoft.VisualStudio -Imports System.Runtime.InteropServices - -Namespace OokLanguage - - - Friend NotInheritable Class VsTextViewCreationListener - Implements IVsTextViewCreationListener - - - Private AdaptersFactory As IVsEditorAdaptersFactoryService = Nothing - - - Private CompletionBroker As ICompletionBroker = Nothing - - Public Sub VsTextViewCreated(textViewAdapter As IVsTextView) Implements IVsTextViewCreationListener.VsTextViewCreated - Dim view As IWpfTextView = AdaptersFactory.GetWpfTextView(textViewAdapter) - Debug.Assert(view IsNot Nothing) - Dim filter As New CommandFilter(view, CompletionBroker) - Dim [next] As IOleCommandTarget = Nothing - textViewAdapter.AddCommandFilter(filter, [next]) - filter.Next = [next] - End Sub - - End Class - - Friend NotInheritable Class CommandFilter - Implements IOleCommandTarget - - Private _currentSession As ICompletionSession - - Public Sub New(textView As IWpfTextView, broker As ICompletionBroker) - _currentSession = Nothing - Me.TextView = textView - Me.Broker = broker - End Sub - - Private privateTextView As IWpfTextView - Public Property TextView As IWpfTextView - Get - Return privateTextView - End Get - Private Set(value As IWpfTextView) - privateTextView = value - End Set - End Property - - Private privateBroker As ICompletionBroker - Public Property Broker As ICompletionBroker - Get - Return privateBroker - End Get - Private Set(value As ICompletionBroker) - privateBroker = value - End Set - End Property - Public Property [Next] As IOleCommandTarget - - Private Function GetTypeChar(pvaIn As IntPtr) As Char - Return ChrW(CUShort(Marshal.GetObjectForNativeVariant(pvaIn))) - End Function - - Public Function Exec(ByRef pguidCmdGroup As Guid, nCmdID As UInteger, nCmdexecopt As UInteger, pvaIn As IntPtr, pvaOut As IntPtr) As Integer Implements IOleCommandTarget.Exec - Dim handled As Boolean = False - Dim hresult As Integer = VSConstants.S_OK - - ' 1. Pre-process - If pguidCmdGroup = VSConstants.VSStd2K Then - Select Case CType(nCmdID, VSConstants.VSStd2KCmdID) - Case VSConstants.VSStd2KCmdID.AUTOCOMPLETE, VSConstants.VSStd2KCmdID.COMPLETEWORD - handled = StartSession() - Case VSConstants.VSStd2KCmdID.RETURN - handled = Complete(False) - Case VSConstants.VSStd2KCmdID.TAB - handled = Complete(True) - Case 103 - handled = Cancel() - End Select - End If - - If Not handled Then - hresult = [Next].Exec(pguidCmdGroup, nCmdID, nCmdexecopt, pvaIn, pvaOut) - End If - - If ErrorHandler.Succeeded(hresult) Then - If pguidCmdGroup = VSConstants.VSStd2K Then - Select Case CType(nCmdID, VSConstants.VSStd2KCmdID) - Case VSConstants.VSStd2KCmdID.TYPECHAR - Dim ch As Char = GetTypeChar(pvaIn) - If ch = " "c Then - StartSession() - ElseIf _currentSession IsNot Nothing Then - Filter() - End If - Case VSConstants.VSStd2KCmdID.BACKSPACE - Filter() - End Select - End If - End If - - Return hresult - End Function - - Private Sub Filter() - If _currentSession Is Nothing Then - Return - End If - - _currentSession.SelectedCompletionSet.SelectBestMatch() - _currentSession.SelectedCompletionSet.Recalculate() - End Sub - - Private Function Cancel() As Boolean - If _currentSession Is Nothing Then - Return False - End If - - _currentSession.Dismiss() - - Return True - End Function - - Private Function Complete(force As Boolean) As Boolean - If _currentSession Is Nothing Then - Return False - End If - - If (Not _currentSession.SelectedCompletionSet.SelectionStatus.IsSelected) AndAlso (Not force) Then - _currentSession.Dismiss() - Return False - Else - _currentSession.Commit() - Return True - End If - End Function - - Private Function StartSession() As Boolean - If _currentSession IsNot Nothing Then - Return False - End If - - Dim caret As SnapshotPoint = TextView.Caret.Position.BufferPosition - Dim snapshot As ITextSnapshot = caret.Snapshot - - If Not Broker.IsCompletionActive(TextView) Then - _currentSession = Broker.CreateCompletionSession(TextView, snapshot.CreateTrackingPoint(caret, PointTrackingMode.Positive), True) - Else - _currentSession = Broker.GetSessions(TextView)(0) - End If - - AddHandler _currentSession.Dismissed, Sub(sender, args) _currentSession = Nothing - _currentSession.Start() - - Return True - End Function - - Public Function QueryStatus(ByRef pguidCmdGroup As Guid, cCmds As UInteger, prgCmds() As OLECMD, pCmdText As IntPtr) As Integer Implements IOleCommandTarget.QueryStatus - If pguidCmdGroup = VSConstants.VSStd2K Then - Select Case CType(prgCmds(0).cmdID, VSConstants.VSStd2KCmdID) - Case VSConstants.VSStd2KCmdID.AUTOCOMPLETE, VSConstants.VSStd2KCmdID.COMPLETEWORD - prgCmds(0).cmdf = CUInt(OLECMDF.OLECMDF_ENABLED) Or CUInt(OLECMDF.OLECMDF_SUPPORTED) - Return VSConstants.S_OK - End Select - End If - - Return [Next].QueryStatus(pguidCmdGroup, cCmds, prgCmds, pCmdText) - End Function - - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.VisualStudio/Intellisense/CompletionSource.vb b/Shoal.VisualStudio/Intellisense/CompletionSource.vb deleted file mode 100644 index 1faa40015..000000000 --- a/Shoal.VisualStudio/Intellisense/CompletionSource.vb +++ /dev/null @@ -1,63 +0,0 @@ -Imports System.Text -Imports Microsoft.VisualStudio.Language.Intellisense -Imports System.Collections.ObjectModel -Imports Microsoft.VisualStudio.Text -Imports Microsoft.VisualStudio.Text.Tagging -Imports System.ComponentModel.Composition -Imports Microsoft.VisualStudio.Utilities -Imports Microsoft.VisualBasic - -Namespace OokLanguage - - - Friend Class OokCompletionSourceProvider - Implements ICompletionSourceProvider - - Public Function TryCreateCompletionSource(textBuffer As ITextBuffer) As ICompletionSource Implements ICompletionSourceProvider.TryCreateCompletionSource - Return New OokCompletionSource(textBuffer) - End Function - - End Class - - Public Class OokCompletionSource - Implements ICompletionSource - - Private _buffer As ITextBuffer - Private _disposed As Boolean = False - - Public Sub New(buffer As ITextBuffer) - _buffer = buffer - End Sub - - Public Sub AugmentCompletionSession(session As ICompletionSession, completionSets As IList(Of CompletionSet)) Implements ICompletionSource.AugmentCompletionSession - If _disposed Then - Throw New ObjectDisposedException("OokCompletionSource") - End If - - Dim completions As New List(Of Completion) From {New Completion("Ook!"), New Completion("Ook."), New Completion("Ook?")} - Dim snapshot As ITextSnapshot = _buffer.CurrentSnapshot - Dim triggerPoint = CType(session.GetTriggerPoint(snapshot), SnapshotPoint) - - If triggerPoint = Nothing Then - Return - End If - - Dim line = triggerPoint.GetContainingLine() - Dim start As SnapshotPoint = triggerPoint - - Do While start > line.Start AndAlso Not Char.IsWhiteSpace((start - 1).GetChar()) - start -= 1 - Loop - - Dim applicableTo = snapshot.CreateTrackingSpan(New SnapshotSpan(start, triggerPoint), SpanTrackingMode.EdgeInclusive) - completionSets.Add(New CompletionSet("All", "All", applicableTo, completions, Enumerable.Empty(Of Completion)())) - End Sub - - Public Sub Dispose() Implements IDisposable.Dispose - _disposed = True - End Sub - - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.VisualStudio/Intellisense/OokQuickInfoSource.vb b/Shoal.VisualStudio/Intellisense/OokQuickInfoSource.vb deleted file mode 100644 index 870274988..000000000 --- a/Shoal.VisualStudio/Intellisense/OokQuickInfoSource.vb +++ /dev/null @@ -1,64 +0,0 @@ -Imports System.Text -Imports Microsoft.VisualStudio.Language.Intellisense -Imports System.Collections.ObjectModel -Imports Microsoft.VisualStudio.Text -Imports Microsoft.VisualStudio.Text.Tagging -Imports System.ComponentModel.Composition -Imports Microsoft.VisualStudio.Utilities -Imports System.Runtime.InteropServices - -Namespace OokLanguage - - - Friend Class OokQuickInfoSourceProvider - Implements IQuickInfoSourceProvider - - - Private aggService As IBufferTagAggregatorFactoryService = Nothing - - Public Function TryCreateQuickInfoSource(textBuffer As ITextBuffer) As IQuickInfoSource Implements IQuickInfoSourceProvider.TryCreateQuickInfoSource - Return New OokQuickInfoSource(textBuffer, aggService.CreateTagAggregator(Of OokTokenTag)(textBuffer)) - End Function - - End Class - - Friend Class OokQuickInfoSource - Implements IQuickInfoSource - - Private _aggregator As ITagAggregator(Of OokTokenTag) - Private _buffer As ITextBuffer - Private _disposed As Boolean = False - - Public Sub New(buffer As ITextBuffer, aggregator As ITagAggregator(Of OokTokenTag)) - _aggregator = aggregator - _buffer = buffer - End Sub - - Public Sub AugmentQuickInfoSession(session As IQuickInfoSession, quickInfoContent As IList(Of Object), ByRef applicableToSpan As ITrackingSpan) Implements IQuickInfoSource.AugmentQuickInfoSession - applicableToSpan = Nothing - - If _disposed Then - Throw New ObjectDisposedException("TestQuickInfoSource") - End If - - Dim triggerPoint = CType(session.GetTriggerPoint(_buffer.CurrentSnapshot), SnapshotPoint) - If triggerPoint = Nothing Then - Return - End If - - For Each curTag As IMappingTagSpan(Of OokTokenTag) In _aggregator.GetTags(New SnapshotSpan(triggerPoint, triggerPoint)) - If curTag.Tag.type = Scripting.ShoalShell.Interpreter.LDM.Expressions.ExpressionTypes.Die Then - Dim tagSpan = curTag.Span.GetSpans(_buffer).First() - applicableToSpan = _buffer.CurrentSnapshot.CreateTrackingSpan(tagSpan, SpanTrackingMode.EdgeExclusive) - quickInfoContent.Add("Throw the exception!") - End If - Next curTag - End Sub - - Public Sub Dispose() Implements IDisposable.Dispose - _disposed = True - End Sub - - End Class -End Namespace - diff --git a/Shoal.VisualStudio/Intellisense/QuickInfoController.vb b/Shoal.VisualStudio/Intellisense/QuickInfoController.vb deleted file mode 100644 index c50c972d4..000000000 --- a/Shoal.VisualStudio/Intellisense/QuickInfoController.vb +++ /dev/null @@ -1,66 +0,0 @@ -'////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -' Copyright (c) Microsoft Corporation. All rights reserved. -'////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -Imports Microsoft.VisualStudio.Language.Intellisense -Imports Microsoft.VisualStudio.Text -Imports Microsoft.VisualStudio.Text.Editor -Imports Microsoft.VisualStudio.Utilities - -Namespace VSLTK.Intellisense - - Friend Class TemplateQuickInfoController - Implements IIntellisenseController - - Private _textView As ITextView - Private _subjectBuffers As IList(Of ITextBuffer) - Private _componentContext As TemplateQuickInfoControllerProvider - - Private _session As IQuickInfoSession - - Friend Sub New(textView As ITextView, subjectBuffers As IList(Of ITextBuffer), componentContext As TemplateQuickInfoControllerProvider) - _textView = textView - _subjectBuffers = subjectBuffers - _componentContext = componentContext - - AddHandler _textView.MouseHover, AddressOf OnTextViewMouseHover - End Sub - - Public Sub ConnectSubjectBuffer(subjectBuffer As ITextBuffer) Implements IIntellisenseController.ConnectSubjectBuffer - - End Sub - - Public Sub DisconnectSubjectBuffer(subjectBuffer As ITextBuffer) Implements IIntellisenseController.DisconnectSubjectBuffer - - End Sub - - Public Sub Detach(textView As ITextView) Implements IIntellisenseController.Detach - If _textView Is textView Then - RemoveHandler _textView.MouseHover, AddressOf OnTextViewMouseHover - _textView = Nothing - End If - End Sub - - Private Sub OnTextViewMouseHover(sender As Object, e As MouseHoverEventArgs) - Dim point? As SnapshotPoint = Me.GetMousePosition(New SnapshotPoint(_textView.TextSnapshot, e.Position)) - - If point IsNot Nothing Then - Dim triggerPoint As ITrackingPoint = point.Value.Snapshot.CreateTrackingPoint(point.Value.Position, PointTrackingMode.Positive) - ' Find the broker for this buffer - If Not _componentContext.QuickInfoBroker.IsQuickInfoActive(_textView) Then - _session = _componentContext.QuickInfoBroker.CreateQuickInfoSession(_textView, triggerPoint, True) - _session.Start() - End If - End If - End Sub - - Private Function GetMousePosition(topPosition As SnapshotPoint) As SnapshotPoint? - ' Map this point down to the appropriate subject buffer. - Return _textView.BufferGraph.MapDownToFirstMatch(topPosition, PointTrackingMode.Positive, AddressOf __match, PositionAffinity.Predecessor) - End Function - - Private Function __match(snapshot As ITextSnapshot) As Boolean - Return _subjectBuffers.Contains(snapshot.TextBuffer) - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.VisualStudio/Intellisense/QuickInfoControllerProvider.vb b/Shoal.VisualStudio/Intellisense/QuickInfoControllerProvider.vb deleted file mode 100644 index 0098c5d93..000000000 --- a/Shoal.VisualStudio/Intellisense/QuickInfoControllerProvider.vb +++ /dev/null @@ -1,23 +0,0 @@ -'////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -' Copyright (c) Microsoft Corporation. All rights reserved. -'////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -Imports System.ComponentModel.Composition -Imports Microsoft.VisualStudio.Language.Intellisense -Imports Microsoft.VisualStudio.Text -Imports Microsoft.VisualStudio.Text.Editor -Imports Microsoft.VisualStudio.Utilities - -Namespace VSLTK.Intellisense - - - Friend Class TemplateQuickInfoControllerProvider : Implements IIntellisenseControllerProvider - - - Friend Property QuickInfoBroker As IQuickInfoBroker - - Public Function TryCreateIntellisenseController(textView As ITextView, subjectBuffers As IList(Of ITextBuffer)) As IIntellisenseController Implements IIntellisenseControllerProvider.TryCreateIntellisenseController - Return New TemplateQuickInfoController(textView, subjectBuffers, Me) - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.VisualStudio/My Project/AssemblyInfo.vb b/Shoal.VisualStudio/My Project/AssemblyInfo.vb deleted file mode 100644 index 7883e47f0..000000000 --- a/Shoal.VisualStudio/My Project/AssemblyInfo.vb +++ /dev/null @@ -1,33 +0,0 @@ -Imports System.Reflection -Imports System.Runtime.CompilerServices -Imports System.Runtime.InteropServices - -' General Information about an assembly is controlled through the following -' set of attributes. Change these attribute values to modify the information -' associated with an assembly. - - - - - - - - - -' Setting ComVisible to false makes the types in this assembly not visible -' to COM components. If you need to access a type in this assembly from -' COM, set the ComVisible attribute to true on that type. - - -' Version information for an assembly consists of the following four values: -' -' Major Version -' Minor Version -' Build Number -' Revision -' -' You can specify all the values or you can default the Build and Revision Numbers -' by using the '*' as shown below: -' [assembly: AssemblyVersion("1.0.*")] - - diff --git a/Shoal.VisualStudio/Shoal.VisualStudio.sln b/Shoal.VisualStudio/Shoal.VisualStudio.sln deleted file mode 100644 index 39de03a2e..000000000 --- a/Shoal.VisualStudio/Shoal.VisualStudio.sln +++ /dev/null @@ -1,65 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.24720.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Shoal.VisualStudio", "Shoal.VisualStudio.vbproj", "{F091221E-FD10-41A7-AAC4-C9359178BDB1}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "+Microsoft.VisualBasic.Architecture.Framework", "..\..\VisualBasic_AppFramework\Microsoft.VisualBasic.Architecture.Framework\+Microsoft.VisualBasic.Architecture.Framework.vbproj", "{FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ShoalShell_Core.v2", "..\Shoal.v2\Shoal.v2\ShoalShell_Core.v2.vbproj", "{A7CB16FF-75C6-4746-8449-86C121D723C4}" -EndProject -Global - GlobalSection(SharedMSBuildProjectFiles) = preSolution - ..\..\VisualBasic_AppFramework\SharedProject.VB_FrameworkExtensions\SharedProject.VB_FrameworkExtensions.projitems*{fecce1fd-e1d4-49e3-a668-60bb5e7aed99}*SharedItemsImports = 4 - EndGlobalSection - 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 - {F091221E-FD10-41A7-AAC4-C9359178BDB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F091221E-FD10-41A7-AAC4-C9359178BDB1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F091221E-FD10-41A7-AAC4-C9359178BDB1}.Debug|x64.ActiveCfg = Debug|Any CPU - {F091221E-FD10-41A7-AAC4-C9359178BDB1}.Debug|x64.Build.0 = Debug|Any CPU - {F091221E-FD10-41A7-AAC4-C9359178BDB1}.Debug|x86.ActiveCfg = Debug|Any CPU - {F091221E-FD10-41A7-AAC4-C9359178BDB1}.Debug|x86.Build.0 = Debug|Any CPU - {F091221E-FD10-41A7-AAC4-C9359178BDB1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F091221E-FD10-41A7-AAC4-C9359178BDB1}.Release|Any CPU.Build.0 = Release|Any CPU - {F091221E-FD10-41A7-AAC4-C9359178BDB1}.Release|x64.ActiveCfg = Release|Any CPU - {F091221E-FD10-41A7-AAC4-C9359178BDB1}.Release|x64.Build.0 = Release|Any CPU - {F091221E-FD10-41A7-AAC4-C9359178BDB1}.Release|x86.ActiveCfg = Release|Any CPU - {F091221E-FD10-41A7-AAC4-C9359178BDB1}.Release|x86.Build.0 = Release|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x64.ActiveCfg = Debug|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x64.Build.0 = Debug|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x86.ActiveCfg = Debug|x86 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x86.Build.0 = Debug|x86 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|Any CPU.Build.0 = Release|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x64.ActiveCfg = Release|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x64.Build.0 = Release|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x86.ActiveCfg = Release|x86 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x86.Build.0 = Release|x86 - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|x64.ActiveCfg = Debug|x64 - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|x64.Build.0 = Debug|x64 - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|x86.ActiveCfg = Debug|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|x86.Build.0 = Debug|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|Any CPU.Build.0 = Release|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|x64.ActiveCfg = Release|x64 - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|x64.Build.0 = Release|x64 - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|x86.ActiveCfg = Release|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|x86.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/Shoal.VisualStudio/Shoal.VisualStudio.vbproj b/Shoal.VisualStudio/Shoal.VisualStudio.vbproj deleted file mode 100644 index 0a9a09812..000000000 --- a/Shoal.VisualStudio/Shoal.VisualStudio.vbproj +++ /dev/null @@ -1,184 +0,0 @@ - - - - - Debug - AnyCPU - 10.0.20305 - 2.0 - {82b43b9b-a64c-4715-b499-d71e9ca2bd60};{F184B08F-C81C-45F6-A57F-5ABD9991F28F} - {F091221E-FD10-41A7-AAC4-C9359178BDB1} - Library - - - Shoal.VisualStudio - v4.6 - On - Binary - Off - On - 512 - false - 14.0 - - - - - 4.0 - - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - true - full - false - bin\Debug\ - true - true - prompt - 42353,42354,42355 - false - Shoal.VisualStudio.xml - On - - - pdbonly - true - bin\Release\ - false - true - prompt - 42353,42354,42355 - false - Shoal.VisualStudio.xml - - - - False - - - - - - - False - - - False - - - False - - - False - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Designer - - - - - - False - Microsoft .NET Framework 4 %28x86 and x64%29 - true - - - False - .NET Framework 3.5 SP1 - false - - - False - Windows Installer 4.5 - true - - - - - {fecce1fd-e1d4-49e3-a668-60bb5e7aed99} - +Microsoft.VisualBasic.Architecture.Framework - - - {a7cb16ff-75c6-4746-8449-86c121d723c4} - ShoalShell_Core.v2 - - - - 10.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - - - - - - - - - - \ No newline at end of file diff --git a/Shoal.VisualStudio/ShoalShell.vb b/Shoal.VisualStudio/ShoalShell.vb deleted file mode 100644 index fd334b07a..000000000 --- a/Shoal.VisualStudio/ShoalShell.vb +++ /dev/null @@ -1,10 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime - -Module ShoalShell - - Public ReadOnly Property ScriptEngine As ScriptEngine - - Sub New() - ScriptEngine = New ScriptEngine - End Sub -End Module diff --git a/Shoal.VisualStudio/TokenTag/OokTokenTag.vb b/Shoal.VisualStudio/TokenTag/OokTokenTag.vb deleted file mode 100644 index ff9693dee..000000000 --- a/Shoal.VisualStudio/TokenTag/OokTokenTag.vb +++ /dev/null @@ -1,29 +0,0 @@ -' Copyright (c) Microsoft Corporation -' All rights reserved - -Imports System -Imports System.Collections.Generic -Imports System.ComponentModel.Composition -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.LDM.Expressions -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Parser.Tokens -Imports Microsoft.VisualStudio.Text -Imports Microsoft.VisualStudio.Text.Classification -Imports Microsoft.VisualStudio.Text.Editor -Imports Microsoft.VisualStudio.Text.Tagging -Imports Microsoft.VisualStudio.Utilities - -Namespace OokLanguage - - Public Class OokTokenTag : Implements ITag - - Public Property type As TokenTypes - - Public Sub New(type As TokenTypes) - Me.type = type - End Sub - - Public Overrides Function ToString() As String - Return type.Description - End Function - End Class -End Namespace diff --git a/Shoal.VisualStudio/TokenTag/OokTokenTagProvider.vb b/Shoal.VisualStudio/TokenTag/OokTokenTagProvider.vb deleted file mode 100644 index 2fc6a7805..000000000 --- a/Shoal.VisualStudio/TokenTag/OokTokenTagProvider.vb +++ /dev/null @@ -1,18 +0,0 @@ -Imports System.ComponentModel.Composition -Imports Microsoft.VisualStudio.Text -Imports Microsoft.VisualStudio.Text.Tagging -Imports Microsoft.VisualStudio.Utilities - -Namespace OokLanguage - - - Friend NotInheritable Class OokTokenTagProvider - Implements ITaggerProvider - - Public Function CreateTagger(Of T As ITag)(buffer As ITextBuffer) As ITagger(Of T) Implements ITaggerProvider.CreateTagger -#Disable Warning - Return TryCast(New OokTokenTagger(buffer), ITagger(Of T)) -#Enable Warning - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.VisualStudio/TokenTag/OokTokenTagger.vb b/Shoal.VisualStudio/TokenTag/OokTokenTagger.vb deleted file mode 100644 index 9e76ad0ad..000000000 --- a/Shoal.VisualStudio/TokenTag/OokTokenTagger.vb +++ /dev/null @@ -1,46 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.LDM.Expressions -Imports Microsoft.VisualStudio.Text -Imports Microsoft.VisualStudio.Text.Tagging -Imports Microsoft.VisualBasic -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Parser.TextTokenliser -Imports Microsoft.VisualBasic.Linq -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Parser.Tokens -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter - -Namespace OokLanguage - - Public NotInheritable Class OokTokenTagger : Implements ITagger(Of OokTokenTag) - - ReadOnly _buffer As ITextBuffer - - Public Sub New(buffer As ITextBuffer) - _buffer = buffer - End Sub - - Public Function GetTags(spans As NormalizedSnapshotSpanCollection) As IEnumerable(Of ITagSpan(Of OokTokenTag)) Implements ITagger(Of OokTokenTag).GetTags - Dim tags As New List(Of TagSpan(Of OokTokenTag)) - - For Each curSpan As SnapshotSpan In spans - Dim containingLine As ITextSnapshotLine = curSpan.Start.GetContainingLine() - Dim curLoc As Integer = containingLine.Start.Position - Dim Expression As PrimaryExpression = Interpreter.InternalExpressionParser(curSpan.GetText) - - For Each ookToken As Token In Expression.GetTokens - Dim value As String = ookToken.GetTokenValue - Dim tokenSpan = New SnapshotSpan(curSpan.Snapshot, New Span(curLoc, value.Length)) - If tokenSpan.IntersectsWith(curSpan) Then - Call tags.Add(New TagSpan(Of OokTokenTag)(tokenSpan, New OokTokenTag(ookToken.TokenType))) - End If - - 'add an extra char location because of the space - curLoc += value.Length + 1 - Next ookToken - Next curSpan - - Return tags - End Function - - Public Event TagsChanged(sender As Object, e As SnapshotSpanEventArgs) Implements ITagger(Of OokTokenTag).TagsChanged - - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.VisualStudio/source.extension.vsixmanifest b/Shoal.VisualStudio/source.extension.vsixmanifest deleted file mode 100644 index 537294456..000000000 --- a/Shoal.VisualStudio/source.extension.vsixmanifest +++ /dev/null @@ -1,21 +0,0 @@ - - - - Shoal.VisualStudio - xie - 1.0 - This is a sample classifier extension to the Visual Studio Editor. - 1033 - - - VST_All - Pro - - - - - - - |Shoal.VisualStudio| - - diff --git a/Shoal.VisualStudio/test.shl b/Shoal.VisualStudio/test.shl deleted file mode 100644 index 037157e88..000000000 --- a/Shoal.VisualStudio/test.shl +++ /dev/null @@ -1,5 +0,0 @@ -Ook! Ook. Ook? Ook! Ook? Ook. Ook? if - -imports GCModeller.RQL - -var result <- from x as protein in "http://linq.gcmodeller.org/" select x \ No newline at end of file diff --git a/Shoal.sln b/Shoal.sln deleted file mode 100644 index cf4451369..000000000 --- a/Shoal.sln +++ /dev/null @@ -1,193 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.25123.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IDE", "IDE", "{47832138-2140-4A2E-A035-BE14B4897204}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Reference", "Reference", "{CE7914A4-EC20-4A94-8AC3-C5731100239B}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{1CDABACB-44CB-4173-8313-913BA466562E}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.VisualBasic_Core", "Microsoft.VisualBasic_Core", "{65DF4CD8-CA2E-42E0-8F89-B4E875E5DFED}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ShoalShell_Core.v2", "Shoal.v2\Shoal.v2\ShoalShell_Core.v2.vbproj", "{A7CB16FF-75C6-4746-8449-86C121D723C4}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ShoalShell", "Shoal.v2\Console\ShoalShell.vbproj", "{D71E0D55-DA94-4B18-B204-252D532EE8EC}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "LINQ.Extensions.ShoalShell.HybridScripting", "LINQ.Extensions.ShoalShell.HybridScripting\LINQ.Extensions.ShoalShell.HybridScripting.vbproj", "{B2355947-6A37-42F4-9340-CEFF43F37A2B}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting", "Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting\Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting.vbproj", "{85E19618-8A67-47DE-892D-4BB4EAF59AE2}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns", "Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns\Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns.vbproj", "{F4CA3733-BA62-4A8D-BF45-0BCAE80B882F}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ShoalShell.Debugger", "ShoalShell.Debugger\ShoalShell.Debugger.vbproj", "{98B35793-A1A2-4E78-BAFD-75E0D95E6367}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ShoalShell.PlugIns.Plot", "ShoalShell.PlugIns.Plot\ShoalShell.PlugIns.Plot.vbproj", "{28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ShoalShell.Plugins.Runtime.Environment", "ShoalShell.Plugins.Runtime.Environment\ShoalShell.Plugins.Runtime.Environment.vbproj", "{4863E23A-8E58-4E10-9A77-8DBA4D4BB586}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ShoalShell.Plugins.SQLDatabaseInterface", "ShoalShell.Plugins.SQLDatabaseInterface\ShoalShell.Plugins.SQLDatabaseInterface.vbproj", "{75B2A52A-F76B-4912-AAC2-CAC4AE56A001}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "EndNoteLite", "EndNoteLite\EndNoteLite.vbproj", "{2F80136C-0E1E-429F-A905-EB0927B0A82C}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "+Microsoft.VisualBasic.Architecture.Framework", "..\VisualBasic_AppFramework\Microsoft.VisualBasic.Architecture.Framework\+Microsoft.VisualBasic.Architecture.Framework.vbproj", "{FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}" -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 - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|x64.ActiveCfg = Debug|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|x64.Build.0 = Debug|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|x86.ActiveCfg = Debug|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|x86.Build.0 = Debug|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|Any CPU.Build.0 = Release|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|x64.ActiveCfg = Release|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|x64.Build.0 = Release|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|x86.ActiveCfg = Release|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|x86.Build.0 = Release|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|x64.ActiveCfg = Debug|x64 - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|x64.Build.0 = Debug|x64 - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|x86.ActiveCfg = Debug|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|x86.Build.0 = Debug|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|Any CPU.Build.0 = Release|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|x64.ActiveCfg = Release|x64 - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|x64.Build.0 = Release|x64 - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|x86.ActiveCfg = Release|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|x86.Build.0 = Release|Any CPU - {B2355947-6A37-42F4-9340-CEFF43F37A2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B2355947-6A37-42F4-9340-CEFF43F37A2B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B2355947-6A37-42F4-9340-CEFF43F37A2B}.Debug|x64.ActiveCfg = Debug|x64 - {B2355947-6A37-42F4-9340-CEFF43F37A2B}.Debug|x64.Build.0 = Debug|x64 - {B2355947-6A37-42F4-9340-CEFF43F37A2B}.Debug|x86.ActiveCfg = Debug|Any CPU - {B2355947-6A37-42F4-9340-CEFF43F37A2B}.Debug|x86.Build.0 = Debug|Any CPU - {B2355947-6A37-42F4-9340-CEFF43F37A2B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B2355947-6A37-42F4-9340-CEFF43F37A2B}.Release|Any CPU.Build.0 = Release|Any CPU - {B2355947-6A37-42F4-9340-CEFF43F37A2B}.Release|x64.ActiveCfg = Release|x64 - {B2355947-6A37-42F4-9340-CEFF43F37A2B}.Release|x64.Build.0 = Release|x64 - {B2355947-6A37-42F4-9340-CEFF43F37A2B}.Release|x86.ActiveCfg = Release|Any CPU - {B2355947-6A37-42F4-9340-CEFF43F37A2B}.Release|x86.Build.0 = Release|Any CPU - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Debug|x64.ActiveCfg = Debug|x64 - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Debug|x64.Build.0 = Debug|x64 - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Debug|x86.ActiveCfg = Debug|Any CPU - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Debug|x86.Build.0 = Debug|Any CPU - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Release|Any CPU.Build.0 = Release|Any CPU - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Release|x64.ActiveCfg = Release|x64 - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Release|x64.Build.0 = Release|x64 - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Release|x86.ActiveCfg = Release|Any CPU - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Release|x86.Build.0 = Release|Any CPU - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F}.Debug|x64.ActiveCfg = Debug|x64 - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F}.Debug|x64.Build.0 = Debug|x64 - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F}.Debug|x86.ActiveCfg = Debug|Any CPU - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F}.Debug|x86.Build.0 = Debug|Any CPU - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F}.Release|Any CPU.Build.0 = Release|Any CPU - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F}.Release|x64.ActiveCfg = Release|x64 - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F}.Release|x64.Build.0 = Release|x64 - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F}.Release|x86.ActiveCfg = Release|Any CPU - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F}.Release|x86.Build.0 = Release|Any CPU - {98B35793-A1A2-4E78-BAFD-75E0D95E6367}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {98B35793-A1A2-4E78-BAFD-75E0D95E6367}.Debug|Any CPU.Build.0 = Debug|Any CPU - {98B35793-A1A2-4E78-BAFD-75E0D95E6367}.Debug|x64.ActiveCfg = Debug|x64 - {98B35793-A1A2-4E78-BAFD-75E0D95E6367}.Debug|x64.Build.0 = Debug|x64 - {98B35793-A1A2-4E78-BAFD-75E0D95E6367}.Debug|x86.ActiveCfg = Debug|Any CPU - {98B35793-A1A2-4E78-BAFD-75E0D95E6367}.Debug|x86.Build.0 = Debug|Any CPU - {98B35793-A1A2-4E78-BAFD-75E0D95E6367}.Release|Any CPU.ActiveCfg = Release|Any CPU - {98B35793-A1A2-4E78-BAFD-75E0D95E6367}.Release|Any CPU.Build.0 = Release|Any CPU - {98B35793-A1A2-4E78-BAFD-75E0D95E6367}.Release|x64.ActiveCfg = Release|x64 - {98B35793-A1A2-4E78-BAFD-75E0D95E6367}.Release|x64.Build.0 = Release|x64 - {98B35793-A1A2-4E78-BAFD-75E0D95E6367}.Release|x86.ActiveCfg = Release|Any CPU - {98B35793-A1A2-4E78-BAFD-75E0D95E6367}.Release|x86.Build.0 = Release|Any CPU - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865}.Debug|x64.ActiveCfg = Debug|x64 - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865}.Debug|x64.Build.0 = Debug|x64 - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865}.Debug|x86.ActiveCfg = Debug|Any CPU - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865}.Debug|x86.Build.0 = Debug|Any CPU - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865}.Release|Any CPU.Build.0 = Release|Any CPU - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865}.Release|x64.ActiveCfg = Release|x64 - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865}.Release|x64.Build.0 = Release|x64 - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865}.Release|x86.ActiveCfg = Release|Any CPU - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865}.Release|x86.Build.0 = Release|Any CPU - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586}.Debug|x64.ActiveCfg = Debug|x64 - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586}.Debug|x64.Build.0 = Debug|x64 - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586}.Debug|x86.ActiveCfg = Debug|Any CPU - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586}.Debug|x86.Build.0 = Debug|Any CPU - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586}.Release|Any CPU.Build.0 = Release|Any CPU - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586}.Release|x64.ActiveCfg = Release|x64 - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586}.Release|x64.Build.0 = Release|x64 - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586}.Release|x86.ActiveCfg = Release|Any CPU - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586}.Release|x86.Build.0 = Release|Any CPU - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001}.Debug|Any CPU.Build.0 = Debug|Any CPU - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001}.Debug|x64.ActiveCfg = Debug|x64 - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001}.Debug|x64.Build.0 = Debug|x64 - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001}.Debug|x86.ActiveCfg = Debug|Any CPU - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001}.Debug|x86.Build.0 = Debug|Any CPU - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001}.Release|Any CPU.ActiveCfg = Release|Any CPU - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001}.Release|Any CPU.Build.0 = Release|Any CPU - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001}.Release|x64.ActiveCfg = Release|x64 - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001}.Release|x64.Build.0 = Release|x64 - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001}.Release|x86.ActiveCfg = Release|Any CPU - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001}.Release|x86.Build.0 = Release|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Debug|x64.ActiveCfg = Debug|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Debug|x64.Build.0 = Debug|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Debug|x86.ActiveCfg = Debug|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Debug|x86.Build.0 = Debug|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Release|Any CPU.Build.0 = Release|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Release|x64.ActiveCfg = Release|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Release|x64.Build.0 = Release|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Release|x86.ActiveCfg = Release|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Release|x86.Build.0 = Release|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x64.ActiveCfg = Debug|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x64.Build.0 = Debug|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x86.ActiveCfg = Debug|x86 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x86.Build.0 = Debug|x86 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|Any CPU.Build.0 = Release|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x64.ActiveCfg = Release|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x64.Build.0 = Release|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x86.ActiveCfg = Release|x86 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x86.Build.0 = Release|x86 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {B2355947-6A37-42F4-9340-CEFF43F37A2B} = {1CDABACB-44CB-4173-8313-913BA466562E} - {85E19618-8A67-47DE-892D-4BB4EAF59AE2} = {1CDABACB-44CB-4173-8313-913BA466562E} - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F} = {47832138-2140-4A2E-A035-BE14B4897204} - {98B35793-A1A2-4E78-BAFD-75E0D95E6367} = {47832138-2140-4A2E-A035-BE14B4897204} - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865} = {1CDABACB-44CB-4173-8313-913BA466562E} - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586} = {1CDABACB-44CB-4173-8313-913BA466562E} - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001} = {1CDABACB-44CB-4173-8313-913BA466562E} - {2F80136C-0E1E-429F-A905-EB0927B0A82C} = {1CDABACB-44CB-4173-8313-913BA466562E} - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99} = {65DF4CD8-CA2E-42E0-8F89-B4E875E5DFED} - EndGlobalSection -EndGlobal diff --git a/Shoal.v2/Console/App.config b/Shoal.v2/Console/App.config deleted file mode 100644 index 2d2a12d81..000000000 --- a/Shoal.v2/Console/App.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/Shoal.v2/Console/Code b/Shoal.v2/Console/Code deleted file mode 100644 index 3d73f9726..000000000 Binary files a/Shoal.v2/Console/Code and /dev/null differ diff --git a/Shoal.v2/Console/Console/CLI.vb b/Shoal.v2/Console/Console/CLI.vb deleted file mode 100644 index d1e5845e1..000000000 --- a/Shoal.v2/Console/Console/CLI.vb +++ /dev/null @@ -1,149 +0,0 @@ -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports Microsoft.VisualBasic.Scripting.MetaData -Imports Microsoft.VisualBasic.Scripting.ShoalShell -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Configuration -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.SCOM - -''' -''' This module define the shoal commandlines for the command line interpreter. -''' -''' -''' - -Module CLI - - - Public Function Version() As Integer - Call Console.WriteLine($"Shoal Shell {My.Application.Info.Version.ToString}") - Return 0 - End Function - - - Public Function Start() As Integer - Dim work As String = Environment.CurrentDirectory - Return Program.ScriptShellTerminal(-1, work) - End Function - - - Public Function SetValue(argvs As CommandLine.CommandLine) As Integer - Using Profile = Config.Default - Dim var As String = argvs.Parameters.First - Dim value As String = argvs.Parameters(1) - Call Profile.Set(var, value) - End Using - - Return 0 - End Function - - - Public Function GetValue(argvs As CommandLine.CommandLine) As Integer - Dim Profile = Config.Default - Call Console.WriteLine(Profile.View(argvs.Parameters.FirstOrDefault)) - Return 0 - End Function - - msgbox title ""This is a hello world tesing example!""")> - Public Function Shell(scriptLine As CommandLine.CommandLine) As Integer - Dim strLine As String = Mid(scriptLine.CLICommandArgvs, 3).Trim - If Not String.IsNullOrEmpty(strLine) Then - strLine = strLine.GetString(wrapper:="""") - Else - Call Console.WriteLine("Syntax error on the shell commandline!") - Return -1 - End If - - Using ScriptHost As ScriptEngine = New ScriptEngine(Config.Default.SettingsData) '(ShowInitializeMessage:=False, LibraryRegistry:=Program.Configuration.TargetSettingsData.get_RegistryFile) - ' Call ScriptHost.Imports(GetType(InternalCommands)) - Return ScriptHost.Exec(strLine) - End Using - End Function - - - - - Public Function RegisterModule(argvs As CommandLine.CommandLine) As Integer - Dim Path As String = argvs("-path") - Dim AssemblyName As String = argvs("-module_name") - - If String.IsNullOrEmpty(Path) Then - Return -1 - End If - - If Not String.IsNullOrEmpty(Path) AndAlso Not FileIO.FileSystem.FileExists(Path) Then - Call Console.WriteLine("FILE_NOT_FOUND: " & Path) - Return -2 - End If - - Dim Db As SPM.PackageModuleDb = SPM.PackageModuleDb.Load(Program.Configuration.SettingsData.GetRegistryFile) - - Using SPM As New SPM.ShoalPackageMgr(Db) - Call SPM.Imports(Path) - End Using - - Return 0 - End Function - - - Public Function ScanPlugins(args As CommandLine.CommandLine) As Integer - Call RuntimeEnvironment.ScanPlugins(args) - - Dim ScriptHost As ScriptEngine = New ScriptEngine(Config.Default.SettingsData) - Return ScriptHost.Exec("Wiki.Http_Server::Doc.Build") - End Function - - ' - 'Public Function ShowInfo(argvs As CommandLine.CommandLine) As Integer - ' Dim ScriptFile As String = argvs.Parameters.First - ' If FileIO.FileSystem.FileExists(ScriptFile) Then - ' Call Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ObjectModels.ScriptInfo.LoadInfo(ScriptFile, Microsoft.VisualBasic.Scripting.ShoalShell.DelegateHandlers.TypeLibraryRegistry.DelegateRegistry.CreateFromFile(Program.Configuration.TargetSettingsData.GetRegistryFile)).DisplayInfo() - ' Else - ' Call Console.WriteLine("'{0}' is not exists on the filesystem!", ScriptFile) - ' Return -1 - ' End If - - ' Return 0 - 'End Function - - - Public Function Start(argvs As CommandLine.CommandLine) As Integer - Throw New NotImplementedException - End Function - - ''' - ''' 以调试模å¼å¯åŠ¨è„šæœ¬å¼•æ“Ž - ''' - ''' - ''' - ''' 本应用程åºä½œä¸ºå®¢æˆ·ç«¯ï¼Œä¸Žä¸»æœºç¨‹åºè¿›è¡ŒTcpSocket通信æ¥å®Œæˆè°ƒè¯•ä¿¡æ¯çš„æ•°æ® - ''' - - Public Function DEBUG(argvs As CommandLine.CommandLine) As Integer - Dim Port As Integer = argvs.GetInt32("listener_port") - Dim Work As String = argvs("-work") - Return Program.ScriptShellTerminal(Port, Work) - End Function - - - Public Function ShowLogs() As Integer - Dim Dir As String = App.LogErrDIR - Call Process.Start(Dir) - Return 0 - End Function -End Module \ No newline at end of file diff --git a/Shoal.v2/Console/Console/Program.vb b/Shoal.v2/Console/Console/Program.vb deleted file mode 100644 index 2f47b4273..000000000 --- a/Shoal.v2/Console/Console/Program.vb +++ /dev/null @@ -1,196 +0,0 @@ -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports Microsoft.VisualBasic.ComponentModel.Settings -Imports Microsoft.VisualBasic.Terminal.STDIO -Imports Microsoft.VisualBasic.Scripting.ShoalShell -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Configuration -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime -Imports Microsoft.VisualBasic.ComponentModel.DataSourceModel -Imports Microsoft.VisualBasic.Scripting - -''' -''' The shoal program main entry. -''' -''' -Module Program - - Public Const STATUS_PREALPHA As String = "pre-alpha" - Public Const STATUS_BETA As String = "beta" - Public Const SHOAL_SHELL As String = "Shoal Shell" - - ''' - ''' Shoal主程åºçš„æ¬¢è¿Žæ–‡æœ¬ - ''' - ''' - ''' - ''' - Private ReadOnly Property ConsoleSplashPrintPage As String - Get - Return _ -LANS Shoal Shell [version {0} - {1}; {2}] -Copyright (c) 2015 SMRUCC SystemsBiology. All Rights Reserved. - -Shoal was developed by: xieguigang(xie.guigang@gcmodeller.org) - Miss asuka(amethyst.asuka@gcmodeller.org) - - "A lot of fish in a shoal, in a gigantic scientific ocean." - -Shoal running cross-platform(Windows7/8/10, Linux/Ubuntu, OS X), and you can hybrid scripting using shoal with R/Perl -ShoalShell project source code is available on Github: - - https://github.com/smrucc/shoal - -Commands quick guide: - - libraries - list all of the installed package for shoal shell - - library - Install a assembly library for Shoal - Usage: library <assembly_path> - The alias command for the "library" is "install" - - ? - Get the help information about the installed package or command - Usage: ? Namespace/<command name>/keyword - - ! - Attaching the external hybrid scripting language environment entry point onto Shoal - Usage: !<hybrid_script_name> - - imports - Imports the namespace from a installed package - Usage: imports namespace - - source - Calling the script file on your filesystem - Usage: source <script_file> argvs - - ver() - Display the version of Shoal - wiki() - Open the wiki page to get help information, this command required a Internet connection. - Usage: wiki() <keyword> - - q() - quit the shoal shell - -For more details help information, please visit the WIKI page on Shoal shell's wiki: http://wiki.gcmodeller.org/shoal/ - -Program files and source code was distributed under the GPL3 Licensed to "{3}", using license() command to view the license details. - - - End Get - End Property - - Public ReadOnly Property Configuration As Settings(Of Config) = Config.Default - - Public Function Main() As Integer - Return GetType(CLI).RunCLI(App.CommandLine, AddressOf Program.ExecuteScriptFile, AddressOf Program.ExecuteEmpty) - End Function - - Private Function ExecuteScriptFile(path As String, args As CommandLine.CommandLine) As Integer - Return Program.RunScriptFile(path, args:=args.ToArray) - End Function - - Private Function ExecuteEmpty() As Integer - Return Program.ScriptShellTerminal(-1, "") - End Function - - Private Function RunScriptFile(ScriptFile As String, args As NamedValue(Of String)()) As Integer - Using scriptEngine As ScriptEngine = New ScriptEngine(Config.Default.SettingsData) - Return __runScriptFile(scriptEngine, ScriptFile, args) - End Using - End Function - - Private Function __runScriptFile(ScriptEngine As ScriptEngine, ScriptFile As String, args As NamedValue(Of String)()) As Integer - Call ScriptEngine.Imports(GetType(InternalCommands)) - - For Each item In args - Call ScriptEngine.MMUDevice.WriteMemory(item.Name, item.x) - Next - - Dim currentWork As String = My.Computer.FileSystem.CurrentDirectory - Dim work As String = FileIO.FileSystem.GetParentPath(ScriptFile) - - If String.IsNullOrEmpty(work) Then - work = "./" - End If - - My.Computer.FileSystem.CurrentDirectory = work - Dim value = ScriptEngine.Source(ScriptFile) - My.Computer.FileSystem.CurrentDirectory = currentWork - - If value Is Nothing Then ' 当API是一个Sub过程的时候会返回System.Void,具体值为Nothing,在这里ä¸å¤ªå¥½è¿›è¡Œåˆ¤æ–­ - Return 1 - End If - - Dim i As Integer = If( - InputHandler.Convertible(value.GetType, GetType(Integer)), - InputHandler.CTypeDynamic(InputHandler.ToString(value), GetType(Integer)), - If(value Is Nothing, 1, 0)) - - Return i - End Function - - ''' - ''' 打开Shoal的交互终端 - ''' - ''' - ''' 空字符串表示使用é…置文件之中的路径,åä¹‹ä½¿ç”¨æœ¬å‚æ•°æ‰€åˆ¶å®šçš„路径åšå‡ºåˆå§‹åŒ–路径 - ''' - Public Function ScriptShellTerminal(ListenerPort As Integer, work As String) As Integer - Dim usr As String = If(String.IsNullOrEmpty(My.Computer.Name), "EMPTY_USER_NAME", My.Computer.Name) - - Console.BackgroundColor = ConsoleColor.DarkCyan - Console.ForegroundColor = ConsoleColor.White - - Call Console.WriteLine(Program.ConsoleSplashPrintPage, - My.Application.Info.Version.ToString, - STATUS_BETA, - $"{Environment.OSVersion.Platform.ToString} - {Environment.OSVersion.Version.ToString}", - usr) - - work = If(String.IsNullOrEmpty(work), - Program.Configuration.SettingsData.InitDirectory, - FileIO.FileSystem.GetDirectoryInfo(work).FullName) - - My.Computer.FileSystem.CreateDirectory(work) - My.Computer.FileSystem.CurrentDirectory = work - - Using ScriptEngine As ScriptEngine = If(ListenerPort > 0, - New Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging.Debugger( - DebugListenerPort:=ListenerPort, - Config:=Program.Configuration.SettingsData), - New ScriptEngine(Program.Configuration.SettingsData)) - Return __scriptShellTerminal(ScriptEngine, ListenerPort > 0) - End Using - End Function - - Public Function __scriptShellTerminal(ScriptEngine As ScriptEngine, DebuggerMode As Boolean) As Integer - Call ScriptEngine.Imports(GetType(InternalCommands)) - - If DebuggerMode Then - Call __runDebugger(ScriptEngine) - Else - Call __runTerminal(ScriptEngine) - End If - - Call Console.WriteLine("[MESSAGE] Auto save shoal environment variables..." & vbCrLf & " -----> ""file:///{0}""", Program.Configuration.SettingsData.FilePath) - Call Program.Configuration.SettingsData.Save() - Call Console.WriteLine("[DONE!]") - - Return 0 - End Function - - Private Sub __runTerminal(ScriptEngine As ScriptEngine) - Do While True - Dim input As String = scanf("$ ", ConsoleColor.Yellow) - - If String.Equals(input, "q()", StringComparison.OrdinalIgnoreCase) Then - Exit Do - Else - Call ScriptEngine.Exec(input) - End If - Loop - End Sub - - Private Sub __runDebugger(ScriptEngine As ScriptEngine) - Dim Debugger As Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging.Debugger = - DirectCast(ScriptEngine, Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging.Debugger) - - Do While Not Debugger.DebuggerExit - Call Threading.Thread.Sleep(2000) - Loop - End Sub -End Module \ No newline at end of file diff --git a/Shoal.v2/Console/InternalCommands.vb b/Shoal.v2/Console/InternalCommands.vb deleted file mode 100644 index 8a683b295..000000000 --- a/Shoal.v2/Console/InternalCommands.vb +++ /dev/null @@ -1,235 +0,0 @@ -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports System.Drawing -Imports Microsoft.VisualBasic.Scripting.MetaData -Imports Microsoft.VisualBasic.Linq.Extensions -Imports System.Runtime.CompilerServices - -''' -''' This module provides some common operation in the shoal scripting. -''' -''' -<[Namespace]("System.Extensions", Description:="This module provides some common operation in the shoal scripting.")> -Public Module InternalCommands - - - Public Function TrimLinux(Path As String) As Boolean - Dim s_Data As String() = System.IO.File.ReadAllLines(Path) - Dim Temp As String = String.Join(vbCr, s_Data) - Return Temp.SaveTo(Path, System.Text.Encoding.UTF8) - End Function - - ''' - ''' æ‰¹é‡æ‰§è¡ŒæŒ‡å®šçš„æ–‡ä»¶å¤¹ä¹‹ä¸­çš„æ‰€æœ‰Shoal脚本 - ''' - ''' - ''' - - Public Function BatchInvoke( Optional dir As String = "./", - Optional Parallel As Boolean = True) As Integer - Dim Shoal As String = ExecutablePath - Dim ScriptSource = dir.LoadSourceEntryList({"*.txt", "*.shl"}).ToArray - - If Parallel Then - Call System.Threading.Tasks.Parallel.ForEach(Of KeyValuePair(Of String, String))( - ScriptSource, - Sub(PathEntry As KeyValuePair(Of String, String)) - Call Threading.Thread.Sleep(5 * 1000) - Dim proc = Process.Start(Shoal, PathEntry.Value.CliPath) '执行脚本 - Call proc.WaitForExit() - End Sub) - Else - For Each PathEntry In ScriptSource - Dim proc = Process.Start(Shoal, PathEntry.Value.CliPath) '执行脚本 - Call Console.WriteLine($"[DEBUG {Now.ToString}] Execute task {PathEntry.Value.ToFileURL}.....") - Call proc.WaitForExit() - Next - End If - - Call Console.WriteLine("Job Done!") - Return 0 - End Function - - Public Function Invoke(Of T As Class)(obj As T, Entry As String) As Double - Dim Method = (From m In GetType(T).GetMethods(System.Reflection.BindingFlags.Public Or System.Reflection.BindingFlags.Instance) - Where String.Equals(m.Name, Entry) - Select m).FirstOrDefault - If Method Is Nothing Then - Return -1 - Else - Call Threading.Thread.Sleep(5 * 1000) '有å¯èƒ½å‡ºçްåŒä¸€ä¸ªèµ„æºè¢«å ç”¨çš„æƒ…况,则å¯èƒ½ä¼šå‡ºé”™ï¼Œåˆ™æ‰¹é‡è°ƒç”¨çš„æ—¶å€™ä¼šæœ‰ä¸€ä¸ªæ—¶é—´å·®ä»¥é¿å…这个错误 - Dim sw = Stopwatch.StartNew - Call Method.Invoke(obj, Nothing) - Return sw.ElapsedMilliseconds - End If - End Function - - - Public Function Beep() As Integer - Call Console.Beep() - Return 0 - End Function - - - Public Function Sum(dat As Generic.IEnumerable(Of Double)) As Double - Return dat.Sum - End Function - - - Public Function Locate(Optional path As String = "") As String - If String.IsNullOrEmpty(path) OrElse Not FileIO.FileSystem.FileExists(path) Then - path = My.Computer.FileSystem.CurrentDirectory - End If - - path = FileIO.FileSystem.GetDirectoryInfo(path).FullName - - Call Process.Start(path) - Return path - End Function - - - Public Function Format(Expression As String, argvs As Generic.IEnumerable(Of Object)) As String - Return String.Format(Expression, argvs.ToArray) - End Function - - - Public Function WriteArray(array As Generic.IEnumerable(Of Object), saveTo As String) As Integer - Call IO.File.WriteAllLines(saveTo, (From item In array Let strValue As String = item.ToString Select strValue).ToArray) - Return array.Count - End Function - - - Public Function ReadTxt(file As String) As String - Dim strData = FileIO.FileSystem.ReadAllText(FileIO.FileSystem.GetFileInfo(file).FullName) - Return strData - End Function - - - Public Function ReadAllLines(path As String) As String() - Return IO.File.ReadAllLines(path) - End Function - - - Public Function WriteAllLines(data As Generic.IEnumerable(Of String), saveto As String) As Boolean - Call IO.File.WriteAllLines(saveto, data.ToArray) - Return True - End Function - - - Public Function _Msgbox(Message As String, Optional Title As String = "") As String - MsgBox(Message, MsgBoxStyle.Information, Title) - Return Message - End Function - - - Public Function [AND](logicals As Boolean()) As Boolean - For Each item In logicals - If item = False Then - Return False - End If - Next - - Return True - End Function - - - Public Function GreaterThan(a As Double, b As Double) As Boolean - Return a > b - End Function - - - Public Function [OR](logicals As Boolean()) As Boolean - Dim LQuery = (From item In logicals.AsParallel Where item = True Select 1).ToArray - Return Not LQuery.IsNullOrEmpty - End Function - - - Public Function [NOT](value As Boolean) As Boolean - Return Not value - End Function - - - Public Function ReadImage(path As String) As Image - Return Image.FromFile(path) - End Function - - - Public Function SplitCollection(collection As Generic.IEnumerable(Of Object), n As Integer) As Object()() - Return collection.Split(parTokens:=n) - End Function - - - Public Function Sleep(n As Integer) As Integer - Call System.Threading.Thread.Sleep(n * 1000) - Return n - End Function - - - Public Function Sequence(n As Integer) As Integer() - Return n.Sequence - End Function - - - Public Function Pause() As Integer - Call Console.WriteLine() - Call Console.WriteLine("Press any key to continute...") - Return Console.Read - End Function - - ''' - ''' 更加一般性的å¤åˆ¶å‡½æ•°ï¼Œå½“目标文件夹之中的文件数目éžå¸¸çš„多的时候,å¯ä»¥ä½¿ç”¨è¿™ä¸ªå‡½æ•°è¿›è¡Œæ‰¹é‡çš„æ–‡ä»¶å¤åˆ¶ï¼Œåªéœ€è¦æŠŠæ–‡ä»¶å填入列表之中å³å¯ï¼Œå¤§å°å†™æ— å…³ - ''' - ''' å¤åˆ¶å¤±è´¥çš„æ–‡ä»¶å列表 - - Public Function SourceCopy( IDList As Generic.IEnumerable(Of String), - Source As String, - CopyTo As String) As String() - - Dim FailuredList As New List(Of String) - Dim FileList = FileIO.FileSystem.GetFiles(Source, FileIO.SearchOption.SearchTopLevelOnly).ToList - - Call FileIO.FileSystem.CreateDirectory(CopyTo) - - For Each ID As String In IDList - Dim Files = (From path As String In FileList.AsParallel Let Name As String = IO.Path.GetFileNameWithoutExtension(path) Where String.Equals(ID, Name, StringComparison.OrdinalIgnoreCase) Select path).ToArray - If Files.IsNullOrEmpty Then - Call FailuredList.Add(ID) - End If - - For Each path As String In Files - Try - Call FileIO.FileSystem.CopyFile(path, CopyTo & "/" & FileIO.FileSystem.GetFileInfo(path).Name) - Catch ex As Exception - Call Console.WriteLine(path.ToFileURL) - Call Console.WriteLine(ex.ToString) - End Try - Next - Next - - Return FailuredList.ToArray - End Function - -#Const DEBUG = 1 - -#If DEBUG Then - - - Public Function TestException() As Boolean - Throw New Exception("Dont worried, this is a test for shellscript exception handler.") - End Function - - - Public Function OverloadsTest(n As Integer) As Integer - Call Console.WriteLine(Integer.MaxValue) - Call Console.WriteLine(RandomDouble() * n) - Return Integer.MaxValue - End Function - - - Public Function OverloadsTest( s1 As String, s2 As String) As String - Call Console.WriteLine(s1) - Call Console.WriteLine(s2 & " anysdfs") - Return s1 - End Function -#End If - -End Module diff --git a/Shoal.v2/Console/Microsoft.VisualBasic.Architecture.Framework_v3.0_22.0.76.201__8da45dcd8060cc9a.xml b/Shoal.v2/Console/Microsoft.VisualBasic.Architecture.Framework_v3.0_22.0.76.201__8da45dcd8060cc9a.xml deleted file mode 100644 index 27d925bc0..000000000 --- a/Shoal.v2/Console/Microsoft.VisualBasic.Architecture.Framework_v3.0_22.0.76.201__8da45dcd8060cc9a.xml +++ /dev/null @@ -1,7761 +0,0 @@ - - - - -Microsoft.VisualBasic.Architecture.Framework_v3.0_22.0.76.201__8da45dcd8060cc9a - - - - - - The target invoked process event has been exit with a specific return code.(目标派生å­è¿›ç¨‹å·²ç»ç»“æŸäº†è¿è¡Œå¹¶ä¸”返回了一个错误值) - - - - - - - - Gets the standard output for the target invoke process. - - - - - - - - Start the target process. If the target invoked process is currently on the running state, - then this function will returns the -100 value as error code and print the warning - information on the system console.(å¯åŠ¨ç›®æ ‡è¿›ç¨‹) - - Indicate that the program code wait for the target process exit or not?(傿•°æŒ‡ç¤ºåº”用程åºä»£ç æ˜¯å¦ç­‰å¾…目标进程的结æŸ) - 当å‘生错误的时候会返回错误代ç ï¼Œå½“当å‰çš„进程任然处于è¿è¡Œçš„状æ€çš„æ—¶å€™ï¼Œç¨‹åºä¼šè¿”回-100错误代ç å¹¶åœ¨ç»ˆç«¯ä¹‹ä¸Šæ‰“å°å‡ºè­¦å‘Šä¿¡æ¯ - - - - - å¯åŠ¨ç›®æ ‡å­è¿›ç¨‹ï¼Œç„¶åŽç­‰å¾…执行完毕并返回退出代ç (请注æ„,在进程未执行完毕之å‰ï¼Œæ•´ä¸ªçº¿ç¨‹ä¼šé˜»å¡žåœ¨è¿™é‡Œ) - - - - - - Using this class object rather than is more encouraged. - (å‡è‹¥æ‰€å»ºç«‹çš„å­è¿›ç¨‹å¹¶ä¸éœ€è¦è¿›è¡Œç»ˆç«¯äº¤äº’,相较于对象,更加推èä½¿ç”¨æœ¬å¯¹è±¡ç±»åž‹æ¥æ‰§è¡Œã€‚ - 似乎对象在创建一个å­è¿›ç¨‹çš„æ—¶å€™çš„对象IOé‡å®šå‘çš„å¥æŸ„çš„å¤„ç†æœ‰é—®é¢˜ï¼Œæ‰€ä»¥åœ¨è¿™é‡Œæž„建一个更加简å•的类型对象, - 这个IOé‡å®šå‘对象ä¸å…·å¤‡ç»ˆç«¯äº¤äº’功能) - - å…ˆé‡å®šå‘到一个临时文件之中,然åŽå†è¿”å›žä¸´æ—¶æ–‡ä»¶ç»™ç”¨æˆ·ä»£ç  - - - - é‡å®šå‘的临时文件 - - - - - The target invoked process event has been exit with a specific return code.(目标派生å­è¿›ç¨‹å·²ç»ç»“æŸäº†è¿è¡Œå¹¶ä¸”返回了一个错误值) - - - - - - - - 目标å­è¿›ç¨‹çš„终端标准输出 - - - - - - 将目标å­è¿›ç¨‹çš„æ ‡å‡†ç»ˆç«¯è¾“出文件å¤åˆ¶åˆ°ä¸€ä¸ªæ–°çš„æ–‡æœ¬æ–‡ä»¶ä¹‹ä¸­ - - - - - - - Using this class object rather than is more encouraged if there is no console interactive with your folked process. - - The program file. - The program commandline arguments. - Temporary environment variable - Folk the process on a new console window if this parameter value is TRUE - - - - å¯åŠ¨ç›®æ ‡å­è¿›ç¨‹ï¼Œç„¶åŽç­‰å¾…执行完毕并返回退出代ç (请注æ„,在进程未执行完毕之å‰ï¼Œæ•´ä¸ªçº¿ç¨‹ä¼šé˜»å¡žåœ¨è¿™é‡Œ) - - - - - - å¯åЍå­è¿›ç¨‹ï¼Œä½†æ˜¯ä¸ç­‰å¾…执行完毕,当目标å­è¿›ç¨‹é€€å‡ºçš„æ—¶å€™ï¼Œå›žè°ƒå‡½æ•°å¥æŸ„ - - - - - - A command object that with a specific name.(一个具有特定å称命令执行对象) - - - - - - The name of the commandline object.(这个命令的åç§°) - - - - - - - - Something detail of help information.(详细的帮助信æ¯) - - - - - - - - The usage of this command.(这个命令的用法,本属性仅仅是一个助记符,当用户没有编写任何的使用方法信æ¯çš„æ—¶å€™æ‰ä¼šä½¿ç”¨æœ¬å±žæ€§çš„值) - - - - - - - - A example that to useing this command.(对这个命令的使用示例,本属性仅仅是一个助记符,当用户没有编写任何示例信æ¯çš„æ—¶å€™æ‰ä¼šä½¿ç”¨æœ¬å±žæ€§çš„值) - - - - - - - - 定义一个命令行程åºä¹‹ä¸­å¯ä»¥ä½¿ç”¨çš„命令 - - The name of the commandline object.(这个命令的åç§°) - - - - - The name of the commandline object.(这个命令的åç§°) - - - - - - - - Something detail of help information.(详细的帮助信æ¯) - - - - - - - - The usage of this command.(这个命令的用法,本属性仅仅是一个助记符,当用户没有编写任何的使用方法信æ¯çš„æ—¶å€™æ‰ä¼šä½¿ç”¨æœ¬å±žæ€§çš„值) - - - - - - - - A example that to useing this command.(对这个命令的使用示例,本属性仅仅是一个助记符,当用户没有编写任何示例信æ¯çš„æ—¶å€™æ‰ä¼šä½¿ç”¨æœ¬å±žæ€§çš„值) - - - - - - - - The usage name of this command line entry point.(本命令行对象的调用命令åç§°) - - - - - - - - ä¸å¯ä»¥ä½¿ç”¨æœ¬æ–¹æ³•åˆå§‹åŒ–目标对象为实例方法的类型 - - - - - - - - - - æ•°ç»„çš„é•¿åº¦å¿…é¡»ä¸Žç›®æ ‡å‡½æ•°çš„å‚æ•°çš„æ•°ç›®ä¸€è‡´ï¼Œå¦åˆ™çŸ­äºŽç›®æ ‡å‡½æ•°çš„傿•°çš„æ•°ç›®çš„æ•°ç»„会使用Nothingæ¥å¡«å……ç¼ºå°‘çš„éƒ¨åˆ†ï¼Œè€Œå¤šäºŽç›®æ ‡å‡½æ•°çš„å‚æ•°ä¼šè¢«æˆªæ–­ - - - - - - The entry point data of the commands in the command line which was original loaded from the source meta data in the compiled target.(命令行命令的执行入å£ç‚¹) - - - - - - If the target invoked method delegate is a instance method, - then this property value should be the target object instance which has the method delegate. - (å‡è‹¥ç›®æ ‡æ–¹æ³•䏿˜¯å…±äº«çš„æ–¹æ³•,则必须è¦ä½¿ç”¨æœ¬å¯¹è±¡æ¥è¿›è¡ŒInvoke的调用) - - - - - - - - The shared method did not requires of the object instance.(这个方法是å¦ä¸ºå®žä¾‹æ–¹æ³•) - - - - - - - - The full name path of the target invoked method delegate in the namespace library. - - - - - - - - The null string value. - - - - - - å‡è‹¥ç›®æ ‡æ–¹æ³•为实例方法,请使用本方法进行åˆå§‹åŒ– - - - - - - - - Returns the help information details for this command line entry object.(èŽ·å–æœ¬å‘½ä»¤è¡Œæ‰§è¡Œå…¥å£ç‚¹çš„详细帮助信æ¯) - - - - - - - Invoke this command line and returns the function value.(函数会补é½å¯é€‰å‚æ•°) - - The function parameter for the target invoked method, the optional value will be filled - using the paramter default value if you are not specific the optional paramter value is the element position of - this paramter value. - If throw then if the exception happened from delegate invocation then the program will throw an - exception and terminated, if not then the program will save the exception information into a log file and then - returns a failure status. - - - - - - ä¸ä¼šè‡ªåŠ¨è°ƒæ•´è¡¥é½å‚æ•° - - - - - - - - Invoke this command line and returns the function value.(函数会补é½å¯é€‰å‚æ•°) - - The function parameter for the target invoked method, the optional value will be filled - using the paramter default value if you are not specific the optional paramter value is the element position of - this paramter value. - Target entry pointer of this function method delegate. - If throw then if the exception happened from delegate invocation then the program will throw an - exception and terminated, if not then the program will save the exception information into a log file and then - returns a failure status. - - - - - - Invoke this command line but returns the function execute success, Zero for success and -1 for failure.(函数会补é½å¯é€‰å‚æ•°) - - - - - - - - - - (CommandLine interpreter executation Entry and the ShellScript software packages namespace.)这是一个命令行解释器所使用的执行入å£ç‚¹çš„é›†åˆ - - - - - - A brief description text about the function of this namespace.(关于本模å—之中的æè¿°æ€§çš„æ‘˜è¦æ–‡æœ¬) - - - - - - - - The name value of this namespace module.(本命å空间模å—çš„å称值) - - - - - - - - The name value of this namespace module.(本命å空间模å—çš„å称值) - - The name value of this namespace module.(本命å空间模å—çš„å称值) - - - - - 从目标类型之中构造出一个命令行解释器 - - - - - - - - Optional commandline arguments.(本属性标记一个命令行字符串之中的å¯é€‰å‚æ•°) - - - - - - The data type enumeration of the target optional parameter switch. - - - - - - String - - - - - - Int - - - - - - Real - - - - - - - - The name value of the target parameter switch which will be marked as an optional parameter. - (目标将è¦è¢«æ ‡è®°ä¸ºå¯é€‰å‚æ•°çš„å‘½ä»¤è¡Œå‚æ•°å¼€å…³å¯¹è±¡) - The data type of the target command line parameter switch, default type is string type. - - - - - å¯¹ç±»åž‹çš„è½¬æ¢æ–¹æ³•进行枚举 - - - - - - Generates the command line string value for the invoked target cli program using this interop services object instance. - - - A class type object for interaction with a commandline program. - (与命令行程åºè¿›è¡Œäº¤äº’的模å—对象类型) - - 目标交互对象的实例 - - - - - - - - - - 返回所é‡ç½®çš„傿•°çš„个数 - - - - - Use for the detail description for a specific commandline switch.(用于对æŸä¸€ä¸ªå‘½ä»¤çš„开关傿•°çš„具体æè¿°å¸®åŠ©ä¿¡æ¯) - - - - - - The name of this command line parameter switch.(该命令开关的åç§°) - - - - - - - - The description and brief help information about this parameter switch, - you can using the \n escape string to gets a VbCrLf value. - (å¯¹è¿™ä¸ªå¼€å…³å‚æ•°çš„具体的æè¿°ä»¥åŠå¸®åŠ©ä¿¡æ¯ï¼Œå¯ä»¥ä½¿ç”¨\n转义字符进行æ¢è¡Œ) - - - - - - - - The usage example of this parameter switch.(该开关的值的示例) - - - - - - - - The usage syntax information about this parameter switch.(æœ¬å¼€å…³å‚æ•°çš„使用语法) - - - - - - - - Is this parameter switch is an optional value.(本开关是å¦ä¸ºå¯é€‰çš„傿•°) - - - - - - - - 对命令行之中的æŸä¸€ä¸ªå‚数进行æè¿°æ€§ä¿¡æ¯çš„创建,包括用法和å«ä¹‰ - - The name of this command line parameter switch.(该命令开关的åç§°) - Is this parameter switch is an optional value.(本开关是å¦ä¸ºå¯é€‰çš„傿•°) - - - - - The help information for a specific command line parameter switch.(æŸä¸€ä¸ªæŒ‡å®šçš„命令的开关的帮助信æ¯) - - - - - - æœ¬å‘½ä»¤è¡Œå¯¹è±¡ä¸­çš„åŒ…å«æœ‰å¸®åŠ©ä¿¡æ¯çš„开关傿•°çš„æ•°ç›® - - - - - - - - Returns the parameter switch help information with the specific name value.(显示æŸä¸€ä¸ªæŒ‡å®šå称的开关信æ¯) - - - - - - - - - Gets the usage example of this parameter switch.(èŽ·å–æœ¬å‚数开关的帮助信æ¯) - - - - - - - - æ˜¾ç¤ºæ‰€æœ‰çš„å¼€å…³ä¿¡æ¯ - - - - - - - Interpreter for object instance.(对于而言,其仅解æžé™æ€çš„æ–¹æ³•ï¼ŒäºŒæœ¬å¯¹è±¡åˆ™å®žä¾‹æ–¹æ³•å’Œé™æ€æ–¹æ³•都进行解æž) - - - - - - - - An instance object. - - - - - 陿€åŠ å®žä¾‹æ–¹æ³• - - - - - - - - Command line interpreter for your cli program.(命令行解释器,请注æ„,在调试模å¼ä¹‹ä¸‹ï¼Œå‘½ä»¤è¡Œè§£é‡Šå™¨ä¼šåœ¨è¿è¡Œå®Œå‘½ä»¤ä¹‹åŽæš‚åœï¼Œè€ŒRelease模å¼ä¹‹ä¸‹åˆ™ä¸ä¼šã€‚ - å‡è‹¥åœ¨è°ƒè¯•模å¼ä¹‹ä¸‹å‘çŽ°ç¨‹åºæœ‰å¾ˆé•¿ä¸€æ®µæ—¶é—´å¤„于cpuå ç”¨ä¸ºé›¶çš„陿­¢çжæ€ï¼Œåˆ™å¾ˆæœ‰å¯èƒ½å·²ç»è¿è¡Œå®Œå‘½ä»¤å¹¶ä¸”等待回车退出) - - - - - - - 在添加之å‰è¯·ç¡®ä¿é”®å是å°å†™çš„字符串 - - - - - å‡è‹¥æ‰€ä¼ å…¥çš„命令行的name是文件路径,解释器就会执行这个函数指针 - - - - - - - - å‡è‹¥æ‰€ä¼ å…¥çš„命令行是空的,就会执行这个函数指针 - - - - - - Public Delegate Function __ExecuteFile(path As String, args As String()) As Integer, - (: å‡è‹¥æ‰€ä¼ å…¥çš„命令行的name是文件路径,解释器就会执行这个函数指针) - 这个函数指针一般是用作于执行脚本程åºçš„ - - - - - - Public Delegate Function __ExecuteEmptyCli() As Integer, - (: å‡è‹¥æ‰€ä¼ å…¥çš„命令行是空的,就会执行这个函数指针) - - - - - - Gets the dictionary data which contains all of the available command information in this assembly module. - (获å–从本模å—之中获å–得到的所有的命令行信æ¯) - - - - - - - Execute the specific command line using this interpreter. - - The user input command line string. - - - - - - 命令行是空的 - - - - - - 所有的命令行都从这里开始执行 - - - å°±åªæœ‰ä¸€ä¸ªå‘½ä»¤è¡Œå¯¹è±¡ - - - - - - Generate the sdk document for the target program assembly.(生æˆç›®æ ‡åº”用程åºçš„命令行帮助文档) - - - - - - - Process the command option arguments of the main function: - Public Function Main(argvs As String()) As Integer - - - The cli command line parameter string value collection. - - - - - - Add a command in current cli interpreter.(xå‘当å‰çš„这个CLI命令行解释器之中添加一个命令) - - - - - - - Gets the help information of a specific command using its name property value.(èŽ·å–æŸä¸€ä¸ªå‘½ä»¤çš„帮助信æ¯) - - If the paramteer command name value is a empty string then this function - will list all of the commands' help information.(å‡è‹¥æœ¬å‚数为空则函数会列出所有的命令的帮助信æ¯) - Error code, ZERO for no error - - - - - Returns the summary brief help information of all of the commands in current cli interpreter. - (枚举出本CLI解释器之中的所有的命令的帮助的摘è¦ä¿¡æ¯) - - - - - - - Returns the command entry info list array. - - - - - - - - - - A module or a class which contains some shared method for the command entry. - (åŒ…å«æœ‰è‹¥å¹²ä½¿ç”¨è¿›è¡Œæ ‡è®°çš„命令行执行入å£ç‚¹çš„Module或者Class对象类型, - å¯ä»¥ä½¿ç”¨ Object.GetType/GetType å…³é”®è¯æ“作æ¥èŽ·å–æ‰€éœ€è¦çš„类型信æ¯) - - - - - å¯¼å‡ºæ‰€æœ‰ç¬¦åˆæ¡ä»¶çš„陿€æ–¹æ³• - - - - - - - - å¯¼å‡ºæ‰€æœ‰ç¬¦åˆæ¡ä»¶çš„陿€æ–¹æ³•,请注æ„,在这里已ç»å°†å¤–部的属性标记和所属的函数的入å£ç‚¹è¿›è¡Œè¿žæŽ¥äº† - - - - - - - - Create an empty cli command line interpreter object which contains no commands entry.(åˆ›å»ºä¸€ä¸ªæ²¡æœ‰åŒ…å«æœ‰ä»»ä½•命令入å£ç‚¹çš„空的CLI命令行解释器) - - - - - - - Create a new interpreter instance from a specific type information.(从目标类型之中构造出一个命令行解释器) - - - - - - - - - Create a new interpreter instance using the specific type information.(ä½¿ç”¨æ‰€åˆ¶å®šçš„ç›®æ ‡ç±»åž‹ä¿¡æ¯æž„造出一个CLI命令行解释器) - - - - - - - - Create a new interpreter instance from a specific dll/exe path, this program assembly file should be a standard .NET assembly. - (从一个标准的.NETç¨‹åºæ–‡ä»¶ä¹‹ä¸­æž„建出一个命令行解释器) - - DLL/EXE file path.(标准的.NET程åºé›†æ–‡ä»¶çš„æ–‡ä»¶è·¯å¾„) - - - - - - - Clear the hash table of the cli command line interpreter command entry points.(清除本CLI解释器之中的所有的命令行执行入å£ç‚¹çš„哈希数æ®ä¿¡æ¯) - - - - - - Gets the command counts in current cli interpreter.(返回本CLIå‘½ä»¤è¡Œè§£é‡Šå™¨ä¹‹ä¸­æ‰€åŒ…å«æœ‰çš„命令的数目) - - - - - - - - The target command line command is exists in this cli interpreter using it name property?(判断目标命令行命令是å¦å­˜åœ¨äºŽæœ¬CLI命令行解释器之中) - - The command name value is not case sensitive.(命令的å称对大å°å†™ä¸æ•感的) - - - - - - List all of the command line entry point name which were contains in this cli interpreter. - (列举出本CLI命令行解释器之中的所有的命令行执行入å£ç‚¹çš„åç§°) - - - - - - - - A command line object that parse from the user input commandline string. - (从用户所输入的命令行字符串之中解æžå‡ºæ¥çš„命令行对象,标准的命令行格å¼ä¸ºï¼š - <EXE> <CLI_Name> ["Parameter" "Value"]) - - - - - - - The command name that parse from the input command line. - (从输入的命令行中所解æžå‡ºæ¥çš„命令的åç§°) - - - - - - - - The command tokens that were parsed from the input commandline. - (从所输入的命令行之中所解æžå‡ºæ¥çš„命令傿•°å•å…ƒ) - - - - - - - - The parameters in the commandline without the first token of the command name. - (将命令行解æžä¸ºè¯å…ƒä¹‹åŽåŽ»æŽ‰å‘½ä»¤çš„åç§°ä¹‹åŽæ‰€å‰©ä¸‹çš„æ‰€æœ‰çš„字符串列表) - - - - - - - - å¯¹äºŽå‚æ•°è€Œè¨€ï¼Œéƒ½æ˜¯--或者-或者/或者\开头的,下一个å•è¯ä¸ºå•引巿ˆ–者éžä¸Šé¢çš„字符开头的,例如/o <path> - å¯¹äºŽå¼€å…³è€Œè¨€ï¼Œä¸Žå‚æ•°ç›¸åŒçš„其实符å·ï¼Œä½†æ˜¯åŽé¢ä¸è·Ÿå‚数而是其他的开关,通常开关用æ¥è¿›è¡Œç®€è¦è¡¨è¿°ä¸€ä¸ªé€»è¾‘值 - - - - - - Get the original command line string.(èŽ·å–æ‰€è¾“入的命令行对象的原始的字符串) - - - - - - - - 开关的å称是ä¸åŒºåˆ†å¤§å°å†™çš„ - - - - - - - - - - - è¦æ±‚第一个对象ä¸èƒ½å¤Ÿæ˜¯å‘½ä»¤çš„åç§° - - - - - 从给定的è¯ç»„之中解æžå‡ºå‚数的结构 - - ä¸ªæ•°ä¸ºå¶æ•°çš„,但是å‡è‹¥å«æœ‰å¼€å…³çš„æ—¶å€™ï¼Œåˆ™å¯èƒ½ä¸ºå¥‡æ•°äº† - - - - - - Returns the original cli command line argument string.(返回所传入的命令行的原始字符串) - - - - - - - Gets the brief summary information of current cli command line object.(获å–当å‰çš„å‘½ä»¤è¡Œå¯¹è±¡çš„å‚æ•°æ‘˜è¦ä¿¡æ¯) - - - - - - - Checking for the missing required parameter, this function will returns the missing parameter - in the current cli command line object using a specific parameter name list. - (æ£€æŸ¥ä¹‹ä¸­çš„æ‰€æœ‰å‚æ•°æ˜¯å¦å­˜åœ¨ï¼Œå‡½æ•°ä¼šè¿”回ä¸å­˜åœ¨çš„傿•°å) - - - - - - - - ReGenerate the cli command line argument string text.(釿–°ç”Ÿæˆå‘½ä»¤è¡Œå­—符串) - - - - - - - - Try parsing the cli command string from the string value.(å°è¯•ç€ä»Žæ–‡æœ¬è¡Œä¹‹ä¸­è§£æžå‡ºå‘½ä»¤è¡Œå‚æ•°ä¿¡æ¯) - - - 是å¦å…许有é‡å¤åç§°çš„å‚æ•°å出现,默认是ä¸å…许的 - - - - - - A regex expression string that use for split the commandline text. - (用于分æžå‘½ä»¤è¡Œå­—符串的正则表达å¼) - - - - - - Does this cli command line object contains any parameter argument information.(æŸ¥çœ‹æœ¬å‘½ä»¤è¡Œå‚æ•°å¯¹è±¡ä¹‹ä¸­æ˜¯å¦å­˜åœ¨æœ‰å‚æ•°ä¿¡æ¯) - - - - - - - - Try parse the argument tokens which comes from the user input commandline string. - (å°è¯•从用户输入的命令行字符串之中解æžå‡ºæ‰€æœ‰çš„傿•°) - - - - - - - - å°è¯•从输入的语å¥ä¹‹ä¸­è§£æžå‡ºè¯æ³•å•元,注æ„ï¼Œè¿™ä¸ªå‡½æ•°ä¸æ˜¯å¤„ç†ä»Žæ“ä½œç³»ç»Ÿæ‰€ä¼ é€’è¿›å…¥çš„å‘½ä»¤è¡Œè¯­å¥ - - - - - - - - Gets the value Of the specified column As a Boolean. - (è¿™ä¸ªå‡½æ•°ä¹ŸåŒæ—¶åŒ…嫿œ‰å¼€å…³å‚æ•°çš„ï¼Œå¼€å…³å‚æ•°é»˜è®¤ä¸ºé€»è¾‘å€¼ç±»åž‹ï¼Œå½“åŒ…å«æœ‰å¼€å…³å‚数的时候,其逻辑值为True,åä¹‹å‡½æ•°ä¼šæ£€æŸ¥å‚æ•°åˆ—è¡¨ï¼Œå‚æ•°ä¸å­˜åœ¨åˆ™ä¸ºç©ºå€¼å­—符串,则也为False) - - å¯ä»¥åŒ…嫿œ‰å¼€å…³å‚æ•° - - - - - Gets the 8-bit unsigned Integer value Of the specified column. - - - - - - - Reads a stream Of bytes from the specified column offset into the buffer As an array, starting at the given buffer offset. - - - - - - Gets the character value Of the specified column. - - - - - - Reads a stream Of characters from the specified column offset into the buffer As an array, starting at the given buffer offset. - - - - - - Gets the Date And time data value Of the specified field. - - - - - - Gets the fixed-position numeric value Of the specified field. - - - - - - Gets the Double-precision floating point number Of the specified field. - - - - - - Gets the Single-precision floating point number Of the specified field. - - - - - - Returns the GUID value Of the specified field. - - - - - - Gets the 16-bit signed Integer value Of the specified field. - - - - - - Gets the 32-bit signed Integer value Of the specified field. - - - - - - Gets the 64-bit signed Integer value Of the specified field. - - - - - - Return the index Of the named field. - - - - - - Gets the String value Of the specified field. - - - - - - Return whether the specified field Is Set To null. - - - - - - The class object which can interact with the target commandline program.(与目标命令行程åºè¿›è¡Œå‘½ä»¤è¡Œäº¤äº’的编程接å£ï¼Œæœ¬ç±»åž‹çš„å¯¹è±¡çš„ä½œç”¨ä¸»è¦æ˜¯ç”Ÿæˆå‘½ä»¤è¡Œå‚æ•°) - - - - - - Assembly path for the target invoked program. - - - - - - 这个枚举函数也会将开关给包å«è¿›æ¥ - - - - - - Get the switch counts in this commandline object.(èŽ·å–æœ¬å‘½ä»¤è¡Œå¯¹è±¡ä¸­çš„æ‰€å®šä¹‰çš„开关的数目) - - - - - - - - A communication fundation class type for the commandline program interop.(一个简å•的用于从当å‰è¿›ç¨‹æ´¾ç”Ÿå­è¿›ç¨‹çš„Wrapper对象,å‡è‹¥éœ€è¦folk出æ¥çš„å­è¿›ç¨‹å¯¹è±¡ä¸éœ€è¦ç»ˆç«¯äº¤äº’功能,则更加推è使用对象æ¥è¿›è¡Œè°ƒç”¨) - - - - - - 当å‰çš„这个进程实例是å¦å¤„于è¿è¡Œçš„çŠ¶æ€ - - - - - - The target invoked process event has been exit with a specific return code.(目标派生å­è¿›ç¨‹å·²ç»ç»“æŸäº†è¿è¡Œå¹¶ä¸”返回了一个错误值) - - - - - - - - The process invoke interface of current IO redirect operation. - - - - - - - - Gets the standard output for the target invoke process. - - - - - - - - A function pointer for process the events when the target invoked child process was terminated and exit.(当目标进程退出的时候所调用的过程) - - The exit code for the target sub invoke process.è¿›ç¨‹çš„é€€å‡ºä»£ç  - The exit time for the target sub invoke process.(进程的退出时间) - - - - - Start the target process. If the target invoked process is currently on the running state, - then this function will returns the -100 value as error code and print the warning - information on the system console.(å¯åŠ¨ç›®æ ‡è¿›ç¨‹) - - Indicate that the program code wait for the target process exit or not?(傿•°æŒ‡ç¤ºåº”用程åºä»£ç æ˜¯å¦ç­‰å¾…目标进程的结æŸ) - 当å‘生错误的时候会返回错误代ç ï¼Œå½“当å‰çš„进程任然处于è¿è¡Œçš„状æ€çš„æ—¶å€™ï¼Œç¨‹åºä¼šè¿”回-100错误代ç å¹¶åœ¨ç»ˆç«¯ä¹‹ä¸Šæ‰“å°å‡ºè­¦å‘Šä¿¡æ¯ - - - - - Start the target process.(å¯åŠ¨ç›®æ ‡è¿›ç¨‹) - - 当å‘ç”Ÿé”™è¯¯çš„æ—¶å€™ä¼šè¿”å›žé”™è¯¯ä»£ç  - - - - - 输出目标å­è¿›ç¨‹çš„æ ‡å‡†è¾“出设备的内容 - - - - - - 检测目标å­è¿›ç¨‹æ˜¯å¦å·²ç»ç»“æŸ - - - - - - 在进行éšå£«è½¬æ¢çš„æ—¶å€™ï¼Œå‡è‹¥å¯æ‰§è¡Œæ–‡ä»¶çš„æ–‡ä»¶è·¯å¾„之䏭嫿œ‰ç©ºæ ¼ï¼Œåˆ™è¿™ä¸ªæ—¶å€™åº”该è¦ç‰¹åˆ«çš„å°å¿ƒ - - - - - - - - - - - Set up the environment variable for the target invoked child process. - - æ˜¯å¦æ˜¾ç¤ºç›®æ ‡è¢«è°ƒç”¨çš„外部程åºçš„æ ‡å‡†è¾“出 - - - - - 当所需è¦è¿›è¡ŒåŠ è½½çš„æ•°æ®çš„é‡éžå¸¸å¤§çš„æ—¶å€™ï¼Œåˆ™å¯ä»¥ä½¿ç”¨æœ¬æ–¹æ³•进行延时按需加载 - - - - - - - Gets the value from the data source - - - - - - - - The data source.(æ•°æ®æº) - - - - - - - - Write the data back onto the filesystem.(将数æ®å›žå†™è¿›å…¥æ–‡ä»¶ç³»ç»Ÿä¹‹ä¸­) - - - - - - - - Constants used with PInvoke methods - - - - - - EventType flags. - - - - - Event contains key event record - - - - - Event contains mouse event record - - - - - Event contains window change event record - - - - - Event contains menu event record - - - - - Event contains focus change - Returned by GetStdHandle when an error occurs - - - - - ' Struct uChar is meant to support the Windows Console API's uChar union. - ' Unions do not exist in the pure .NET world. We have to use the regular - ' C# struct and the StructLayout and FieldOffset Attributes to preserve - ' the memory layout of the unmanaged union. - ' - ' We specify the "LayoutKind.Explicit" value for the StructLayout attribute - ' to specify that every field of the struct uChar is marked with a byte offset. - ' - ' This byte offset is specified by the FieldOffsetAttribute and it indicates - ' the number of bytes between the beginning of the struct in memory and the - ' beginning of the field. - ' - ' As you can see in the struct uChar (below), the fields "UnicodeChar" - ' and "AsciiChar" have been marked as being of offset 0. This is the only - ' way that an unmanaged C/C++ union can be represented in C#. - ' - - - - - - ' The struct KEY_EVENT_RECORD is used to report keyboard input events - ' in a console INPUT_RECORD structure. - ' - ' Internally, it uses the structure uChar which is treated as a union - ' in the unmanaged world. - ' - - - - - - Summary description for ConsolePasswordInput. - - - .NET Console Password Input By Masking Keyed-In Characters - http://www.codeproject.com/Articles/8110/NET-Console-Password-Input-By-Masking-Keyed-In-Ch - - - - - - - - The password max length limits. - - - - - 使用回车键或者箭头下显示下一行,字æ¯q或者ESC键退出Manual - - 最开始显示的行数 - - - - - 从文本文件之中加载Manualæ•°æ® - - - - - - - 与所ä¸åŒçš„æ˜¯ï¼Œæœ¬å¯¹è±¡ä¹‹ä¸­çš„è¿™ä¸ªå­—ç¬¦ä¸²æ•°ç»„è¡¨ç¤ºçš„æ˜¯ä¸€é¡µå¸®åŠ©ï¼Œè€Œä¸æ˜¯ä¸€è¡Œå¸®åŠ©ä¿¡æ¯ - - - - - - - 使用[Enter][Down_arrow][pagedown]翻下一页[Up_arrow][Pageup]翻上一页,[q]或者[esc]结æŸï¼Œ[home]第一页[end]最åŽä¸€é¡µ - - æ— ç”¨çš„å‚æ•° - æ— ç”¨çš„å‚æ•° - - - - - è¿è¡Œè¿›åº¦æ¡ - - The total ticking counts of the indicator, Unit is [second]. - - - - - - - - - - - - - - åŽ†å²æ•°æ®æ–‡ä»¶çš„存放ä½ç½®ï¼Œå‡è‹¥ä¸ºç©ºï¼Œåˆ™ä½¿ç”¨é»˜è®¤æ–‡ä»¶è·¯å¾„ - - - - - ReadLine函数的递归返回值 - - - - - - ä¿å­˜åކ岿•°æ® - - - - - - - - - æŒ‡å‘ - - - - - - Represents the standard input, output, and error streams for console applications. 交互å¼çš„命令行终端 - - - - - - Plays the sound of a beep through the console speaker. - - - System.Security.HostProtectionException: This method was executed on a server, such as SQL Server, that does not permit access to a user interface. - - - - Plays the sound of a beep of a specified frequency and duration through the console speaker. - - The frequency of the beep, ranging from 37 to 32767 hertz. - The duration of the beep measured in milliseconds. - - frequency is less than 37 or more than 32767 hertz.-or-duration is less than or equal to zero. - This method was executed on a server, such as SQL Server, that does not permit access to the console. - - - - Clears the console buffer and corresponding console window of display information. - - - An I/O error occurred. - - - - Copies a specified source area of the screen buffer to a specified destination area. - - The leftmost column of the source area. - The topmost row of the source area. - The number of columns in the source area. - The number of rows in the source area. - The leftmost column of the destination area. - The topmost row of the destination area. - - One or more of the parameters is less than zero.-or- sourceLeft or targetLeft is greater than or equal to System.Console.BufferWidth.-or- sourceTop or targetTop is greater than or equal to System.Console.BufferHeight.-or- sourceTop + sourceHeight is greater than or equal to System.Console.BufferHeight.-or- sourceLeft + sourceWidth is greater than or equal to System.Console.BufferWidth. - The user does not have permission to perform this action. - An I/O error occurred. - - - - Copies a specified source area of the screen buffer to a specified destination area. - - The leftmost column of the source area. - The topmost row of the source area. - The number of columns in the source area. - The number of rows in the source area. - The leftmost column of the destination area. - The topmost row of the destination area. - The character used to fill the source area. - The foreground color used to fill the source area. - The background color used to fill the source area. - - One or more of the parameters is less than zero.-or- sourceLeft or targetLeft is greater than or equal to System.Console.BufferWidth.-or- sourceTop or targetTop is greater than or equal to System.Console.BufferHeight.-or- sourceTop + sourceHeight is greater than or equal to System.Console.BufferHeight.-or- sourceLeft + sourceWidth is greater than or equal to System.Console.BufferWidth. - One or both of the color parameters is not a member of the System.ConsoleColor enumeration. - The user does not have permission to perform this action. - An I/O error occurred. - - - - Sets the foreground and background console colors to their defaults. - - - The user does not have permission to perform this action. - An I/O error occurred. - - - - Sets the height and width of the screen buffer area to the specified values. - - The width of the buffer area measured in columns. - The height of the buffer area measured in rows. - - height or width is less than or equal to zero.-or- height or width is greater than or equal to System.Int16.MaxValue.-or- width is less than System.Console.WindowLeft + System.Console.WindowWidth.-or- height is less than System.Console.WindowTop + System.Console.WindowHeight. - The user does not have permission to perform this action. - An I/O error occurred. - - - - Sets the position of the cursor. - - The column position of the cursor. - The row position of the cursor. - - left or top is less than zero.-or- left is greater than or equal to System.Console.BufferWidth.-or- top is greater than or equal to System.Console.BufferHeight. - The user does not have permission to perform this action. - An I/O error occurred. - - - - Sets the System.Console.Error property to the specified System.IO.TextWriter object. - - A stream that is the new standard error output. - - newError is null. - The caller does not have the required permission. - - - - Sets the System.Console.In property to the specified System.IO.TextReader object. - - A stream that is the new standard input. - - newIn is null. - The caller does not have the required permission. - - - - Sets the System.Console.Out property to the specified System.IO.TextWriter object. - - A stream that is the new standard output. - - newOut is null. - The caller does not have the required permission. - - - - Sets the position of the console window relative to the screen buffer. - - The column position of the upper left corner of the console window. - The row position of the upper left corner of the console window. - - left or top is less than zero.-or- left + System.Console.WindowWidth is greater than System.Console.BufferWidth.-or- top + System.Console.WindowHeight is greater than System.Console.BufferHeight. - The user does not have permission to perform this action. - An I/O error occurred. - - - - Sets the height and width of the console window to the specified values. - - The width of the console window measured in columns. - The height of the console window measured in rows. - - width or height is less than or equal to zero.-or- width plus System.Console.WindowLeft or height plus System.Console.WindowTop is greater than or equal to System.Int16.MaxValue. -or-width or height is greater than the largest possible window width or height for the current screen resolution and console font. - The user does not have permission to perform this action. - An I/O error occurred. - - - - Writes the text representation of the specified Boolean value to the standard output stream. - - The value to write. - - An I/O error occurred. - - - - Writes the specified array of Unicode characters to the standard output stream. - - A Unicode character array. - - An I/O error occurred. - - - - Writes the specified subarray of Unicode characters to the standard output stream. - - An array of Unicode characters. - The starting position in buffer. - The number of characters to write. - - buffer is null. - index or count is less than zero. - index plus count specify a position that is not within buffer. - An I/O error occurred. - - - - Writes the specified Unicode character value to the standard output stream. - - The value to write. - - An I/O error occurred. - - - - Writes the text representation of the specified System.Decimal value to the standard output stream. - - The value to write. - - An I/O error occurred. - - - - Writes the text representation of the specified double-precision floating-point value to the standard output stream. - - The value to write. - - An I/O error occurred. - - - - Writes the text representation of the specified 32-bit signed integer value to the standard output stream. - - The value to write. - - An I/O error occurred. - - - - Writes the text representation of the specified 64-bit signed integer value to the standard output stream. - - The value to write. - - An I/O error occurred. - - - - Writes the text representation of the specified object to the standard output stream. - - The value to write, or null. - - An I/O error occurred. - - - - Writes the text representation of the specified single-precision floating-point value to the standard output stream. - - The value to write. - - An I/O error occurred. - - - - Writes the specified string value to the standard output stream. - - The value to write. - - An I/O error occurred. - - - - Writes the text representation of the specified object to the standard output stream using the specified format information. - - A composite format string (see Remarks). - An object to write using format. - - An I/O error occurred. - format is null. - The format specification in format is invalid. - - - - Writes the text representation of the specified objects to the standard output stream using the specified format information. - - A composite format string (see Remarks). - The first object to write using format. - The second object to write using format. - - An I/O error occurred. - format is null. - The format specification in format is invalid. - - - - Writes the text representation of the specified objects to the standard output stream using the specified format information. - - A composite format string (see Remarks). - The first object to write using format. - The second object to write using format. - The third object to write using format. - - An I/O error occurred. - format is null. - The format specification in format is invalid. - - - - Writes the text representation of the specified array of objects to the standard output stream using the specified format information. - - A composite format string (see Remarks). - An array of objects to write using format. - - An I/O error occurred. - format or arg is null. - The format specification in format is invalid. - - - - Writes the text representation of the specified array of objects to the standard output stream using the specified format information. - - A composite format string (see Remarks). - An array of objects to write using format. - - An I/O error occurred. - format or arg is null. - The format specification in format is invalid. - - - - Writes the text representation of the specified 32-bit unsigned integer value to the standard output stream. - - The value to write. - - An I/O error occurred. - - - - Writes the text representation of the specified 64-bit unsigned integer value to the standard output stream. - - The value to write. - - An I/O error occurred. - - - - Writes the current line terminator to the standard output stream. - - - An I/O error occurred. - - - - Writes the text representation of the specified Boolean value, followed by the current line terminator, to the standard output stream. - - The value to write. - - An I/O error occurred. - - - - Writes the specified array of Unicode characters, followed by the current line terminator, to the standard output stream. - - A Unicode character array. - - An I/O error occurred. - - - - Writes the specified subarray of Unicode characters, followed by the current line terminator, to the standard output stream. - - An array of Unicode characters. - The starting position in buffer. - The number of characters to write. - - buffer is null. - index or count is less than zero. - index plus count specify a position that is not within buffer. - An I/O error occurred. - - - - Writes the specified Unicode character, followed by the current line terminator, value to the standard output stream. - - The value to write. - - An I/O error occurred. - - - - Writes the text representation of the specified System.Decimal value, followed by the current line terminator, to the standard output stream. - - The value to write. - - An I/O error occurred. - - - - Writes the text representation of the specified double-precision floating-point value, followed by the current line terminator, to the standard output stream. - - The value to write. - - An I/O error occurred. - - - - Writes the text representation of the specified 32-bit signed integer value, followed by the current line terminator, to the standard output stream. - - The value to write. - - An I/O error occurred. - - - - Writes the text representation of the specified 64-bit signed integer value, followed by the current line terminator, to the standard output stream. - - The value to write. - - An I/O error occurred. - - - - Writes the text representation of the specified object, followed by the current line terminator, to the standard output stream. - - The value to write. - - An I/O error occurred. - - - - Writes the text representation of the specified single-precision floating-point value, followed by the current line terminator, to the standard output stream. - - The value to write. - - An I/O error occurred. - - - - Writes the specified string value, followed by the current line terminator, to the standard output stream. - - The value to write. - - An I/O error occurred. - - - - Writes the text representation of the specified object, followed by the current line terminator, to the standard output stream using the specified format information. - - A composite format string (see Remarks). - An object to write using format. - - An I/O error occurred. - format is null. - The format specification in format is invalid. - - - - Writes the text representation of the specified objects, followed by the current line terminator, to the standard output stream using the specified format information. - - A composite format string (see Remarks). - The first object to write using format. - The second object to write using format. - - An I/O error occurred. - format is null. - The format specification in format is invalid. - - - - Writes the text representation of the specified objects, followed by the current line terminator, to the standard output stream using the specified format information. - - A composite format string (see Remarks). - The first object to write using format. - The second object to write using format. - The third object to write using format. - - An I/O error occurred. - format is null. - The format specification in format is invalid. - - - - Writes the text representation of the specified array of objects, followed by the current line terminator, to the standard output stream using the specified format information. - - A composite format string (see Remarks). - An array of objects to write using format. - - An I/O error occurred. - format or arg is null. - The format specification in format is invalid. - - - - Writes the text representation of the specified 32-bit unsigned integer value, followed by the current line terminator, to the standard output stream. - - The value to write. - - An I/O error occurred. - - - - Writes the text representation of the specified 64-bit unsigned integer value, followed by the current line terminator, to the standard output stream. - - The value to write. - - An I/O error occurred. - - - - Acquires the standard error stream. - - The standard error stream. - - - - - Acquires the standard error stream, which is set to a specified buffer size. - - The internal stream buffer size. - The standard error stream. - - bufferSize is less than or equal to zero. - - - - Acquires the standard input stream. - - The standard input stream. - - - - - Acquires the standard input stream, which is set to a specified buffer size. - - The internal stream buffer size. - The standard input stream. - - bufferSize is less than or equal to zero. - - - - Acquires the standard output stream. - - The standard output stream. - - - - - Acquires the standard output stream, which is set to a specified buffer size. - - The internal stream buffer size. - The standard output stream. - - bufferSize is less than or equal to zero. - - - - Reads the next character from the standard input stream. - - The next character from the input stream, or negative one (-1) if there are currently no more characters to be read. - - An I/O error occurred. - - - - Obtains the next character or function key pressed by the user. The pressed key is displayed in the console window. - - A System.ConsoleKeyInfo object that describes the System.ConsoleKey constant and Unicode character, if any, that correspond to the pressed console key. The System.ConsoleKeyInfo object also describes, in a bitwise combination of System.ConsoleModifiers values, whether one or more Shift, Alt, or Ctrl modifier keys was pressed simultaneously with the console key. - - The System.Console.In property is redirected from some stream other than the console. - - - - Obtains the next character or function key pressed by the user. The pressed key is optionally displayed in the console window. - - Determines whether to display the pressed key in the console window. true to not display the pressed key; otherwise, false. - A System.ConsoleKeyInfo object that describes the System.ConsoleKey constant and Unicode character, if any, that correspond to the pressed console key. The System.ConsoleKeyInfo object also describes, in a bitwise combination of System.ConsoleModifiers values, whether one or more Shift, Alt, or Ctrl modifier keys was pressed simultaneously with the console key. - - The System.Console.In property is redirected from some stream other than the console. - - - - Reads the next line of characters from the standard input stream. - - The next line of characters from the input stream, or null if no more lines are available. - - An I/O error occurred. - There is insufficient memory to allocate a buffer for the returned string. - The number of characters in the next line of characters is greater than System.Int32.MaxValue. - - - - Gets or sets the background color of the console. - - - A System.ConsoleColor that specifies the background color of the console; that is, the color that appears behind each character. The default is black. - - The color specified in a set operation is not a valid Color. - The user does not have permission to perform this action. - An I/O error occurred. - - - - Gets or sets the height of the buffer area. - - - The current height, in rows, of the buffer area. - - The value in a set operation is less than or equal to zero.-or- The value in a set operation is greater than or equal to System.Int16.MaxValue.-or- The value in a set operation is less than System.Console.WindowTop + System.Console.WindowHeight. - The user does not have permission to perform this action. - An I/O error occurred. - - - - Gets or sets the width of the buffer area. - - - The current width, in columns, of the buffer area. - - The value in a set operation is less than or equal to zero.-or- The value in a set operation is greater than or equal to System.Int16.MaxValue.-or- The value in a set operation is less than System.Console.WindowLeft + System.Console.WindowWidth. - The user does not have permission to perform this action. - An I/O error occurred. - - - - Gets a value indicating whether the CAPS LOCK keyboard toggle is turned on or turned off. - - - true if CAPS LOCK is turned on; false if CAPS LOCK is turned off. - - - - - Gets or sets the column position of the cursor within the buffer area. - - - The current position, in columns, of the cursor. - - The value in a set operation is less than zero.-or- The value in a set operation is greater than or equal to System.Console.BufferWidth. - The user does not have permission to perform this action. - An I/O error occurred. - - - - Gets or sets the height of the cursor within a character cell. - - - The size of the cursor expressed as a percentage of the height of a character cell. The property value ranges from 1 to 100. - - The value specified in a set operation is less than 1 or greater than 100. - The user does not have permission to perform this action. - An I/O error occurred. - - - - Gets or sets the row position of the cursor within the buffer area. - - - The current position, in rows, of the cursor. - - The value in a set operation is less than zero.-or- The value in a set operation is greater than or equal to System.Console.BufferHeight. - The user does not have permission to perform this action. - An I/O error occurred. - - - - Gets or sets a value indicating whether the cursor is visible. - - - true if the cursor is visible; otherwise, false. - - The user does not have permission to perform this action. - An I/O error occurred. - - - - Gets the standard error output stream. - - - A System.IO.TextWriter that represents the standard error output stream. - - - - - Gets or sets the foreground color of the console. - - - A System.ConsoleColor that specifies the foreground color of the console; that is, the color of each character that is displayed. The default is gray. - - The color specified in a set operation is not a valid Color. - The user does not have permission to perform this action. - An I/O error occurred. - - - - Gets the standard input stream. - - - A System.IO.TextReader that represents the standard input stream. - - - - - Gets or sets the encoding the console uses to read input. - - - The encoding used to read console input. - - The property value in a set operation is null. - An error occurred during the execution of this operation. - Your application does not have permission to perform this operation. - - - - Gets a value that indicates whether the error output stream has been redirected from the standard error stream. - - - true if error output is redirected; otherwise, false. - - - - - Gets a value that indicates whether input has been redirected from the standard input stream. - - - true if input is redirected; otherwise, false. - - - - - Gets a value that indicates whether output has been redirected from the standard output stream. - - - true if output is redirected; otherwise, false. - - - - - Gets a value indicating whether a key press is available in the input stream. - - - true if a key press is available; otherwise, false. - - An I/O error occurred. - Standard input is redirected to a file instead of the keyboard. - - - - Gets the largest possible number of console window rows, based on the current font and screen resolution. - - - The height of the largest possible console window measured in rows. - - - - - Gets the largest possible number of console window columns, based on the current font and screen resolution. - - - The width of the largest possible console window measured in columns. - - - - - Gets a value indicating whether the NUM LOCK keyboard toggle is turned on or turned off. - - - true if NUM LOCK is turned on; false if NUM LOCK is turned off. - - - - - Gets the standard output stream. - - - A System.IO.TextWriter that represents the standard output stream. - - - - - Gets or sets the encoding the console uses to write output. - - - The encoding used to write console output. - - The property value in a set operation is null. - An error occurred during the execution of this operation. - Your application does not have permission to perform this operation. - - - - Gets or sets the title to display in the console title bar. - - - The string to be displayed in the title bar of the console. The maximum length of the title string is 24500 characters. - - In a get operation, the retrieved title is longer than 24500 characters. - In a set operation, the specified title is longer than 24500 characters. - In a set operation, the specified title is null. - An I/O error occurred. - - - - Gets or sets a value indicating whether the combination of the System.ConsoleModifiers.Control modifier key and System.ConsoleKey.C console key (Ctrl+C) is treated as ordinary input or as an interruption that is handled by the operating system. - - - true if Ctrl+C is treated as ordinary input; otherwise, false. - - Unable to get or set the input mode of the console input buffer. - - - - Gets or sets the height of the console window area. - - - The height of the console window measured in rows. - - The value of the System.Console.WindowWidth property or the value of the System.Console.WindowHeight property is less than or equal to 0.-or-The value of the System.Console.WindowHeight property plus the value of the System.Console.WindowTop property is greater than or equal to System.Int16.MaxValue.-or-The value of the System.Console.WindowWidth property or the value of the System.Console.WindowHeight property is greater than the largest possible window width or height for the current screen resolution and console font. - Error reading or writing information. - - - - Gets or sets the leftmost position of the console window area relative to the screen buffer. - - - The leftmost console window position measured in columns. - - In a set operation, the value to be assigned is less than zero.-or-As a result of the assignment, System.Console.WindowLeft plus System.Console.WindowWidth would exceed System.Console.BufferWidth. - Error reading or writing information. - - - - Gets or sets the top position of the console window area relative to the screen buffer. - - - The uppermost console window position measured in rows. - - In a set operation, the value to be assigned is less than zero.-or-As a result of the assignment, System.Console.WindowTop plus System.Console.WindowHeight would exceed System.Console.BufferHeight. - Error reading or writing information. - - - - Gets or sets the width of the console window. - - - The width of the console window measured in columns. - - The value of the System.Console.WindowWidth property or the value of the System.Console.WindowHeight property is less than or equal to 0.-or-The value of the System.Console.WindowHeight property plus the value of the System.Console.WindowTop property is greater than or equal to System.Int16.MaxValue.-or-The value of the System.Console.WindowWidth property or the value of the System.Console.WindowHeight property is greater than the largest possible window width or height for the current screen resolution and console font. - Error reading or writing information. - - - - Occurs when the System.ConsoleModifiers.Control modifier key (Ctrl) and either the System.ConsoleKey.C console key (C) or the Break key are pressed simultaneously (Ctrl+C or Ctrl+Break). - - - - - - - - You can create a console window In a Windows Forms project. Project + properties, turn off "Enable application framework" - And Set Startup Object To "Sub Main". - - Modify the Application.Run() statement To create the proper startup form, If necessary. - - - - - - - - - - If NOT, then the function returns the associated process id value. Else returns the process exit code. - - - - - - Represents the standard input, output, and error streams for console applications.(è¡¨ç¤ºä¸€ä¸ªè¾“å…¥è¾“å‡ºæµæŽ§åˆ¶å°ç•Œé¢æŽ¥å£) - - - - - - Writes the specified string value, followed by the current line terminator, to the standard output stream. - (将指定的字符串值(åŽè·Ÿå½“å‰è¡Œç»ˆæ­¢ç¬¦ï¼‰å†™å…¥è¾“出æµã€‚) - - - - - - - Writes the text representation of the specified array of objects, followed by the current line terminator, to the standard output stream using the specified format information. - (将指定的字符串值(åŽè·Ÿå½“å‰è¡Œç»ˆæ­¢ç¬¦ï¼‰å†™å…¥è¾“出æµã€‚) - - - - - - - - Reads the next line of characters from the standard input stream.(从输入æµè¯»å–下一行字符) - - The next line of characters from the input stream, or null if no more lines are available. - - - - - Reads the next character from the standard input stream.(从输入æµè¯»å–下一个字符) - - The next character from the input stream, or negative one (-1) if there are currently no more characters to be read. - - - - - å¯¹å­—ç¬¦ä¸²è¿›è¡Œæ ¼å¼æŽ§åˆ¶è¾“å‡ºçš„ç±»å¯¹è±¡æ‰€å¿…é¡»å®žçŽ°çš„æ ¼å¼è¾“å‡ºæŽ¥å£ - - - - - - 将一个输入的字符串按照用户指定的格å¼è¿›è¡Œæ ¼å¼åŒ–åŽè¿”回 - - 指定的格å¼å­—符串 - 输入的值 - ç»è¿‡æ ¼å¼åŒ–之åŽçš„字符串 - - - - - gæ ¼å¼ç¬¦ï¼šå®ƒå°†æ ¹æ®æ•°å€¼çš„大å°ï¼Œè‡ªåŠ¨é€‰ç”¨fæ ¼å¼æˆ–eæ ¼å¼è¾“出数æ®ï¼Œå¹¶ä¸”它ä¸è¾“出无æ„义的0 - - - - - - %%æ ¼å¼ï¼Œç›´æŽ¥è¿”回一个字符'%' - - - - - - eæ ¼å¼ç¬¦ï¼šä»¥æŒ‡æ•°å½¢å¼è¾“出实数 - - - 'eæ ¼å¼ç¬¦ï¼šä»¥æŒ‡æ•°å½¢å¼è¾“出实数 - '+----------+----------------------------------------------------------------------+ - ' %e 按规范化指数形å¼è¾“出实数,系统自动给出6ä½å°æ•°ï¼ŒæŒ‡æ•°éƒ¨åˆ†å 5ä½ - ' %m.ne 与å‰é¢çš„å™è¿°ç›¸åŒ - ' %-m.ne 与å‰é¢çš„å™è¿°ç›¸åŒ - '+---------------------------------------------------------------------------------+ - - - - - %m.ne - - - - - - %-m.ne - - - - - - - - - - - - - - - %m.ne - - - - - - - - - - %-m.ne - - - - - - - - - - fæ ¼å¼ç¬¦ï¼šæŒ‰å®žæ•°æ ¼å¼è¾“出 - - - 'fæ ¼å¼ç¬¦ï¼šæŒ‰å®žæ•°æ ¼å¼è¾“出。 - '+----------+------------------------------------------------------------------------------------+ - ' %f 整数部分全部显示出æ¥,å°æ•°éƒ¨åˆ†æ˜¾ç¤º6ä½.但并䏿˜¯æ˜¾ç¤ºçš„æ‰€æœ‰æ•°å­—都是有效数字 - ' %m.nf 指定数æ®çš„宽度共为m列,其中有nä½å°æ•°.如果数值长度å°äºŽm,则左侧补空格。 - ' %-m.nf 与%m.fç±»ä¼¼ï¼Œåªæ˜¯åº”在å³ä¾§è¡¥ç©ºæ ¼ - '+-----------------------------------------------------------------------------------------------+ - - - - - %m.nf - - - - - - %-m.nf - - - - - - é»˜è®¤çš„å°æ•°ä½é•¿åº¦ä¸º6ä½ - - - - - - - - - - - - - - - æŽ§åˆ¶å°æ•°çš„使•°åŽè¾“出 - - - - - - - - - %-m.nf - - - - - - - - - - %m.nf - - - - - - - - - - è§£æžæ•´æ•°éƒ¨åˆ† - - - - - - - - è§£æžå°æ•°éƒ¨åˆ† - - - - - - - - sæ ¼å¼ç¬¦ï¼šç”¨æ¥è¾“出一个字符串 - - - 'sæ ¼å¼ç¬¦ï¼šç”¨æ¥è¾“出一个字符串 - '+----------+------------------------------------------------------------------------------------+ - ' %s 用æ¥è¾“出一个字符串,ä¸å«åŒå¼•å·. 例:printf("%s","CHINA"); - ' %ms m指定宽度(字符串长度å°äºŽm时左补空格,大于时按实际宽度输出) - ' %-ms 左对é½ï¼Œä¸è¶³mæ—¶å³è¡¥ç©ºæ ¼ - ' %m.ns 输出å m列,åªå–字符串中左端n个字符.这nå„字符输出在m列的å³ä¾§ï¼Œå·¦è¡¥ç©ºæ ¼ï¼Ž - ' %-m.ns åŒä¸Šï¼Œå³è¡¥ç©ºæ ¼ - '+-----------------------------------------------------------------------------------------------+ - - - - - %ms - - - - - - %-ms - - - - - - %m.ns - - - - - - %-m.ns - - - - - - - - - - - - - - - %-m.ns - - - - - - - - - - %m.ns - - - - - - - - - - %-ms - - - - - - - - - %ms - - - - - - - - - cæ ¼å¼ç¬¦ï¼šç”¨æ¥è¾“出一个字符。一个整数,其值在0~255之间时也å¯ä»¥ä»¥å­—符的格å¼è¾“出 - - 一个整数,若其值在0~255范围内,也å¯ä»¥ç”¨å­—符形å¼è¾“出,在输出å‰ï¼Œå°†è¯¥æ•´æ•°è½¬æ¢ä¸ºå¯¹åº”çš„ASCII字符。å之,一个字符数æ®ä¹Ÿå¯ä»¥ç”¨æ•´æ•°å½¢å¼è¾“出 - - - - uæ ¼å¼ç¬¦ï¼šä»¥å进制数形å¼è¾“出unsigned的整数 - - - - - - xæ ¼å¼ç¬¦ï¼šæŒ‰å六进制格å¼è¾“出整数。(ä¸ä¼šå‡ºçŽ°è´Ÿæ•°æ ¼å¼) - - - - - - o(å­—æ¯)æ ¼å¼ç¬¦ï¼šæŒ‰å…«è¿›åˆ¶æ ¼å¼è¾“出整数。(ä¸ä¼šå‡ºçŽ°è´Ÿæ•°æ ¼å¼) - - - - - - bæ ¼å¼ç¬¦ï¼šæŒ‰ç…§äºŒè¿›åˆ¶æ ¼å¼è¾“出整数 - - - - - - dæ ¼å¼ç¬¦ï¼šæŒ‰å进制格å¼è¾“出 - - - 'dæ ¼å¼ç¬¦ï¼šæŒ‰å进制格å¼è¾“出 - '+-------------+----------------------------------------------------------------------------------------------------------+ - ' %d 输出数字长度为å˜é‡æ•°å€¼çš„实际长度 - ' %md m指定输出数æ®çš„å®½åº¦ã€‚å½“æ•°æ®æœ¬èº«çš„实际宽度å°äºŽm时,则数æ®å·¦ç«¯è¡¥ç©ºæ ¼ï¼›è‹¥å¤§äºŽm,则按数æ®çš„å®žé™…ä½æ•°è¾“出。 - ' %ld, %mld l(å°å†™å­—æ¯L)è¡¨ç¤ºè¾“å‡ºâ€œé•¿æ•´åž‹â€æ•°æ® - ' %0md, %0mld 0(æ•°å­—0)è¡¨ç¤ºä½æ•°ä¸è¶³mæ—¶è¡¥0 - '+------------------------------------------------------------------------------------------------------------------------+ - ' 注:%åŽé¢çš„m(使•°æŽ§åˆ¶)ã€0ï¼ˆä½æ•°ä¸è¶³è¡¥0)对于其他格å¼ç¬¦ä¹Ÿé€‚用。 - - - - - %md - - - - - - %mld - - - - - - %0md - - - - - - %0mld - - - - - - - - - - - - - - - %md or %mld - - - - - - - - - %0md or %0mld - - - - - - - - - èŽ·å¾—å«æœ‰æŒ‡å®šæ•°ç›®çš„字符0的字符串 - - - - - - - - A standard input/output compatibility package that makes VisualBasic console - program easily running on the Linux server or mac osx operating system. - (一个用于让VisualBasicåº”ç”¨ç¨‹åºæ›´åŠ å®¹æ˜“çš„è¿è¡ŒäºŽLinuxæœåŠ¡å™¨æˆ–è€…MAC系统之上的标准输入输出æµçš„系统兼容包) - - - - - - - A dictionary list of the method of format a string provider class object. - (标准输入输出对象的格å¼åŒ–方法所æä¾›çš„对象的字典) - - - - - - A dictionary list of the escape characters.(转义字符列表) - - - - - - 系统终端对象 - - - - - - Formatting a string using some formation arguments.(使用一些指定的格å¼åŒ–傿•°æ¥æ ¼å¼åŒ–一个字符串) - - - - - - - - - Output the string to the console using a specific formation.(按照指定的格å¼å°†å­—符串输出到终端窗å£ä¹‹ä¸Šï¼Œè¯·æ³¨æ„ï¼Œè¿™ä¸ªå‡½æ•°é™¤äº†å°†æ•°æ®æµè¾“出到标准终端之外,还会输出到调试终端) - - A string to print on the console window.(输出到终端窗å£ä¹‹ä¸Šçš„字符串) - Formation parameters.(æ ¼å¼åŒ–傿•°) - - - - - - 䏿¢è¡Œ - - - - - - - Read the string that user input on the console to the function paramenter. - (将用户在终端窗å£ä¹‹ä¸Šè¾“入的数æ®èµ‹å€¼ç»™ä¸€ä¸ªå­—符串å˜é‡) - - - - - - - - Taken from http://msdn.microsoft.com/en-us/magazine/dd419663.aspx - - - - - - - - - - - - - Application information collection. - - - - - Get the process id(PID) of the current program process. - - - - - The file path of the current running program executable file.(本应用程åºçš„坿‰§è¡Œæ–‡ä»¶çš„æ–‡ä»¶è·¯å¾„) - - - - - - The program directory of the current running program. - - - - - - The local data dir of the application in the %user/<CurrentUser>/Local/App - - - - - - The temp directory in the application local data. - - - - - - The directory path of the system temp data. - - - - - - - - - - - 必须满足接å£ç±»åž‹ï¼š Function(path As String) As T - - - - - - 当目标数æ®é›†éžå¸¸çš„大的时候,在å•个应用程åºé‡Œé¢è¿›è¡ŒåŠ è½½å·²ç»å›žéžå¸¸ç¼“慢了, - 则这个时候å¯ä»¥ä½¿ç”¨è¿™ä¸ªå‡½æ•°å°†æ•°æ®çš„加载任务分é…到多个å­è¿›ç¨‹ä¹‹ä¸­ä»¥æé«˜åŠ è½½çš„æ—¶å€™çš„CPU的利用效率 - - - - - 函数会自动从泛型类型之中解æžå‡ºåŠ è½½çš„å‡½æ•° - - - - 通过与并行进程进行内存共享æ¥ä¼ è¾“åŠ è½½å®Œæ¯•çš„æ•°æ® - - - - - - - - - 动æ€ç¼–译的加载进程的调用APIæ¥å‘ä¸»è¿›ç¨‹è¿”å›žæ¶ˆæ¯ - - - - - - - 递归的获å–该类型所处的模å—的所有的ä¾èµ–关系 - - - - - - - 有一些会出现循环引用的情况????? - - - - - - - - - - - 是å¦ç§»é™¤ç³»ç»Ÿå¼•用 - - - - - 放在C:\WINDOWS\Microsoft.Net\这个文件夹下é¢çš„æ‰€æœ‰çš„引用都是本地编译的,哈希值已ç»ä¸å¯¹äº† - - - - - - - - - - +特殊符å·å­˜åœ¨äºŽè¿™ä¸ªå­—符串之中的è¯ï¼Œå‡½æ•°ä¼šå‡ºé”™ - - - - - - 动æ€ç¼–译 - - - - - - - 由于在分组之åŽçš„åŽç»­çš„æ“ä½œçš„è¿‡ç¨‹ä¹‹ä¸­å…ƒç´ ä¼šå‘生改å˜ï¼Œ - 所以在这个属性之中存储了在åˆå§‹åŒ–列表的时候的原始的列表之中的元素的个数以满足一些其他的算法æ“作 - - - - - - 貌似使用LINQ进行Groupæ“作的时候是没有并行化的,ç°éžå¸¸æ…¢ï¼Œåˆ™å¯ä»¥ä½¿ç”¨è¿™ä¸ªæ‹“展函数æ¥èŽ·å–较好的性能 - - - - - - - - - 更加底层的线程模å¼ï¼Œå’ŒLINQ相比ä¸ä¼šå—到CPU核心数目的é™åˆ¶ - - åŽå°ä»»åŠ¡çš„æ‰§è¡Œå‚æ•° - åŽå°ä»»åŠ¡çš„æ‰§è¡Œç»“æžœ - - - - å‡è‹¥ä»»åС已ç»å®Œæˆï¼Œåˆ™ä¼šè¿”回计算值,å‡è‹¥æ²¡æœ‰å®Œæˆï¼Œåˆ™åªä¼šè¿”回空值,å‡è‹¥æƒ³è¦åœ¨ä»»ä½•情况之下都会得到åŽå°ä»»åŠ¡æ‰€æ‰§è¡Œçš„è®¡ç®—ç»“æžœï¼Œè¯·ä½¿ç”¨æ–¹æ³• - - - - - - å‡è‹¥åŽå°ä»»åŠ¡è¿˜æ²¡æœ‰å®Œæˆï¼Œåˆ™å‡½æ•°ä¼šä¸€ç›´é˜»å¡žåœ¨è¿™é‡Œç›´åˆ°ä»»åŠ¡æ‰§è¡Œå®Œæ¯•ï¼Œå‡è‹¥ä»»åŠ¡æ—©å·²å®Œæˆï¼Œåˆ™å‡½æ•°ä¼šç«‹å³è¿”å›žæ•°æ® - - - - - - ç”¨äºŽé«˜æ•ˆçŽ‡æ‰§è¡Œæ‰¹é‡æŸ¥è¯¢æ“作和用于检测æ“作超时的工具对象,请注æ„,为了æé«˜æŸ¥è¯¢çš„工作效率,请尽é‡é¿å…在查询æ“ä½œä¹‹ä¸­ç”Ÿæˆæ–°çš„临时对象 - 并行版本的LINQ查询和原始的线程æ“作相比具有一些性能上é¢çš„局陿€§ - - 在使用Parallel LINQçš„æ—¶å€™ï¼Œè¯·åŠ¡å¿…è¦æ³¨æ„ä¸èƒ½å¤Ÿä½¿ç”¨Letè¯­å¥æ“作共享å˜é‡ï¼Œå› ä¸ºæŽ’除死é”的开销比较大 - - - - 查询æ“作超时的时间阈值,å•ä½ä¸ºç§’ - - - - - - 查询æ“作的线程数目 - - - - - - - - 查询æ“作超时的时间阈值,å•ä½ä¸ºç§’ - è¿™ä¸ªå‚æ•°é€šå¸¸æ˜¯æŒ‡CPU的核心数目,或者查询任务执行的最大线程数目 - - - - - Get the number of processors on the current machine.(获å–当å‰çš„系统主机的CPU核心数) - - - - - - - - The possible recommended threads of the linq based on you machine processors number, i'm not sure... - - - - - - - - 当查询æ“ä½œè¶…æ—¶çš„æ—¶å€™ï¼Œå•æ¡æŸ¥è¯¢çº¿ç¨‹ä¼šè¿”回默认值 - - 返回的值类型 - - - - - - - - 采å–éžå¹¶è¡ŒåŒ–的方å¼å¯åŠ¨è®¡ç®—çº¿ç¨‹ - - - - - - - - - - 采å–éžå¹¶è¡ŒåŒ–的方å¼å¯åŠ¨è®¡ç®—çº¿ç¨‹ - - - - - - - - - - 当需è¦è¿›è¡Œè¶…å¤§è§„æ¨¡çš„æŸ¥è¯¢çš„æ—¶å€™ï¼Œè¯·ä½¿ç”¨æœ¬æ–¹æ³•ï¼Œæœ¬æ–¹æ³•çš„çš„æ€æƒ³æ˜¯å°†æŸ¥è¯¢æ“作分解为多于CPU核心数目的线程池进行批é‡è®¡ç®— - - - - - - - - - - - - - 当查询超时的时候,使用本方法获得一个默认值 - - - - - - éžå¹¶è¡Œç‰ˆæœ¬ - - - - - - - - - - - .NET 4.6之中的并行LINQ失效了?????? - - - - - - - - - - DEBUG - - - - - - - 转æ¢ä»Žç»ˆç«¯æˆ–è€…è„šæœ¬æ–‡ä»¶ä¹‹ä¸­è¾“å…¥çš„å­—ç¬¦ä¸²çš„ç±»åž‹çš„è½¬æ¢ - - - - - Object为字符串类型,这个字典å¯ä»¥è®²å­—符串转为目标类型 - - - - - - Converts a string expression which was input from the console or script file to the specified type. - (请注æ„ï¼Œå‡½æ•°åªæ˜¯è½¬æ¢æœ€åŸºæœ¬çš„æ•°æ®ç±»åž‹ï¼Œè½¬æ¢é”™è¯¯ä¼šè¿”回空值) - - The string expression to convert. - The type to which to convert the object. - An object whose type at run time is the requested target type. - - - - 目标类型能å¦ç”±å­—符串转æ¢è¿‡æ¥ï¼Ÿï¼Ÿ - - - - - - - å°å†™çš„ - - - - - 类型获å–失败会返回空值,大å°å†™ä¸æ•感 - - - 是å¦å‡ºé”™çš„æ—¶å€™è¿”回Object类型,默认返回Nothing - - - - - 主è¦ä¸ºäº†æ–¹ä¾¿å‡å°‘脚本编程模å—çš„ä»£ç  - - - - - - - - , 出现错误的时候总是会返回空字符串的 - - - - - - - - - - 数组里é¢çš„元素的类型 - - - - - You Cann assign the parameter value using the parameter's alias name in the scripting using this attribute. - (ä½ å¯ä»¥ä½¿ç”¨æœ¬å±žæ€§å°†å‡½æ•°çš„傿•°å进行é‡å‘½å,这样å­ä½ å°±å¯ä»¥ä½¿ç”¨æœ¬å±žæ€§å¾—到一个书写更加漂亮的编程脚本文件了) - - - - - - 请使用这个方法æ¥èŽ·å–傿•°ä¿¡æ¯ - - - - - - - - The alias name of this function parameter in the scripting.(è„šæœ¬å‡½æ•°çš„å‚æ•°çš„别å) - - - - - - - - The description information in the scripting help system.(在帮助信æ¯é‡Œé¢è¿›è¡Œæ˜¾ç¤ºçš„æœ¬å‚数的简è¦çš„æè¿°ä¿¡æ¯) - - - - - - - - You can using this attribute to customize your API interface. - - The alias name of this function parameter in the scripting.(当å‰è„šæœ¬å‡½æ•°çš„è¿™ä¸ªå‚æ•°çš„别å) - The description information in the scripting help system.(这个信æ¯ä¼šæ˜¾ç¤ºåœ¨è„šæœ¬çŽ¯å¢ƒçš„å¸®åŠ©ç³»ç»Ÿä¹‹ä¸­) - - - - - å½“æ²¡æœ‰å®šä¹‰å±žæ€§çš„æ—¶å€™ï¼Œä¼šè¿”å›žå‚æ•°å - - - - - - - 用于解决函数é‡è½½çš„函数数字签å的属性 - - - - - - - - Brief name for the target signature type - Target signature type for function overloads. - - - - - 汉字拼音转æ¢ç±» - - - - - 二级汉字数组 - - - - - 二级汉字对应拼音数组 - - - - - å–æ‹¼éŸ³ç¬¬ä¸€ä¸ªå­—段 - - - - - - - å–æ‹¼éŸ³ç¬¬ä¸€ä¸ªå­—段 - - - - - - - 获å–å•字拼音 - - - - - - - æŠŠæ±‰å­—è½¬æ¢æˆæ‹¼éŸ³(全拼) - - 汉字字符串 - 转æ¢åŽçš„æ‹¼éŸ³(全拼)字符串 - - - - åˆ†æžæœåŠ¡å™¨çš„é—®é¢˜åŽŸå› æ‰€éœ€è¦çš„æ—¥å¿—分æžå·¥å…· - - - - - ç”Ÿæˆæ—¥å¿—æ–‡æ¡£ä¹‹ä¸­çš„ä¸€è¡Œè®°å½•æ•°æ® - - - - - - The types enumeration of the log file message. - - - - - - The normal information message.[WHITE] - - - - - - The program error information message.[RED] - - - - - - Warnning message from the program.[YELLOW] - - - - - - The program debug information message.[BLUE] - - - - - - - - The language of the target object. - - - - - - Enum the mainly used language. - - - - - - Following the system default language. - - - - - - Language in Chinese simplify. - (简体中文) - - - - - - Language in English. - (英语语言) - - - - - - Language in french. - (法语语言) - - - - - - Get the string that store as specific language. - (èŽ·å–æŒ‡å®šè¯­è¨€çš„字符串) - - 字符串的语言 - - - - - - - Get the specific type of custom attribute from a property. - (从一个属性对象中获å–特定的自定义属性对象) - - The type of the custom attribute.(自定义属性的类型) - Target property object.(目标属性对象) - - - - - - Get the specific type of custom attribute from a property. - (从一个属性对象中获å–特定的自定义属性对象) - - The type of the custom attribute.(自定义属性的类型) - Target property object.(目标属性对象) - - - - - - Get the specific type of custom attribute from a property. - (从一个属性对象中获å–特定的自定义属性对象) - - The type of the custom attribute.(自定义属性的类型) - Target property object.(目标属性对象) - - - - - - 日志文件记录模å—. - - - - - - Save the log file into the filesystem. - - - - - - Indicated that write the Error type message to the console screen, this - property will override the WriteToScreen parameter in function when the - message type is Error type. - - - - - - - - Indicated that write the Warn type message to the console screen, this - property will override the WriteToScreen parameter in function when the - message type is Warn type. - - - - - - - - 是å¦é‡‡ç”¨å½©è‰²çš„输出,默认为关闭: - ä¸€èˆ¬çš„æ¶ˆæ¯ - 白色; - è­¦å‘Šçº§åˆ«çš„æ¶ˆæ¯ - 黄色; - é”™è¯¯çº§åˆ«çš„æ¶ˆæ¯ - 红色 - - - - - - - - 没有路径å称和拓展åï¼Œä»…åŒ…å«æœ‰å•独的文件å - - - - - - - - 将时间字符串里é¢çš„":"符å·å޻除之åŽï¼Œå‰©ä½™çš„字符串å¯ä»¥ç”¨äºŽä½œä¸ºè·¯å¾„æ¥ä½¿ç”¨ - - - - - - - - 呿—¥å¿—æ–‡ä»¶ä¹‹ä¸­å†™å…¥æ•°æ® - - - - - - - - - 当这个设置为真之åŽï¼Œç»ˆç«¯å°±ä¸ä¼šå†æœ‰ä»»ä½•的输出了 - - - - - - - - - - This logfile will saved to. - - 当日志的记录数目达到这个数目的时候就会将日志数æ®å†™å…¥åˆ°æ–‡ä»¶ä¹‹ä¸­ - - - - 在进行ä¿å­˜çš„æ—¶å€™ä¼šæ¸…ç©ºå†…å­˜ä¹‹ä¸­çš„çŽ°æœ‰æ—¥å¿—æ•°æ® - - Append this log data into the target log file if the file is exists on the filesystem, default option is override the exists file. - - - - - - - - {[Object] As String, Optional Type As MsgType = MsgType.INF, Optional WriteToScreen As Boolean = True} - - - - - 日志文件在ä¿å­˜çš„æ—¶å€™é»˜è®¤æ˜¯è¿½åŠ çš„æ–¹å¼ - - - - - - - - - ç»™å‡ºç”¨äºŽè°ƒè¯•çš„ç³»ç»Ÿçš„ä¿¡æ¯æ‘˜è¦ - - - - - - - - èµ„æºæ–‡ä»¶çš„æ•°æ®ç¼“存文件夹 - - - - - - 使用 NameOf æ“作符æ¥èŽ·å–èµ„æº - - - - - The path list of the attachments file. - - - - - - The file path of the logo image. - - - - - - 应用程åºçš„完整性验è¯å’Œç”¨æˆ·èº«ä»½çš„éªŒè¯ - - - - - 计算出æ¥çš„哈希值åªèƒ½ä¸ºè´Ÿæ•°ï¼ŒçŽ°åœ¨çº¦å®šï¼Œå½“è¿™ä¸ªå±žæ€§ä¸º0的时候就认为这个è¯ä¹¦æ˜¯å…¬å…±å¯†åŒ™ï¼Œ - è¿™ä¸ªä¸€èˆ¬æ˜¯ä½¿ç”¨ç”¨æˆ·çš„è´¦å·æ‰€è®¡ç®—出æ¥çš„哈希值 - - - - - - 与属性所ä¸åŒçš„æ˜¯ï¼Œè¿™ä¸ªå±žæ€§æ˜¯çš„哈希值, - 通常这个哈希值在请求resultful WebAPI的时候用æ¥ä½œä¸ºç”¨æˆ·çš„唯一标识 - - - - - - 请注æ„这个构造方法会计算一é密ç çš„哈希值,å‡è‹¥éœ€è¦ç›´æŽ¥è¿›è¡Œåˆå§‹åŒ–,请使用方法 - - - - - - - - - - 客户端所å‘é€è¿‡æ¥çš„使用哈希值计算出æ¥çš„唯一标识符 - - - - 从æœåŠ¡å™¨ä¸Šé¢æ‰€è¿”回æ¥çš„æ¡æ‰‹æ•°æ® - - - - - - 这个构造函数ä¸å†è®¡ç®—哈希值而是直接åˆå§‹åŒ– - - 必须是md5哈希值 - - - - ä¸è®¡ç®—哈希值而是直接安装 - - - - - - - - 函数会根æ®uid的值æ¥è®¾å®šåè®®ä¸ºç§æœ‰å¯†åŒ™è¿˜æ˜¯å…¬å…±å¯†åŒ™ - - - - - - - 强制将å议设定为公共密匙加密 - - - - - - - 检查应用程åºçš„完整性 - - - - - - - - 坿‰§è¡Œç¨‹åºçš„æ–‡ä»¶è·¯å¾„ - - - - - 这个模å—åªå¤„ç†ç±»åž‹çš„æŽ¥å£ - - - - - - - Protocol的实例 - - - - 方法 - - - - - - 客户端上é¢çš„类型 - - - - - - 客户端与æœåС噍之间åˆå§‹åŒ–加密连接 - - 客户端的è¯ä¹¦ï¼Œè¿™ä¸ªæ˜¯æœåС噍æ¥è¿›è¡Œå®¢æˆ·ç«¯ç¨‹åºçš„完整性验è¯çš„ - - - - - 抽象SSLæœåС噍 - - - - - 公共密匙 - - - - - - å®¢æˆ·ç«¯çš„ç§æœ‰å¯†åŒ™ - - - - - - 处ç†ç§æœ‰å¯†åŒ™çš„æ•°æ®è¯·æ±‚ - - - - - - 这个数字è¯ä¹¦æ˜¯å½“å‰ç‰ˆæœ¬ä¸‹çš„æœåŠ¡å™¨çš„å®¢æˆ·ç«¯çš„æ•°å­—ç­¾å,æœåŠ¡å™¨ä¼šä½¿ç”¨è¿™ä¸ªè¯ä¹¦æ¥éªŒè¯å®¢æˆ·ç«¯çš„æ–‡ä»¶æ˜¯å¦è¢«æ¶æ„ç ´è§£ - - - - - - - - æœåŠ¡å™¨åœ¨éƒ¨ç½²çš„æ—¶å€™å‘对应版本您的客户端的数字签å - - - - : - Public Delegate Function (str As , - RemoteAddress As ) As - - - - - - : - Public Delegate Function (request As , - RemoteAddress As ) As - - - - - - å®¢æˆ·ç«¯å‘æœåŠ¡å™¨æ‰€å‘é€çš„æ•°æ®è¯·æ±‚ - - - - - å议的头部 - - - - - - å议数æ®çš„长度 - - - - - - å议的具体数æ®è¯·æ±‚ - - - - - - 使用用户的账å·ä¿¡æ¯å”¯ä¸€æ ‡è¯†å‡ºæ¥çš„对象,在æœåŠ¡å™¨ç«¯ç”¨æ¥æŸ¥æ‰¾ç”¨æˆ·è¯ä¹¦çš„ - - - - - - éƒ¨åˆ†çš„æ•°æ®æ˜¯å¦å®Œæ•´ï¼Ÿ - - - - - - Deserialize (当还有剩余数æ®çš„æ—¶å€™ä¼šå°†æ•°æ®è¿›è¡Œå‰ªè£) - - - - - - ç§æœ‰å¯†åŒ™åР坆 - - - - - 公共密匙加密 - - - - - 无效的数字è¯ä¹¦ - - - - - è¿™ä¸ªè¯·æ±‚æ•°æ®æ˜¯ä¸€ä¸ªSSL加密数æ®ï¼ˆä½¿ç”¨ç”¨æˆ·çš„ç§æœ‰å¯†åŒ™ï¼‰ - - - - - - 使用公共密匙 - - - - - - 这个数æ®ä»…ä»…æ˜¯ä¸€ä¸ªæ–‡æœ¬ï¼Œæ²¡æœ‰åŒ…å«æœ‰ä»»ä½•åè®®å¤´æ•°æ® - - - - - - è¿™ä¸ªè¯·æ±‚æ•°æ®æ˜¯å¦ä¸ºæ¡æ‰‹åè®® - - - - - - 系统自带的ä¸èƒ½å¤Ÿè¿›è¡ŒXmlåºåˆ—化 - - - - - - XMLåºåˆ—化所需è¦çš„ - - - - - - - - IPAddress:Port - - - - - http://www.codeproject.com/Tips/358946/Retrieving-IP-and-MAC-addresses-for-a-LAN - - - ' Get my PC IP address - Call Console.WriteLine("My IP : {0}", GetIPAddress()) - - ' Get My PC MAC address - Call Console.WriteLine("My MAC: {0}", GetMacAddress()) - - ' Get all devices on network - Dim all As Dictionary(Of IPAddress, PhysicalAddress) = GetAllDevicesOnLAN() - For Each kvp As KeyValuePair(Of IPAddress, PhysicalAddress) In all - Console.WriteLine("IP : {0}" & vbLf & " MAC {1}", kvp.Key, kvp.Value) - Next - - - - - MIB_IPNETROW structure returned by GetIpNetTable - DO NOT MODIFY THIS STRUCTURE. - - - - - GetIpNetTable external method - - - - - - - - - Error codes GetIpNetTable returns that we recognise - - - - - Get the IP and MAC addresses of all known devices on the LAN - - - 1) This table is not updated often - it can take some human-scale time - to notice that a device has dropped off the network, or a new device - has connected. - 2) This discards non-local devices if they are found - these are multicast - and can be discarded by IP address range. - - - - - - Gets the IP address of the current PC - - - - - - Gets the MAC address of the current PC. - - - - - - Returns true if the specified IP address is a multicast address - - - - - - - http://sub.domain.com/somefolder/index.html -> domain.com - somedomain.info -> somedomain.info - http://anotherdomain.org/home -> anotherdomain.org - www.subdomain.anothersubdomain.maindomain.com/something/ -> maindomain.com - - - - - 顶级域å - - - - - - è§£æžé”™è¯¯ä¼šè¿”回空字符串 - - - - - - - æœåŠ¡å™¨ä¹Ÿç›¸å½“äºŽä¸€ä¸ªUSER,åªä¸è¿‡æœåŠ¡å™¨çš„UID为0ï¼Œå³æœ€é«˜çº§çš„用户 - - - - - - - - - - 使用这个函数æ¥èŽ·å–外部å‘é€è¿‡æ¥çš„ç”¨æˆ·æ¶ˆæ¯ - - - - - 请注æ„,线程会在这里阻塞 - - 远程主机强制关闭连接之åŽè§¦å‘这个动作 - - - - True标识å‘逿ˆåŠŸï¼ŒFalse标识用户离线 - - - 在å‘é€ä¹‹å‰è¯·å¯¹æ¶ˆæ¯è¿›è¡ŒåŠ å¯†å¤„ç† - - - - - 客户端对这个æœåŠ¡å™¨çš„ç«¯å£å·æ˜¯è‡ªåЍé…置的,åªéœ€è¦å‘客户端返回端å£å°±å¯ä»¥äº† - - - - - 从这个端å£å·è¿›è¡Œç™»å½• - - - - - - åªè¦æ˜¯ä¸ºsslæœåŠ¡è®¾ç½®çš„ - - - - - - - 哈希值ä¸å­˜åœ¨äºŽçŽ°æœ‰çš„ç™»å½•ç”¨æˆ·åˆ—è¡¨ä¹‹ä¸­å°±æ˜¯ç©ºé—²è¿žæŽ¥ - - - - - 建立一个新的连接 - - - - - - é•¿è¿žæŽ¥ä¹‹ä¸­åªæ˜¯è¿›è¡Œæ¶ˆæ¯çš„å‘é€å¤„ç† - - - - - DO_NOTHING - - - - - - Server reply the processing result of the request from the client. - - - - - - - - 请注æ„,这个对象是应用于客户端与æœåŠ¡å™¨ä¿æŒé•¿è¿žæŽ¥æ‰€ä½¿ç”¨ï¼Œå¹¶ä¸ä¼šä¸»åЍå‘逿¶ˆæ¯ç»™æœåŠ¡å™¨ï¼Œè€Œæ˜¯è¢«åŠ¨çš„æŽ¥å—æœåŠ¡å™¨çš„æ•°æ®è¯·æ±‚ - - - - - - The port number for the remote device. - - - - - - Remote End Point - - - - - - - - Copy the TCP client connection profile data from this object.(从本客户端对象之中å¤åˆ¶å‡ºè¿žæŽ¥é…ç½®å‚æ•°ä»¥è¿›è¡Œåˆå§‹åŒ–æ“作) - - - - - - - - - Public Delegate Sub ExceptionHandler(ex As Exception) - - - - - åˆå§‹åŒ–一个在本机进行进程间通信的Socket对象 - - - - - - - - - 函数会想æœåŠ¡å™¨ä¸Šé¢çš„socket对象一样在这里å‘生阻塞 - - - - - - 本客户端socket在æœåŠ¡å™¨ä¸Šé¢çš„å“ˆå¸Œå¥æŸ„值 - - - - - - 远程主机强制关闭连接之åŽè§¦å‘这个动作 - - - - - - Read data from the remote device. - - - - - - - - ???? - An exception of type 'System.Net.Sockets.SocketException' occurred in System.dll but was not handled in user code - Additional information: A request to send or receive data was disallowed because the socket is not connected and - (when sending on a datagram socket using a sendto call) no address was supplied - - - - - - - - - - - 一ã€TCP长连接 - - 正常情况下,一æ¡TCP连接建立åŽï¼Œåªè¦åŒä¸æå‡ºå…³é—­è¯·æ±‚并且ä¸å‡ºçŽ°å¼‚å¸¸æƒ…å†µï¼Œè¿™æ¡è¿žæŽ¥æ˜¯ä¸€ç›´å­˜åœ¨çš„, - æ“作系统ä¸ä¼šè‡ªåŠ¨åŽ»å…³é—­å®ƒï¼Œç”šè‡³ç»è¿‡ç‰©ç†ç½‘络拓扑的改å˜ä¹‹åŽä»ç„¶å¯ä»¥ä½¿ç”¨ã€‚ - 所以一æ¡è¿žæŽ¥ä¿æŒå‡ å¤©ã€å‡ ä¸ªæœˆã€å‡ å¹´æˆ–者更长时间都有å¯èƒ½ï¼Œåªè¦ä¸å‡ºçŽ°å¼‚å¸¸æƒ…å†µæˆ–ç”±ç”¨æˆ·ï¼ˆåº”ç”¨å±‚ï¼‰ä¸»åŠ¨å…³é—­ã€‚ - 在编程中, 往往需è¦å»ºç«‹ä¸€æ¡TCP连接, 并且长时间处于连接状æ€ã€‚ - 所谓的TCP长连接并没有确切的时间é™åˆ¶ï¼Œ 而是说这æ¡è¿žæŽ¥éœ€è¦çš„æ—¶é—´æ¯”较长。 - - 二ã€TCP连接的正常中断 - - TCP连接在事务处ç†å®Œæ¯•之åŽï¼Œ 由一方æå‡ºå…³é—­è¿žæŽ¥è¯·æ±‚, åŒæ–¹é€šè¿‡å››æ¬¡æ¡æ‰‹ï¼ˆå»ºç«‹è¿žæŽ¥æ˜¯ä¸‰æ¬¡æ¡æ‰‹ï¼Œ - 当然å¯ä»¥é€šè¿‡ä¼˜åŒ–TCP / IPå议栈æ¥å‡å°‘æ¡æ‰‹çš„æ¬¡æ•°æ¥æé«˜æ€§èƒ½ï¼Œ 但这样会形æˆä¸è§„范或者ä¸ä¼˜é›…çš„é€šä¿¡ï¼‰æ¥æ­£å¸¸å…³é—­è¿žæŽ¥ - - 三ã€TCP连接的异常中断 - - 导致TCP连接异常中断的因素有: 物ç†è¿žæŽ¥è¢«ä¸­æ–­ã€æ“作系统down机ã€ç¨‹åºå´©æºƒç­‰ç­‰ã€‚ - - - - - Socket对象监å¬çš„端å£å· - - - - - - The server services listening on this local port.(当å‰çš„这个æœåŠ¡å™¨å¯¹è±¡å®žä¾‹æ‰€ç›‘å¬çš„æœ¬åœ°ç«¯å£å·) - - - - - - - - 消æ¯å¤„ç†çš„æ–¹æ³•接å£ï¼š Public Delegate Function DataResponseHandler(str As String, RemotePort As Integer) As String - - 监å¬çš„æœ¬åœ°ç«¯å£å·ï¼Œå‡è‹¥éœ€è¦è¿›è¡Œç«¯å£æ˜ å°„çš„è¯ï¼Œåˆ™å¯ä»¥åœ¨æ–¹æ³•之中设置映射的端å£å· - - - - - 函数返回Socket的注销方法 - - - - - - - - - This server waits for a connection and then uses asychronous operations to - accept the connection, get data from the connected client, - echo that data back to the connected client. - It then disconnects from the client and waits for another client.(请注æ„,当æœåŠ¡å™¨çš„ä»£ç è¿è¡Œåˆ°è¿™é‡Œä¹‹åŽï¼Œä»£ç å°†è¢«é˜»å¡žåœ¨è¿™é‡Œ) - - - - - - This server waits for a connection and then uses asychronous operations to - accept the connection, get data from the connected client, - echo that data back to the connected client. - It then disconnects from the client and waits for another client.(请注æ„,当æœåŠ¡å™¨çš„ä»£ç è¿è¡Œåˆ°è¿™é‡Œä¹‹åŽï¼Œä»£ç å°†è¢«é˜»å¡žåœ¨è¿™é‡Œ) - - - - - - Bind the socket to the local endpoint and listen for incoming connections. - - - - - - 退出监å¬çº¿ç¨‹æ‰€éœ€è¦çš„ - - - - - - Stop the server socket listening threads.(终止æœåС噍Socket监å¬çº¿ç¨‹) - - - - - - http://www.codeproject.com/Articles/18635/Ping-exe-replica-in-C - - Ping.exe replica in C# 2.0 - - Stefan Prodan, 3 May 2007 CPOL - Usage example of the System.Net.NetworkInformation.Ping. - - - - - - 返回与目标远程机器之间的平å‡é€šä¿¡æ—¶é—´é•¿åº¦ - - - - - - - - Socket listening object which is running at the server side asynchronous able multiple threading. - (è¿è¡ŒäºŽæœåŠ¡å™¨ç«¯ä¸Šé¢çš„Socket监å¬å¯¹è±¡ï¼Œå¤šçº¿ç¨‹æ¨¡åž‹) - - - - - - Socket对象监å¬çš„端å£å· - - - - - - The server services listening on this local port.(当å‰çš„这个æœåŠ¡å™¨å¯¹è±¡å®žä¾‹æ‰€ç›‘å¬çš„æœ¬åœ°ç«¯å£å·) - - - - - - - - This function pointer using for the data request handling of the data request from the client socket. - (è¿™ä¸ªå‡½æ•°æŒ‡é’ˆç”¨äºŽå¤„ç†æ¥è‡ªäºŽå®¢æˆ·ç«¯çš„请求) - - - - - - 消æ¯å¤„ç†çš„æ–¹æ³•接å£ï¼š Public Delegate Function DataResponseHandler(str As String, RemotePort As Integer) As String - - 监å¬çš„æœ¬åœ°ç«¯å£å·ï¼Œå‡è‹¥éœ€è¦è¿›è¡Œç«¯å£æ˜ å°„çš„è¯ï¼Œåˆ™å¯ä»¥åœ¨æ–¹æ³•之中设置映射的端å£å· - - - - - 函数返回Socket的注销方法 - - Public Delegate Function DataResponseHandler(str As String, RemotePort As Integer) As String - - - - - - - - This server waits for a connection and then uses asychronous operations to - accept the connection, get data from the connected client, - echo that data back to the connected client. - It then disconnects from the client and waits for another client.(请注æ„,当æœåŠ¡å™¨çš„ä»£ç è¿è¡Œåˆ°è¿™é‡Œä¹‹åŽï¼Œä»£ç å°†è¢«é˜»å¡žåœ¨è¿™é‡Œ) - - - - - - This server waits for a connection and then uses asychronous operations to - accept the connection, get data from the connected client, - echo that data back to the connected client. - It then disconnects from the client and waits for another client.(请注æ„,当æœåŠ¡å™¨çš„ä»£ç è¿è¡Œåˆ°è¿™é‡Œä¹‹åŽï¼Œä»£ç å°†è¢«é˜»å¡žåœ¨è¿™é‡Œ) - - - - - - All the data has been read from the client. Display it on the console. - Echo the data back to the client. - - - - - - - Server reply the processing result of the request from the client. - - - - - - - - Server encounter an internal exception during processing the data request from the remote device. - (æœåŠ¡å™¨åœ¨å¤„ç†å¤–部远程设备的数æ®è¯·æ±‚的时候å‘生内部错误) - - - - - - SERVER_INTERNAL_EXCEPTION,Server encounter an internal exception during processing - the data request from the remote device. - (åˆ¤æ–­æ˜¯å¦æœåŠ¡å™¨åœ¨å¤„ç†å®¢æˆ·ç«¯çš„请求的时候,å‘生了内部错误) - - - - - - - - 退出监å¬çº¿ç¨‹æ‰€éœ€è¦çš„ - - - - - - Stop the server socket listening threads.(终止æœåС噍Socket监å¬çº¿ç¨‹) - - - - - - -1标识Pingä¸é€š - - ms - - - - - 消æ¯å¤„ç†çš„æ–¹æ³• - - 远程设备所å‘é€è¿‡æ¥çš„æ¶ˆæ¯ - è¿œç¨‹è®¾å¤‡çš„ç½‘ç»œè¿žæŽ¥å‚æ•° - - - - - - 处ç†é”™è¯¯çš„å·¥ä½œé€»è¾‘çš„æŠ½è±¡æŽ¥å£ - - Socketçš„å†…éƒ¨é”™è¯¯ä¿¡æ¯ - - - - - State object for reading client data asynchronously - - - - - - Client socket. - - - - - - Size of receive buffer. - - - - - - Receive buffer. - - - - - - Received data. - - - - - - å‡è‹¥ä¸èƒ½æˆåŠŸçš„å»ºç«‹èµ·è¿žæŽ¥çš„è¯ï¼Œåˆ™ä¼šæŠ›å‡ºé”™è¯¯ - - - - - - - - - Get the first available TCP port on this local machine.(获å–第一个å¯ç”¨çš„端å£å·) - - Check the local port available from this port value.(从这个端å£å¼€å§‹æ£€æµ‹) - - - - - èŽ·å–æ“作系统已用的端å£å· - - - - - - æ£€æŸ¥æŒ‡å®šç«¯å£æ˜¯å¦å·²ç”¨ - - - - - - - Socket listening object which is running at the server side asynchronous able multiple threading. - (è¿è¡ŒäºŽæœåŠ¡å™¨ç«¯ä¸Šé¢çš„Socket监å¬å¯¹è±¡ï¼Œå¤šçº¿ç¨‹æ¨¡åž‹) - - - - - - The server services listening on this local port.(当å‰çš„这个æœåŠ¡å™¨å¯¹è±¡å®žä¾‹æ‰€ç›‘å¬çš„æœ¬åœ°ç«¯å£å·) - - - - - - - - This server waits for a connection and then uses asychronous operations to - accept the connection, get data from the connected client, - echo that data back to the connected client. - It then disconnects from the client and waits for another client.(请注æ„,当æœåŠ¡å™¨çš„ä»£ç è¿è¡Œåˆ°è¿™é‡Œä¹‹åŽï¼Œä»£ç å°†è¢«é˜»å¡žåœ¨è¿™é‡Œ) - - - - - - This server waits for a connection and then uses asychronous operations to - accept the connection, get data from the connected client, - echo that data back to the connected client. - It then disconnects from the client and waits for another client.(请注æ„,当æœåŠ¡å™¨çš„ä»£ç è¿è¡Œåˆ°è¿™é‡Œä¹‹åŽï¼Œä»£ç å°†è¢«é˜»å¡žåœ¨è¿™é‡Œ) - - - - - - This function pointer using for the data request handling of the data request from the client socket. - (è¿™ä¸ªå‡½æ•°æŒ‡é’ˆç”¨äºŽå¤„ç†æ¥è‡ªäºŽå®¢æˆ·ç«¯çš„请求) - - - - - - The server socket should returns some data string to this client or this client will stuck at the function. - (æœåŠ¡å™¨ç«¯å¿…é¡»è¦è¿”回数æ®ï¼Œå¦åˆ™æœ¬å®¢æˆ·ç«¯ä¼šåœ¨å‡½æ•°ä½ç½®ä¸€ç›´å¤„于等待的状æ€) - - - - - - The port number for the remote device. - - - - - - The response from the remote device. - - - - - - ' ManualResetEvent instances signal completion. - - - - - - Remote End Point - - - - - - Gets the IP address of this local machine. - (èŽ·å–æœ¬æœºå¯¹è±¡çš„IP地å€ï¼Œè¯·æ³¨æ„这个属性获å–得到的仅仅是本机在局域网内的ip地å€ï¼Œå‡è‹¥éœ€è¦èŽ·å–得到公网IP地å€ï¼Œè¿˜éœ€è¦å¤–部æœåŠ¡å™¨çš„å¸®åŠ©æ‰è¡Œ) - - - - - - - - - - Copy the TCP client connection profile data from this object.(从本客户端对象之中å¤åˆ¶å‡ºè¿žæŽ¥é…ç½®å‚æ•°ä»¥è¿›è¡Œåˆå§‹åŒ–æ“作) - - - - - - - - - Public Delegate Sub ExceptionHandler(ex As Exception) - - - - - åˆå§‹åŒ–一个在本机进行进程间通信的Socket对象 - - - - - - - - - 判断æœåŠ¡å™¨æ‰€è¿”å›žæ¥çš„æ•°æ®æ˜¯å¦ä¸ºæ“作超时 - - - - - - - - Returns the server reply.(å‡è‹¥æ“作超时的è¯ï¼Œåˆ™ä¼šè¿”回) - - - æ“作超时的时间长度,默认为30ç§’ - - - - - - This function returns the server reply for this request . - - The client request to the server. - - - - - - 最底层的消æ¯å‘é€å‡½æ•° - - - - - - - ???? - An exception of type 'System.Net.Sockets.SocketException' occurred in System.dll but was not handled in user code - Additional information: A request to send or receive data was disallowed because the socket is not connected and - (when sending on a datagram socket using a sendto call) no address was supplied - - - - - - - - A client of gmail.com - - - - - - - - 标题 - 内容 - æ”¶ä»¶äººåœ°å€ - - - - - Gmail - - - - - - - - - 存储至文件之å‰è¯·å…ˆåР坆 - - - - - - Creating Zip Files Easily in .NET 4.5 - Tim Corey, 11 May 2012 - http://www.codeproject.com/Articles/381661/Creating-Zip-Files-Easily-in-NET - - - - - - Used to specify what our overwrite policy - is for files we are extracting. - - - - - Used to identify what we will do if we are - trying to create a zip file and it already - exists. - - - - - Unzips the specified file to the given folder in a safe - manner. This plans for missing paths and existing files - and handles them gracefully. - - - The name of the zip file to be extracted - - - The directory to extract the zip file to - - - Specifies how we are going to handle an existing file. - The default is IfNewer. - - - - - Safely extracts a single file from a zip file - - - The zip entry we are pulling the file from - - - The root of where the file is going - - - Specifies how we are going to handle an existing file. - The default is Overwrite.IfNewer. - - - - - Allows you to add files to an archive, whether the archive - already exists or not - - - The name of the archive to you want to add your files to - - - A set of file names that are to be added - - - Specifies how we are going to handle an existing archive - - - Specifies what type of compression to use - defaults to Optimal - - - - - Summary description for StringMatcher. - - - - - - Summary description for Tokeniser. - Partition string off into subwords - - - - - Summary description for Leven. - - - - - Summary description for IEditDistance. - - - - - Summary description for StringMatcher. - - - - - - (dd hh:mm:ss) 输出å¯ä»¥è¢«MySQLæ•°æ®åº“æ‰€è¯†åˆ«çš„å­—ç¬¦ä¸²æ ¼å¼ - - - - - - - Download by http://www.codefans.net - - - - - - Chang the bitmap to gray bitmap in hdc. - - - - - - - - - - - - Provides detailed information about the host operating system. - - - - - Determines if the current application is 32 or 64-bit. - - - - - Determines if the current processor is 32 or 64-bit. - - - - - Gets the edition of the operating system running on this computer. - - - - - Linux/MAC - - - - - Windows 3.1 - - - - - Windows CE - - - - - Windows 95 OSR2 - - - - - Windows 95 - - - - - Windows 98 Second Edition - - - - - Windows 98 - - - - - Windows Me - - - - - Windows NT 3.51 - - - - - Windows NT 4.0 - - - - - Windows NT 4.0 Server - - - - - Windows 2000 - - - - - Windows XP - - - - - Windows Server 2003 - - - - - Windows Vista - - - - - Windows Server 2008 - - - - - Windows 7 - - - - - Windows Server 2008 R2 - - - - - Windows 8 - - - - - Windows Server 2012 - - - - - Gets the name of the operating system running on this computer. - - - - - Gets the service pack information of the operating system running on this computer. - - - - - Gets the build version number of the operating system running on this computer. - - - - - Gets the full version string of the operating system running on this computer. - - - - - Gets the full version of the operating system running on this computer. - - - - - Gets the major version number of the operating system running on this computer. - - - - - Gets the minor version number of the operating system running on this computer. - - - - - Gets the revision version number of the operating system running on this computer. - - - - - ä¸åšä»»ä½•ä½ç½®çš„设置æ“作 - - - - - - 默认ä½ç½®æ˜¯æŽ§ä»¶çš„中间 - - - - - - - - - Ngen.exe (Native Image Generator) - - The Native Image Generator (Ngen.exe) is a tool that improves the performance of managed applications. - Ngen.exe creates native images, which are files containing compiled processor-specific machine code, - and installs them into the native image cache on the local computer. The runtime can use native images - from the cache instead of using the just-in-time (JIT) compiler to compile the original assembly. - - Changes To Ngen.exe In the .NET Framework 4 - Ngen.exe now compiles assemblies With full trust, And code access security (CAS) policy Is no longer evaluated. - Native images that are generated With Ngen.exe can no longer be loaded into applications that are running In Partial trust. - - Changes To Ngen.exe In the .NET Framework version 2.0: - Installing an assembly also installs its dependencies, simplifying the syntax Of Ngen.exe. - Native images can now be Shared across application domains. - A New Action, update, re - creates images that have been invalidated. - Actions can be deferred For execution by a service that uses idle time On the computer To generate And install images. - Some causes Of image invalidation have been eliminated. - - - 1.7 Native代ç äº§ç”Ÿå™¨: NGen.exe - - éš.NET Frameworkå‘布的NGen.exe工具å¯ä»¥å°†IL代ç ç¼–译æˆnative代ç , 当应用程åºå®‰è£…在用户的机器上时. å› ä¸ºä»£ç æ˜¯åœ¨å®‰è£…的时候编译的, CLRçš„JIT编译器ä¸éœ€è¦åœ¨è¿è¡Œæ—¶åˆ»ç¼–译ILä»£ç  - 这能æé«˜åº”用程åºçš„æ€§èƒ½. NGen.exe工具在下é¢ä¸¤ä¸ªåœºåˆå¾ˆæœ‰è¶£: - - æé«˜äº†åº”用程åºçš„å¯åŠ¨é€Ÿåº¦ è¿è¡ŒNGen.exe能æé«˜å¯åŠ¨é€Ÿåº¦, 因为代ç å·²ç»ç¼–译æˆnative代ç , 所以在è¿è¡Œæ—¶å°±ä¸éœ€è¦ç¼–译了 - å‡å°‘应用程åºçš„工作集 如果你认为一个程åºé›†ä¼šè¢«åŒæ—¶è½½å…¥åˆ°å¤šä¸ªè¿›ç¨‹/ Appdomain, 在这个程åºé›†ä¸Šè¿è¡ŒNGen.exe能å‡å°‘应用程åºçš„工作集, 其原因是NGen.exe工具将IL编译æˆnative代ç , - ç„¶åŽå°†è¾“出ä¿å­˜åˆ°å•独的文件中, è¿™ä¸ªæ–‡ä»¶èƒ½åŒæ—¶è¢«å†…存映射(memory - mapping)到多个进程地å€ç©ºé—´ä¸­, å…许代ç å…±äº«, æ¯ä¸ªè¿›ç¨‹ / AppDomainä¸å¿…为自己拷è´ä¸€ä»½ä»£ç  - - 当一个安装程åºè°ƒç”¨NGen.exeå¯¹ä¸€ä¸ªåº”ç”¨ç¨‹åºæˆ–程åºé›†è¿›è¡Œç¼–译时, 那个应用程åºçš„æ‰€æœ‰ç¨‹åºé›†æˆ–者一个特定的程åºé›†ä¼šæŠŠå…¶IL代ç ç¼–译æˆnative代ç , 一个新的åªåŒ…å«native代ç è€Œä¸å«æœ‰IL的程åºé›†æ–‡ä»¶ä¼šè¢«NGen.exe创建. - 这个新的文件被放到å字类似于 C: /Windows/Assembly/NativeImages_v2.0.50727_32的文件夹下é¢, 这个文件家å字包å«äº†CLR的版本和nativeä»£ç æ˜¯å¦æ˜¯ä¸ºx86(32ä½ç‰ˆæœ¬çš„Windows), x64, - 或者Itaninum(64ä½ç‰ˆæœ¬çš„Windows)编译的信æ¯. - - 现在, 当CLR载入一个程åºé›†æ–‡ä»¶æ—¶, CLR查看对应的NGen native文件是å¦å­˜åœ¨, 如果没å‘现native文件, CLR JIT对IL代ç åƒé€šå¸¸é‚£æ ·è¿›è¡Œç¼–译. - 然而, 如果对应的native文件存在, CLR将使用native文件中的编译好的代ç , 文件中的函数就ä¸éœ€è¦åœ¨è¿è¡Œæ—¶åˆ»ç¼–译了. - - 在表é¢ä¸Š, è¿™å¬èµ·æ¥éžå¸¸å¥½, å¬ä¸Šå޻就åƒå¦‚果你得到了托管代ç çš„全部优点(垃圾回收, 代ç éªŒè¯, 类型安全, 等等)而ä¸ç‰ºç‰²æ‰˜ç®¡ä»£ç çš„æ€§èƒ½(JIT编译), - ä½†æ˜¯å®žé™…æƒ…å†µå¹¶ä¸æ€»æ˜¯é‚£ä¹ˆç¾Žå¥½, NGen'd文件有几个潜在的问题: - - 没有知识产æƒä¿æŠ¤ 很多人以为å¯ä»¥å‘布NGen文件而ä¸ç”¨å‘布包å«åŽŸå§‹IL代ç çš„æ–‡ä»¶, ä»Žè€Œä½¿ä»–ä»¬çš„çŸ¥è¯†äº§æƒæ›´åŠ ä¿å¯† - ä¸å¹¸çš„æ˜¯, 这并ä¸å¯è¡Œ, 在è¿è¡Œæ—¶åˆ», CLR需è¦è®¿é—®ç¨‹åºé›†çš„metadata(为æŸäº›å‡½æ•°, 例如å射和串行化函数), 这需è¦å‘布包å«ILå’Œmetadata的程åºé›†. - 此外, 如果由于æŸç§åŽŸå› , CLRä¸èƒ½ä½¿ç”¨NGen文件(如䏋颿‰€æè¿°çš„), 那么CLR会回到JIT编译, 对程åºé›†çš„IL代ç è¿›è¡Œç¼–译, å› æ­¤IL代ç å¿…须存在. - - NGen文件å¯èƒ½ä¼šè¿‡æ—¶ 当CLR载入NGen文件时, 它会比较以å‰ç¼–译的代ç å’Œå½“å‰çš„æ‰§è¡ŒçŽ¯å¢ƒçš„å¾ˆå¤šç‰¹å¾, 如果任何特å¾ä¸åŒ¹é…, NGen文件就ä¸èƒ½è¢«ä½¿ç”¨, JIT编译器进程就è¦ä½¿ç”¨. 这是必须被匹é…的部分特å¾åˆ—表. - - 程åºé›†æ¨¡å—的版本ID(MVID) - 被引用的程åºé›†çš„版本ID - 处ç†å™¨ç±»åž‹ - CLR版本 - Build类型(release, debug, optimized debug, profiling, 等等) - - æ‰€æœ‰é“¾æŽ¥æ—¶çš„å®‰å…¨æ€§è¦æ±‚都必须在è¿è¡Œæ—¶åˆ»è¢«æ»¡è¶³æ‰èƒ½å…许载入. - - æ³¨æ„æœ‰å¯èƒ½ä»¥å‡çº§çš„æ–¹å¼è¿è¡ŒNGen.exe, è¿™å‘Šè¯‰å·¥å…·å¯¹ä»¥å‰æ›¾ç»è¢«æ‰§è¡ŒNGen'd的所有的程åºé›†ä¸Šè¿è¡ŒNGen.exe. 当终端用户安装.NET Framework的一个新service pack, - 那么service pack的安装程åºå°†ä¼šåœ¨æ›´æ–°æ¨¡å¼ä¸‹è‡ªåЍè¿è¡ŒNGen.exe, 使得NGenæ–‡ä»¶ä¿æŒå’ŒCLR的版本一致. - - 较差的载入时性能(é‡å®šä½/绑定): 程åºé›†æ–‡ä»¶æ˜¯æ ‡å‡†çš„Windows PE文件, æ¯ä¸ªæ–‡ä»¶åŒ…å«ç€ä¸€ä¸ªä¼˜å…ˆä½¿ç”¨çš„基地å€. 很多Windowså¼€å‘者对围绕基地å€å’Œé‡å®šä½çš„问题很熟悉, - 关于这个主题的更多信æ¯, å¯ä»¥å‚考我的书 programming Applications for Microsoft Windows, 4th Edition. 当JITç¼–è¯‘ä»£ç æ—¶, ä¸å¿…关心这些问题, 因为正确的内存地å€å¼•用会在è¿è¡Œæ—¶è®¡ç®—出æ¥. - - 然而, NGen的程åºé›†æ–‡ä»¶çš„一些内存地å€å¼•ç”¨æ˜¯é™æ€è®¡ç®—çš„, 当Windows加载一个NGen文件时, 它检查文件是å¦è¢«è½½å…¥åˆ°ä¼˜å…ˆçš„基地å€ä¸Š, 如果文件没有载入到优先的基地å€, - Windowsä¼šé‡æ–°å®šä½æ–‡ä»¶, 修改所有内存地å€å¼•用. 这是æžå…¶è€—æ—¶çš„, 因为Windows必须载入整个文件, 并修改文件中的很多字节. 此外, è¿™ä¸ªé¡µé¢æ–‡ä»¶å¯¹åº”的代ç ä¸èƒ½è·¨è¿›ç¨‹è¾¹ç•Œå…±äº«. - - 因此如果你打算NGen程åºé›†æ–‡ä»¶, 你应该为你的程åºé›†æ–‡ä»¶é€‰æ‹©å¥½çš„基地å€(通过csc.exeçš„ / baseaddress命令行开关).当你NGen一个程åºé›†æ–‡ä»¶æ—¶, NGen文件将被赋予一个基地å€, - 这需è¦ä½¿ç”¨ä¸€ä¸ªåŸºäºŽæ‰˜ç®¡ç¨‹åºé›†åŸºåœ°å€çš„算法. ä¸å¹¸çš„æ˜¯, 微软从没有一个良好的指导æ¥å¸®åЩ开å‘者如何赋予基地å€. 在64ä½ç‰ˆæœ¬çš„Windows上, 这还ä¸å¤ªä¼šæˆä¸ºé—®é¢˜, 因为地å€ç©ºé—´æ˜¯å¾ˆå……足的, - 但是对于一个32ä½çš„地å€ç©ºé—´, 为æ¯ä¸€ä¸ªç¨‹åºé›†é€‰æ‹©ä¸€ä¸ªå¥½çš„基地å€å‡ ä¹Žæ˜¯ä¸å¯èƒ½çš„, 除éžä½ ç²¾ç¡®åœ°çŸ¥é“什么东西会被载入到进程, 知é“那个程åºé›†çš„大å°ä¸ä¼šè¶…过åŽä¸€ä¸ªç‰ˆæœ¬. - - 较差的执行时性能 å½“ç¼–è¯‘ä»£ç æ—¶, NGen对执行环境åšå‡ºçš„å‡è®¾ä¸ä¼šæ¯”JIT编译器的多, 这会造æˆNGen.exe产生较差的代ç , 例如, NGenä¸èƒ½ä¼˜åŒ–一些CPU指令, 坹陿€å­—段的访问需è¦ç®€ä»‹çš„æ“ä½œ, - å› ä¸ºé™æ€å­—段实际的地å€éœ€è¦åœ¨è¿è¡Œæ—¶åˆ»æ‰èƒ½çŸ¥é“.NGen到处æ’å…¥ä»£ç æ¥è°ƒç”¨ç±»çš„æž„造函数, 因为它ä¸çŸ¥é“ä»£ç æ‰§è¡Œçš„æ¬¡åº, ä¸çŸ¥é“类的构造憾事是å¦å·²ç»è¢«è°ƒç”¨äº†(è§ç¬¬8ç« , 类的构造函数). - 一些NGen应用程åºä¼šæ¯”JITç¼–è¯‘çš„ä»£ç æ…¢å¤§çº¦5%, å› æ­¤, 如果你打算使用NGenæ¥æé«˜åº”ç”¨ç¨‹åºçš„æ€§èƒ½, 你应该对比NGen’då’ŒéžNGen’d版本的应用程åº, 确定NGen’dç‰ˆæœ¬åœ¨å®žé™…æ‰§è¡Œæ—¶å¹¶ä¸æ…¢. - 对于一些应用程åº, å‡å°çš„工作集大å°ä¼šæé«˜æ€§èƒ½, å› æ­¤NGen总体上还是会å–胜. - - 因为上é¢åˆ—出的所有问题, 当考虑使用NGen.exeæ—¶, 你应该éžå¸¸å°å¿ƒ.对于æœåŠ¡å™¨ç«¯çš„åº”ç”¨ç¨‹åºæ¥è¯´, NGen.exe的用处很å°ç”šè‡³æ²¡æœ‰æ„义, å› ä¸ºåªæœ‰ç¬¬ä¸€ä¸ªå®¢æˆ·éœ€æ±‚ç»åŽ†äº†æ€§èƒ½ä¸Šçš„ä¸‹é™, - åŽé¢çš„客户需求都是高速è¿è¡Œçš„.此外, 对于大多数æœåŠ¡å™¨åº”ç”¨ç¨‹åº, åªéœ€è¦ä»£ç çš„一个实例, 因此没有工作集方é¢çš„利益. - - 对于客户端应用程åº, NGen.exeå¯èƒ½å¯¹äºŽæé«˜å¯åŠ¨é€Ÿåº¦æˆ–è€…å‡å°å·¥ä½œé›†æœ‰å¸®åŠ©, 如果程åºé›†è¢«å¤šä¸ªåº”用程åºåŒæ—¶ä½¿ç”¨.甚至没有多个应用程åºä½¿ç”¨ä¸€ä¸ªç¨‹åºé›†, NGen一个程åºé›†ä¹Ÿä¼šæé«˜å·¥ä½œé›†. - 此外, 如果NGen.exe被用于所有的客户端应用程åºçš„程åºé›†, 那么CLR就根本ä¸éœ€è¦è½½å…¥JIT编译器, 从而更进一步地é™ä½Žäº†å·¥ä½œé›†. - 当然, å¦‚æžœåªæœ‰ä¸€ä¸ªç¨‹åºé›†ä¸æ˜¯NGen'd或者如果一个程åºé›†çš„NGen文件ä¸èƒ½è¢«ä½¿ç”¨, JIT编译器就会被载入, 应用程åºçš„工作集将会增加. - - - - - Generate native images that can be used under a debugger. - - - - - Generate native images that can be used under a profiler. - - - - - Generate the minimum number Of native images required by the specified scenario options. - - - - - 1 Native images are generated And installed immediately, without waiting For idle time. - - - - - 2 Native images are generated And installed without waiting For idle time, but after all priority 1 actions (And their dependencies) have completed. - - - - - 3 Native images are installed When the native image service detects that the computer Is idle. See Native Image Service. - - - - - Generate native images for an assembly and its dependencies and install the images in the native image cache. - - - The full display name of the assembly. For example, "myAssembly, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0038abc9deabfle5". - Only one assembly can be specified per Ngen.exe command line. - - * Note You can supply a Partial assembly name, such As myAssembly, For the display And uninstall actions. - - The explicit path of the assembly. You can specify a full or relative path. - If you specify a file name without a path, the assembly must be located In the current directory. - Only one assembly can be specified per Ngen.exe command line. - - - exePath, Use the configuration of the specified executable assembly. - Ngen.exe needs to make the same decisions as the loader when binding to dependencies. When a shared component Is loaded at run time, - using the Load method, the application's configuration file determines the dependencies that are loaded for the shared component — - for example, the version of a dependency that is loaded. The /ExeConfig switch gives Ngen.exe guidance on which dependencies would be loaded at run time. - directoryPath, When locating dependencies, use the specified directory as the application base. - If /queue is specified, the action is queued for the native image service. The default priority is 3. See the Priority Levels table. - - - - Delete the native images of an assembly and its dependencies from the native image cache. - To uninstall a single image And its dependencies, use the same command-line arguments that were used to install the image. - - Note In the .NET Framework 4, the action uninstall * Is no longer supported. - - - The full display name of the assembly. For example, "myAssembly, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0038abc9deabfle5". - Only one assembly can be specified per Ngen.exe command line. - - * Note You can supply a Partial assembly name, such As myAssembly, For the display And uninstall actions. - - The explicit path of the assembly. You can specify a full or relative path. - If you specify a file name without a path, the assembly must be located In the current directory. - Only one assembly can be specified per Ngen.exe command line. - - - exePath, Use the configuration of the specified executable assembly. - Ngen.exe needs to make the same decisions as the loader when binding to dependencies. When a shared component Is loaded at run time, - using the Load method, the application's configuration file determines the dependencies that are loaded for the shared component — - for example, the version of a dependency that is loaded. The /ExeConfig switch gives Ngen.exe guidance on which dependencies would be loaded at run time. - directoryPath, When locating dependencies, use the specified directory as the application base. - - - - Update native images that have become invalid. - If /queue Is specified, the updates are queued For the native image service. Updates are always scheduled at priority 3, so they run When the computer Is idle. - - - - - - Display the state of the native images for an assembly and its dependencies. - If no argument Is supplied, everything In the native image cache Is displayed. - - - - - - Execute queued compilation jobs. - If a priority Is specified, compilation jobs With greater Or equal priority are executed. - If no priority Is specified, all queued compilation jobs are executed. - - - - - - Pause the native image service, allow the paused service to continue, or query the status of the service. - - - - - Pause the native image service - - - - - allow the paused service to continue - - - - - query the status of the service. - - - - - 将当å‰ç›®å½•下的所有的.NET程åºéƒ½è¿›è¡Œå®‰è£… - - - - - Derives a SHA256 key from a password using an extension of the PBKDF1 algorithm. - - - - - - - - - 8 Bytes - - - - 字符串的解密方法 - - - - - - - - Encrypt the plain text string. - - - - - - - The previous key of the sha256 encryption will be expired after the rebuild of this module, - so that this method is not working on the statics data storage job. - (在本模å—è¿›è¡Œé‡æ–°ç¼–译之åŽï¼ŒåŽŸæœ‰çš„å¯†åŒ™å°†ä¼šå¤±æ•ˆï¼Œæ•…è¿™ä¸ªå±žæ€§ä¸é€‚åˆäºŽé™æ€å­˜å‚¨åŠ å¯†ä½¿ç”¨) - - - - - - - - åŒé‡åŠ¨æ€æ•°æ®ç­¾å - - - - - - - - åŒé‡åŠ¨æ€æ•°æ®ç­¾å - - - - - - - 并行化的需求 - - - - - - Verify a hash against a string. - - - - - - - - - 校验两个文件的哈希值是å¦ä¸€è‡´ - - - - - - - - - Get the md5 hash calculation value for a specific file.(èŽ·å–æ–‡ä»¶å¯¹è±¡çš„哈希值,请注æ„,当文件ä¸å­˜åœ¨æˆ–者文件的长度为零的时候,会返回空字符串) - - The file path of the target file to be calculated. - - - - - - - - 24byte - 8byte - - - - - The returns value of TRUE represent of the target operation has been time out.(返回真,表示æ“作超时) - - - - - - The time unit of this parameter is second.(å•ä½ä¸ºç§’) - - - - - - - - - - - The time unit of this parameter is second.(å•ä½ä¸ºç§’) - - - - - - - - The time unit of this parameter is second.(å•ä½ä¸ºç§’) - - - - - 类似于任务管ç†å™¨çš„函数:Memory, CPU, ProcessName, PID, CommandLine - - Memory, CPU - - - - - 获å–CPU的使用率 - - - - - - - - - - åŒæ—¶æ‰§è¡Œçš„奿Ÿ„的数目 - - - - - - Define tree nodes - - - - - - The Binary tree itself. - - A very basic Binary Search Tree. Not generalized, stores - name/value pairs in the tree nodes. name is the node key. - The advantage of a binary tree is its fast insert and lookup - characteristics. This version does not deal with tree balancing. - - - - - - Points to the root of the tree - - - - - - Clear the binary tree. - - - - - Returns the number of nodes in the tree - - Number of nodes in the tree - - - - Find name in tree. Return a reference to the node - if symbol found else return null to indicate failure. - - Name of node to locate - Returns null if it fails to find the node, else returns reference to node - - - - Add a symbol to the tree if it's a new one. Returns reference to the new - node if a new node inserted, else returns null to indicate node already present. - - Name of node to add to tree - Value of node - Returns reference to the new node is the node was inserted. - If a duplicate node (same name was located then returns null - - - - Find the next ordinal node starting at node startNode. - Due to the structure of a binary search tree, the - successor node is simply the left most node on the right branch. - - Name key to use for searching - Returns the parent node if search successful - Returns a reference to the node if successful, else null - - - - Delete a given node. This is the more complex method in the binary search - class. The method considers three senarios, 1) the deleted node has no - children; 2) the deleted node as one child; 3) the deleted node has two - children. Case one and two are relatively simple to handle, the only - unusual considerations are when the node is the root node. Case 3) is - much more complicated. It requires the location of the successor node. - The node to be deleted is then replaced by the sucessor node and the - successor node itself deleted. Throws an exception if the method fails - to locate the node for deletion. - - Name key of node to delete - - - - Return the tree depicted as a simple string, useful for debugging, eg - 50(40(30(20, 35), 45(44, 46)), 60) - - Returns the tree - - - - The key of the dictionary is string value and the keys is not sensitive to the character case. - (字典的键å为字符串,大å°å†™ä¸æ•感,行为和哈希表类型) - - - - - - - - - 大å°å†™ä¸æ•感 - - - - - - æ·»åŠ å’Œæ›¿æ¢æ“作主è¦åœ¨è¿™é‡Œè¿›è¡Œ - - 大å°å†™ä¸æ•感 - - - - - - - Call by the method - - - - - - - - This kind of object type can be convert into a dictionary object by its property. - - - - - - This property can be using for the unique identified this target object in a collection. - (å¯ä»¥ä½¿ç”¨æœ¬å±žæ€§æ¥åœ¨é›†åˆä¹‹ä¸­å”¯ä¸€æ ‡è¯†æœ¬ç›®æ ‡å¯¹è±¡) - - - - - - - - 和所ä¸åŒçš„æ˜¯ï¼Œæœ¬ç±»åž‹çš„æ˜¯åªèƒ½è¯»å–而ä¸èƒ½å¤Ÿèµ‹å€¼çš„ - - - - - - Read only unique identifier.(åªè¯»çš„唯一标识符) - - - - - - - - Defines a key/value pair that can be set or retrieved. - - - - - - - - Gets the key in the key/value pair. - - - - - - - - Gets the value in the key/value pair. - - - - - - - - Defines a key/value pair that only can be retrieved. - - - - - - - Defines a key/value pair that can be set or retrieved. - - - - - - - - Gets the key in the key/value pair. - - - - - - - - Gets the value in the key/value pair. - - - - - - - - - - - 是å¦å¤§å°å†™æ•æ„Ÿï¼Œé»˜è®¤ä¸æ•感 - - - - - - - - 是å¦å¤§å°å†™æ•æ„Ÿï¼Œé»˜è®¤ä¸æ•感 - - - - - 在目标对象中必须è¦å…·æœ‰ä¸€ä¸ªå±žæ€§æœ‰è‡ªå®šä¹‰å±žæ€§ - - - - - - 将字符串数æ®ç±»åž‹è½¬æ¢ä¸ºå…¶ä»–的数æ®ç±»åž‹ - - - - - - 出现错误的时候总是会返回空字符串的 - - - - - - - Convert target data object collection into a datatable for the data source of the >. - (将目标对象集åˆè½¬æ¢ä¸ºä¸€ä¸ªæ•°æ®è¡¨å¯¹è±¡ï¼Œç”¨ä½œDataGridViewæŽ§ä»¶çš„æ•°æ®æº) - - - - - - - - - Retrive data from a specific datatable object.(从目标数æ®è¡¨ä¸­èŽ·å–æ•°æ®) - - - - - - - - - Represents a column of certain data frames. The mapping between to schema is also can be represent by this attribute. - (也å¯ä»¥ä½¿ç”¨è¿™ä¸ªå¯¹è±¡æ¥å®Œæˆåœ¨ä¸¤ä¸ªæ•°æ®æºä¹‹é—´çš„属性的映射,由于对于一些列å称的属性值缺失的映射而言, - å…¶æ˜¯ä½¿ç”¨å±žæ€§åæ¥ä½œä¸ºåˆ—æ˜ å°„å称的,故而在修改这些没有预设的列å称的映射属性的属性åçš„æ—¶å€™ï¼Œè¯·æ³¨æ„ - è¦å°å¿ƒç»´æŠ¤è¿™ç§æ˜ å°„关系) - - - - - Gets the index. - - - - - Gets the name. - - - - - Initializes a new instance by name. - - The name. - - - - Initializes a new instance by index. - - The index. - - - - 会默认使用目标对象的åå°„çš„Name属性作为映射的åç§° - - - - - - - - 列å称,å‡è‹¥æœ¬å‚数为空的è¯ï¼Œåˆ™ä½¿ç”¨å±žæ€§åç§° - 从1开始的下标,表示为第几列 - - - - - 没有åç§°å±žæ€§çš„æ˜ å°„ä½¿ç”¨å±žæ€§åæ¥è¡¨è¿° - - - - - - - - Load the mapping property, if the custom attribute - have no name value, then the property name will be used as the mapping name. - - The type should be a class type or its properties should have the - mapping option which was created by the custom attribute - - - - - - - - - - - - - - - - - - 呿–‡ä»¶ä¹‹ä¸­å†™æ•°æ®çš„æ—¶å€™ï¼Œéœ€è¦è®¾ç½®ä¸ºçœŸ - ä»Žæ–‡ä»¶ä¹‹ä¸­è¯»å–æ•°æ®çš„æ—¶å€™ï¼Œéœ€è¦è®¾ç½®ä¸ºçœŸ - - - - - - 从类型实体生æˆé…ç½®æ–‡ä»¶æ•°æ® - - - - - 类型实体之中的简å•属性,åªè¦å…·å¤‡å¯è¯»å±žæ€§å³å¯è¢«è§£æžå‡ºæ¥ - - - - 本属性ä¸èƒ½å¤Ÿè¢«è®¾ç½®ä¸ºåªè¯»å±žæ€§æ˜¯å› ä¸º Settings.Settings(Of IProfile).LoadFile å‡½æ•°çš„éœ€è¦ - - - - - - - - æ‰€æ˜ å°„çš„æ•°æ®æº - - - - - - List all of the available settings nodes in this profile data session. - (枚举出当å‰é…置会è¯ä¹‹ä¸­çš„æ‰€æœ‰å¯ç”¨çš„é…置节点) - - - - - - - - - - 目标é…置文件的Xml文件的文件å - å¯ä»¥è°ƒç”¨çš„é…置项的数目,解æžå¤±è´¥åˆ™è¿”回0 - - - - - 请注æ„,必须是å°å†™çš„ - - The name of the configuration entry should be in lower case. - - - - - -å‡è‹¥å‡½æ•°å‚数为空,则函数输出所有的å˜é‡çš„值 - - å‡è‹¥æœ¬å‚数为空,则函数输出所有的å˜é‡çš„值 - - - - - - The simple configuration mapping node in the current profile data, the data type of this node - object should be just the simplest data type such as String, Integer, Long, Double, Boolean. - (当å‰çš„é…置节点为一个简å•节点,å³ç›®æ ‡å±žæ€§çš„属性值类型的字符串,数字或者逻辑值等最基本的数æ®ç±»åž‹) - - - - - - Initialize a node in the settings xml document. - - The name of the node in the document xml file - The brief introduction information about this profile node. - - - - 当å‰çš„é…ç½®èŠ‚ç‚¹ä¸ºä¸€ä¸ªå¤æ‚æ•°æ®ç±»åž‹çš„é…置节点,å³ç›®æ ‡å±žæ€§çš„属性类型为一个Class对象 - - - - - - Resource link data. - - - - - - The relative path of the target resource object in the file system.(资æºå¯¹è±¡åœ¨æ–‡ä»¶ç³»ç»Ÿä¹‹ä¸­çš„相对路径) - - - - - - - - èŽ·å–æ‰€æŒ‡å‘çš„èµ„æºæ–‡ä»¶çš„完整路径 - - - - - - - - å‡è‹¥éœ€è¦é€šè¿‡å­—典对象实现一些统计æ“作,则这个对象类型å¯èƒ½å分有用 - - - - - - 由于字典对象的元素为值对象,所以无法进行元素值的修改,所以å¯ä»¥ä½¿ç”¨è¿™ä¸ªå¯¹è±¡è¿›è¡Œä¿®æ”¹ - - - - - - The key has 2 string value collection. - - - - - - An object for the text file format xml data storage.(用于存储与XML文件之中的字符串键值对对象) - - - - - - Defines a key/value pair that can be set or retrieved.(特化的字符串属性类型) - - - - - - Gets the key in the key/value pair. - - - - 在这里å¯èƒ½ç”¨ä¸äº†è‡ªå®šä¹‰å±žæ€§ï¼Œå› ä¸ºå…¶åŸºæœ¬ç±»åž‹ä¹‹ä¸­çš„Keyå’ŒValueå¯ä»¥æ˜¯ä»»æ„的类型的,Attributeæ ¼å¼æ— æ³•åºåˆ—åŒ–å¤æ‚的数æ®ç±»åž‹ - - - - - - - If strict is TRUE then the function of the string compares will case sensitive. - - - - - - {Key, strArray()} The value of this data type object is a string collection.(本类型对象的值属性类型为一个字符串集åˆ) - - - - - - Object model of the text file doucment.(文本文件的对象模型,这个文本文件对象在Disposed的时候会自动ä¿å­˜å…¶ä¸­çš„æ•°æ®) - - - - - - This is a file object which have a handle to save its data to the filesystem.(这是一个带有文件数æ®ä¿å­˜æ–¹æ³•的文件模型) - - - - - - Handle for saving the file data.(ä¿å­˜æ–‡ä»¶çš„æ–¹æ³•) - - The file path that will save data to.(进行文件数æ®ä¿å­˜çš„æ–‡ä»¶è·¯å¾„) - The text encoding value for the text document.(æ–‡æœ¬æ–‡æ¡£çš„ç¼–ç æ ¼å¼) - - - - - - The source file.(æºæ–‡ä»¶) - - - - - - The storage filepath of this text file. - - - - - - - - - Automatically determine the path paramater: If the target path is empty, then return - the file object path property, if not then return the - directly. - (当的值ä¸ä¸ºç©ºçš„æ—¶å€™ï¼Œæœ¬å¯¹è±¡ä¹‹ä¸­çš„è·¯å¾„å‚æ•°å°†ä¼šè¢«æ›¿æ¢ï¼Œåä¹‹è¿”å›žæœ¬å¯¹è±¡çš„è·¯å¾„å‚æ•°) - - - - - - - - - - - Default value is UTF8 - - - - - - - - - Default value is UTF8 - - - - - - 当一个文件éžå¸¸å¤§ä»¥è‡´æ— æ³•使用任何现有的文本编辑器查看的时候,å¯ä»¥ä½¿ç”¨æœ¬æ–¹æ³•æŸ¥çœ‹å…¶ä¸­çš„ä¸€éƒ¨åˆ†æ•°æ® - - - - - - - - å°è¯•æŸ¥çœ‹å¤§æ–‡ä»¶çš„å°¾éƒ¨çš„æ•°æ® - - - - - - - - - - 对象类型的组åˆè¾“出工具,å³ç›®æ ‡ç±»åž‹çš„集åˆä¹‹ä¸­çš„元素两两组åˆé…对 - - - - - - 对象列表是å¦å·²ç»å®Œå…¨ç»„åˆè¾“出 - - - - - - - - 是å¦å·²ç»å¼€å§‹è¯»å–æ–°çš„ä¸€è¡Œæ•°æ® - - - - - - - - Creates the completely combination of the elements in the target input collection source. - (创建完完全全的两两é…对) - - - - - - - - ä»»æ„多个集åˆä¹‹é—´çš„对象之间相互组æˆç»„åˆè¾“出 - - - - - - This object gets a object handle value to indicated that the position this object exists - in the list collection structure. - (这个对象具有一个用于指明该对象在列表对象中的ä½ç½®çš„å¯¹è±¡å¥æŸ„值) - - - - - - The ID that this object in a list instance. - (本对象在一个列表对象中的ä½ç½®ç´¢å¼•å·) - - - - - - - - - - - Class object that can be dispose by the system automatically and the class object that should - have a handle property to specific its position in this list class. - (能够被系统所自动销æ¯çš„å¯¹è±¡ç±»åž‹ï¼Œå¹¶ä¸”è¯¥ç±»åž‹çš„å¯¹è±¡å¿…é¡»å«æœ‰ä¸€ä¸ªHandleå±žæ€§æ¥æŒ‡æ˜Žå…¶åœ¨æœ¬åˆ—表中的ä½ç½®) - - - - - - Object instances data physical storage position, element may be null after - remove a specify object handle. - (列表中的元素对象实例的实际存储ä½ç½®ï¼Œå½“对象元素从列表之中被移除了之åŽï¼Œå…¶å°†ä¼šè¢«é”€æ¯) - - - å³ä¸Žåªè¯»å±žæ€§'ListData'相比,这个字段的列表中å¯èƒ½å«æœ‰ç©ºå¼•用的元素对象. - - - - - Stack list that store the empty pointer - - - - - - Exists handle that store in this list - - - - - - Get the logical list of the data store in this list object instance. - (获å–逻辑形å¼çš„列表数æ®) - - - - - - - - Get the logical list length - - - - - - - - Get or set a object instance data that has specify handle value - - Target object handle value - It is not recommend that you use this property to set the data element as the list object's capacity may not cover your handle - - - - - - Construct a new list object - - The initialize size of this list object, Optional parameter, default value is 2048 - - - - - Add a disposable object instance element into this list object and return its object handle value in this list object - - Object instance that will be store in this list object - Object handle in this list object instance - - - - - Append a list of object instance - - - - - - - Remove a object instance element in this list object that have a specify handler - - Object handle value that specify the target object - - - - - Know that the specify handle pointe object is null or not? - - Object handle - - - - - - Know that a specify object instance exists in this list object or not? - (判断æŸä¸€ä¸ªæŒ‡å®šçš„对象实例是å¦å­˜åœ¨äºŽåˆ—表对象之中) - - Target object instance(目标è¦è¿›è¡ŒæŸ¥æ‰¾çš„对象实例) - - - - - - Remove a specify object in this list object using its hashcode and return its handle value. - (ä½¿ç”¨å¯¹è±¡çš„å“ˆå¸Œå€¼æ¥æŸ¥æ‰¾ç›®æ ‡å¯¹è±¡å¹¶å¯¹å…¶è¿›è¡Œç§»é™¤ï¼Œä¹‹åŽè¿”å›žå…¶å¥æŸ„值) - - - - - - - - Clear all of the data in this list object instance. - (清除本列表对象中的所有数æ®) - - - - - - GDI+ - - - - - - GDI+ device handle.(GDI+ç»˜å›¾è®¾å¤‡å¥æŸ„) - - - - - - GDI+ device handle.(GDI+ç»˜å›¾è®¾å¤‡å¥æŸ„) - - - - - - GDI+ device handle memory - - - - - - GDI+ device handle memory.(GDI+è®¾å¤‡ä¹‹ä¸­çš„å›¾åƒæ•°æ®) - - - - - - 图åƒçš„å¤§å° - - - - - - 在图象上é¢çš„中心的ä½ç½®ç‚¹ - - - - - - å°†GDI+è®¾å¤‡ä¹‹ä¸­çš„å›¾åƒæ•°æ®ä¿å­˜åˆ°æŒ‡å®šçš„æ–‡ä»¶è·¯å¾„ä¹‹ä¸­ï¼Œé»˜è®¤çš„å›¾åƒæ–‡ä»¶çš„æ ¼å¼ä¸ºPNGæ ¼å¼ - - - 默认为pngæ ¼å¼ - - - - - - - - 所填充的颜色 - - - - - 微软雅黑字体的åç§° - - - - - Adding a frame box to the target image source.(ä¸ºå›¾åƒæ·»åŠ è¾¹æ¡†) - - - Default pen width is 1px and with color .(默认的绘图笔为黑色的1个åƒç´ çš„边框) - - - - - - 创建一个GDI+的绘图设备 - - - 默认的背景填充颜色为白色 - - - - - - 从指定的文件之中加载GDI+è®¾å¤‡çš„å¥æŸ„ - - - - - - - 创建一个GDI+的绘图设备 - - - 默认的背景填充颜色为白色 - - - - - - 图片剪è£å°æ–¹å—区域 - - - - - - - 图片剪è£ä¸ºåœ†å½¢çš„å¤´åƒ - - è¦æ±‚为正方形或者近似正方形 - - - - - - - Determine that the target color value is a empty variable.(判断目标颜色值是å¦ä¸ºç©ºå€¼) - - - - - - - 羽化 - - - - - - - - - - http://www.codeproject.com/Articles/42492/Using-LINQ-to-Calculate-Basic-Statistics - - - - - - 加载完数æ®ä¹‹åŽè¿”回其自身 - - - - - - - - - 将目标对象之中的属性按值å¤åˆ¶ - - - - - 对外函数接å£ï¼Œä¸ºäº†é˜²æ­¢æ— é™é€’归的出现 - - - - 将目标对象之中的属性按值å¤åˆ¶ - - - - 对外函数接å£ï¼Œä¸ºäº†é˜²æ­¢æ— é™é€’归的出现 - - - - 递归使用的,基本数æ®ç±»åž‹ç›´æŽ¥å¤åˆ¶ï¼Œå¼•用类型则首先创建一个新的对象,在对该对象进行递归å¤åˆ¶ï¼Œå‡è‹¥ç›®æ ‡å¯¹è±¡æ²¡æœ‰å¯ç”¨çš„æ— å‚数的构造函数,则直接赋值 - - - - - - - - 请使用这个函数æ¥å¯¹CSVåºåˆ—化的对象进行浅拷è´ã€‚将之中的第一层的属性值拷è´åˆ°å¯¹åº”的属性值之中,然åŽè¿”回 - - - - - - - - - æœ€åŸºæœ¬çš„æ€æƒ³æ˜¯å°†å±žæ€§å€¼æŒ‰ç…§åŒå属性å称在Aå’ŒB两个对象类型之间进行映射,å³A与B两个对象之间必须è¦å…·å¤‡ç›¸åŒçš„属性å称,æ‰å¯ä»¥äº§ç”Ÿæ˜ å°„,请注æ„在本对象之中仅能够映射最基本的值类型的数æ®ç±»åž‹ - 对于一些自定义的映射æ“ä½œï¼Œè¯·åœ¨ç›®æ ‡æ•°æ®æ¨¡åž‹ä¹‹ä¸­å®šä¹‰è‡ªå®šä¹‰çš„æ˜ å°„å‡½æ•°ï¼Œè¦æ±‚ä¸ºå‡½æ•°åªæœ‰ä¸€ä¸ªå‚æ•°ï¼Œå‚æ•°ç±»åž‹å’Œè¿”回值类型分别为映射的两个节点的数æ®ç±»åž‹ï¼Œç¨‹åºä¼šä½¿ç”¨å射自动查找 - - - - - - ä»Žæºæ±ŸåŸºæœ¬çš„å€¼ç±»åž‹æ˜ å°„åˆ°æ•°æ®æ¨¡åž‹ï¼Œä»¥å°†é…置数æ®è¯»å–出æ¥å¹¶è¿›è¡ŒåŠ è½½ - - æ•°æ®æ¨¡åž‹ - æº - - - - - - ä»Žæ•°æ®æ¨¡åž‹å°†å€¼ç±»åž‹æ•°æ®æ˜ å°„回æºï¼Œä»¥å°†é…置数æ®å†™å…¥æ–‡ä»¶ - - æ•°æ®æ¨¡åž‹ - æº - - - - - - - æ•°æ®ç±»åž‹è½¬æ¢æ–¹æ³•çš„å¥æŸ„对象 - - æºä¹‹ä¸­çš„æ•°æ®ï¼Œç”±äºŽæºæ˜¯ä¸€ä¸ªTEXTæ ¼å¼çš„æ•°æ®æ–‡ä»¶ï¼Œæ•…而这里的数æ®ç±»åž‹ä¸ºå­—ç¬¦ä¸²ï¼Œé€šè¿‡æœ¬å¥æŸ„对象å¯ä»¥å°†å­—ç¬¦ä¸²æ•°æ®æ˜ å°„ä¸ºå…¶ä»–çš„å¤æ‚æ•°æ®ç±»åž‹ - - - - - - 这个属性或者方法ä¸ä¼šè¢«ç”¨äºŽæ˜ å°„ - - - - - - ä¸ä¼šä½¿ç”¨ç³»ç»Ÿè‡ªå¸¦çš„æ˜ å°„方法进行映射 - - - - - - æ˜ å°„çš„æ–‡æœ¬æ–‡ä»¶æº - - - - - - 映射æ“ä½œçš„ç›®æ ‡æ•°æ®æ¨¡åž‹ - - - - - - ä»Žæºæ˜ å°„åˆ°æ•°æ®æ¨¡åž‹çš„ç±»åž‹è½¬æ¢ - - - - - - ä»Žæ•°æ®æ¨¡åž‹æ˜ å°„到æºçš„ç±»åž‹è½¬æ¢ - - - - - - 获å–ä»Žæºæ˜ å°„è‡³æ•°æ®æ¨¡åž‹çš„æ˜ å°„过程 - - æ•°æ®æ¨¡åž‹ - æº - - - - - - A script object for grep the gene id in the blast output query and subject title.(用于解æžåŸºå› å称的脚本类,这个对象是在项目的åˆå§‹é˜¶æ®µï¼Œä¸ºäº†æ–¹ä¾¿å‘½ä»¤è¡Œæ“作而设置的) - - - - - - - - æ–‡æœ¬æº - è„šæœ¬å‘½ä»¤çš„å‚æ•° - - - - - - Source,Script,ReturnValue - - - - - - 对用户所输入的脚本进行编译,对于内部的空格,请使用å•引å·'进行分割 - - - - - - - 修整目标字符串,按照脚本之中的方法å–出所需è¦çš„å­—ç¬¦ä¸²ä¿¡æ¯ - - - - - - - - - - - - - - - - - - - - å‘é‡ä¹‹ä¸­çš„第一个元素为命令的å字,第二个元素为Mid函数的Start傿•°ï¼Œç¬¬ä¸‰ä¸ªå…ƒç´ ä¸ºMid函数的Length傿•°ï¼Œå¯ä»¥è¢«å¿½ç•¥æŽ‰ - - - - - - Tools for generate the program change log document. - - - - - - - - ChangeLog的文件路径 - 目标程åºçš„主程åºçš„æ–‡ä»¶è·¯å¾„ - - - - - - - - å‡è‹¥ä¸ºç©ºçš„è¯ï¼Œä¼šè‡ªåŠ¨çš„æ ¹æ®ä¸Šä¸€æ¬¡ç‰ˆæœ¬çš„å·ç å åŠ 1 - - - - - Wrapper for the file operations. - - - - - - 当一个文件éžå¸¸å¤§ä»¥è‡´æ— æ³•使用任何现有的文本编辑器查看的时候,å¯ä»¥ä½¿ç”¨æœ¬æ–¹æ³•æŸ¥çœ‹å…¶ä¸­çš„ä¸€éƒ¨åˆ†æ•°æ® - - - - - - - - å°è¯•æŸ¥çœ‹å¤§æ–‡ä»¶çš„å°¾éƒ¨çš„æ•°æ® - - - - - - - - - - Register a .NET dll file as a COM component.(å°†æŸä¸€ä¸ª.NET语言所编写的DLL文件注册为COM组件) - - - - - - - - Encoding fileEncoding = TextFileEncodingDetector.DetectTextFileEncoding("you file path",Encoding.Default); - - - - - - completely arbitrary - inappropriate for high numbers of files / high speed requirements - - - - - - - - - .NET 2.0 Workaround for PathTooLongException - - - http://www.codeproject.com/Articles/22013/NET-Workaround-for-PathTooLongException - - - - - uint GetShare(FileShare share) - Converts the FileShare constant to win32 constant - - - - - - - - Open readonly file mode open(String, FileMode.Open, FileAccess.Read, FileShare.Read) - - - - - - - - open writable open(String, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None). - - - - - - - - ä¸¤ä¸ªå‚æ•°å­—ç¬¦ä¸²æ˜¯å¦æ¨¡ç³Šç­‰ä»·ï¼Ÿ - - - - - - - - - 从一个ä¸ç›´æŽ¥ç›¸ç­‰çš„字符串列表之中模糊的查找出匹é…度最高的目标字符串 - - - - - - - - - Search the path from a specific keyword.(é€šè¿‡å…³é”®è¯æ¥æŽ¨æµ‹è·¯å¾„) - - - - - - - - - - - 元素的排布是有顺åºçš„ - - - - - - - [,这个函数会扫æç›®æ ‡æ–‡ä»¶å¤¹ä¸‹é¢çš„æ‰€æœ‰æ–‡ä»¶ã€‚] - 请注æ„,本方法是ä¸èƒ½å¤Ÿäº§ç”Ÿå…·æœ‰ç›¸åŒçš„主文件å的数æ®çš„。å‡è‹¥ç›®æ ‡GBK是使用本模å—之中的方法ä¿å­˜æˆ–者导出æ¥çš„, - 则å¯ä»¥ä½¿ç”¨æœ¬æ–¹æ³•生æˆEntry列表;(在返回的结果之中,KEY为文件å,没有拓展å,VALUE为文件的路径) - - - - - - - - - å…许有é‡å¤çš„æ•°æ® - - - - - - - - - å°†ä¸åŒæ¥æºçš„æ–‡ä»¶å¤åˆ¶åˆ°ç›®æ ‡æ–‡ä»¶å¤¹ä¹‹ä¸­ - - - - 返回失败的文件列表 - - - - - Invoke the search session for the program file using a specific keyword string value.(使用æŸä¸ªå…³é”®è¯æ¥æœç´¢ç›®æ ‡åº”用程åº) - - - - - - - - - - - - - 脚本文件的文件拓展å - - - - - - - - - 所制定进行æœç´¢çš„驱动器,å‡è‹¥å¸Œæœ›æœç´¢æ•´ä¸ªç¡¬ç›˜ï¼Œè¯·ç•™ç©ºå­—符串 - - - - - - - 商标æœç´¢è§„则 - - - - - - - - - 获å–相对于本应用程åºçš„目标文件的相对路径(请注æ„,所生æˆçš„ç›¸å¯¹è·¯å¾„ä¹‹ä¸­çš„å­—ç¬¦ä¸²æœ€åŽæ˜¯æ²¡æœ‰æ–‡ä»¶å¤¹çš„分隔符\或者/çš„) - - - - - - - 请注æ„,所生æˆçš„ç›¸å¯¹è·¯å¾„ä¹‹ä¸­çš„å­—ç¬¦ä¸²æœ€åŽæ˜¯æ²¡æœ‰æ–‡ä»¶å¤¹çš„分隔符\或者/çš„ - - 生æˆç›¸å¯¹è·¯å¾„çš„å‚考文件夹 - 所需è¦ç”Ÿæˆç›¸å¯¹è·¯å¾„的目标文件系统对象的ç»å¯¹è·¯å¾„或者相对路径 - - - - - use the overload method of the type - - - - - - - - - - - - - 按照UniqueId列表æ¥ç­›é€‰å‡ºç›®æ ‡é›†åˆ - - - - - - - - - - 将目标集åˆå¯¹è±¡è½¬æ¢ä¸ºä¸€ä¸ªå­—典对象 - - - - - - - - - Create memory dump for a class object instance - - - - - - - - - The extension module for web services works. - - - - - - - A string that contains the url string pattern like: href="url_text" - - - - - - ä¸åƒå‡½æ•°ï¼Œè¿™ä¸ªå‡½æ•°ä¸ä¼šæ›¿æ¢æŽ‰è½¬ä¹‰å­—符 - - - - - - - 请注æ„ï¼Œè¿™ä¸ªå‡½æ•°ä¼šæ›¿æ¢æŽ‰ä¸€äº›è½¬ä¹‰å­—ç¬¦çš„ - - - - - - - 获å–两个尖括å·ä¹‹é—´çš„内容 - - - - - - - - Get the html page content from a website request or a html file on the local filesystem. - - web http request url or a file path handle - å‘生错误的时候的é‡è¯•的次数 - - - - - - - download the file from to local file. - - - - - - - - - Wrapper class for *.ini and *.inf configure file.(å¯èƒ½æ–‡ä»¶ä¸­çš„æ³¨é‡Šè¡Œä¼šå—到影å“,所以请尽é‡ä½¿ç”¨æœ¬ç±»åž‹ä¸­çš„ä¸¤ä¸ªé™æ€å‡½æ•°æ¥æ“作INI文件) - - - - - - Get the value from a specific section/key in a file of path - - - - - - - - - Logical true values are regarded as one, false values as zero. For historical reasons, NULL is accepted and treated as if it were integer(0). - - - - - - - - Standard Deviation - - - - - - - Standard Deviation - - - - - - - Standard Deviation - - - - - - - Standard Deviation - - - - - - - 多ä½å标的欧几里得è·ç¦» - - - - - - - - 如果æ¯ä¸€ä¸ªæ•°å€¼ä¹‹é—´éƒ½æ˜¯ç›¸åŒçš„大å°ï¼Œåˆ™è¿”回原始数æ®ï¼Œå› ä¸ºæœ€å¤§å€¼ä¸Žæœ€å°å€¼çš„差为0,无法进行映射的创建(会出现除0的错误) - - - - 为了è¦ä¿æŒé¡ºåºï¼Œä¸èƒ½å¤Ÿä½¿ç”¨å¹¶è¡Œæ‹“展 - - - - 如果æ¯ä¸€ä¸ªæ•°å€¼ä¹‹é—´éƒ½æ˜¯ç›¸åŒçš„大å°ï¼Œåˆ™è¿”回原始数æ®ï¼Œå› ä¸ºæœ€å¤§å€¼ä¸Žæœ€å°å€¼çš„差为0,无法进行映射的创建(会出现除0的错误) - - - - 为了è¦ä¿æŒé¡ºåºï¼Œä¸èƒ½å¤Ÿä½¿ç”¨å¹¶è¡Œæ‹“展 - - - - Common extension methods library for convenient the programming job. - - - - - - Start a new thread and then returns the handle. - - - - - - - Get the scripting namespace value from - - - - - - - Function test the Boolean expression and then decided returns which part of the value. - (è¿™ä¸ªå‡½æ•°ä¸»è¦æ˜¯ç”¨äºŽDelegate函数指针类型或者Lambda表达å¼çš„) - - - Expression - value returns this parameter if the value of the expression is True - value returns this parameter if the value of the expression is False - - - - - DirectCast(obj, T) - - - - - - - - 基类集åˆä¸Žç»§æ‰¿ç±»çš„集åˆçº¦æŸ - - 继承类å‘åŸºç±»è¿›è¡Œçº¦æŸ - - - - - The function will print the exception details information on the standard , console, and system console. - (分别在标准终端,调试终端,系统调试终端之中打å°å‡ºé”™è¯¯ä¿¡æ¯ï¼Œè¯·æ³¨æ„,函数会直接返回Falseå¯ä»¥ç”¨äºŽæŒ‡å®šè°ƒç”¨è€…函数的执行状æ€) - - - - - - - - - - - 仅仅是起到类型å¤åˆ¶çš„作用 - - - - - - - - 仅仅是起到类型å¤åˆ¶çš„作用 - - - - - 得到文件的全路径 - - - - - - - å‡è‹¥å‘½ä»¤è¡Œä¹‹ä¸­çš„æ–‡ä»¶å傿•°ä¹‹ä¸­å«æœ‰ç©ºæ ¼çš„è¯ï¼Œåˆ™å¯èƒ½ä¼šé€ æˆé”™è¯¯ï¼Œéœ€è¦æ·»åŠ ä¸€ä¸ªåŒå¼•å·æ¥æ¶ˆé™¤æ­§ä¹‰ - - - - - - - 对Xmlæ–‡ä»¶ä¹‹ä¸­çš„ç‰¹æ®Šå­—ç¬¦è¿›è¡Œè½¬ä¹‰å¤„ç† - - - - - - - - Running the string as a cli command line.(请注æ„,在调试模å¼ä¹‹ä¸‹ï¼Œå‘½ä»¤è¡Œè§£é‡Šå™¨ä¼šåœ¨è¿è¡Œå®Œå‘½ä»¤ä¹‹åŽæš‚åœï¼Œè€ŒRelease模å¼ä¹‹ä¸‹åˆ™ä¸ä¼šã€‚ - å‡è‹¥åœ¨è°ƒè¯•模å¼ä¹‹ä¸‹å‘çŽ°ç¨‹åºæœ‰å¾ˆé•¿ä¸€æ®µæ—¶é—´å¤„于cpuå ç”¨ä¸ºé›¶çš„陿­¢çжæ€ï¼Œåˆ™å¾ˆæœ‰å¯èƒ½å·²ç»è¿è¡Œå®Œå‘½ä»¤å¹¶ä¸”等待回车退出) - - The command line arguments value, which its value can be gets from the function. - Returns the function execute result to the operating system. - - - - Running the string as a cli command line.(请注æ„,在调试模å¼ä¹‹ä¸‹ï¼Œå‘½ä»¤è¡Œè§£é‡Šå™¨ä¼šåœ¨è¿è¡Œå®Œå‘½ä»¤ä¹‹åŽæš‚åœï¼Œè€ŒRelease模å¼ä¹‹ä¸‹åˆ™ä¸ä¼šã€‚ - å‡è‹¥åœ¨è°ƒè¯•模å¼ä¹‹ä¸‹å‘çŽ°ç¨‹åºæœ‰å¾ˆé•¿ä¸€æ®µæ—¶é—´å¤„于cpuå ç”¨ä¸ºé›¶çš„陿­¢çжæ€ï¼Œåˆ™å¾ˆæœ‰å¯èƒ½å·²ç»è¿è¡Œå®Œå‘½ä»¤å¹¶ä¸”等待回车退出) - - The command line arguments value, which its value can be gets from the function. - Returns the function execute result to the operating system. - - - - Running the string as a cli command line.(请注æ„,在调试模å¼ä¹‹ä¸‹ï¼Œå‘½ä»¤è¡Œè§£é‡Šå™¨ä¼šåœ¨è¿è¡Œå®Œå‘½ä»¤ä¹‹åŽæš‚åœï¼Œè€ŒRelease模å¼ä¹‹ä¸‹åˆ™ä¸ä¼šã€‚ - å‡è‹¥åœ¨è°ƒè¯•模å¼ä¹‹ä¸‹å‘çŽ°ç¨‹åºæœ‰å¾ˆé•¿ä¸€æ®µæ—¶é—´å¤„于cpuå ç”¨ä¸ºé›¶çš„陿­¢çжæ€ï¼Œåˆ™å¾ˆæœ‰å¯èƒ½å·²ç»è¿è¡Œå®Œå‘½ä»¤å¹¶ä¸”等待回车退出) - - The command line arguments value, which its value can be gets from the function. - Returns the function execute result to the operating system. - - - - Running the string as a cli command line.(请注æ„,在调试模å¼ä¹‹ä¸‹ï¼Œå‘½ä»¤è¡Œè§£é‡Šå™¨ä¼šåœ¨è¿è¡Œå®Œå‘½ä»¤ä¹‹åŽæš‚åœï¼Œè€ŒRelease模å¼ä¹‹ä¸‹åˆ™ä¸ä¼šã€‚ - å‡è‹¥åœ¨è°ƒè¯•模å¼ä¹‹ä¸‹å‘çŽ°ç¨‹åºæœ‰å¾ˆé•¿ä¸€æ®µæ—¶é—´å¤„于cpuå ç”¨ä¸ºé›¶çš„陿­¢çжæ€ï¼Œåˆ™å¾ˆæœ‰å¯èƒ½å·²ç»è¿è¡Œå®Œå‘½ä»¤å¹¶ä¸”等待回车退出) - - The command line arguments value, which its value can be gets from the function. - Returns the function execute result to the operating system. - - - - Get the specific type of custom attribute from a property. - (从一个属性对象中获å–特定的自定义属性对象) - - The type of the custom attribute.(自定义属性的类型) - Target property object.(目标属性对象) - - - - - - Get the specific type of custom attribute from a property. - (从一个属性对象中获å–特定的自定义属性对象) - - The type of the custom attribute.(自定义属性的类型) - Target property object.(目标属性对象) - - - - - - Gets the URL type file path.(获å–URL类型的文件路径) - - - - - - - - - You can using this method to create a empty list for the specific type of anonymous type object. - (使用这个方法获å–得到匿å类型的列表数æ®é›†åˆå¯¹è±¡) - - - The temp object which was created anonymous.(匿å对象的集åˆ) - - - - - - This method is used to replace most calls to the Java String.split method. - - - - - - - - - - Get the method reflection entry point for a anonymous lambda expression.(当函数返回Nothingçš„æ—¶å€™è¯´æ˜Žç›®æ ‡å¯¹è±¡ä¸æ˜¯ä¸€ä¸ªå‡½æ•°æŒ‡é’ˆ) - - - - - - - - Convert the data collection into a matrix value. - - - The elements number in each collection should be agreed!(è¦æ±‚集åˆä¹‹ä¸­çš„æ¯ä¸€åˆ—ä¹‹ä¸­çš„æ•°æ®çš„元素数目都相等) - - - - - - Convert the matrix data into a collection of collection data type.(将矩阵对象转æ¢ä¸ºé›†åˆçš„集åˆçš„类型) - - - - - - - - - 滑窗æ“ä½œçš„æ•°æ®æ¨¡åž‹ - - - - - - - 在创建的滑窗的队列之中当å‰çš„窗å£å¯¹è±¡çš„ä½ç½® - - - - - - - - 当å‰çª—å£åœ¨åŽŸå§‹çš„åºåˆ—之中的左端起始ä½ç‚¹ - - - - - - - - 窗å£é•¿åº¦ - - - - - - - - Create a collection of slide Windows data for the target collection object.(创建一个滑窗集åˆ) - - - - 窗å£çš„å¤§å° - 在åºåˆ—之上移动的步长 - - - - - - Chr(0): NULL char - - - - - - 将目标集åˆä¹‹ä¸­çš„æ•°æ®æŒ‰ç…§å‚数分é…到å­é›†åˆä¹‹ä¸­ï¼Œè¿™ä¸ªå‡½æ•°ä¹‹ä¸­ä¸èƒ½å¤Ÿä½¿ç”¨å¹¶è¡ŒåŒ–计数,以ä¿è¯å…ƒç´ ä¹‹é—´çš„ç›¸äº’åŽŸæœ‰çš„é¡ºåº - - - - æ¯ä¸€ä¸ªå­é›†åˆä¹‹ä¸­çš„元素的数目 - - - - - - - Merge two type specific collection.(函数会忽略掉空的集åˆ) - - - - - - - - - 本方法会执行外部命令并等待其执行完毕,函数返回状æ€å€¼ - - - - - - - - Gets a random number in the region of [0,1]. (获å–一个[0,1]åŒºé—´ä¹‹ä¸­çš„éšæœºæ•°ï¼Œè¯·æ³¨æ„:因为为了尽é‡åšåˆ°éšæœºåŒ–ï¼Œè¿™ä¸ªå‡½æ•°ä¼šä¸æ–­çš„åˆå§‹åŒ–éšæœºç§å­ï¼Œ - 故而性能较低,ä¸å¯ä»¥åœ¨å¤§é‡é‡å¤è°ƒç”¨ï¼Œæˆ–者在批é‡è°ƒç”¨çš„æ—¶å€™è¯·ä½¿ç”¨å¹¶è¡ŒåŒ–拓展的LINQ) - - - - - - - Check if the target file object is exists on your file system or not.(è¿™ä¸ªå‡½æ•°ä¹Ÿä¼šè‡ªåŠ¨æ£€æŸ¥ç›®æ ‡å‚æ•°æ˜¯å¦ä¸ºç©º) - - - - - - - - 检测文件是å¦å·²ç»è¢«å…¶ä»–ç¨‹åºæ‰“开使用之中 - - 目标文件 - - - - - 获å–目标文件夹的åç§° - - - - - - - - Gets the element counts in the target data collection, if the collection object is nothing or empty - then this function will returns ZERO, others returns Collection.Count.(返回一个数æ®é›†åˆä¹‹ä¸­çš„元素的数目, - å‡è‹¥è¿™ä¸ªé›†åˆæ˜¯ç©ºå€¼æˆ–者空的,则返回0,其他情况则返回Count拓展函数的结果) - - - - - - - - - Looks up a localized string similar to GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away yo [rest of string was truncated]";. - - - - - 获å–""或者其他字符所包围的字符串的值 - - - - - - - - - Free this variable pointer in the memory.(é”€æ¯æœ¬å¯¹è±¡ç±»åž‹åœ¨å†…存之中的指针) - - å‡è‹¥è¯¥å¯¹è±¡ç±»åž‹å®žçŽ°äº†æŽ¥å£ï¼Œåˆ™å‡½æ•°è¿˜ä¼šåœ¨é”€æ¯å‰è°ƒç”¨è¯¥æŽ¥å£çš„销æ¯å‡½æ•° - - - - - - Pause the console program. - - - - - - - 使用正则表达å¼è§£æžç›®æ ‡å­—符串对象之中的一个实数 - - - - - - - - 空字符串会返回空的日期 - - - - - - - 当所被读å–的文本文件的大å°è¶…过了的上é™çš„æ—¶å€™ï¼Œå°±éœ€è¦ä½¿ç”¨æœ¬æ–¹æ³•è¿›è¡Œè¯»å–æ“作了。目标文件必须是已ç»å­˜åœ¨çš„æ–‡ä»¶ - - 目标文件必须是已ç»å­˜åœ¨çš„æ–‡ä»¶ - - - - - - - Try convert the type specific collection data type into a generic enumerable collection data type.(å°è¯•将目标集åˆç±»åž‹è½¬æ¢ä¸ºé€šç”¨çš„æžšä¸¾é›†åˆç±»åž‹) - - The type specific collection data type.(特定类型的集åˆå¯¹è±¡ç±»åž‹ï¼Œå½“然也å¯ä»¥æ˜¯æ³›åž‹ç±»åž‹) - If the target data type is not a collection data type then the original data type will be returns and the function displays a warning message. - - - - - Save the binary data into the filesystem.(ä¿å­˜äºŒè¿›åˆ¶æ•°æ®åŒ…值文件系统) - - The binary bytes data of the target package's data.(目标二进制数æ®) - The saved file path of the target binary data chunk.(目标二进制数æ®åŒ…所è¦è¿›è¡Œä¿å­˜çš„æ–‡ä»¶å路径) - - - - - - Assigning the value to the specific named property to the target object. - (将傿•°ä¹‹ä¸­çš„值赋值给目标对象之中的指定的属性å称的属性,如果å‘生错误,则原有的对象ä¸ä¼šè¢«ä¿®æ”¹) - - - - - å¯ä»¥ä½¿ç”¨NameOf得到需è¦è¿›è¡Œä¿®æ”¹çš„属性åç§° - - - - - - Execute a property modify method and then return the target instance object.(修改目标对象的属性之åŽè¿”回目标对象) - - - - - - - - - Value assignment to the target variable.(将傿•°é‡Œé¢çš„å€¼èµ‹å€¼ç»™å‚æ•°ç„¶åŽè¿”回) - - - - - - - - - - Copy the source value directly to the target variable and then return the source value. - (与函数) - - - - - - - - - Copy the source value directly to the target variable and then return the source value. - - - - - - - Copy the source value directly to the target variable and then return the source value. - - - - - - - Copy the source value directly to the target variable and then return the source value. - - - - - - - Copy the source value directly to the target variable and then return the source value. - - - - - - - Copy the source value directly to the target variable and then return the source value. - - - - - - - Copy the source value directly to the target variable and then return the source value. - - - - - - - Copy the source value directly to the target variable and then return the source value. - - - - - - - Copy the source value directly to the target variable and then return the source value. - - - - - - - Copy the source value directly to the target variable and then return the source value. - - - - - - - Copy the source value directly to the target variable and then return the source value. - - - - - - - Copy the source value directly to the target variable and then return the source value. - - - - - - - Modify target object property value using a specific value provider and then return original instance object. - (修改目标对象的属性之åŽè¿”回目标对象) - - - - - - - - - Rabbish collection to free the junk memory.(垃圾回收) - - - - - - å‘字典对象之中更新或者æ’入新的数æ®ï¼Œå‡è‹¥ç›®æ ‡å­—典对象之中已ç»å­˜åœ¨äº†ä¸€ä¸ªæ•°æ®çš„è¯ï¼Œåˆ™ä¼šå°†åŽŸæœ‰çš„æ•°æ®è¦†ç›–,并返回原æ¥çš„æ•°æ® - - - - - - - - - - Merge the target array collection into one collection.(将目标数组的集åˆåˆå¹¶ä¸ºä¸€ä¸ªæ•°ç»„) - - - - - - - - - Merge the target array collection into one collection.(将目标数组的集åˆåˆå¹¶ä¸ºä¸€ä¸ªæ•°ç»„,这个方法是æä¾›ç»™è¶…大的集åˆçš„,å³å…ƒç´ çš„æ•°ç›®éžå¸¸çš„多的,å³è¶…过了的上é™å€¼) - - - - - - - - - Add a linked list of a collection of specific type of data. - - - - - - - - - 矩阵转置: 将矩阵之中的元素进行行列ä½ç½®çš„äº’æ¢ - - 矩阵之中的元素类型 - 为了方便ç†è§£å’Œä½¿ç”¨ï¼ŒçŸ©é˜µä½¿ç”¨æ•°ç»„的数组æ¥è¡¨ç¤ºçš„ - - - - - - 将矩阵之中的元素进行行列ä½ç½®çš„互æ¢ï¼Œè¯·æ³¨æ„,å‡è‹¥é•¿åº¦ä¸ä¸€è‡´çš„è¯ï¼Œä¼šæŒ‰ç…§æœ€çŸ­çš„元素æ¥è½¬ç½®ï¼Œæ•…而使用本函数å¯èƒ½ä¼šé€ æˆä¸€äº›ä¿¡æ¯çš„丢失 - - - - - - - - - - - - 请务必è¦ç¡®ä¿é›†åˆä¹‹ä¸­çš„元素的属性是唯一的,å¦åˆ™ä¼šå‡ºé”™ - - - - - - 求交集 - - - - - - - - 判断目标实数是å¦ä¸ºä¸€ä¸ªæ— ç©·æ•°æˆ–者éžè®¡ç®—çš„æ•°å­—ï¼Œäº§ç”Ÿçš„åŽŸå› ä¸»è¦æ¥è‡ªäºŽé™¤0è¿ç®—ç»“æžœæˆ–è€…è¾¾åˆ°äº†çš„ä¸Šé™æˆ–è€…ä¸‹é™ - - - - - - - - Fuzzy match two string, this is useful for the text query or searching. - - - - - - - - - Convert the string value into the boolean value, this is useful to the text format configuration file into data model.(请注æ„,空值字符串为False) - - - - - - - - 求å–该数æ®é›†çš„æ ‡å‡†å·® - - - - - - - - Count the string value numbers.(请注æ„ï¼Œè¿™ä¸ªå‡½æ•°æ˜¯å€’åºæŽ’åºçš„) - - - - - - - - - Get the description data from a enum type value, if the target have no attribute data - then function will return the string value from the ToString() function. - - - - - - - - Remove all of the null object in the target object collection - - - - - - - - - - Return a collection with randomize element position in the original collection.(从原有åºåºåˆ—中获å–ä¸€ä¸ªéšæœºå…ƒç´ çš„åºåˆ—) - - - - - - - - - - Get a specific item value from the target collction data using its UniqueID property, - (请注æ„,请尽é‡ä¸è¦ä½¿ç”¨æœ¬æ–¹æ³•ï¼Œå› ä¸ºè¿™ä¸ªæ–¹æ³•çš„æ•ˆçŽ‡æœ‰äº›ä½Žï¼Œå¯¹äºŽèŽ·å– - 类型的集åˆä¹‹ä¸­çš„æŸä¸€ä¸ªå¯¹è±¡ï¼Œè¯·å°½é‡å…ˆè½¬æ¢ä¸ºå­—典对象,在使用该字典对象进行查找以æé«˜ä»£ç æ•ˆçŽ‡ï¼Œä½¿ç”¨æœ¬æ–¹æ³•çš„ä¼˜ç‚¹æ˜¯å¯ä»¥é€‰æ‹©å¿½ç•¥ - 傿•°ä¹‹ä¸­çš„大å°å†™ï¼Œä»¥åŠå¯¹é›†åˆä¹‹ä¸­çš„存在相åŒçš„Keyçš„è¿™ç§æƒ…况的容å¿) - - - - - - - - - - - Get the value of the first element, if the collection is null or empty then return nothing as default value - - - - - - - - - - Copy the value in into target variable and then return the target variable. - - - - - - - - - - å˜é‡ç§»åЍè·ç¦»ç„¶åŽè¿”回其移动之å‰çš„值 - - - - - - - - å˜é‡ç§»åЍè·ç¦»ç„¶åŽè¿”回其移动之å‰çš„值 - - - - - - - - å˜é‡ç§»åЍè·ç¦»ç„¶åŽè¿”回其移动之å‰çš„值 - - - - - - - - éšæœºçš„在目标集åˆä¸­é€‰å–指定数目的å­é›†åˆ - - - - 当目标数目大于或者等于目标集åˆçš„æ•°ç›®çš„æ—¶å€™ï¼Œåˆ™è¿”å›žç›®æ ‡é›†åˆ - - - - - - Convert target object type collection into a string array using the Object.ToString() interface function. - - - - - - - - - Get a sub set of the string data which is contains in both collection and - - - - - - - - - Swap the value in the two variables. - - - - - - - - - Swap the two item position in the target list. - - - - - - - - - ä¸ºåˆ—è¡¨ä¸­çš„å¯¹è±¡æ·»åŠ å¯¹è±¡å¥æŸ„值 - - - - - - - plus one and then return its previous value. - - - - - - - - Gets the subscript index of a generic collection.(èŽ·å–æŸä¸€ä¸ªé›†åˆçš„下标的集åˆ) - - 集åˆä¸­çš„元素为任æ„类型的 - 目标集åˆå¯¹è±¡ - A integer array of subscript index of the target generic collection. - - - - - - - - - - 所è¦èŽ·å–çš„ç›®æ ‡å¯¹è±¡çš„ä¸‹è¡¨çš„é›†åˆ - 是å¦ä¸ºåå‘选择 - 当进行åé€‰çš„æ—¶å€™ï¼Œæœ¬å‚æ•°å°†ä¸ä¼šèµ·ä½œç”¨ - - - - - - - å选,å³å°†æ‰€æœ‰ä¸å‡ºçŽ°åœ¨ä¹‹ä¸­çš„å…ƒç´ éƒ½é€‰å–å‡ºæ¥ - - - - - - - - - - 产生指定数目的一个递增åºåˆ— - - 大于或者等于0的一个数,当å°äºŽ0的时候会出错 - - - - - - 产生指定数目的一个递增åºåˆ— - - - - - - - - 产生指定数目的一个递增åºåˆ— - - - - - - - - 将目标键值对对象的集åˆè½¬æ¢ä¸ºä¸€ä¸ªå­—典对象 - - - - - - - - - - This object collection is a null object or contains zero count items.(判断æŸä¸€ä¸ªå¯¹è±¡é›†åˆæ˜¯å¦ä¸ºç©º) - - - - - - - - - åˆ¤æ–­è¿™ä¸ªå­—ç¬¦ä¸²é›†åˆæ˜¯å¦ä¸ºç©ºé›†åˆï¼Œå‡½æ•°ä¼šé¦–先按照常规的集åˆä¸ºç©ºè¿›è¡Œåˆ¤æ–­ï¼Œç„¶åŽå‡è‹¥ä¸ä¸ºç©ºçš„è¯ï¼Œå‡è‹¥åªå«æœ‰ä¸€ä¸ªå…ƒç´ å¹¶ä¸”该唯一的元素的值为空字符串,则也认为这个字符串集åˆä¸ºç©ºé›†åˆ - - - FALSE 为éžä¸¥è°¨ï¼Œåªè¿›è¡Œå¸¸è§„判断,TRUE 为严谨模å¼ï¼Œä¼šå‡è‹¥ä¸ä¸ºç©ºçš„è¯ï¼Œå‡è‹¥åªå«æœ‰ä¸€ä¸ªå…ƒç´ å¹¶ä¸”该唯一的元素的值为空字符串,则也认为这个字符串集åˆä¸ºç©ºé›†åˆ - - - - - Write the text file data into a file which was specific by the value, - this function not append the new data onto the target file. - (将目标文本字符串写入到一个指定路径的文件之中,但是ä¸ä¼šåœ¨æ–‡ä»¶æœ«å°¾è¿½åŠ æ–°çš„æ•°æ®) - - - - - - - - - - 由于å¯èƒ½ä¼šäº§ç”Ÿæ•°æ®æ±¡æŸ“ï¼Œæ‰€ä»¥å¹¶ä¸æŽ¨è使用这个函数æ¥å†™æ–‡ä»¶ - - - - 当其他的进程对目标文件产生å ç”¨çš„æ—¶å€™ï¼Œå‡½æ•°æ˜¯å¦ç­‰å¾…å…¶ä»–è¿›ç¨‹çš„é€€å‡ºé‡Šæ”¾æ–‡ä»¶å¥æŸ„之åŽåœ¨è¿›è¡Œæ•°æ®çš„写入 - - - - - - åˆ¤æ–­æ˜¯å¦æ˜¯æ–‡æœ¬æ–‡ä»¶ - - 文件全路径åç§° - 是返回Trueï¼Œä¸æ˜¯è¿”回False - 文件检查的长度,å‡è‹¥åœ¨è¿™ä¸ªé•¿åº¦å†…都没有超过null的阈值数,则认为该文件为文本文件,默认区域长度为4KB - 2012å¹´12月5æ—¥ - - - - 将目标字符串数æ®å…¨éƒ¨å†™å…¥åˆ°æ–‡ä»¶ä¹‹ä¸­ï¼Œå½“所写入的文件ä½ç½®ä¹‹ä¸Šæ²¡æœ‰çˆ¶æ–‡ä»¶å¤¹å­˜åœ¨çš„æ—¶å€™ï¼Œä¼šè‡ªåŠ¨åˆ›å»ºæ–‡ä»¶å¤¹ - - - - - - - - - - Serialization the target object type into a XML document.(将一个类对象åºåˆ—化为XML文档) - - The type of the target object data should be a class object.(目标对象类型必须为一个Class) - - - - - - - 从文件之中加载XML之中的数æ®è‡³ä¸€ä¸ªå¯¹è±¡ç±»åž‹ä¹‹ä¸­ - - - XML文件的文件路径 - 当ååºåˆ—åŒ–å‡ºé”™çš„æ—¶å€™æ˜¯å¦æŠ›å‡ºé”™è¯¯ï¼Ÿå‡è‹¥ä¸æŠ›å‡ºé”™è¯¯ï¼Œåˆ™ä¼šè¿”回空值 - - - - - - 记录下错误然åŽè¿”回Nothing - - - - - - - - - 使用二进制åºåˆ—化ä¿å­˜ä¸€ä¸ªå¯¹è±¡ - - - - - - - - - - 使用å二进制åºåˆ—化从指定的文件之中加载一个对象 - - - - - - - - - Generate a specific type object from a xml document stream.(使用一个XML文本内容创建一个XML映射对象) - - - This parameter value is the document text of the xml file, not the file path of the xml file.(是Xmlæ–‡ä»¶çš„æ–‡ä»¶å†…å®¹è€Œéžæ–‡ä»¶è·¯å¾„) - Should this program throw the exception when the xml deserialization error happens? - if False then this function will returns a null value instead of throw exception. - (在进行Xmlååºåˆ—åŒ–çš„æ—¶å€™æ˜¯å¦æŠ›å‡ºé”™è¯¯ï¼Œé»˜è®¤æŠ›å‡ºé”™è¯¯ï¼Œå¦åˆ™è¿”回一个空对象) - - - - - - 使用一个XML文本内容的一个片段创建一个XML映射对象 - - - 是Xmlæ–‡ä»¶çš„æ–‡ä»¶å†…å®¹è€Œéžæ–‡ä»¶è·¯å¾„ - - - - - - 执行一个命令行语å¥ï¼Œå¹¶è¿”回一个IOé‡å®šå‘对象,以获å–被执行的目标命令的标准输出 - - - - - - - - - 获å–一个实数集åˆä¸­æ‰€æœ‰å…ƒç´ çš„积 - - - - - - - - Fill the newly created image data with the specific color brush - - - - - - - - æžšä¸¾æ‰€æœ‰éžæ³•的路径字符 - - - - - - å°†ç›®æ ‡å­—ç¬¦ä¸²ä¹‹ä¸­çš„éžæ³•的字符替æ¢ä¸º"_"符å·ä»¥æˆä¸ºæ­£ç¡®çš„æ–‡ä»¶å字符串 - - - å½“æœ¬å‚æ•°ä¸ºçœŸçš„æ—¶å€™ï¼Œä»…26个字æ¯ï¼Œ0-9数字和下划线_以åŠå°æ•°ç‚¹å¯ä»¥è¢«ä¿ç•™ä¸‹æ¥ - - - - - - Remove all of the element in the from target list - - - - - - - - - å‡ºé”™ä¼šè¿”å›žç©ºé›†åˆ - - - - - 使用System.NameOf()æ“作符æ¥èŽ·å– - - - - - 呿 ‡å‡†ç»ˆç«¯è¾“å‡ºä¸€äº›å¸¦æœ‰æ—¶é—´æˆ³çš„è°ƒè¯•ä¿¡æ¯ - - - - - - - MMFProtocol socket object for the inter-process communication on the localhost, this can be using for the data exchange between two process. - - - - - - 内存映射文件的更新标识符 - - - - - - 客户端的监å¬çº¿ç¨‹ - - - - - - 客户端接å—到的数æ®éœ€è¦ç»è¿‡ååºåˆ—åŒ–è§£ç æ–¹èƒ½è¯»å– - - - - - - - 内存映射文件的数æ®å—的预分é…å¤§å° - - - - - - - - - mmfServer的主è¦åŠŸèƒ½æ˜¯åˆ›å»ºå¹¶ç»´æŠ¤ä¸€ä¸ªå†…å­˜æ˜ å°„æ–‡ä»¶ - - - - - - - - 对象实例会首先å°è¯•以æœåŠ¡å™¨çš„è§’è‰²å»ºç«‹è¿žæŽ¥ï¼Œå½“ä¸æˆåŠŸçš„æ—¶å€™ä¼šä»¥å®¢æˆ·ç«¯çš„å½¢å¼å»ºç«‹è¿žæŽ¥ - - - - 内存映射文件中所存储的将è¦è¿›è¡Œè¿›ç¨‹é—´äº¤æ¢çš„æ•°æ® - - - - - - - - - - Public Delegate Sub (byteData As ()) - 会优先于事件的å‘生 - - - - - è¿›ç¨‹æŽ’æ–¥é” - - - - - - è¿›ç¨‹æŽ’æ–¥é” - - - 程åºä¸­é‡‡ç”¨ä¸€ä¸ªè¿›ç¨‹æŽ’æ–¥é”æ˜¯ç”±äºŽå¾…æ—¥åŽMonoè¿è¡Œæ—¶çŽ¯å¢ƒåœ¨Linuxå¹³å°ä¸­çš„WinForm GTKæˆç†ŸåŽï¼Œå‘Linuxå¹³å°è¿ç§»ï¼Œ - 由于Visual Baisc/C#所编写的应用程åºéœ€è¦ä¿æŒå•个进程,则需è¦å¯ç”¨åº”ç”¨ç¨‹åºæ¡†æž¶ï¼Œè€Œå¾ˆå¤šæƒ…å†µä¸‹ä¸ºäº†ä¼˜åŒ–çš„éœ€æ±‚åº”ç”¨ç¨‹åº - æ— æ³•ä½¿ç”¨åº”ç”¨ç¨‹åºæ¡†æž¶ï¼Œä¸ºäº†å®žçŽ°ä¸€æ¬¡ç¼–è¯‘åˆ°å¤„è¿è¡Œçš„目的,程åºçš„代ç ä¸ä¼šå†å¹³å°é—´è¿›è¡Œä¿®æ”¹ï¼Œ - 由于Linuxå¹³å°ä¹‹ä¸Šä¸èƒ½ä½¿ç”¨Win32APIæ¥ä¿æŒå•è¿›ç¨‹ï¼Œä¸ºäº†ä¿æŒç¨‹åºå¯¹Windows/Linux/MAC三大æ“ä½œç³»ç»Ÿçš„å…¼å®¹æ€§ï¼Œæ•…è€Œåœ¨è¿™é‡Œä½¿ç”¨äº†ä¸€ä¸ªè¿›ç¨‹æŽ’æ–¥é” - - - - - 进程é”的排斥情况 - - - - - - - - 进程排斥é”çš„é”å - - - - - 返回当å‰çš„进程是å¦è¢«åŠ é” - - - - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Looks up a localized string similar to ?<html> -<head> -<title>The Code Project Open License (CPOL)</title> -<Style> -BODY, P, TD { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt } -H1,H2,H3,H4,H5 { color: #ff9900; font-weight: bold; } -H1 { font-size: 14pt;color:black } -H2 { font-size: 13pt; } -H3 { font-size: 12pt; } -H4 { font-size: 10pt; color: black; } -PRE { BACKGROUND-COLOR: #FBEDBB; FONT-FAMILY: "Courier New", Courier, mono; WHITE-SPACE: pre; } -CODE { COLOR: #990000; FONT-FAMILY: "Courier New", Courier, mono; } -.S [rest of string was truncated]";. - - - - - Looks up a localized string similar to GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away yo [rest of string was truncated]";. - - - - - Looks up a localized string similar to This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU [rest of string was truncated]";. - - - - - Generate the source code from the CodeDOM object model.(æ ¹æ®å¯¹è±¡æ¨¡åž‹ç”Ÿæˆæºä»£ç ä»¥æ–¹ä¾¿è°ƒè¯•程åº) - - - VisualBasic, C# - - - You can easily convert the source code between VisualBasic and C# using this function just by makes change in statement: - CodeDomProvider.GetCompilerInfo("VisualBasic").CreateProvider().GenerateCodeFromNamespace([NameSpace], sWriter, Options) - Modify the VisualBasic in to C# - - - - - Compile the codedom object model into a binary assembly module file.(å°†CodeDOMå¯¹è±¡æ¨¡åž‹ç¼–è¯‘ä¸ºäºŒè¿›åˆ¶åº”ç”¨ç¨‹åºæ–‡ä»¶) - - CodeDom dynamic code object model.(目标动æ€ä»£ç çš„对象模型) - Reference assemby file path collection.(用户代ç çš„引用DLL文件列表) - .NET Framework SDK - VisualBasic, C# - - - - - - Compile the codedom object model into a binary assembly module file.(å°†CodeDOMå¯¹è±¡æ¨¡åž‹ç¼–è¯‘ä¸ºäºŒè¿›åˆ¶åº”ç”¨ç¨‹åºæ–‡ä»¶) - - CodeDom dynamic code object model.(目标动æ€ä»£ç çš„对象模型) - Reference assemby file path collection.(用户代ç çš„引用DLL文件列表) - .NET Framework SDK - VisualBasic, C# - - - - - - Compile the codedom object model into a binary assembly module file.(å°†CodeDOMå¯¹è±¡æ¨¡åž‹ç¼–è¯‘ä¸ºäºŒè¿›åˆ¶åº”ç”¨ç¨‹åºæ–‡ä»¶) - - CodeDom dynamic code object model.(目标动æ€ä»£ç çš„对象模型) - Reference assemby file path collection.(用户代ç çš„引用DLL文件列表) - .NET Framework SDK - VisualBasic, C# - - - - - - .exe的编译é…置文件 - - - - - - .Dll的编译é…置文件 - - - - - - Compile the codedom object model into a binary assembly module file.(å°†CodeDOMå¯¹è±¡æ¨¡åž‹ç¼–è¯‘ä¸ºäºŒè¿›åˆ¶åº”ç”¨ç¨‹åºæ–‡ä»¶) - - CodeDom dynamic code object model.(目标动æ€ä»£ç çš„对象模型) - Reference assemby file path collection.(用户代ç çš„引用DLL文件列表) - .NET Framework SDK - VisualBasic, C# - - - - - - Class object instance constructor - - - - - - - - Class object instance constructor. - - - - - - - - Declare a local variable. - - - - - - - - - Call a statics function from a specific type with a known function name - - - - - - - - - Returns value in a function body - - - - - - - Reference to a statics file in the specific target type - - - - - - - - Reference to a instance field in the specific object instance. - - - - - - - - Variable value initializer - - - - - - - Reference to a local variable in a function body. - - - - - - - Gets the element value in a array object. - - - - - - - - Specifies the Title element of the result string. - - - - - - In short description of the link produced. - - - - - - Url that points to the Current result. - - - - - diff --git a/Shoal.v2/Console/My Project/Application.Designer.vb b/Shoal.v2/Console/My Project/Application.Designer.vb deleted file mode 100644 index 88dd01c78..000000000 --- a/Shoal.v2/Console/My Project/Application.Designer.vb +++ /dev/null @@ -1,13 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - diff --git a/Shoal.v2/Console/My Project/Application.myapp b/Shoal.v2/Console/My Project/Application.myapp deleted file mode 100644 index e62f1a533..000000000 --- a/Shoal.v2/Console/My Project/Application.myapp +++ /dev/null @@ -1,10 +0,0 @@ - - - false - false - 0 - true - 0 - 2 - true - diff --git a/Shoal.v2/Console/My Project/AssemblyInfo.vb b/Shoal.v2/Console/My Project/AssemblyInfo.vb deleted file mode 100644 index 7aea0b47a..000000000 --- a/Shoal.v2/Console/My Project/AssemblyInfo.vb +++ /dev/null @@ -1,35 +0,0 @@ -Imports System -Imports System.Reflection -Imports System.Runtime.InteropServices - -' General Information about an assembly is controlled through the following -' set of attributes. Change these attribute values to modify the information -' associated with an assembly. - -' Review the values of the assembly attributes - - - - - - - - - - -'The following GUID is for the ID of the typelib if this project is exposed to COM - - -' Version information for an assembly consists of the following four values: -' -' Major Version -' Minor Version -' Build Number -' Revision -' -' You can specify all the values or you can default the Build and Revision Numbers -' by using the '*' as shown below: -' - - - diff --git a/Shoal.v2/Console/My Project/Resources.Designer.vb b/Shoal.v2/Console/My Project/Resources.Designer.vb deleted file mode 100644 index 11cc4fb7f..000000000 --- a/Shoal.v2/Console/My Project/Resources.Designer.vb +++ /dev/null @@ -1,104 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - -Imports System - -Namespace My.Resources - - 'This class was auto-generated by the StronglyTypedResourceBuilder - 'class via a tool like ResGen or Visual Studio. - 'To add or remove a member, edit your .ResX file then rerun ResGen - 'with the /str option, or rebuild your VS project. - ''' - ''' A strongly-typed resource class, for looking up localized strings, etc. - ''' - _ - Friend Module Resources - - Private resourceMan As Global.System.Resources.ResourceManager - - Private resourceCulture As Global.System.Globalization.CultureInfo - - ''' - ''' Returns the cached ResourceManager instance used by this class. - ''' - _ - Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager - Get - If Object.ReferenceEquals(resourceMan, Nothing) Then - Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("Microsoft.VisualBasic.Shoal.Resources", GetType(Resources).Assembly) - resourceMan = temp - End If - Return resourceMan - End Get - End Property - - ''' - ''' Overrides the current thread's CurrentUICulture property for all - ''' resource lookups using this strongly typed resource class. - ''' - _ - Friend Property Culture() As Global.System.Globalization.CultureInfo - Get - Return resourceCulture - End Get - Set - resourceCulture = value - End Set - End Property - - ''' - ''' Looks up a localized string similar to GNU GENERAL PUBLIC LICENSE - ''' Version 3, 29 June 2007 - ''' - ''' Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> - ''' Everyone is permitted to copy and distribute verbatim copies - ''' of this license document, but changing it is not allowed. - ''' - ''' Preamble - ''' - ''' The GNU General Public License is a free, copyleft license for - '''software and other kinds of works. - ''' - ''' The licenses for most software and other practical works are designed - '''to take away yo [rest of string was truncated]";. - ''' - Friend ReadOnly Property gpl() As String - Get - Return ResourceManager.GetString("gpl", resourceCulture) - End Get - End Property - - ''' - ''' Looks up a localized string similar to This program is free software: you can redistribute it and/or modify - '''it under the terms of the GNU General Public License as published by - '''the Free Software Foundation, either version 3 of the License, or - '''any later version. - ''' - '''This program is distributed in the hope that it will be useful, - '''but WITHOUT ANY WARRANTY; without even the implied warranty of - '''MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - '''GNU General Public License for more details. - ''' - '''You should have received a copy of the GNU [rest of string was truncated]";. - ''' - Friend ReadOnly Property license() As String - Get - Return ResourceManager.GetString("license", resourceCulture) - End Get - End Property - End Module -End Namespace diff --git a/Shoal.v2/Console/My Project/Resources.resx b/Shoal.v2/Console/My Project/Resources.resx deleted file mode 100644 index 5a97acb37..000000000 --- a/Shoal.v2/Console/My Project/Resources.resx +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - ..\Resources\gpl.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312 - - - ..\Resources\license.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312 - - \ No newline at end of file diff --git a/Shoal.v2/Console/My Project/Settings.Designer.vb b/Shoal.v2/Console/My Project/Settings.Designer.vb deleted file mode 100644 index 4643c8891..000000000 --- a/Shoal.v2/Console/My Project/Settings.Designer.vb +++ /dev/null @@ -1,73 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - - -Namespace My - - _ - Partial Friend NotInheritable Class MySettings - Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) - -#Region "My.Settings Auto-Save Functionality" -#If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean - - Private Shared addedHandlerLockObject As New Object - - _ - Private Shared Sub AutoSaveSettings( sender As Global.System.Object, e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub -#End If -#End Region - - Public Shared ReadOnly Property [Default]() As MySettings - Get - -#If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If -#End If - Return defaultInstance - End Get - End Property - End Class -End Namespace - -Namespace My - - _ - Friend Module MySettingsProperty - - _ - Friend ReadOnly Property Settings() As Global.Microsoft.VisualBasic.Shoal.My.MySettings - Get - Return Global.Microsoft.VisualBasic.Shoal.My.MySettings.Default - End Get - End Property - End Module -End Namespace diff --git a/Shoal.v2/Console/My Project/Settings.settings b/Shoal.v2/Console/My Project/Settings.settings deleted file mode 100644 index 85b890b3c..000000000 --- a/Shoal.v2/Console/My Project/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Shoal.v2/Console/My Project/app.manifest b/Shoal.v2/Console/My Project/app.manifest deleted file mode 100644 index 4581619e0..000000000 --- a/Shoal.v2/Console/My Project/app.manifest +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Shoal.v2/Console/Resources/gpl.txt b/Shoal.v2/Console/Resources/gpl.txt deleted file mode 100644 index 94a9ed024..000000000 --- a/Shoal.v2/Console/Resources/gpl.txt +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/Shoal.v2/Console/Resources/license.txt b/Shoal.v2/Console/Resources/license.txt deleted file mode 100644 index da76ca0a9..000000000 --- a/Shoal.v2/Console/Resources/license.txt +++ /dev/null @@ -1,12 +0,0 @@ -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . \ No newline at end of file diff --git a/Shoal.v2/Console/ShellScript.ico b/Shoal.v2/Console/ShellScript.ico deleted file mode 100644 index 5e90c4684..000000000 Binary files a/Shoal.v2/Console/ShellScript.ico and /dev/null differ diff --git a/Shoal.v2/Console/Shoal.Core.sln b/Shoal.v2/Console/Shoal.Core.sln deleted file mode 100644 index e4faae546..000000000 --- a/Shoal.v2/Console/Shoal.Core.sln +++ /dev/null @@ -1,85 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.22823.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Shoal", "Shoal.vbproj", "{D71E0D55-DA94-4B18-B204-252D532EE8EC}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ShoalShell_Core", "Microsoft.VisualBasic.Scripting.ShoalShell\ShoalShell_Core.vbproj", "{0BE7FD44-D724-49F6-AEC0-06C80B4F5527}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Shoal.Testing", "..\Shoal.Testing\Shoal.Testing.vbproj", "{9E5436E9-9FA4-47B9-9BDE-F3621622F4B2}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Microsoft.VisualBasic.Architecture.Framework", "..\..\Microsoft.VisualBasic_Framework\Microsoft.VisualBasic.Architecture.Framework\Microsoft.VisualBasic.Architecture.Framework.vbproj", "{FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ShoalShell.Plugins.HtmlHelpServer", "..\ShoalShell.Plugins.HtmlHelpServer\ShoalShell.Plugins.HtmlHelpServer.vbproj", "{D712E0A2-8AB1-4665-B7B5-D2FCE09188AE}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DocumentFormat.HTML", "..\..\Microsoft.VisualBasic_Framework\DocumentFormats\MSHtml\MSHtml\DocumentFormat.HTML.vbproj", "{2DD4BE80-DDC3-4767-94A7-10F1C3395716}" -EndProject -Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "HTTPServer", "..\..\Reference SharedLib\HTTPServer\HTTPServer.shproj", "{932F99F9-BE59-4743-865F-1ED9331443E3}" -EndProject -Global - GlobalSection(SharedMSBuildProjectFiles) = preSolution - ..\..\Reference SharedLib\HTTPServer\HTTPServer.projitems*{d712e0a2-8ab1-4665-b7b5-d2fce09188ae}*SharedItemsImports = 4 - ..\..\Reference SharedLib\HTTPServer\HTTPServer.projitems*{932f99f9-be59-4743-865f-1ed9331443e3}*SharedItemsImports = 13 - ..\..\Microsoft.VisualBasic_Framework\SharedProject.VB_FrameworkExtensions\SharedProject.VB_FrameworkExtensions.projitems*{fecce1fd-e1d4-49e3-a668-60bb5e7aed99}*SharedItemsImports = 4 - EndGlobalSection - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|x64.ActiveCfg = Debug|x64 - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|x64.Build.0 = Debug|x64 - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|Any CPU.Build.0 = Release|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|x64.ActiveCfg = Release|x64 - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|x64.Build.0 = Release|x64 - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Debug|x64.ActiveCfg = Debug|x64 - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Debug|x64.Build.0 = Debug|x64 - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Release|Any CPU.Build.0 = Release|Any CPU - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Release|x64.ActiveCfg = Release|x64 - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Release|x64.Build.0 = Release|x64 - {9E5436E9-9FA4-47B9-9BDE-F3621622F4B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9E5436E9-9FA4-47B9-9BDE-F3621622F4B2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9E5436E9-9FA4-47B9-9BDE-F3621622F4B2}.Debug|x64.ActiveCfg = Debug|Any CPU - {9E5436E9-9FA4-47B9-9BDE-F3621622F4B2}.Debug|x64.Build.0 = Debug|Any CPU - {9E5436E9-9FA4-47B9-9BDE-F3621622F4B2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9E5436E9-9FA4-47B9-9BDE-F3621622F4B2}.Release|Any CPU.Build.0 = Release|Any CPU - {9E5436E9-9FA4-47B9-9BDE-F3621622F4B2}.Release|x64.ActiveCfg = Release|Any CPU - {9E5436E9-9FA4-47B9-9BDE-F3621622F4B2}.Release|x64.Build.0 = Release|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x64.ActiveCfg = Debug|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x64.Build.0 = Debug|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|Any CPU.Build.0 = Release|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x64.ActiveCfg = Release|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x64.Build.0 = Release|x64 - {D712E0A2-8AB1-4665-B7B5-D2FCE09188AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D712E0A2-8AB1-4665-B7B5-D2FCE09188AE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D712E0A2-8AB1-4665-B7B5-D2FCE09188AE}.Debug|x64.ActiveCfg = Debug|x64 - {D712E0A2-8AB1-4665-B7B5-D2FCE09188AE}.Debug|x64.Build.0 = Debug|x64 - {D712E0A2-8AB1-4665-B7B5-D2FCE09188AE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D712E0A2-8AB1-4665-B7B5-D2FCE09188AE}.Release|Any CPU.Build.0 = Release|Any CPU - {D712E0A2-8AB1-4665-B7B5-D2FCE09188AE}.Release|x64.ActiveCfg = Release|x64 - {D712E0A2-8AB1-4665-B7B5-D2FCE09188AE}.Release|x64.Build.0 = Release|x64 - {2DD4BE80-DDC3-4767-94A7-10F1C3395716}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2DD4BE80-DDC3-4767-94A7-10F1C3395716}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2DD4BE80-DDC3-4767-94A7-10F1C3395716}.Debug|x64.ActiveCfg = Debug|x64 - {2DD4BE80-DDC3-4767-94A7-10F1C3395716}.Debug|x64.Build.0 = Debug|x64 - {2DD4BE80-DDC3-4767-94A7-10F1C3395716}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2DD4BE80-DDC3-4767-94A7-10F1C3395716}.Release|Any CPU.Build.0 = Release|Any CPU - {2DD4BE80-DDC3-4767-94A7-10F1C3395716}.Release|x64.ActiveCfg = Release|x64 - {2DD4BE80-DDC3-4767-94A7-10F1C3395716}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/Shoal.v2/Console/Shoal.exe.config b/Shoal.v2/Console/Shoal.exe.config deleted file mode 100644 index 2d2a12d81..000000000 --- a/Shoal.v2/Console/Shoal.exe.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/Shoal.v2/Console/Shoal.ico b/Shoal.v2/Console/Shoal.ico deleted file mode 100644 index 043d8d988..000000000 Binary files a/Shoal.v2/Console/Shoal.ico and /dev/null differ diff --git a/Shoal.v2/Console/Shoal.sln b/Shoal.v2/Console/Shoal.sln deleted file mode 100644 index 1e2c413b5..000000000 --- a/Shoal.v2/Console/Shoal.sln +++ /dev/null @@ -1,65 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.24720.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "+Microsoft.VisualBasic.Architecture.Framework", "..\..\..\VisualBasic_AppFramework\Microsoft.VisualBasic.Architecture.Framework\+Microsoft.VisualBasic.Architecture.Framework.vbproj", "{FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ShoalShell_Core.v2", "..\Shoal.v2\ShoalShell_Core.v2.vbproj", "{A7CB16FF-75C6-4746-8449-86C121D723C4}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ShoalShell", "ShoalShell.vbproj", "{D71E0D55-DA94-4B18-B204-252D532EE8EC}" -EndProject -Global - GlobalSection(SharedMSBuildProjectFiles) = preSolution - ..\..\..\VisualBasic_AppFramework\SharedProject.VB_FrameworkExtensions\SharedProject.VB_FrameworkExtensions.projitems*{fecce1fd-e1d4-49e3-a668-60bb5e7aed99}*SharedItemsImports = 4 - EndGlobalSection - 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 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x64.ActiveCfg = Debug|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x64.Build.0 = Debug|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x86.ActiveCfg = Debug|x86 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x86.Build.0 = Debug|x86 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|Any CPU.Build.0 = Release|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x64.ActiveCfg = Release|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x64.Build.0 = Release|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x86.ActiveCfg = Release|x86 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x86.Build.0 = Release|x86 - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|x64.ActiveCfg = Debug|x64 - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|x64.Build.0 = Debug|x64 - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|x86.ActiveCfg = Debug|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|x86.Build.0 = Debug|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|Any CPU.Build.0 = Release|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|x64.ActiveCfg = Release|x64 - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|x64.Build.0 = Release|x64 - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|x86.ActiveCfg = Release|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|x86.Build.0 = Release|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|x64.ActiveCfg = Debug|x64 - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|x64.Build.0 = Debug|x64 - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|x86.ActiveCfg = Debug|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|x86.Build.0 = Debug|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|Any CPU.Build.0 = Release|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|x64.ActiveCfg = Release|x64 - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|x64.Build.0 = Release|x64 - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|x86.ActiveCfg = Release|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|x86.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/Shoal.v2/Console/Shoal.v2.xml b/Shoal.v2/Console/Shoal.v2.xml deleted file mode 100644 index 2d86c95f5..000000000 --- a/Shoal.v2/Console/Shoal.v2.xml +++ /dev/null @@ -1,1304 +0,0 @@ - - - - -Shoal.v2 - - - - - - 应用程åºå¯åŠ¨çš„æ—¶å€™çš„åˆå§‹å·¥ä½œç›®å½•ï¼Œé»˜è®¤ä¸ºåº”ç”¨ç¨‹åºæ‰€åœ¨çš„æ–‡ä»¶å¤¹ - - - - - - - - 脚本引擎的类型注册表的文件ä½ç½®ï¼Œä¸ºç©ºçš„è¯ä¼šä½¿ç”¨é»˜è®¤çš„æ–‡ä»¶ä½ç½® - - - - - - - - Get shoal shell registry file path.(èŽ·å–æ³¨å†Œè¡¨çš„æ–‡ä»¶è·¯å¾„) - - - - - - - 命å空间的html帮助页é¢çš„生æˆå·¥å…· - - - - - 值返回路径 - - - - - - - Internal wiki system queriable object.(这个对象是å¯ä»¥æŽ¥å—wiki查询æ“作的) - - - - - - 模糊匹é…并返回匹é…结果,当返回空字符串的时候,则说明没有被匹é…上 - - - - - - - - - - 文件路径 - - - - - æ‰€è¾“å…¥çš„å‚æ•°æ˜¯å¯èƒ½æ²¡æœ‰é¡ºåºçš„ï¼Œä½†æ˜¯å‡½æ•°çš„å‚æ•°å®šä¹‰æ˜¯æœ‰é¡ºåºçš„ - - - - - 一一对应比较 - - - - - ä¸€ä¸€å¯¹åº”æ¯”è¾ƒå’Œå‚æ•°åæ— å…³ - - - - 处ç†é€»è¾‘开关标记的 - - - - 函数ä¸ä¼šè®¡ç®—æ‹“å±•å‡½æ•°çš„è°ƒç”¨å‚æ•° - - - - 使用这个函数æ¥è¿›è¡Œåˆ¤æ–­ - - - - - - - - - - - - - - - - - - - - - - - - è¾“å…¥çš„å‚æ•°é‡Œé¢æ˜¯æ²¡æœ‰ä»»ä½•的特殊的å称的,会使用字典查询,ä¸ä¼šåƒ - - - - - - - - 这个模å—åªæ˜¯ç”¨æ¥åˆ¤æ–­å‡½æ•°å¦‚何é‡è½½çš„,数æ®ç±»åž‹çš„è½¬æ¢æœ‰ç³»ç»Ÿè‡ªåŠ¨å®Œæˆ - - - - - 判断两ç§ç±»åž‹æ˜¯å¦ç›¸ç­‰ - - 当å‰çš„这个é‡è½½æ–¹æ³•çš„å‚æ•°å®šä¹‰çš„类型 - 从脚本传递进æ¥çš„å‡½æ•°å‚æ•°çš„类型 - - - - - - Is a inherits from b - - 继承类型继承自基本类型,具备有基本类型的所有特性 - 基本类型 - - - - - Is a inherits from b - - 继承类型继承自基本类型,具备有基本类型的所有特性 - 基本类型 - - - - - 命令执行的入å£ç‚¹ï¼Œä½¿ç”¨è¿™ä¸ªå¯¹è±¡è¿›è¡Œå‡½æ•°é‡è½½çš„å¤„ç† - - - é‡è½½å‡½æ•°çš„ç­¾å冲çªçš„æ¡ä»¶ï¼š - 1. å…·æœ‰å®Œå…¨ä¸€æ ·çš„å‚æ•°åˆ—表,å³å‚æ•°åå’Œå‚æ•°ç±»åž‹å®Œå…¨ä¸€è‡´ï¼Œå‚数的顺åºå¯¹ç­¾åå†²çªæ²¡æœ‰å½±å“ - 2. 除了满足上é¢çš„æ¡ä»¶ï¼Œä¸¤ä¸ªå‡½æ•°ä¹‹é—´çš„è¿”å›žå€¼å®Œå…¨ä¸€æ ·çš„æ—¶å€™ï¼Œå³å¯è®¤ä¸ºä¸¤ä¸ªå‡½æ•°çš„ç­¾å完全一样 - - - - - Shoal脚本命令的函数é‡è½½ - - - - - - Shoal API命令的åç§° - - - - - - 当å‰çš„这个执行入å£ç‚¹æ˜¯å¦æœ‰é‡è½½çš„命令 - - - - - - - - 共享方法 - - - 如果ä¸çŸ¥é“该怎么处ç†è¿™ä¸ªå‚数,请使用Nothing - - - - - 共享方法和实例方法 - - - 如果ä¸çŸ¥é“该怎么处ç†è¿™ä¸ªå‚数,请使用Nothing - - - - - å‘当å‰çš„æ‰§è¡Œå…¥å£ç‚¹æ·»åŠ ä¸€ä¸ªé‡è½½å‡½æ•°ï¼Œå½“当å‰çš„æ‰§è¡Œå…¥å£ç‚¹ä¹‹ä¸­å…·å¤‡æœ‰ä¸¤ä¸ªå®Œå…¨ç›¸åŒçš„函数签å的入å£ç‚¹çš„æ—¶å€™ï¼Œæ–°çš„å…¥å£ç‚¹ä¼šæ›¿æ¢æŽ‰æ—§çš„å…¥å£ç‚¹ - - - - - - - 获å–用于支æŒå‡½æŽˆé‡è½½æ‰€éœ€è¦çš„æ•°å­—ç­¾åä¿¡æ¯ - - - - - - - - 当å‰çš„这个执行入å£ç‚¹ä¹‹ä¸­çš„é‡è½½çš„函数的åå°„å…¥å£ç‚¹çš„æ•°ç›® - - - - - - - - 用于表示一个已ç»è¢«ç­¾å的函数 - - - - - - 傿•°åˆ—表按照从å°åˆ°å¤§æŽ’åºä¹‹åŽè®¡ç®—MD5å“ˆå¸Œå€¼ä½œä¸ºå‚æ•°åˆ—表的数字签å - - - - - - 返回值的数字签å - - - - - - - - 当傿•°æœ‰å¤šä¸ªçš„æ—¶å€™ï¼Œå‡ºäº†ç¬¬ä¸€ä¸ªä¹‹å¤–ï¼Œå…¶ä»–çš„å‚æ•°éƒ½æ˜¯å¯é€‰çš„æˆ–者类型为逻辑值,则该函数被定义为伪å•傿•°å‡½æ•° - - - - - - 傿•°åˆ—表按照从å°åˆ°å¤§æŽ’åºä¹‹åŽè®¡ç®—MD5å“ˆå¸Œå€¼ä½œä¸ºå‚æ•°åˆ—表的数字签å - - - - - - - - éžå¯é€‰å‚数的数目 - - - - - - 创建共享方法的签å实例 - - - - - - - 判断两个函数入å£ç‚¹å¯¹è±¡æ˜¯å¦å…·æœ‰å®Œå…¨ä¸€æ ·çš„æ•°å­—ç­¾å - - - - - - - - 得到内存之中的实际引用ä½ç½® - - - - - - Dim array <= {expression} as type - - - - - var < (typeID) {expression} - - - - - 去掉了外层的括å·äº†çš„ - - - - - - 左端的将è¦å†™å…¥æ–‡ä»¶çš„è¡¨è¾¾å¼ - - - - - - è§£æžå‡ºæ¥çš„表达å¼ä¹‹ä¸­åªå«æœ‰ä¸€ä¸ªè¯å…ƒï¼Œå¹¶ä¸”䏿˜¯æ³¨é‡Šï¼Œåˆ™é»˜è®¤è®¤ä¸ºæ˜¯å˜é‡æŸ¥çœ‹æ“作,值默认赋值给系统å˜é‡$ - - - - - 在解释器阶段由于缺少信æ¯è¿˜æ— æ³•判断表达å¼çš„类型,则这些语å¥éƒ½è¢«è®¾å®šä¸ºåЍæ€çš„类型 - - - - - Throw Exception - - - - - Boolean Expression - - - - - - -1è¡¨ç¤ºä¸æ˜¯æ³¨é‡Š - - - - - - - Gotoè¯­å¥ - - - - - WhenåŽé¢çš„逻辑æ¡ä»¶è¡¨è¾¾å¼ - - - - - - Goto的标签 - - - - - 计算得到脚本值,å†ç”±å¼•擎计算值之åŽèµ‹å€¼ç»™æœ¬è„šæœ¬ä¹‹ä¸­çš„å˜é‡ - - - - - - On Error Resume Next.(脚本程åºåœ¨é‡åˆ°é”™è¯¯ä¹‹åŽå¿½ç•¥æŽ‰é”™è¯¯å°è¯•继续执行下去) - - - - - Imports Namespace1, Namespace2, Namespace3 - - - - - å­—ç¬¦ä¸²å¸¸é‡æˆ–è€…å†…éƒ¨è¡¨è¾¾å¼ - - - - - - 对于空白行,是无法被解æžå‡ºæ¥çš„ï¼Œä½†æ˜¯ç©ºç™½è¡Œä¸æ˜¯è¯­æ³•错误 - - - - - - Include file1, file2, file3, file4, ... - - - - - The file path list of the external script - - - - - - Dynamics install a external module in the runtime. - - - - - The name of the variable. - - - - - - å˜é‡çš„ç±»åž‹çº¦æŸ - - - - - - 表达å¼çš„ç±»åž‹ç¼–å· - - - - - - 本å¥ä»£ç åœ¨è„šæœ¬ä¹‹ä¸­çš„åŽŸå§‹çš„è¡Œæ•° - - - - - - 语å¥åŽé¢æ‰€å‡ºçŽ°çš„æ³¨é‡Šä¿¡æ¯ - - - - - - 原始的表达å¼å­—符串 - - - - - - 语法错误 - - - - - 空白行 - - - - - 注释行 - - - - - åœ¨è§£é‡Šå™¨é˜¶æ®µç”±äºŽç¼ºå°‘ç±»åž‹ä¿¡æ¯æ— æ³•判断目标类型,所以被设置为动æ€ç±»åž‹ - - - - - 函数调用 - - - - - å•独执行输出设备的调用 - - - - - > - - - - - < - - - - - << Hybrids scripting; - - - - - >> Setup variable of hybrids scripting; - - - - - Gotoè·³è½¬è¯­å¥ - - - - - Goto的跳转的行标 - - - - - On Error Resume Nextè¯­å¥ - - - - - åªæ˜¯è°ƒç”¨æ–¹æ³•,函数的返回值直接返回给系统å˜é‡$ - 方法返回Nothing - 函数返回函数值 - - - - - 对于类型而言,其ä¸ä»…仅调用一个方法,而且还将方法的返回值赋值给一个指定的左端å˜é‡ï¼Œ - 由于å˜é‡ä¹‹é—´èµ‹å€¼ä¼ é€’的情况也å¯èƒ½å­˜åœ¨ï¼Œæ•…而这个属性也å¯èƒ½æ˜¯å¼•用一个内存地å€ï¼Œå½“找ä¸åˆ°æ–¹æ³•çš„æ—¶å€™ï¼Œå°±ä¼šé€šè¿‡è¿™ä¸ªå‚æ•°æ¥æŸ¥æ‰¾å†…å­˜å˜é‡ - - - - - - è§£æžå¾—到的顺åºåº”è¯¥å’ŒåŽŸå§‹çš„è„šæœ¬è¯­å¥æ˜¯ä¸€è‡´çš„ - - - - - - åªæœ‰å·¦ç«¯å¼•用表达å¼ä¸ä¸ºç©ºï¼Œå…¶ä»–的元素都为空 - - - - - - åªæœ‰è§£æžå‡ºæ¥çš„è¯å…ƒæ¨¡åž‹ï¼Œï¼Œæ²¡æœ‰åŒ…嫿œ‰å‡½æ•°æŒ‡é’ˆçš„奿Ÿ„ä¿¡æ¯ï¼Œè¿˜ä¸èƒ½å¤Ÿç›´æŽ¥è¿è¡Œ - - - - - Value是指å‘列表之中的元素的ä½ç½®ä¸‹è¡¨ - - - - - - - - - 脚本文件的文件路径 - - - - - at Shoal.Testing.Debugger.Main() in G:\Shoal\Shoal.Testing\Debugger.vb:line 21 - - - - - - - 将表达å¼ä¹‹ä¸­çš„æ‰€æœ‰è¯å…ƒè¿›è¡Œå®Œå…¨å±•å¼€ - - - - - 将表达å¼è§£æžä¸ºè¯å…ƒï¼Œæ¯ä¸€ä¸ªè¯å…ƒéƒ½ä¸å«æœ‰å‰å¯¼æˆ–者åŽç½®çš„ç©ºç™½ç¬¦å· - æ–­è¯å…ƒçš„æ¡ä»¶æ˜¯Stack必须为空 - - - - - - ä¿ç•™æœ‰å†…部表达å¼ï¼Œåªå±•å¼€ä¸€çº§è¡¨è¾¾å¼ - - - - - 当å‰çš„æ•´è¡Œä»£ç æ˜¯å¦ä¸ºæ³¨é‡Šè¡Œ - - - - - - 空白行 - - - - - - 将表达å¼è§£æžä¸ºè¯å…ƒï¼Œæ¯ä¸€ä¸ªè¯å…ƒéƒ½ä¸å«æœ‰å‰å¯¼æˆ–者åŽç½®çš„ç©ºç™½ç¬¦å· - æ–­è¯å…ƒçš„æ¡ä»¶æ˜¯Stack必须为空 - - 在调用之å‰è¯·å…ˆè¯•用Trimå‡½æ•°è¿›è¡Œå¤„ç† - - - - 开关傿•°ï¼šåªé€‚ç”¨äºŽé€»è¾‘å€¼å‚æ•°ï¼Œæœ‰è¡¨ç¤ºTrue,没有则表示Falseï¼Œå¼€å…³å‚æ•°ä½¿ç”¨-或者--或者\或者/开头 - 例如有如下的函数定义 - Function(a As Object, b as Boolean) - 则调用的时候å¯ä»¥æœ‰ä¸‹é¢çš„å½¢å¼ - Function a $a b T/F/True/False/1/0/yesy/no - æˆ–è€…å¼€å…³å½¢å¼ - Function a $a -b 或者 --b 或者 /b 或者 \b - 当然也å¯ä»¥ - Call $a -> Function True/False/yes/No/1/0/T/F - Call $a -> Function /a 或者 \a 或者 -a 或者 --a - - - - - 傿•°åå‡ºäº†æ™®é€šç±»åž‹çš„å‚æ•°å需è¦å¡«å……傿•°åä¹‹å¤–ï¼Œå…¶ä»–ç±»åž‹çš„å‚æ•°å都å¯ä»¥ç•™ç©º - - - - - æ‹“å±•å‡½æ•°çš„è°ƒç”¨å‚æ•°ï¼Œå³å‡½æ•°å®šä¹‰ä¹‹ä¸­çš„ç¬¬ä¸€ä¸ªå‚æ•° - - - - - å½“å‡½æ•°æœ‰ä¸¤ä¸ªå‚æ•°çš„æ—¶å€™ï¼Œä½¿ç”¨æ‹“展函数的形å¼è°ƒç”¨ï¼Œåˆ™ç¬¬äºŒä¸ªå‚数会å¯ä»¥çœ‹ä½œä¸ºä¼ªå•傿•° - - - - - å‡½æ•°åªæœ‰ä¸€ä¸ªå‚数,则å¯ä»¥å¿½ç•¥å‚æ•°å直接调用 - - - - - é€»è¾‘å€¼ç±»åž‹çš„å¼€å…³å‚æ•° - - - - - å‡½æ•°çš„å‚æ•°ä¹‹é—´æ˜¯æŒ‰ç…§å‡½æ•°çš„定义顺åºå¼•用的 - - - - - - - 普通类型还是特殊类型 - èŽ·å¾—å‚æ•°å称的一个表达å¼å­—符串 - - - - å¯èƒ½ä¼šå­˜åœ¨æŒ‡é’ˆå¼•用的情况,这个对象类型的主è¦å®žçŽ°çš„åŠŸèƒ½æ˜¯è®¾ç½®å†…å­˜å˜é‡ - - - - - 该å˜é‡åœ¨å†…å­˜ä¹‹ä¸­çš„å¼•ç”¨åœ°å€ - - - - - - æ˜¯å†…éƒ¨è¡¨è¾¾å¼ - - - - - - - - - 1. Name 普通å˜é‡å¼•用 - 2. $var å˜é‡åœ°å€å¼•用 -> å€¼æ˜¯å®žé™…çš„åœ°å€ - 3. {expr} 内部表达å¼å¼•用 -> å€¼æ˜¯å®žé™…çš„åœ°å€ - 4. [int] ä½ç½®å¼•用 - - - - - 会判断是å¦ä¸ºæœ‰æ•ˆçš„æŒ‡é’ˆ - - - - - - - 该表达å¼ä¹‹ä¸­çš„æ“ä½œç¬¦ - - - - - <- Assign value to variable; - - - - - -> Extension method calling; - - - - - <= Collection and hash table operations; - - - - - = Self type cast; - - - - - << Hybrids scripting; - - - - - >> Setup variable of hybrids scripting; - - - - - => 函数指针 - - - - - < - - - - - > - - - - - - - - [<- Assign value to variable;] - - - [-> Extension method calling;] - - - [<= Collection and hash table operations;] - - - [= Self type cast;] - - - [<< Hybrids scripting;] - - - [>> Setup variable of hybrids scripting;] - - - - - - åŒ…å«æœ‰å‡½æ•°å¥æŸ„以åŠè°ƒç”¨çš„æŽ¥å£çš„æè¿°ä¿¡æ¯ - - - - - è¿™ä¸ªæ˜¯å‚æ•°å¼•用之中的内部表达å¼ï¼Œåªæœ‰å•行的 - - - - - 一个表达å¼å¯¹è±¡ä¹‹ä¸­çš„æŸä¸€ä¸ªå•è¯å…ƒç´  - - - - - 产生 - - - - - - 获å–得到原始的è¯å…ƒæ•°æ® - - - - - - å‡è‹¥æ˜¯å†…部表达å¼çš„è¯ï¼Œåˆ™å¯ä»¥ä½¿ç”¨è¿™ä¸ªæ–¹æ³•æ¥ä¿®å»ºæŽ‰ä¸¤è¾¹çš„æ‹¬å· - - - - - - 语法解æžå™¨ - - - - - 从这里开始解æžè¡¨è¾¾å¼ - - - - - - - - - åªæ˜¯ç”¨äºŽæ˜¾ç¤ºçš„原始脚本行 - 使用这个已ç»è§£æžå¥½çš„è¯å…ƒè¿›è¡Œå¯¹è±¡çš„ç”Ÿæˆ - - - - - - - åªæ˜¯ç”¨äºŽæ˜¾ç¤ºçš„原始脚本行 - 使用这个已ç»è§£æžå¥½çš„è¯å…ƒè¿›è¡Œå¯¹è±¡çš„ç”Ÿæˆ - - - - - - - åªæ˜¯ç”¨äºŽæ˜¾ç¤ºçš„原始脚本行 - 使用这个已ç»è§£æžå¥½çš„è¯å…ƒè¿›è¡Œå¯¹è±¡çš„ç”Ÿæˆ - - - - - å•ç‹¬çš„æŠ›å‡ºé”™è¯¯çš„è¯­å¥ - - - - - - - - var = $args => --ssl - 或者 - $args => /name - - - - - - - - Include file1, file2, file3 - - - - - - - - Goto Label When BooleanExpression - - - - - - - - var < (typeID) {expression} - - - - - - - - 开头的第一个字符必须是$或者& - - åªæ˜¯ç”¨äºŽæ˜¾ç¤ºçš„原始脚本行 - 使用这个已ç»è§£æžå¥½çš„è¯å…ƒè¿›è¡Œå¯¹è±¡çš„ç”Ÿæˆ - - - - - - - åªæ˜¯ç”¨äºŽæ˜¾ç¤ºçš„原始脚本行 - 使用这个已ç»è§£æžå¥½çš„è¯å…ƒè¿›è¡Œå¯¹è±¡çš„ç”Ÿæˆ - - - - - - åªæ˜¯ç”¨äºŽæ˜¾ç¤ºçš„原始脚本行 - 使用这个已ç»è§£æžå¥½çš„è¯å…ƒè¿›è¡Œå¯¹è±¡çš„ç”Ÿæˆ - - - - - - - - - 3: 没有进行拓展方法的调用的 - 5: 进行了拓展方法的调用的 - - - - - - 内部的一些简å•的常用命令 - - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Looks up a localized string similar to GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away yo [rest of string was truncated]";. - - - - - Looks up a localized string similar to This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU [rest of string was truncated]";. - - - - - Looks up a localized string similar to <!DOCTYPE html> - -<html lang="en"> - - <head> - - <meta charset="utf-8"> - <title>%Namespace%</title> - - <style>::-moz-selection { - background: #b3d4fc; - text-shadow: none; - } - - ::selection { - background: #b3d4fc; - text-shadow: none; - } - - html { - padding: 30px 10px; - font-size: 16px; - line-height: 1.4; - color: #737373; - background: #f0f0f0; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; - } - - [rest of string was truncated]";. - - - - - 字典之中的Key属性分别为所需è¦è½¬æ¢çš„ç›®æ ‡ç±»åž‹çš„ç®€ç§°å’Œè¾“å…¥çš„ç¬¬ä¸€ä¸ªå‚æ•°çš„类型,目标方法åªèƒ½å¤Ÿæœ‰ä¸€ä¸ªå‚æ•° - - - - - - - - ç›®æ ‡å‡½æ•°çš„ç¬¬ä¸€ä¸ªå‚æ•°ï¼Œæœ¬æ–¹æ³•会根æ®è¿™ä¸ªå‚数以åŠå‚数查找最åˆé€‚çš„å¥æŸ„æ¥å¤„ç†æœ¬å‚数的输入 - 类型标记信æ¯çš„简写 - - - - - - 将目标å˜é‡åœ¨ç»ˆç«¯è¿›è¡Œè¾“出 - - - - - - 傿•°æŒ‡çš„æ˜¯ç›®æ ‡å‡½æ•°æ‰€è¿”回的值的类型,驱动程åºä¼šè‡ªåŠ¨æ ¹æ®å‡½æ•°çš„傿•°çš„类型æ¥å†³å®šå‡½æ•°æ–¹æ³•的调用 - - - - - - - - - The brief name of the type information, usage syntax of this input type casting driver in the shoal scripting is: var < (TypeId) $variable - (类型简称,在脚本之中的使用语法为: var < (TypeId) $variable) - - - - - - Target delegate must compatible with delegate Func(Of T, String, Boolean), the first parameter in the delegate is the - data type and the data to write to the file, the second parameter is the file path of the IO operation and the last bool - return value indicated that the io operation success or not. please notices that, for the considerations of the data - type compatible, the collection data type is recommended implement as generic enumeration interface. - (目标接å£å§”托对象必须è¦ç¬¦åˆä»¥ä¸‹æŽ¥å£ç±»åž‹Func(Of T, String, Boolean),其中第一个将è¦å†™æ–‡ä»¶çš„æ•°æ®ç±»åž‹ï¼Œç¬¬äºŒä¸ªå‚数为 - 文件路径,最åŽä¸€ä¸ªå‚数是文件是å¦å†™å…¥æˆåŠŸï¼Œè¯·æ³¨æ„,对于任æ„的集åˆç±»åž‹æŽ¨è使用泛型集åˆ) - - - - - - - - 目标数æ®ç±»åž‹ï¼Œè„šæœ¬å¼•æ“Žä¼šè‡ªåŠ¨æ ¹æ®å‡½æ•°çš„æ•°æ®ç±»åž‹è‡ªåŠ¨é€‰æ‹©æ–‡ä»¶ç³»ç»Ÿçš„å†™å…¥æ–¹å¼çš„é©±åŠ¨ç¨‹åº - - - - - 返回æˆåŠŸå¯¼å…¥çš„IO方法 - - - - - - - - This function will trying to save the data in a properly method from the data type: - Function will trying save the string as a text file; - Basic data type collection will be save as a csv data table; - All of the other data type will be saved based on the registry data; - If the method is not found in the registry for the data type, then function will throw a method missing exception! - (函数会å°è¯•æ ¹æ®æ–‡ä»¶çš„类型æ¥é€‰æ‹©åˆé€‚çš„ä¿å­˜æ ¼å¼: - 字符串类型会ä¿å­˜ä¸ºæ–‡æœ¬æ–‡ä»¶ - 数组会ä¿å­˜ä¸ºCsv - å…¶ä»–çš„å¤æ‚类型会å°è¯•æ ¹æ®æ³¨å†Œçš„奿Ÿ„æ¥æ‰§è¡Œç›¸åº”的数æ®ä¿å­˜æ“作) - - - - - - - - - Output support module for that data type.(å„ç§æ•°æ®ç±»åž‹çš„输出模å—) - - - - - - - - Variable Name.(å˜é‡å) - - - - - - 字符串æœåŠ¡ - - - - - 叏釿˜¯åŒºåˆ†å¤§å°å†™çš„ - - - - - - - Memory Management Unit Device.(大å°å†™ä¸æ•感的,直接使用å³å¯) - - - - - 内存设备 - - - - - 寄存器 - - - - - å†…å­˜ä¹‹ä¸­çš„åœ°å€æ€»æ˜¯ 0 - - - - - - 导入系统åˆå§‹çš„é»˜è®¤å¸¸é‡ - - - - - - - 必须为å°å†™çš„ - - - - - 叏釿˜¯å¤§å°å†™æ•感的,但是å˜é‡å¤§å°å†™ä¸æ•感 - - ä¸éœ€è¦åŠ å‰å¯¼ç¬¦å· - - - - - - - 请ä¸è¦åˆ é™¤å‰é¢çš„å‰å¯¼ç¬¦å· - - - - - - - 内存之中的ä½ç½®æŒ‡é’ˆï¼Œä½¿ç”¨ *p æ¥è¡¨ç¤º - - - - - - - - - - 是å¦ä¸ºå¸¸é‡ - - - - This type of the class object consist of the shoal shell scripting engine. - - - - - - Script engine.(脚本引擎) - - - - - - - - æ‰§è¡Œæ•´ä¸ªè„šæœ¬çš„æ¨¡å— - - - - - 字符串æœåŠ¡ - - - - - - æ‰§è¡Œä¾æ®è„šæœ¬è¯­å¥ - - - - - åœ¨è§£é‡Šå™¨é˜¶æ®µç”±äºŽç¼ºå°‘ç±»åž‹ä¿¡æ¯æ— æ³•判断目标类型,所以被设置为动æ€ç±»åž‹ - - - - - 逻辑值默认为False - - - - - - - 函数调用 - - - - - å•ç‹¬æ‰§è¡Œè¾“å‡ºè®¾å¤‡çš„è°ƒç”¨ï¼Œåœ¨ç»ˆç«¯è¾“å‡ºæˆ–è€…æ‰“å¼€ç»˜å›¾çª—å£ - - - - - << Hybrids scripting; - - - - - >> Setup variable of hybrids scripting; - - - - - > æ“作符将数æ®å†™å…¥æ–‡ä»¶ - - - - - - - Gotoè·³è½¬è¯­å¥ - - - - - 用于引用的程åºçš„定ä½çš„,用æ¥å¤„ç†ç›¸å¯¹è·¯å¾„以åŠç½‘络路径 - - - - - 这个属性使用于记录é‡å¤çš„命å空间模å—之间的相互比较的 - 路径å¯ä»¥ä¸ä¸€æ ·ï¼Œä½†æ˜¯è¿™ä¸ªå¿…é¡»è¦ä¸€æ · - - - - - - 出错的时候会返回空值 - - - - - - 从文件之中解æžå‡ºæ¥çš„æ–°çš„æ•°æ®æ›´æ–°å½“å‰çš„æ¨¡å— - - - - - - ä¸€ä¸ªæ–¹æ³•çš„å…ƒæ•°æ® - - - - - - ç›´æŽ¥å¯¼å…¥é™æ€æ–¹æ³• - - - - - - - 命å空间是å¯ä»¥è¢«åˆ†éš”为多个模å—分别开å‘于ä¸åŒçš„ç¨‹åºæ¨¡å—之中的 - - - - - - A brief description text about the function of this namespace.(关于本模å—之中的æè¿°æ€§çš„æ‘˜è¦æ–‡æœ¬) - - - - - - - - The name value of this namespace module.(本命å空间模å—çš„å称值) - - - - - - - - 包管ç†å™¨çš„æ•°æ®åº“文件 - - - - - 默认的注册表é…置文件,该文件是在与本程åºåŒä¸€ä¸ªæ–‡ä»¶å¤¹ä¹‹ä¸‹çš„以程åºå开始的XML文件.åœ¨è¯¥æ–‡ä»¶ä¹‹ä¸­åŒ…å«æœ‰æ‰€æœ‰çš„ç±»åž‹æ³¨å†Œä¿¡æ¯ - - - - - - Shoal模å—管ç†å™¨ - - - - - 将所得到的模å—åˆå¹¶åˆ°çŽ°æœ‰çš„æ¨¡å—之中 - - - - - - - 大å°å†™ä¸æ•感 - - - - - - diff --git a/Shoal.v2/Console/Shoal.vshost.exe.config b/Shoal.v2/Console/Shoal.vshost.exe.config deleted file mode 100644 index 2d2a12d81..000000000 --- a/Shoal.v2/Console/Shoal.vshost.exe.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/Shoal.v2/Console/Shoal.xml b/Shoal.v2/Console/Shoal.xml deleted file mode 100644 index a2801505d..000000000 --- a/Shoal.v2/Console/Shoal.xml +++ /dev/null @@ -1,115 +0,0 @@ - - - - -Shoal - - - - - - This module define the shoal commandlines for the command line interpreter. - - - - - - 以调试模å¼å¯åŠ¨è„šæœ¬å¼•æ“Ž - - - - 本应用程åºä½œä¸ºå®¢æˆ·ç«¯ï¼Œä¸Žä¸»æœºç¨‹åºè¿›è¡ŒTcpSocket通信æ¥å®Œæˆè°ƒè¯•ä¿¡æ¯çš„æ•°æ® - - - - - This module provides some common operation in the shoal scripting. - - - - - - æ‰¹é‡æ‰§è¡ŒæŒ‡å®šçš„æ–‡ä»¶å¤¹ä¹‹ä¸­çš„æ‰€æœ‰Shoal脚本 - - - - - - - 更加一般性的å¤åˆ¶å‡½æ•°ï¼Œå½“目标文件夹之中的文件数目éžå¸¸çš„多的时候,å¯ä»¥ä½¿ç”¨è¿™ä¸ªå‡½æ•°è¿›è¡Œæ‰¹é‡çš„æ–‡ä»¶å¤åˆ¶ï¼Œåªéœ€è¦æŠŠæ–‡ä»¶å填入列表之中å³å¯ï¼Œå¤§å°å†™æ— å…³ - - å¤åˆ¶å¤±è´¥çš„æ–‡ä»¶å列表 - - - - The shoal program main entry. - - - - - - Shoal主程åºçš„æ¬¢è¿Žæ–‡æœ¬ - - - - - - - - 打开Shoal的交互终端 - - - 空字符串表示使用é…置文件之中的路径,åä¹‹ä½¿ç”¨æœ¬å‚æ•°æ‰€åˆ¶å®šçš„路径åšå‡ºåˆå§‹åŒ–路径 - - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Looks up a localized string similar to GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away yo [rest of string was truncated]";. - - - - - Looks up a localized string similar to This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU [rest of string was truncated]";. - - - - diff --git a/Shoal.v2/Console/ShoalShell.Designer.cd b/Shoal.v2/Console/ShoalShell.Designer.cd deleted file mode 100644 index 3d387314e..000000000 --- a/Shoal.v2/Console/ShoalShell.Designer.cd +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - AAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAA= - - - - - - ABAAAAAAIIAAAIAEgCBBAAIAAAAAABAAgAAABAEAAAA= - ConsoleApplication\Program.vb - - - - - - ECAgAAACIQAKAAAQAKAAAAACAAkAAAADAAgAAAUAgAQ= - InternalCommands.vb - - - - - - AAAAAAAAAAAAAAAAAAABEAAAAQAAAAAAAAgIAAAAAIA= - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAA= - - - - - - IAAAAAAAoKAAAgAAAAAAAAAAAAAAAQAAASAAAAAAAAA= - ConsoleApplication\CLI.vb - - - - \ No newline at end of file diff --git a/Shoal.v2/Console/ShoalShell.vbproj b/Shoal.v2/Console/ShoalShell.vbproj deleted file mode 100644 index dc3a9094d..000000000 --- a/Shoal.v2/Console/ShoalShell.vbproj +++ /dev/null @@ -1,279 +0,0 @@ - - - - - Debug - AnyCPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC} - Exe - Microsoft.VisualBasic.Shoal.Program - Microsoft.VisualBasic.Shoal - Shoal - 512 - Console - v4.6 - - - - AnyCPU - true - full - true - true - bin\Debug\ - Shoal.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - false - - - x64 - Full - false - true - true - ..\..\..\GCModeller\GCModeller\ - Shoal.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - false - true - true - On - - - On - - - Binary - - - Off - - - On - - - Shoal.ico - - - My Project\app.manifest - - - true - true - true - ..\..\..\GCModeller\bin-Debug\ - Shoal.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x64 - MinimumRecommendedRules.ruleset - - - true - true - ..\..\..\GCModeller\GCModeller-x64\ - false - Shoal.xml - false - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - Full - x64 - On - MinimumRecommendedRules.ruleset - - - true - true - bin\Publish\ - true - Shoal.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - Full - x64 - On - MinimumRecommendedRules.ruleset - - - true - true - bin\x64\Publish\ - Shoal.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - Full - x64 - On - MinimumRecommendedRules.ruleset - true - - - true - true - true - bin\x86\Debug\ - Shoal.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x86 - MinimumRecommendedRules.ruleset - - - true - true - bin\x86\Release\ - true - Shoal.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - Full - x86 - On - MinimumRecommendedRules.ruleset - - - true - true - bin\x86\Publish\ - true - Shoal.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - Full - x86 - On - MinimumRecommendedRules.ruleset - true - - - true - true - bin\docs\ - true - Shoal.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - Full - x64 - On - MinimumRecommendedRules.ruleset - - - true - true - bin\x64\docs\ - Shoal.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - Full - x64 - On - MinimumRecommendedRules.ruleset - true - - - true - true - bin\x86\docs\ - true - Shoal.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - Full - x86 - On - MinimumRecommendedRules.ruleset - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - True - Application.myapp - - - True - True - Resources.resx - - - True - Settings.settings - True - - - - - VbMyResourcesResXFileCodeGenerator - Resources.Designer.vb - My.Resources - Designer - - - - - - - MyApplicationCodeGenerator - Application.Designer.vb - - - SettingsSingleFileGenerator - My - Settings.Designer.vb - - - - - - - - - - - - {fecce1fd-e1d4-49e3-a668-60bb5e7aed99} - +Microsoft.VisualBasic.Architecture.Framework - - - {a7cb16ff-75c6-4746-8449-86c121d723c4} - ShoalShell_Core.v2 - - - - - \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2.sln b/Shoal.v2/Shoal.v2.sln deleted file mode 100644 index ae84d0c35..000000000 --- a/Shoal.v2/Shoal.v2.sln +++ /dev/null @@ -1,124 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.25123.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ShoalShell_Core.v2", "Shoal.v2\ShoalShell_Core.v2.vbproj", "{A7CB16FF-75C6-4746-8449-86C121D723C4}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ShoalShell", "Console\ShoalShell.vbproj", "{D71E0D55-DA94-4B18-B204-252D532EE8EC}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting", "..\Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting\Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting.vbproj", "{85E19618-8A67-47DE-892D-4BB4EAF59AE2}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "HrbridScriptTest", "HrbridScriptTest", "{C7A8A038-E14F-43B9-B79F-01444F8E3766}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Win32API", "Console\Win32API\Win32API.vbproj", "{4B0A5F0A-F9F5-4206-99CC-82781B6E3457}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "EndNoteLite", "..\EndNoteLite\EndNoteLite.vbproj", "{2F80136C-0E1E-429F-A905-EB0927B0A82C}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Microsoft.VisualBasic.Mathematical", "..\..\VisualBasic_AppFramework\Scripting\Math\Math\Microsoft.VisualBasic.Mathematical.vbproj", "{E3367B88-5D0C-495A-8273-331656D4B5AA}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "+Microsoft.VisualBasic.Architecture.Framework", "..\..\VisualBasic_AppFramework\Microsoft.VisualBasic.Architecture.Framework\+Microsoft.VisualBasic.Architecture.Framework.vbproj", "{FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}" -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 - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|x64.ActiveCfg = Debug|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|x64.Build.0 = Debug|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|x86.ActiveCfg = Debug|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Debug|x86.Build.0 = Debug|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|Any CPU.Build.0 = Release|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|x64.ActiveCfg = Release|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|x64.Build.0 = Release|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|x86.ActiveCfg = Release|Any CPU - {A7CB16FF-75C6-4746-8449-86C121D723C4}.Release|x86.Build.0 = Release|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|x64.ActiveCfg = Debug|x64 - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|x64.Build.0 = Debug|x64 - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|x86.ActiveCfg = Debug|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|x86.Build.0 = Debug|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|Any CPU.Build.0 = Release|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|x64.ActiveCfg = Release|x64 - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|x64.Build.0 = Release|x64 - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|x86.ActiveCfg = Release|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|x86.Build.0 = Release|Any CPU - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Debug|x64.ActiveCfg = Debug|x64 - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Debug|x64.Build.0 = Debug|x64 - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Debug|x86.ActiveCfg = Debug|Any CPU - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Debug|x86.Build.0 = Debug|Any CPU - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Release|Any CPU.Build.0 = Release|Any CPU - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Release|x64.ActiveCfg = Release|x64 - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Release|x64.Build.0 = Release|x64 - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Release|x86.ActiveCfg = Release|Any CPU - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Release|x86.Build.0 = Release|Any CPU - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Debug|x64.ActiveCfg = Debug|x64 - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Debug|x64.Build.0 = Debug|x64 - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Debug|x86.ActiveCfg = Debug|Any CPU - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Debug|x86.Build.0 = Debug|Any CPU - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Release|Any CPU.Build.0 = Release|Any CPU - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Release|x64.ActiveCfg = Release|x64 - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Release|x64.Build.0 = Release|x64 - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Release|x86.ActiveCfg = Release|Any CPU - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Release|x86.Build.0 = Release|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Debug|x64.ActiveCfg = Debug|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Debug|x64.Build.0 = Debug|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Debug|x86.ActiveCfg = Debug|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Debug|x86.Build.0 = Debug|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Release|Any CPU.Build.0 = Release|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Release|x64.ActiveCfg = Release|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Release|x64.Build.0 = Release|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Release|x86.ActiveCfg = Release|Any CPU - {2F80136C-0E1E-429F-A905-EB0927B0A82C}.Release|x86.Build.0 = Release|Any CPU - {E3367B88-5D0C-495A-8273-331656D4B5AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E3367B88-5D0C-495A-8273-331656D4B5AA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E3367B88-5D0C-495A-8273-331656D4B5AA}.Debug|x64.ActiveCfg = Debug|x64 - {E3367B88-5D0C-495A-8273-331656D4B5AA}.Debug|x64.Build.0 = Debug|x64 - {E3367B88-5D0C-495A-8273-331656D4B5AA}.Debug|x86.ActiveCfg = Debug|Any CPU - {E3367B88-5D0C-495A-8273-331656D4B5AA}.Debug|x86.Build.0 = Debug|Any CPU - {E3367B88-5D0C-495A-8273-331656D4B5AA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E3367B88-5D0C-495A-8273-331656D4B5AA}.Release|Any CPU.Build.0 = Release|Any CPU - {E3367B88-5D0C-495A-8273-331656D4B5AA}.Release|x64.ActiveCfg = Release|x64 - {E3367B88-5D0C-495A-8273-331656D4B5AA}.Release|x64.Build.0 = Release|x64 - {E3367B88-5D0C-495A-8273-331656D4B5AA}.Release|x86.ActiveCfg = Release|Any CPU - {E3367B88-5D0C-495A-8273-331656D4B5AA}.Release|x86.Build.0 = Release|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x64.ActiveCfg = Debug|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x64.Build.0 = Debug|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x86.ActiveCfg = Debug|x86 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x86.Build.0 = Debug|x86 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|Any CPU.Build.0 = Release|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x64.ActiveCfg = Release|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x64.Build.0 = Release|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x86.ActiveCfg = Release|x86 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x86.Build.0 = Release|x86 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {85E19618-8A67-47DE-892D-4BB4EAF59AE2} = {C7A8A038-E14F-43B9-B79F-01444F8E3766} - {E3367B88-5D0C-495A-8273-331656D4B5AA} = {C7A8A038-E14F-43B9-B79F-01444F8E3766} - EndGlobalSection -EndGlobal diff --git a/Shoal.v2/Shoal.v2/App.config b/Shoal.v2/Shoal.v2/App.config deleted file mode 100644 index 2d2a12d81..000000000 --- a/Shoal.v2/Shoal.v2/App.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/Shoal.v2/Shoal.v2/Compiler/CodeDOM/Expression.vb b/Shoal.v2/Shoal.v2/Compiler/CodeDOM/Expression.vb deleted file mode 100644 index e3648a73b..000000000 --- a/Shoal.v2/Shoal.v2/Compiler/CodeDOM/Expression.vb +++ /dev/null @@ -1,6 +0,0 @@ -Namespace Compiler.CodeDOM - - Public Class Expression - - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Compiler/CodeDOM/Program.vb b/Shoal.v2/Shoal.v2/Compiler/CodeDOM/Program.vb deleted file mode 100644 index d97ee07cd..000000000 --- a/Shoal.v2/Shoal.v2/Compiler/CodeDOM/Program.vb +++ /dev/null @@ -1,87 +0,0 @@ -Imports System.CodeDom -Imports Microsoft.VisualBasic.CodeDOM_VBC -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Configuration - -Namespace Compiler.CodeDOM - - Public Class Program - - Public ReadOnly Property Assembly As CodeNamespace - Protected ReadOnly Program As CodeMemberMethod = New CodeMemberMethod With { - .Name = ScriptApp - } - - Const ScriptApp As String = "ScriptApp" - Const __innerScriptEngine As String = "__innerScriptEngine" - - Sub New() - Assembly = New CodeNamespace("Shoal.CodeDOM.App") - Dim ProgramClass As New CodeTypeDeclaration(NameOf(Program)) - Dim EntryPoint = CodeDOMExpressions.EntryPoint - Call Assembly.Types.Add(ProgramClass) - Call ProgramClass.Members.Add(Program) - Call ProgramClass.Members.Add(EntryPoint) - Call ProgramClass.Members.Add(CodeDOMExpressions.Field(__innerScriptEngine, GetType(Runtime.ScriptEngine))) - - Program.ReturnType = Type(Of Integer)() - Program.Parameters.Add(Argument(Of CommandLine.CommandLine)("args")) - EntryPoint.Statements.Add(LocalsInit("__args", GetType(String), initExpression:=Reference(GetType(Microsoft.VisualBasic.App), NameOf(App.Command)))) - EntryPoint.Statements.Add([Call](GetType(Extensions), NameOf(__DEBUG_ECHO), Parameters:={LocalVariable("__args")})) - EntryPoint.Statements.Add(LocalsInit("args", GetType(CommandLine.CommandLine), initExpression:=[Call](GetType(CommandLine.CommandLine), NameOf(CommandLine.TryParse), {LocalVariable("__args")}))) - EntryPoint.Statements.Add(LocalsInit(ScriptApp, NameOf(Program), [New](NameOf(Program), {}))) - EntryPoint.Statements.Add(ValueAssign(Reference(LocalVariable(ScriptApp), __innerScriptEngine), [New](GetType(Runtime.ScriptEngine), {[Call](GetType(Config), NameOf(Config.LoadDefault), {})}))) - EntryPoint.Statements.Add(LocalsInit("rtvl", GetType(Integer), [Call](LocalVariable(ScriptApp), ScriptApp, {LocalVariable("args")}))) - EntryPoint.Statements.Add([Call](GetType(Extensions), NameOf(Extensions.Pause), {})) - EntryPoint.Statements.Add([Return](LocalVariable("rtvl"))) - End Sub - - Public Sub __localsInit(Expr As Interpreter.LDM.Expressions.VariableDeclaration) - Dim TypeRef = InputHandler.GetType(Expr.Type, True) - Dim Init As System.CodeDom.CodeMethodInvokeExpression = Nothing - - If Expr.Initializer.IsConstant Then - Init = __castType(__getConstant(Expr.Initializer.GetTokenValue), TypeRef) - - ElseIf Expr.Initializer.IsVariable - - - ElseIf Expr.Initializer.IsPrimaryValue - Init = __castType(Value(Expr.Initializer.Expression.PrimaryExpression), TypeRef) - - ElseIf Expr.Initializer.IsExpr - - End If - - Call Program.Statements.Add(Comments(Expr.Comments)) - Call Program.Statements.Add(LocalsInit(Expr.Name, TypeRef, Init)) - End Sub - - Private Function __getConstant(Name As String) As System.CodeDom.CodeMethodInvokeExpression - Return [Call](FieldRef(__innerScriptEngine), NameOf(Runtime.ScriptEngine.GetValue), Parameters:={Value(Name)}) - End Function - - ''' - ''' 与公共框架里é¢çš„æ–¹æ³•所ä¸åŒçš„æ˜¯ï¼Œè¿™ä¸ªç±»åž‹çš„è½¬æ¢æ–¹æ³•会实现Shoal脚本语言之中的更加动æ€çš„ç±»åž‹è½¬æ¢ - ''' - ''' - ''' - ''' - Private Function __castType(value As CodeExpression, typeRef As System.Type) As CodeMethodInvokeExpression - Return [Call](GetType(InputHandler), NameOf(Scripting.CTypeDynamic), Parameters:={value, CodeDOMExpressions.[GetType](typeRef)}) - End Function - - ''' - ''' 请注æ„,由于函数的返回值是类型,所以这里的数æ®ç±»åž‹è½¬æ¢æ€»æ˜¯è½¬æ¢è‡³æ•´å½¢æ•°çš„ - ''' - ''' - Public Sub __return(Expr As Interpreter.LDM.Expressions.Keywords.Return) - If Expr.ValueExpression.IsConstant Then '从内置的脚本引擎之中å–常数值 - Call Program.Statements.Add([Return](__castType(__getConstant(Expr.ValueExpression.GetTokenValue), GetType(Integer)))) - ElseIf Expr.ValueExpression.IsVariable - Call Program.Statements.Add([Return](__castType(LocalVariable(Expr.ValueExpression.GetTrimExpr), GetType(Integer)))) - ElseIf Expr.ValueExpression.IsPrimaryValue - Call Program.Statements.Add([Return](__castType(Value(Expr.ValueExpression.Expression.PrimaryExpression), GetType(Integer)))) - End If - End Sub - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Compiler/CodeDOM/Tokens.vb b/Shoal.v2/Shoal.v2/Compiler/CodeDOM/Tokens.vb deleted file mode 100644 index 4a2bc394e..000000000 --- a/Shoal.v2/Shoal.v2/Compiler/CodeDOM/Tokens.vb +++ /dev/null @@ -1,6 +0,0 @@ -Namespace Compiler.CodeDOM - - Public Class Tokens - - End Class -End Namespace diff --git a/Shoal.v2/Shoal.v2/Compiler/VBC.vb b/Shoal.v2/Shoal.v2/Compiler/VBC.vb deleted file mode 100644 index 9a89d52da..000000000 --- a/Shoal.v2/Shoal.v2/Compiler/VBC.vb +++ /dev/null @@ -1,53 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.LDM -Imports Microsoft.VisualBasic.CodeDOM_VBC - -Namespace Compiler - - Public Class VBC - - Dim SPMgr As SPM.ShoalPackageMgr - - Public ReadOnly Property DefaultAppIcon As String = App.LocalDataTemp & "/Shoal.ico" - - Sub New(SPMgrDb As SPM.PackageModuleDb) - SPMgr = New SPM.ShoalPackageMgr(SPMgrDb) - Call My.Resources.Shoal.FlushStream(DefaultAppIcon) - End Sub - - Public Function Compile(scriptPath As String, Output As String) As String - Dim LDM As SyntaxModel = SyntaxModel.LoadFile(scriptPath) - - Dim assm As New CodeDOM.Program - Call __compile(assm, LDM) - - Dim CodePreview As String = assm.Assembly.GenerateCode - Call CodePreview.__DEBUG_ECHO - Dim refList As String() = Parallel.GetReferences(GetType(VBC)) - - Dim Exe = CodeDOMExtension.Compile( - assm.Assembly, - Options:=CodeDOMExtension.ExecutableProfile, - Reference:=refList, - DotNETReferenceAssembliesDir:=Parallel.ParallelLoading.RunTimeDirectory) - Call FileIO.FileSystem.ReadAllBytes(Exe.Location).FlushStream(Output) - Return CodePreview - End Function - - Private Sub __compile(ByRef assm As CodeDOM.Program, Script As Interpreter.LDM.SyntaxModel) - For Each Expr In Script.Expressions - Select Case Expr.ExprTypeID - Case Interpreter.LDM.Expressions.ExpressionTypes.CollectionOpr - Case Interpreter.LDM.Expressions.ExpressionTypes.Comments - Case Interpreter.LDM.Expressions.ExpressionTypes.Die - Case Interpreter.LDM.Expressions.ExpressionTypes.GoTo - Case Interpreter.LDM.Expressions.ExpressionTypes.FunctionCalls - Case Interpreter.LDM.Expressions.ExpressionTypes.LineLable - Case Interpreter.LDM.Expressions.ExpressionTypes.Return - Call assm.__return(Expr.As(Of Interpreter.LDM.Expressions.Keywords.Return)) - Case Interpreter.LDM.Expressions.ExpressionTypes.VariableDeclaration - Call assm.__localsInit(Expr.As(Of Interpreter.LDM.Expressions.VariableDeclaration)) - End Select - Next - End Sub - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Configuration/Config.vb b/Shoal.v2/Shoal.v2/Configuration/Config.vb deleted file mode 100644 index 4d4ee7f1f..000000000 --- a/Shoal.v2/Shoal.v2/Configuration/Config.vb +++ /dev/null @@ -1,162 +0,0 @@ -Imports System.Xml.Serialization -Imports Microsoft.VisualBasic.ComponentModel -Imports Microsoft.VisualBasic.ComponentModel.Settings -Imports Microsoft.VisualBasic.Scripting.ShoalShell.SPM - -Namespace Configuration - - ''' - ''' 脚本引擎的é…置文件 - ''' - ''' - - Public Class Config : Inherits ITextFile - Implements IProfile - -#Region "Configuration storage property region" - - ''' - ''' 应用程åºå¯åŠ¨çš„æ—¶å€™çš„åˆå§‹å·¥ä½œç›®å½•ï¼Œé»˜è®¤ä¸ºåº”ç”¨ç¨‹åºæ‰€åœ¨çš„æ–‡ä»¶å¤¹ - ''' - ''' - ''' - ''' - Public Property InitDir As String - ''' - ''' 脚本引擎的类型注册表的文件ä½ç½®ï¼Œä¸ºç©ºçš„è¯ä¼šä½¿ç”¨é»˜è®¤çš„æ–‡ä»¶ä½ç½® - ''' - ''' - ''' - ''' - Public Property SPMRegistry As String - Get - Return _RegistryFileLocation - End Get - Set(value As String) - value = VisualBasic.FileIO.FileSystem.GetFileInfo(value).FullName - _RegistryFileLocation = value - End Set - End Property - - Public Property LastDirAsInit As String = "True" - Public Property PreLoadModules As String - Public Property ManualPreferIndexPages As String = "TRUE" - Public Property SaveHistory As String = "TRUE" - Public Property InitHeapSize As String = 1024 - Public Property ScriptExt As String = "*.shl;*.txt" - Public Property ConsoleTitleAutoDisplay As String = "true" - - Dim _RegistryFileLocation As String - -#End Region - - Public Function EnableConsoleTitle() As Boolean - Return ConsoleTitleAutoDisplay.getBoolean - End Function - - Public Function GetExtensionList() As String() - Dim list = Strings.Split(ScriptExt, ";"c) - If list.IsNullOrEmpty Then - ScriptExt = "*.shl" - Return {ScriptExt} - Else - Return list - End If - End Function - - Public Function GetInitHeapSize() As Integer - Dim value As Integer = CInt(Val(InitHeapSize)) - If value <= 0 Then - InitHeapSize = 1024 - value = 1024 - End If - - Return value - End Function - - Public Function PreferIndexingManual() As Boolean - Return ManualPreferIndexPages.getBoolean - End Function - - Public Function PreLoadedModules() As String() - If String.IsNullOrEmpty(Me.PreLoadModules) Then - Return New String() {} - Else - Return PreLoadModules.Split(";"c) - End If - End Function - - Public Function LastDir_AsInit() As Boolean - Return LastDirAsInit.getBoolean - End Function - - Public Function InitDirectory() As String - If String.IsNullOrEmpty(InitDir) Then - Return My.Application.Info.DirectoryPath - End If - - If VisualBasic.FileIO.FileSystem.DirectoryExists(Me.InitDir) Then - Return VisualBasic.FileIO.FileSystem.GetDirectoryInfo(Me.InitDir).FullName - End If - Try - Call VisualBasic.FileIO.FileSystem.CreateDirectory(Me.InitDir) - Catch ex As Exception - Call $"[DEBUG] The specific work directory ""{InitDir}"" is unable to located, using the application directory ""{App.HOME}"" insteaded.".__DEBUG_ECHO - InitDir = App.HOME - Return App.HOME - End Try - - Return VisualBasic.FileIO.FileSystem.GetDirectoryInfo(Me.InitDir).FullName - End Function - - ''' - ''' Get shoal shell registry file path.(èŽ·å–æ³¨å†Œè¡¨çš„æ–‡ä»¶è·¯å¾„) - ''' - ''' - ''' - Public Function GetRegistryFile() As String - If String.IsNullOrEmpty(SPMRegistry) Then - Return PackageModuleDb.DefaultFile - Else - Return VisualBasic.FileIO.FileSystem.GetFileInfo(Me.SPMRegistry).FullName - End If - End Function - - ''' - ''' The default file location of the shoal configuration data. - ''' - ''' - Public Shared ReadOnly Property DefaultFile As String - Get - Return $"{App.LocalData}/.Settings/{FileIO.FileSystem.GetFileInfo(App.ExecutablePath).Name}.conf" - End Get - End Property - - Public Shared ReadOnly Property [Default] As Settings(Of Config) - Get - Return Settings(Of Config).LoadFile(XmlFile:=Config.DefaultFile) - End Get - End Property - - ''' - ''' Load the configuration file from the default file location: . - ''' - ''' - Public Shared Function LoadDefault() As Config - Return [Default].SettingsData - End Function - - Public Overrides Function Save(Optional FilePath As String = "", Optional Encoding As System.Text.Encoding = Nothing) As Boolean - If LastDir_AsInit() Then - Me.InitDir = VisualBasic.FileIO.FileSystem.GetDirectoryInfo(My.Computer.FileSystem.CurrentDirectory).FullName - End If - - FilePath = Me.getPath(FilePath) - Return Me.GetXml.SaveTo(FilePath, Encoding) - End Function - - Protected Overrides Function __getDefaultPath() As String - Return FilePath - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Configuration/Configuration.vb b/Shoal.v2/Shoal.v2/Configuration/Configuration.vb deleted file mode 100644 index fd3e55de1..000000000 --- a/Shoal.v2/Shoal.v2/Configuration/Configuration.vb +++ /dev/null @@ -1,32 +0,0 @@ -Imports Microsoft.VisualBasic.ComponentModel.Settings - -Namespace Configuration - - ''' - ''' é…置数æ®çš„设置引擎 - ''' - Public Class Configuration : Inherits ConfigEngine - - Sub New(ScriptEngine As Runtime.ScriptEngine) - Call MyBase.New(ScriptEngine.Config) - End Sub - - Public Overrides Function ExistsNode(Name As String) As Boolean - Dim b = MyBase.ExistsNode(Name) - Call Console.WriteLine(If(b, "YES", "NO_EXISTS")) - Return b - End Function - - Public Overrides Function GetSettings(Name As String) As String - Dim str As String = MyBase.GetSettings(Name) - Call Console.WriteLine(str) - Return str - End Function - - Public Overloads Function Prints(data As IEnumerable(Of ProfileItem)) As String - Dim str As String = MyBase.Prints(data) - Call Console.WriteLine(str) - Return str - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Debugger.vb b/Shoal.v2/Shoal.v2/Debugger.vb deleted file mode 100644 index c195f451d..000000000 --- a/Shoal.v2/Shoal.v2/Debugger.vb +++ /dev/null @@ -1,213 +0,0 @@ -#Disable Warning - -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Configuration - -Module Debugger - - 'Interface aa - ' Property b - - 'End Interface - - 'Interface b : Inherits aa - ' Property c - 'End Interface - - Sub Main() - - Call Interpreter.LDM.SyntaxModel.LoadFile("S:\TSSs\mmx.txt") - - Dim ddddftt = HTML.TypeLinks.PageName(GetType(KeyValuePair(Of String, String))) - - Dim mslScript As String = "dim nn <= { -a, -b, -c, -d, -e, -""a b c d f h"" -} -*T <= { -imports test -return rand -}" - - Dim scrr = Interpreter.Interpreter.MSLParser(mslScript) - - Dim lines As String() = Strings.Split(mslScript, vbCrLf) - Dim parser As New Interpreter.Parser.TextTokenliser.MSLTokens - Dim pppp As Integer - - Call parser.Parsing(lines(pppp.MoveNext)) - - Do While Not parser.FinishYet - - Call parser.Parsing(lines(pppp.MoveNext)) - - Loop - - - - Dim sssDb = SPM.PackageModuleDb.Load(SPM.PackageModuleDb.DefaultFile) - Dim vbc = New Compiler.VBC(sssDb) - Call vbc.Compile("I:\Shoal\Shoal.v2\Console\bin\Debug\TestScript\HelloWorld.txt", "./test.exe") - - - ' Dim ghghgh = Interpreter.SyntaxParser.Parsing("dim ff <= {$g, ""gh $g +$gh\$g""}") - - Dim tt = InputHandler.GetType("int32") - - Dim ssss As String = "" - Dim nnnn = CTypeDynamic(ssss, GetType(Boolean)) - - Dim aa = New Object() {} - Dim bb = New String() {"444"} - - aa = bb - - Dim aaa = New List(Of Object) - Dim bbb = New List(Of String) - - ' aaa = bbb '除了泛型的集åˆï¼Œå…¶ä»–çš„æœå¯ä»¥è½¬æ¢åˆ°åŸºæœ¬ç±»åž‹ - - Dim cc As IEnumerable(Of Object) - Dim dd As IEnumerable(Of String) - - cc = dd - - - Dim a = GetType(Object) - Dim b = GetType(Object) - - Console.WriteLine(Interpreter.Linker.APIHandler.Alignment.TypeEquals.TypeEquals(a, b)) - - 'a = GetType(aa) - 'b = GetType(Debugger.b) - - 'Console.WriteLine(Interpreter.Linker.APIHandler.Alignment.TypeEquals.TypeEquals(a, b)) - - - a = GetType(Interpreter.Parser.Tokens.Token) - b = GetType(Interpreter.Parser.Tokens.InternalExpression) - Console.WriteLine(Interpreter.Linker.APIHandler.Alignment.TypeEquals.TypeEquals(a, b)) - - a = GetType(Object()) - b = GetType(String()) - - Console.WriteLine(Interpreter.Linker.APIHandler.Alignment.TypeEquals.TypeEquals(a, b)) - - - a = GetType(Generic.IEnumerable(Of String)) - b = GetType(List(Of String)) - - Console.WriteLine(Interpreter.Linker.APIHandler.Alignment.TypeEquals.TypeEquals(a, b)) - - a = GetType(String()) - b = GetType(List(Of String)) - - Console.WriteLine(Interpreter.Linker.APIHandler.Alignment.TypeEquals.TypeEquals(a, b)) - - - Dim db = Scripting.ShoalShell.SPM.PackageModuleDb.Load(Scripting.ShoalShell.SPM.PackageModuleDb.DefaultFile) - Dim TestLoader = Scripting.ShoalShell.SPM.Nodes.AssemblyParser.LoadAssembly( - "I:\Shoal\Shoal.v2\Shoal.v2\bin\Debug\Microsoft.VisualBasic.Architecture.Framework_v3.0_22.0.76.201__8da45dcd8060cc9a.dll") - - Using spm = New SPM.ShoalPackageMgr(db) - Call spm.MergeNamespace(TestLoader) - Call spm.UpdateDb() - - Dim pTest = New KeyValuePair(Of String, Object)() { - New KeyValuePair(Of String, Object)("dead", False), - New KeyValuePair(Of String, Object)("msg", "yes") - } - Dim score = Interpreter.Linker.APIHandler.Alignment.FunctionCalls.OverloadsAlignment(spm.Item("cowsay").GetEntryPoint("cowsay").OverloadsAPI(0).EntryPoint, pTest) - - Call Console.WriteLine(score) - - End Using - - ' Dim src = Scripting.ShoalShell.Interpreter.SyntaxParser.Parsing("Dim ab <- 123 As Integer") - - Dim ScriptEngine = New ShoalShell.Runtime.ScriptEngine(Config.Default.SettingsData) - Dim value = ScriptEngine.Exec("Dim ab <- 123 As Integer") - - value = ScriptEngine.Exec(" -dddd < (string()) ""I:\Shoal\Shoal.v2\Shoal.v2\bin\Debug\tesssss.dat"" - -Imports cowsay -Dim msg <- ""Hello world!"" as string -Dim varTest = 3333333 - dim array <= {1, 2, 3, 4, 5, 6, 7, 8} as integer -dim matrix <= {$array, $array, $array, $array} - dim matarray <= {$matrix, $matrix, $matrix} - -$array > ./tesssss.dat -dim bytes <= {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250} as byte -$bytes > ./tesbytessss.dat - - dim ddd <= $array [3] - -vartest <- $msg -> cowsay /dead -*4 <- $vartest -> cowsay /dead -$msg > ./testy.txt") - - value = ScriptEngine.Strings.Format("------$msggg----&HOME\$msg------------") - - - value = ScriptEngine.Exec(" -Imports GDI+ -./112649252034fea52ao.jpg -> GrayBitmap -# call $ -> WriteTo ./test.png -call $ -> WriteTo path.save ./test_path2.png") - - - Dim Script As String = -" -$Msgbox -Msgbox -String.IsEmpty arg1 -die ""nothing test"" when {FALSE} - -# 系统ä¿ç•™çš„命令行函数Command,和VB一样的 -var args <- Command As CommandLine #die ""null exception!"" when {args is nothing} - -a << ""1 + 2"" -b >> ef - -# 关于 => è¿ç®—符的使用 -# 当左端的è¯å…ƒä¸ºå˜é‡çš„æ—¶å€™è¡¨ç¤ºå¯¹å­—典对象的引用 -# 其他的情况则为函数指针 -# testVar = $args => --ssl -var open <- {$args => /open} As String -var auto-flush = {$args => /auto} As Boolean - -# 测试1. 方法调用 -# ::表示命å空间和函数之间的分隔,当没有导入命å空间的时候需è¦ä½¿ç”¨ 命å空间::函数 çš„å¼•ç”¨æ–¹å¼æ¥è°ƒç”¨å‡½æ•° - var <- namespace::function arg1, arg2, arg3 #使用逗å·çš„æ—¶å€™å˜é‡çš„æŽ’列顺åºå¿…é¡»è¦å’Œå‡½æ•°çš„定义一致 -var = $var -> namespace::function param1 arg1 param2 arg2 /param3 #直接使用空格æ¥åˆ†éš”的时候顺åºçš„ä½ç½®å¯ä»¥ä¸ä¸€è‡´ï¼Œå¹¶ä¸”å¯ä»¥ä½¿ç”¨å¼€å…³æ¥è¡¨ç¤ºBooleanç±»åž‹çš„å‚æ•°å€¼ä¸ºçœŸ -Call $var -> namespace::function param1 arg1 /param2 #进行方法调用必须è¦ä½¿ç”¨Call开头 - -RE: - -Call function param1 arg1 --param2 - -die ""xxxxxx empty"" when {String.IsEmpty arg1} #返回值是Nothing - -On Error Resume Next - -Goto RE -Goto RE When {function $var2} - -Dim variable = {expression} As type #å˜é‡variable的类型固定为Type类型,å˜é‡çš„定义使用Dim开始 -Dim variable = {expression} #å˜é‡ç±»åž‹ä¸ºObject类型 -Dim variable = {expression} As object #这一å¥å˜é‡çš„申明语å¥å’Œä¸Šä¸€ä¸ªè¯­å¥çš„å«ä¹‰ç›¸åŒ - -#For i in => {Delegate(i)} -#Do While => {Delegate(expression)} -#If => {Delegate(expression)} -#ElseIf => {Delegate(expression)} -#Else => {Delegate(expression)}" - - Dim ScriptObject = Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.LDM.SyntaxModel.ScriptParser(Script, "/home/xieguigang/test.sh") - End Sub -End Module diff --git a/Shoal.v2/Shoal.v2/HTML/Cites.vb b/Shoal.v2/Shoal.v2/HTML/Cites.vb deleted file mode 100644 index 4ab27f92e..000000000 --- a/Shoal.v2/Shoal.v2/HTML/Cites.vb +++ /dev/null @@ -1,23 +0,0 @@ -Imports System.Text -Imports Microsoft.VisualBasic.Scripting.MetaData -Imports Microsoft.VisualBasic.Linq.Extensions - -Namespace HTML - - Public Module Cites - - Public Function GetCites(typeDef As Type) As String - Dim cites As Cite() = Cite.GetCiteList(typeDef) - If cites.IsNullOrEmpty Then - Dim ns = GetEntry(typeDef) - If ns Is Nothing Then - Return "" - Else - Return ns.Cites - End If - Else - Return cites.ToArray(Function(c) c.HTML(120)).JoinBy("

") - End If - End Function - End Module -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/HTML/DocRenderer.vb b/Shoal.v2/Shoal.v2/HTML/DocRenderer.vb deleted file mode 100644 index 182f317f5..000000000 --- a/Shoal.v2/Shoal.v2/HTML/DocRenderer.vb +++ /dev/null @@ -1,327 +0,0 @@ -Imports System.Text -Imports Microsoft.VisualBasic.Linq.Extensions -Imports Microsoft.VisualBasic.Scripting.ShoalShell.SPM.Nodes - -Namespace HTML - - ''' - ''' 命å空间的html帮助页é¢çš„生æˆå·¥å…· - ''' - Public Module DocRenderer - - Public ReadOnly Property wwwroot As String = $"{App.HOME}/html" - - ''' - ''' 值返回路径 - ''' - ''' - ''' - Public Function RequestHtml([Namespace] As SPM.Nodes.Namespace) As String - Return $"{wwwroot}/{[Namespace].Namespace.NormalizePathString(False)}.html" - End Function - - Public Function RequestHtml(Name As String) As String - Return $"{wwwroot}/{Name.NormalizePathString(False)}.html" - End Function - - Public Sub GenerateHtmlDoc([Namespace] As SPM.Nodes.Namespace) - Dim html As String = HtmlRender([Namespace]) - Call html.SaveTo(RequestHtml([Namespace])) - Call Console.Write(".") - End Sub - - ''' - ''' å·²ç»æŽ’è¿‡åºäº†çš„ - ''' - ''' - ''' - Public Function QuickNavigation(nsList As String()) As String - Dim sbr As StringBuilder = New StringBuilder("", 4096) - Dim i As Integer = 0 - Dim d As Integer - - On Error Resume Next - - For Each preChar As Char In INDEX - d = 0 - - Do While __getPrefix(nsList(i + d)) = preChar - d += 1 - If i + d >= nsList.Length - 1 Then - Exit Do - End If - Loop - - i = i + d - - If d = 0 Then - Call sbr.AppendLine($"{preChar} ") - Else - Call sbr.AppendLine($"{preChar} ") - End If - Next - - Call sbr.AppendLine("") - - Return sbr.ToString - End Function - - Const INDEX As String = "#ABCDEFGHIJKLMNOPQRSTUVWXYZ" - - Private Function __getPrefix(ns As String) As Char - If String.IsNullOrEmpty(ns) Then - Return "#"c - Else - Dim ch As Char = ns.ToUpper.First - Dim asc As Integer = AscW(ch) - - If asc >= AscW("A"c) AndAlso asc <= AscW("Z"c) Then - Return ch - Else - Return "#"c - End If - End If - End Function - - Public Function Indexing(SPMgrDb As SPM.PackageModuleDb) As Boolean - Dim Html As New StringBuilder(My.Resources.index) - Dim doc As New StringBuilder - Dim Namespaces = (From nsValue As SPM.Nodes.Namespace - In SPMgrDb.NamespaceCollection - Select nsValue - Order By nsValue.Namespace Ascending).ToArray - - doc.AppendLine($"

-

  • Type reference manual can be found at here: [^] TypeLinks Library
  • -
  • GCModeller is a collaborative project with many contributors. Goto contributor page for more information: [^] Contributors
  • -

    -

    -


    -

    - -

    Installed Modules

    -

    Currently there are {SPMgrDb.NamespaceCollection.Length} packages({(From ns In SPMgrDb.NamespaceCollection - Select (From api In ns.API Select api.OverloadsNumber).ToArray.Sum).ToArray.Sum} API in totally) have been installed on your ShoalShell system: -



    {QuickNavigation(Namespaces.ToArray(Function(ns) ns.Namespace))}


    - - - - - - ") - For Each ns As SPM.Nodes.Namespace In Namespaces - Call doc.AppendLine($" - - - - ") - Next - - Call doc.AppendLine("
    Package Namespace Description
    [...]{ns.Namespace} {ns.Description}

    ") - Call doc.AppendLine("

    ") - Call doc.AppendLine("

    [↑]
    ") - Call doc.AppendLine("Here is the language environment that was installed in your shoal system:") - - For Each language As HybridEnvir In SPMgrDb.HybridEnvironments - Call doc.AppendLine($"

  • {language.Language}
  • -
    - {If(Not String.IsNullOrEmpty(language.Description), $"{language.Description}
    ", "")} - {language.Path}!{language.TypeId} -

    ") - Next - - Call Html.Replace("%Version%", My.Application.Info.Version.ToString) - Call Html.Replace("%SDK_HELP%", doc.ToString) - Call Html.Replace("%etc%", "") - Call ShoalShell.HTML.TypeLinks.Indexing(SPMgrDb) - Call ShoalShell.HTML.DocRenderer.IndexAuthorsPage(SPMgrDb) - - Return Html.ToString.SaveTo(RequestHtml("index")) - End Function - - Public Function IndexAuthorsPage(SPMgr As SPM.PackageModuleDb) As Boolean - Dim HtmlBuilder As StringBuilder = New StringBuilder(My.Resources.index) - Call HtmlBuilder.Replace("%etc%", "

    < Back To Index

    ") - Call HtmlBuilder.Replace("%Version%", My.Application.Info.Version.ToString) - Call HtmlBuilder.Replace("%SDK_HELP%", __contributors(SPMgr)) - - Return HtmlBuilder.SaveTo(RequestHtml("contributors")) - End Function - - Private Function __contributors(SPMgr As SPM.PackageModuleDb) As String - Dim doc As New StringBuilder( -"GCModeller is a project which is attempting to provide a modern piece of systems biology analysis software for the GNU suite of software. -
    -

    GCModeller has three type of user interface(CLI commandline, Workbench GUI, ShoalShell Scripting), and the ShoalShell scripting language project is the one of the user interface for biologist applied GCModeller in their researches. -As a most important part in the GCModeller, the current ShoalShell is the result of a collaborative effort with contributions from all over the world. -
    - -

    Authors of ShoalShell

    -

    As the project leader of GCModeller, master xie developed the entired ShoalShell runtime core library and the most part of the GCModeller ShoalShell library packages, he is begins written GCModeller since mid-2013 and start writing ShoalShell from a idea of develop a much commandline like debugging tools for the GCModeller virtual cell system since 2014 August.

    - -Here is the currently developer members on developing GCModeller:

    -

  • Master xie (xie.guigang@gcmodeller.org or just contact him via Xanthomonas Wikipedia Public Library Program: xie.guigang@xanthomonas.wiki)
  • -
  • and his research assistant Miss asuka (amethyst.asuka@gcmodeller.org)
  • -
  • Mr Huahao Jiang (jhh1725@gcmodeller.org)

  • - -

    Contributors to GCModeller Library

    -

    -Here are the peoples who is contributes to the algorithm or source code of GCModeller: -

    -
    ") - Call doc.AppendLine("") - Call doc.AppendLine(" - - ") - Dim getAuthors = (From authorMod - In (From obj In SPMgr.NamespaceCollection Select (From [mod] In obj.PartialModules Select [mod].Publisher, [mod]).ToArray).ToArray.MatrixToList - Select authorMod, author = InputHandler.ToString(authorMod.Publisher).ToLower.Trim - Group authorMod By author Into Group).ToArray - - For Each author In getAuthors - Dim modList As String = String.Join(", ", (From [mod] In author.Group - Let typeRef As System.Type = [mod].mod.Assembly.GetType - Where Not typeRef Is Nothing 'å¯èƒ½æ–‡ä»¶è¢«åˆ æŽ‰äº†æˆ–者命å空间被修改了,找ä¸åˆ°ç±»åž‹çš„å®šä¹‰å…¥å£æ•°æ® - Let [namespace] = typeRef.NamespaceEntry.Namespace - Select $"{[namespace]}").ToArray) - Dim authorName As String = author.author - If String.IsNullOrEmpty(authorName) Then - authorName = "Thanks to these anonymous developers" - Else - authorName = author.Group.First.mod.Publisher - End If - - Call doc.AppendLine($" ") - Next - - Call doc.AppendLine("
    Author/Contributors Modules
    {authorName} {modList}
    ") - Call doc.AppendLine("

    -

    -

    Special thanks

    -

    Many thanks to my teacher and doctor niu(niuxiangna@gmail.com), -professor Jiang(weijiang@gxu.edu.cn) and -professor He(yqhe@gxu.edu.cn) from SKLCUSA Laboratory in Guangxi University, -for giving good advices on my research and encouraging me devoted myself into the GCModeller project and bringing out this fantastic language project to you. -

    ") - Call doc.AppendLine($"

    License

    -

    -

    {My.Resources.license}
    -

    ") - Call doc.AppendLine("




    Project Links

    -

    GCModeller was benefits from two special project on the RNA-seq high-performance analysis, these two project which are: -
    - - - - -
    Bioinformatics ProjectHOME
  • Microsoft .NET Bio
  • https://github.com/dotnetbio/bio
  • BOW(Bioinformatics on Windows)
  • http://bow.codeplex.com/
    - -

    Project Folked Branches

    -

    Shoal Shell not just working in systems biology area but also works in financial economics area: -Another Shoal commercial extension project ""MiMaster (pre-alpha state)"" was applied on the financial online trading system from MiPaiMai.com, power this very first online instant auction platform. -


    - - - - -
    Shoal ProjectHOMEScienceLicense
  • GCModeller
  • http://GCModeller.orgSystems Biology/BioinformaticsGPL3 Open Source
  • MiMaster
  • http://mipaimai.com/Financial Online Trading SystemCommercial Licensed($32k/Product System)
    -

    - -

    ") - - Return doc.ToString - End Function - - Public Function HtmlRender([Namespace] As SPM.Nodes.Namespace) As String - Dim htmlTemplate As StringBuilder = New StringBuilder(My.Resources.sdk_doc) - Dim htmlDoc As New StringBuilder() - Dim Navigation As New StringBuilder - - Navigation.AppendLine("") - - For Each API As Interpreter.Linker.APIHandler.APIEntryPoint In [Namespace].API - Call __documents(htmlDoc, API) - Call Navigation.AppendLine($" - ") - Call Navigation.AppendLine($"") - Call Navigation.AppendLine("") - Next - - Navigation.AppendLine("
    - {API.Name} { String.Join("
    ", (From overloadsAPI In API Select overloadsAPI.EntryPoint.Info).ToArray)}
    ") - - Dim Relates = __getRelatedNamespaces([Namespace]) - - Call htmlTemplate.Replace("%Related%", String.Join(vbCrLf, (From ns As String In Relates Select $"
  • {ns}
  • ").ToArray)) - Call htmlTemplate.Replace("%Contents%", Navigation.ToString) - Call htmlTemplate.Replace("%SDK_HELP%", htmlDoc.ToString) - Call htmlTemplate.Replace("%Namespace%", [Namespace].Namespace) - Call htmlTemplate.Replace("%Url%", [Namespace].Url) - Call htmlTemplate.Replace("%Publisher%", [Namespace].Publisher) - Call htmlTemplate.Replace("%Description%", [Namespace].Description) - Call htmlTemplate.Replace("%Cites%", String.Join("

    ", If([Namespace].Cites Is Nothing, New String() {}, [Namespace].Cites))) - - Return htmlTemplate.ToString - End Function - - Private Function __getRelatedNamespaces([Namespace] As SPM.Nodes.Namespace) As String() - Dim LQuery = (From pm In [Namespace].PartialModules.AsParallel Let assm = pm.Assembly.LoadAssembly Let types = assm.GetTypes Select types).ToArray.MatrixToList - Dim GetNames = (From type In LQuery.AsParallel - Let Name = type.NamespaceEntry - Where Not Name Is Nothing AndAlso Not String.IsNullOrEmpty(Name.Namespace) AndAlso Not Name.AutoExtract - Select nsTag = Name.Namespace.ToLower, Name - Group By nsTag Into Group).ToArray - Return (From obj In GetNames Select str = obj.Group.ToArray()(Scan0).Name.Namespace Order By str Ascending).ToArray - End Function - - Private Sub __documents(ByRef htmlDoc As StringBuilder, API As Interpreter.Linker.APIHandler.APIEntryPoint) - - If API.IsOverloaded Then - Call htmlDoc.AppendLine($"{API.Name}
    ") - Call htmlDoc.AppendLine($"+ {API.OverloadsNumber} Overloads

    ") - - For Each cmdEntryPoint In API.OverloadsAPI - Call htmlDoc.AppendLine(cmdEntryPoint.EntryPointFullName(True)) - Call __documents(htmlDoc, cmdEntryPoint) - Next - - Else - Call __documents(htmlDoc, API.OverloadsAPI(Scan0)) - End If - End Sub - - Private Sub __documents(ByRef htmlDoc As StringBuilder, API As CommandLine.Reflection.EntryPoints.APIEntryPoint) - Dim doc As String = CommandLine.Reflection.ExportAPIAttribute.GenerateHtmlDoc(API, NameOf(API), __functionDetails(API)) - Call htmlDoc.AppendLine($"

  • - {doc}") - Call htmlDoc.AppendLine("

    ") - End Sub - - Private Function __functionDetails(API As CommandLine.Reflection.EntryPoints.APIEntryPoint) As String - Dim parameters = API.EntryPoint.GetParameters - Dim doc As New StringBuilder(1024) - - Call doc.AppendLine("
    ") - Call doc.AppendLine($"API Prototype: {API.EntryPoint.DeclaringType.FullName}::{API.EntryPoint.Name}") - Call doc.AppendLine("
    Function Returns: " & MetaData.FunctionReturns.GetDescription(API.EntryPoint)) - - If Not parameters.IsNullOrEmpty Then - Call doc.AppendLine($"

    Parameters:
    -{ String.Join("", (From parm In parameters Let aliass = Scripting.MetaData.Parameter.GetParameterNameAlias(parm, True) - Select $" - - - - - - - ").ToArray) } -
    {If(aliass.ParameterInfo.IsOptional, "[Optional]", "")}{aliass.Alias}{aliass.ParameterInfo.ParameterType.FullName}{aliass.Description}{If(aliass.ParameterInfo.IsOptional, $" = {InputHandler.ToString(aliass.ParameterInfo.DefaultValue)}", "")}

    ") - End If - - Call doc.AppendLine($"

    Returns: {API.EntryPoint.ReturnType.FullName}

    ") - - Return doc.ToString - End Function - End Module -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/HTML/IWikiHandle.vb b/Shoal.v2/Shoal.v2/HTML/IWikiHandle.vb deleted file mode 100644 index 36b611086..000000000 --- a/Shoal.v2/Shoal.v2/HTML/IWikiHandle.vb +++ /dev/null @@ -1,92 +0,0 @@ -Imports System.Text - -Namespace HTML - - ''' - ''' Internal wiki system queriable object.(这个对象是å¯ä»¥æŽ¥å—wiki查询æ“作的) - ''' - ''' - Public Interface IWikiHandle - - Function GenerateDescription() As String - ''' - ''' 模糊匹é…并返回匹é…结果,当返回空字符串的时候,则说明没有被匹é…上 - ''' - ''' - ''' - ''' - Function Match(keyword As String) As String - End Interface - - Public Class Wiki : Inherits Runtime.SCOM.RuntimeComponent - - Sub New(ScriptEngine As Runtime.ScriptEngine) - Call MyBase.New(ScriptEngine) - End Sub - - ''' - ''' - ''' - ''' æ‰€éœ€è¦æœç´¢å¸®åŠ©ä¿¡æ¯çš„对象的åç§° - ''' - Public Function WikiSearchView(obj As String) As String() - Dim Result = HandleWikiSearch(obj) - Return (From element In Result Select element.GenerateDescription).ToArray - End Function - - Public Function HandleWikiSearch(obj As String) As IWikiHandle() - - End Function - - ''' - ''' ä¸å¸¦ä»»ä½•傿•°çš„wikiå‘½ä»¤ï¼Œæ˜¾ç¤ºæ¦‚è§ˆä¿¡æ¯ - ''' - ''' - Public Function WikiHelp() As String - Return __listAllImportsAPI() - End Function - - ''' - ''' 打å°å‡ºæ‰€æœ‰å¯¼å…¥çš„APIçš„ä¿¡æ¯ - ''' - ''' - Private Function __listAllImportsAPI() As String - Dim sBuilder As StringBuilder = New StringBuilder(1024) - Dim ImportsCommands = ScriptEngine.Interpreter.EPMDevice.ImportedAPI - Dim CommandNameMaxLength As Integer = (From strKey As String In ImportsCommands.Keys Select Len(strKey)).ToArray.Max - - Call sBuilder.AppendLine() - Call sBuilder.AppendLine("System Basically Command & Currently Imported Commands" & vbCrLf) - Call sBuilder.AppendLine(vbCrLf & String.Format(" {0} Command(s)", ImportsCommands.Count)) - Call sBuilder.AppendLine() - Call sBuilder.AppendLine(String.Format(" MethodEntry{0} Return Type", New String(" "c, CommandNameMaxLength))) - Call sBuilder.AppendLine(String.Format("+---{0}+----------------------------------------------------", New String("-"c, 1.5 * CommandNameMaxLength - 3))) - - For Each MethodEntryPoint In ImportsCommands - Call sBuilder.AppendLine(String.Format(" {0}{1} {2} {3}", MethodEntryPoint.Key, New String(" "c, 1.5 * CommandNameMaxLength - Len(MethodEntryPoint.Key)), - MethodEntryPoint.Value.First.EntryPoint.EntryPoint.ReturnType.FullName, - If(MethodEntryPoint.Value.IsOverloaded, String.Format("(+ {0} overloads)", MethodEntryPoint.Value.OverloadsNumber), ""))) - Next - - Dim TempShell = ScriptEngine.Interpreter.EPMDevice.AnonymousDelegate.TempDelegate - - If Not TempShell.IsNullOrEmpty Then - - Call sBuilder.AppendLine() - Call sBuilder.AppendLine(String.Format(" {0} Temp Shell Command(s) available in current work directory" & vbCrLf, TempShell.Count)) - Call sBuilder.AppendLine("-Name---------------------------File----------------------") - - CommandNameMaxLength = (From strKey As String In TempShell.Keys Select Len(strKey)).ToArray.Max - - For Each ShellEntry In TempShell - Call sBuilder.AppendLine(String.Format(" {0} {1} {2}", ShellEntry.Key, New String(" "c, CommandNameMaxLength - Len(ShellEntry.Key)), ShellEntry.Value.FilePath)) - Next - End If - - Call Console.WriteLine(sBuilder.ToString) - - Return sBuilder.ToString - End Function - - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/HTML/TypeLinks.vb b/Shoal.v2/Shoal.v2/HTML/TypeLinks.vb deleted file mode 100644 index ac5b617f0..000000000 --- a/Shoal.v2/Shoal.v2/HTML/TypeLinks.vb +++ /dev/null @@ -1,137 +0,0 @@ -Imports System.Text - -Namespace HTML - - Public Module TypeLinks - - Public Function PageName(Type As Type) As String - Dim arrayType As Type - - Try - arrayType = Type.Collection2GenericIEnumerable(False) - Catch ex As Exception - Call Type.FullName.__DEBUG_ECHO - Throw - End Try - - If Type.Equals(arrayType) Then - Dim Name As String - - If String.Equals(Type.Name, GetType(Generic.KeyValuePair(Of ,)).Name) Then - Dim Generics = Type.GetGenericArguments - Name = $"System.Generic.`2+{Generics(Scan0).Name}, {Generics(1).Name}" - Else - Name = Type.FullName '䏿˜¯é›†åˆç±»åž‹ - End If - - If Len(Name) > 100 Then - Name = SecurityString.MD5Hash.GetMd5Hash(Name.ToLower) - End If - - Return Name - Else - Return $"{NameOf(Collections.IEnumerable)}+{PageName(arrayType.GetGenericArguments(Scan0))}" - End If - End Function - - Public Function NamespaceRequestHtml(Type As Type) As String - Return $"./{NameOf(TypeLinks)}/{PageName(Type)}.html" - End Function - - Private Function __innerReference(Type As Type) As String - Return $"./{PageName(Type)}.html" - End Function - - Public Function Indexing(SPMDb As SPM.PackageModuleDb) As Boolean - Dim TypeGroups = GetSource(SPMDb) - Dim __getPages = (From data In TypeGroups - Select tdef = TypeLinks.__createPage(data) - Order By tdef.FullName Ascending).ToArray - - Dim HTMLBuilder As New StringBuilder(My.Resources.index) - Dim doc As String = String.Join(vbCrLf, (From type In __getPages Select $"
  • {type.FullName}
  • ").ToArray) - - Call HTMLBuilder.Replace("%Version%", My.Application.Info.Version.ToString) - Call HTMLBuilder.Replace("%SDK_HELP%", doc) - Call HTMLBuilder.Replace("%etc%", "

    < Back To Index

    ") - Call HTMLBuilder.ToString.SaveTo($"{HTML.DocRenderer.wwwroot}/{NameOf(TypeLinks)}/index.html") - - Return Not __getPages.IsNullOrEmpty - End Function - - Public Function GetSource(SPMDb As SPM.PackageModuleDb) As KeyValuePair(Of SPM.Nodes.Namespace, KeyValuePair(Of Interpreter.Linker.APIHandler.APIEntryPoint, Interpreter.Linker.APIHandler.SignedFuncEntryPoint))()() - Dim AllAPIs = (From obj As SPM.Nodes.Namespace - In SPMDb.NamespaceCollection.AsParallel - Select (From api As Interpreter.Linker.APIHandler.APIEntryPoint - In obj.API - Select ns = obj, - api).ToArray).ToArray.MatrixToList - Dim AllFunctions = (From obj In AllAPIs.AsParallel Select (From func As Interpreter.Linker.APIHandler.SignedFuncEntryPoint - In obj.api.ToArray - Select func, - obj.api, - obj.ns).ToArray).ToArray.MatrixToList - Dim TypeGroups = (From obj In AllFunctions.AsParallel - Select obj - Group obj By Name = PageName(obj.func.EntryPoint.EntryPoint.ReturnType) Into Group).ToArray - Dim __getPages = (From type In TypeGroups.AsParallel - Let data = (From obj In type.Group - Select New KeyValuePair(Of SPM.Nodes.Namespace, - KeyValuePair(Of Interpreter.Linker.APIHandler.APIEntryPoint, - Interpreter.Linker.APIHandler.SignedFuncEntryPoint))( - obj.ns, - New KeyValuePair(Of Interpreter.Linker.APIHandler.APIEntryPoint, - Interpreter.Linker.APIHandler.SignedFuncEntryPoint)(obj.api, obj.func))).ToArray - Select data).ToArray - Return __getPages - End Function - - Private Function __createPage(data As KeyValuePair(Of SPM.Nodes.Namespace, - KeyValuePair(Of Interpreter.Linker.APIHandler.APIEntryPoint, - Interpreter.Linker.APIHandler.SignedFuncEntryPoint))()) As Type - Dim template As String = My.Resources.typeLinks_doc - Dim typeRef As KeyValuePair(Of String, Type) = CreatePage(template, data) - Dim path As String = $"{HTML.DocRenderer.wwwroot}/{NameOf(TypeLinks)}/{PageName(typeRef.Value)}.html" - Call typeRef.Key.SaveTo(path) - - Return typeRef.Value - End Function - - Public Function CreatePage(htmlTemplate As String, - data As KeyValuePair(Of - SPM.Nodes.Namespace, - KeyValuePair(Of Interpreter.Linker.APIHandler.APIEntryPoint, - Interpreter.Linker.APIHandler.SignedFuncEntryPoint))()) As KeyValuePair(Of String, Type) - Dim Type = data.First.Value.Value.EntryPoint.EntryPoint.ReturnType - Dim HtmlBuilder As New StringBuilder(htmlTemplate) - Dim doc As New StringBuilder - - Call doc.AppendLine("") - Call doc.AppendLine(" - - - ") - For Each func In (From obj In data Select obj Order By obj.Key.Namespace Ascending).ToArray - Call doc.AppendLine($" - - - - ") - Next - - Call doc.AppendLine("
    APIEntryPointDescription
    {func.Key.Namespace}::{func.Value.Key.Name}{func.Value.Value.EntryPoint.EntryPoint.ToString}{func.Value.Value.EntryPoint.Info}
    ") - - Call HtmlBuilder.Replace("%Publisher%", String.Join("
    ", (From obj In Type.Assembly.CustomAttributes - Let str = obj.ToString - Where InStr(str, "System.Reflection.Assembly") > 0 - Let final = str.Replace("System.Reflection.Assembly", "").Replace("Attribute(", "(") - Select If(Len(final) > 128, Mid(final, 1, 128) & "...", final)).ToArray)) - Call HtmlBuilder.Replace("%SDK_HELP%", doc.ToString) - Call HtmlBuilder.Replace("%Description%", Type.Description) - Call HtmlBuilder.Replace("%DefineFile%", ProgramPathSearchTool.RelativePath(Type.Assembly.Location)) - Call HtmlBuilder.Replace("%Type%", Type.FullName) - - Return New KeyValuePair(Of String, Type)(HtmlBuilder.ToString, Type) - End Function - End Module -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/InternalExtension.vb b/Shoal.v2/Shoal.v2/InternalExtension.vb deleted file mode 100644 index 217e7f8d6..000000000 --- a/Shoal.v2/Shoal.v2/InternalExtension.vb +++ /dev/null @@ -1,208 +0,0 @@ -Imports System.Drawing -Imports System.Text -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports Microsoft.VisualBasic.Language.UnixBash -Imports Microsoft.VisualBasic.Scripting.MetaData - -''' -''' 内部的一些简å•的常用命令 -''' -''' - -Public Module InternalExtension - - Public ReadOnly Property License As String - Get - Return My.Resources.license - End Get - End Property - - ''' - ''' 脚本的执行入å£ç‚¹çš„定义 - ''' - ''' 脚本中的内容 - ''' 如果为Nothing,则说明目标脚本的执行ä¸éœ€æ±‚傿•° - ''' - ''' - Public Delegate Function ScriptSourceHandle(Script As String, parameters As KeyValuePair(Of String, Object)()) As Object - - - Public Function basename(path As String) As String - If FileIO.FileSystem.DirectoryExists(path) Then - Return FileIO.FileSystem.GetDirectoryInfo(path).Name - Else - Return IO.Path.GetFileNameWithoutExtension(path) - End If - End Function - - - Public Function Version() As Version - Call Cowsay(String.Format("The version of Shoal is {0}", My.Application.Info.Version.ToString)) - Return My.Application.Info.Version - End Function - - - Public Function Wiki( Optional keyword As String = "") As String - Dim url As String = If(String.IsNullOrEmpty(keyword), "https://sourceforge.net/p/shoal/wiki/", "https://sourceforge.net/p/shoal/wiki/search/?q=" & keyword.Replace(" ", "%20")) - Call Process.Start(url) - Return url - End Function - - - Public Function GetLicenseInfo() As String - Dim sBuilder As StringBuilder = New StringBuilder(1024) - Call sBuilder.AppendLine(My.Resources.license) - Call sBuilder.AppendLine() - Call sBuilder.AppendLine() - Call sBuilder.AppendLine("Using gpl() command to see the whole GPL3 license.") - - Call Console.WriteLine(sBuilder.ToString) - - Return sBuilder.ToString - End Function - - - Public Function GPL() As String - Call Console.WriteLine(My.Resources.gpl) - Return My.Resources.gpl - End Function - - - Public Function Echo( Message As String) As String - Call Console.WriteLine(Message) - Return Message - End Function - - - Public Function Cowsay(Optional msg As String = "", Optional dead As Boolean = True) As String - If String.IsNullOrEmpty(msg) Then - Return CowsayTricks.RunCowsay("Moo. Hi!", dead) - End If - - Return CowsayTricks.RunCowsay(msg, dead) - End Function - - - Public Function Cat(path As String) As String - Dim s As String = FileIO.FileSystem.ReadAllText(path) - Call Console.WriteLine(s) - Return s - End Function - - - Public Function Clear() As Integer - Call Console.Clear() - Return 0 - End Function - - - Public Function Pwd() As String - Call Console.WriteLine(My.Computer.FileSystem.CurrentDirectory) - Return My.Computer.FileSystem.CurrentDirectory - End Function - - ''' - ''' 当指定了文件拓展å之åŽï¼Œå‡½æ•°åªä¼šè¿”回文件å列表,其他的情况会返回文件å列表和文件夹列表 - ''' - ''' - - Public Function List( Optional dir As String = "", Optional ext As String = "") As String() - If String.IsNullOrEmpty(dir) Then - dir = My.Computer.FileSystem.CurrentDirectory - End If - - If String.IsNullOrEmpty(ext) Then - ext = "*.*" - End If - - Dim Dirs = FileIO.FileSystem.GetDirectories(dir, FileIO.SearchOption.SearchTopLevelOnly) - Dim Files = FileIO.FileSystem.GetFiles(dir, FileIO.SearchOption.SearchTopLevelOnly, ext) - Dim DriveInfo = FileIO.FileSystem.GetDriveInfo(dir) - Dim sBuilder As StringBuilder = New StringBuilder(1024) - - Call sBuilder.AppendLine(String.Format(" Volume in drive {0} is {1}", DriveInfo.RootDirectory, DriveInfo.VolumeLabel)) - Call sBuilder.AppendLine(String.Format(" Volume drive Format is {0}" & vbCrLf, DriveInfo.DriveFormat)) - Call sBuilder.AppendLine(String.Format(" Directory of {0}" & vbCrLf, dir)) - If Not Dirs.IsNullOrEmpty Then Call sBuilder.AppendLine(String.Format(" {0} Directories", Dirs.Count)) - If Not Files.IsNullOrEmpty Then Call sBuilder.AppendLine(String.Format(" {0} Files", Files.Count)) - Call sBuilder.AppendLine() - - For Each sDir As String In Dirs - Dim dirInfo = FileIO.FileSystem.GetDirectoryInfo(sDir) - Call sBuilder.AppendLine(String.Format("{0}
    {1}", dirInfo.LastWriteTimeUtc.DateToString, dirInfo.Name)) - Next - Call sBuilder.AppendLine() - For Each File As String In Files - Dim fileInfo = FileIO.FileSystem.GetFileInfo(File) - - If String.Equals(fileInfo.Extension, ".shl") Then - Call sBuilder.AppendLine(String.Format("{0} {1}", fileInfo.LastWriteTimeUtc.DateToString, fileInfo.Name)) - Else - Call sBuilder.AppendLine(String.Format("{0} {1}", fileInfo.LastWriteTimeUtc.DateToString, fileInfo.Name)) - End If - Next - Call Console.WriteLine(sBuilder.ToString) - - If String.Equals(ext, "*.*") Then - '返回所有 - Dim ChunkBuffer = Dirs.ToArray.Join(Files) - Return ChunkBuffer.ToArray - Else - Return Files.ToArray - End If - End Function - - ''' - ''' - ''' - ''' - ''' - [ args]""")> - Public Function ProcessStart(argv As CommandLine.CommandLine) As Process - Dim file As String = FileIO.FileSystem.GetFileInfo(argv("-file")).FullName, arguments As String = argv("-argv") - Dim Process As Process = New Process() - Process.StartInfo = New System.Diagnostics.ProcessStartInfo(file) - If Not String.IsNullOrEmpty(arguments) Then - Process.StartInfo.Arguments = arguments - End If - Call Process.Start() - Return Process - End Function - - ''' - ''' - ''' - ''' - ''' - - Public Function Source(path As String, Optional args As Generic.IEnumerable(Of KeyValuePair(Of String, Object)) = Nothing) As Object - Dim Environment As New Runtime.ScriptEngine() - Dim requiredCwork As Boolean = Not (InStr(path, "http://", CompareMethod.Text) > 0 OrElse InStr(path, "https://", CompareMethod.Text) > 0) ' url 无法切æ¢è·¯å¾„ - Dim currentWork As String = My.Computer.FileSystem.CurrentDirectory - - If Not args.IsNullOrEmpty Then - For Each item In args - Call Environment.MMUDevice.InitLocals(item.Key, item.Value, "string") - Next - End If - - If requiredCwork Then - My.Computer.FileSystem.CurrentDirectory = FileIO.FileSystem.GetParentPath(path) -#If DEBUG Then - Call $"Change current work directory to {My.Computer.FileSystem.CurrentDirectory}".__DEBUG_ECHO -#End If - End If - Call Environment.Source(path) - If requiredCwork Then - My.Computer.FileSystem.CurrentDirectory = currentWork - End If - - Return Environment.MMUDevice.SystemReserved.Value - End Function -End Module diff --git a/Shoal.v2/Shoal.v2/Interpreter/AnonymousDelegate.vb b/Shoal.v2/Shoal.v2/Interpreter/AnonymousDelegate.vb deleted file mode 100644 index fef0b3a6c..000000000 --- a/Shoal.v2/Shoal.v2/Interpreter/AnonymousDelegate.vb +++ /dev/null @@ -1,154 +0,0 @@ - -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.LDM -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.LDM.Expressions - -Namespace Interpreter - - ''' - ''' 匿å函数 - ''' - Public Class AnonymousDelegate : Inherits Runtime.SCOM.RuntimeComponent - Implements IReadOnlyDictionary(Of String, LDM.SyntaxModel) - - Public ReadOnly Delegates As SortedDictionary(Of String, LDM.SyntaxModel) = - New SortedDictionary(Of String, SyntaxModel) - Public ReadOnly Property TempDelegate As SortedDictionary(Of String, LDM.SyntaxModel) = - New SortedDictionary(Of String, SyntaxModel) - - - Sub New(ScriptEngine As Runtime.ScriptEngine) - Call MyBase.New(ScriptEngine) - End Sub - - ''' - ''' 当切æ¢ç›®å½•ä¹‹åŽæ‰«æå½“å‰ç›®å½•之下的所有的临时命令脚本 - ''' - Public Sub CdTemp() - Dim Files As Dictionary(Of String, String) = - FileIO.FileSystem.CurrentDirectory _ - .LoadSourceEntryList(ScriptEngine.Config.GetExtensionList, True) - - Call _TempDelegate.Clear() - - If Files.IsNullOrEmpty Then - Return - End If - - Dim LQuery = (From path In Files.AsParallel - Let script = ___load(path.Value) - Where Not script Is Nothing - Select path.Key.ToLower, - script).ToArray - - For Each script In LQuery - Call _TempDelegate.Add(script.ToLower, script.script) - Next - End Sub - - Const _1MB As Long = 1024 * 1024 - - Private Function ___load(path As String) As LDM.SyntaxModel - Try - If FileIO.FileSystem.GetFileInfo(path).Length > _1MB Then ' 文件太大了,å¯èƒ½ä¸æ˜¯è„šæœ¬æ–‡ä»¶è€Œä»…ä»…æ˜¯æ™®é€šçš„æ–‡æœ¬ç±»åž‹çš„æ•°æ®æ–‡ä»¶ï¼Œæ”¾å¼ƒè§£æžï¼Œå¦åˆ™ç¨‹åºä¼šè¢«å¡åœ¨è¿™é‡Œ - Return Nothing - End If - Return LDM.SyntaxModel.LoadFile(path) - Catch ex As Exception - Return Nothing '䏿˜¯è„šæœ¬æ–‡ä»¶ï¼Œåˆ™ä¸å¿…被加入临时命令之中了 - End Try - End Function - - Public Sub [Declare](Name As String, Func As LDM.SyntaxModel) - Name = Name.ToLower - If Delegates.ContainsKey(Name) Then - Call Delegates.Remove(Name) 'æ–°çš„ä¼šæ›¿æ¢æŽ‰æ—§çš„ - End If - Call Delegates.Add(Name, Func) - End Sub - - ''' - ''' - ''' - ''' - ''' 这个å˜é‡ä¸»è¦æ˜¯ç”¨æ¥æŒ‡ç¤ºæ˜¯å¦æ‰¾åˆ°äº†ç›¸åº”的函数入å£ç‚¹ - ''' - Public Function Exec(ExecName As String, Expr As LDM.Expressions.FunctionCalls, ByRef success As Boolean) As Object - Dim Func = Me(ExecName) - success = Not Func Is Nothing - - If Not success Then Return Nothing - - Dim params = ScriptEngine.ExecuteModel.ArgumentsLinker.GetParameters(Expr) - - For Each arg In params - Call ScriptEngine.MMUDevice.Update(arg.Key, arg.Value) - Next - - Dim value As Object = New Runtime.FSMMachine(Me.ScriptEngine, Func).Execute - Return value - End Function - -#Region "Implements IReadOnlyDictionary(Of String, LDM.SyntaxModel)" - - Public ReadOnly Property NumbersOfDelegate As Integer Implements IReadOnlyCollection(Of KeyValuePair(Of String, SyntaxModel)).Count - Get - Return Delegates.Count - End Get - End Property - - ''' - ''' 会在两个字典之中进行查找,由于å¯èƒ½ä¼šå› ä¸ºä¸å°å¿ƒé‡å的缘故会造æˆä¸´æ—¶è„šæœ¬è¢«æ‰§è¡Œï¼Œäº§ç”Ÿæ— æ³•å¯Ÿè§‰çš„BUG,所以在这里临时脚本命令的优先级是最低的 - ''' - ''' - ''' - Default Public ReadOnly Property GetScriptDelegate(key As String) As SyntaxModel Implements IReadOnlyDictionary(Of String, SyntaxModel).Item - Get - If String.IsNullOrEmpty(key) Then - Return Nothing - End If - - key = key.ToLower - If Delegates.ContainsKey(key) Then - Return Delegates(key) - Else - If _TempDelegate.ContainsKey(key) Then - Return _TempDelegate(key) - Else - Return Nothing - End If - End If - End Get - End Property - - Public ReadOnly Property Keys As IEnumerable(Of String) Implements IReadOnlyDictionary(Of String, SyntaxModel).Keys - Get - Return Delegates.Keys - End Get - End Property - - Public ReadOnly Property Values As IEnumerable(Of SyntaxModel) Implements IReadOnlyDictionary(Of String, SyntaxModel).Values - Get - Return Delegates.Values - End Get - End Property - - Public Function ContainsKey(key As String) As Boolean Implements IReadOnlyDictionary(Of String, SyntaxModel).ContainsKey - Return Delegates.ContainsKey(key.ToLower) - End Function - - Public Iterator Function GetEnumerator() As IEnumerator(Of KeyValuePair(Of String, SyntaxModel)) Implements IEnumerable(Of KeyValuePair(Of String, SyntaxModel)).GetEnumerator - For Each __func In Delegates - Yield __func - Next - End Function - - Public Function TryGetValue(key As String, ByRef value As SyntaxModel) As Boolean Implements IReadOnlyDictionary(Of String, SyntaxModel).TryGetValue - Return Delegates.TryGetValue(key.ToLower, value) - End Function - - Private Iterator Function IEnumerable_GetEnumerator() As IEnumerator Implements IEnumerable.GetEnumerator - Yield GetEnumerator() - End Function -#End Region - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Interpreter/Interpreter.vb b/Shoal.v2/Shoal.v2/Interpreter/Interpreter.vb deleted file mode 100644 index 1cde64463..000000000 --- a/Shoal.v2/Shoal.v2/Interpreter/Interpreter.vb +++ /dev/null @@ -1,107 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.LDM -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.LDM.Expressions -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.LDM.Expressions.Keywords -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Parser.TextTokenliser - -Namespace Interpreter - - ''' - ''' Parsing the script text into a LDM data model for the script executing. - ''' - ''' - ''' 命令行输入的脚本行,一般认为是完整的一行,则直接使用æ¥è§£æž - ''' 从脚本文件之中输入的脚本文件å¯èƒ½å«æœ‰Delegate函数或者多行的数组定义,则脚本文件是使用æ¥è§£æžçš„ - ''' - Public Class Interpreter : Inherits Runtime.SCOM.RuntimeComponent - - Public ReadOnly Property SPMDevice As SPM.ShoalPackageMgr - Public ReadOnly Property EPMDevice As Linker.EntryPoint - - Sub New(ScriptEngine As Runtime.ScriptEngine, SPMDevice As SPM.ShoalPackageMgr) - Call MyBase.New(ScriptEngine) - - Me.SPMDevice = SPMDevice - Me.EPMDevice = New Linker.EntryPoint(ScriptEngine) - End Sub - - ''' - ''' 使用æ¥è§£æž - ''' - ''' - ''' The parser function supports both local file system url or http network file. - ''' (文件路径) - ''' - ''' - Public Function ParseFile(File As String) As SyntaxModel -#If Not DEBUG Then - Try -#End If - Return __parsingFile(File) -#If Not DEBUG Then - Catch ex As Exception - Call App.LogException(ex, $"{NameOf(Interpreter)}::{NameOf(ParseFile)}") - - Return New LDM.SyntaxModel With { - .Expressions = New PrimaryExpression() {} - } - End Try -#End If - End Function - - ''' - ''' åŒæ—¶æ”¯æŒç½‘络ä½ç½®æˆ–者本地文件系统的ä½ç½® - ''' - ''' - ''' - Private Function __parsingFile(path As String) As SyntaxModel - Dim Script As String = path.GET - Return SyntaxModel.ScriptParser(Script, path) - End Function - - Public Function TryGetAPI(Name As String) As Linker.APIHandler.APIEntryPoint - Return EPMDevice.ImportedAPI(Name) - End Function - - Protected Overrides Sub Dispose(disposing As Boolean) - Call SPMDevice.Dispose() - Call MyBase.Dispose(disposing) - End Sub - - Delegate Function Parser(Script As String) As PrimaryExpression() - - ''' - ''' å¤„ç†æ¥è‡ªäºŽæ–‡ä»¶ä¹‹ä¸­çš„å¯èƒ½å…·æœ‰å¤šè¡Œåˆ†è¡Œçš„è„šæœ¬ä»£ç  - ''' - ''' - ''' - Public Shared Function MSLParser(Script As String) As PrimaryExpression() - Dim lines As String() = Script.lTokens - Dim Expressions As New List(Of PrimaryExpression) - Dim ExprQueue As New Queue(Of String)(lines) - - Do While Not ExprQueue.IsNullOrEmpty - Expressions += SyntaxParser.MSLParser(ExprQueue) - Expressions.Last.LineNumber = Expressions.Count - Loop - - Return Expressions - End Function - - ''' - ''' å¤„ç†æ¥è‡ªäºŽç»ˆç«¯è¾“å…¥çš„åªæœ‰ä¸€è¡Œçš„è„šæœ¬ä»£ç  - ''' - ''' - ''' - Public Shared Function InternalExpressionParser(Line As String) As PrimaryExpression - If String.IsNullOrEmpty(Line) Then - Return SyntaxError.BlankCode - Else - - Dim Parser As MSLTokens = New MSLTokens().Parsing(Line) - Dim Expr As PrimaryExpression = - SyntaxParser.Parsing(Line, Parser.Tokens, Parser.Comments) - Return Expr ' å‡è‹¥éœ€è¦è¿›è¡ŒTokens的类型的判断,则å¯ä»¥åœ¨å¾—到表达å¼ä¹‹åŽï¼Œé€šè¿‡è¡¨è¾¾å¼çš„类型的计算出Tokens的类型 - End If - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Interpreter/Linker/API/APIEntryPoint.vb b/Shoal.v2/Shoal.v2/Interpreter/Linker/API/APIEntryPoint.vb deleted file mode 100644 index d21362bd4..000000000 --- a/Shoal.v2/Shoal.v2/Interpreter/Linker/API/APIEntryPoint.vb +++ /dev/null @@ -1,203 +0,0 @@ -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports Microsoft.VisualBasic.ComponentModel.Collection.Generic -Imports Microsoft.VisualBasic.Scripting.MetaData - -Namespace Interpreter.Linker.APIHandler - - ''' - ''' 命令执行的入å£ç‚¹ï¼Œä½¿ç”¨è¿™ä¸ªå¯¹è±¡è¿›è¡Œå‡½æ•°é‡è½½çš„å¤„ç† - ''' - ''' - ''' é‡è½½å‡½æ•°çš„ç­¾å冲çªçš„æ¡ä»¶ï¼š - ''' 1. å…·æœ‰å®Œå…¨ä¸€æ ·çš„å‚æ•°åˆ—表,å³å‚æ•°åå’Œå‚æ•°ç±»åž‹å®Œå…¨ä¸€è‡´ï¼Œå‚数的顺åºå¯¹ç­¾åå†²çªæ²¡æœ‰å½±å“ - ''' 2. 除了满足上é¢çš„æ¡ä»¶ï¼Œä¸¤ä¸ªå‡½æ•°ä¹‹é—´çš„è¿”å›žå€¼å®Œå…¨ä¸€æ ·çš„æ—¶å€™ï¼Œå³å¯è®¤ä¸ºä¸¤ä¸ªå‡½æ•°çš„ç­¾å完全一样 - ''' - Public Class APIEntryPoint - - Implements IReadOnlyId - Implements IReadOnlyList(Of SignedFuncEntryPoint) - -#Region "Public Property & Fields" - - ''' - ''' Shoal脚本命令的函数é‡è½½ - ''' - ''' - Dim _OverloadAPIEntryPoints As List(Of SignedFuncEntryPoint) = New List(Of SignedFuncEntryPoint) - Dim _OverloadSignatureHandles As Dictionary(Of String, OverloadsSignatureHandle) = - New Dictionary(Of String, OverloadsSignatureHandle) - - ''' - ''' Shoal API命令的åç§° - ''' - ''' - Public ReadOnly Property Name As String Implements IReadOnlyId.Identity - - ''' - ''' 当å‰çš„这个执行入å£ç‚¹æ˜¯å¦æœ‰é‡è½½çš„命令 - ''' - ''' - ''' - ''' - Public ReadOnly Property IsOverloaded As Boolean - Get - Return _OverloadAPIEntryPoints.Count > 1 - End Get - End Property - - Public ReadOnly Property OverloadsAPI As EntryPoints.APIEntryPoint() - Get - Return (From api In Me._OverloadAPIEntryPoints Select api.EntryPoint).ToArray - End Get - End Property -#End Region - - ''' - ''' 共享方法 - ''' - ''' - ''' 如果ä¸çŸ¥é“该怎么处ç†è¿™ä¸ªå‚数,请使用Nothing - ''' - Sub New(Name As String, InitMethod As System.Reflection.MethodInfo) - Me.Name = Name - - If Not InitMethod Is Nothing Then - Dim [SignatureHandles] = __getTypeSignatureHandles(InitMethod) - Dim EntryInfo As New ExportAPIAttribute(Name) - Dim InitEntry As EntryPoints.APIEntryPoint = - New EntryPoints.APIEntryPoint(Invoke:=InitMethod, attribute:=EntryInfo) - - Call _OverloadAPIEntryPoints.Add(New SignedFuncEntryPoint(InitEntry, [Handles]:=SignatureHandles)) - Call __addSignatureHandles(SignatureHandles) - End If - End Sub - - Sub New(Name As String, InitOverloadsMethod As System.Reflection.MethodInfo()) - Me.Name = Name - - If Not InitOverloadsMethod.IsNullOrEmpty Then - For Each InitMethod In InitOverloadsMethod - Dim [SignatureHandles] = __getTypeSignatureHandles(InitMethod) - Dim EntryInfo As New ExportAPIAttribute(Name) - Dim InitEntry As EntryPoints.APIEntryPoint = New EntryPoints.APIEntryPoint(Invoke:=InitMethod, attribute:=EntryInfo) - - Call _OverloadAPIEntryPoints.Add(New SignedFuncEntryPoint(InitEntry, [Handles]:=SignatureHandles)) - Call __addSignatureHandles(SignatureHandles) - Next - End If - End Sub - - ''' - ''' 共享方法和实例方法 - ''' - ''' - ''' 如果ä¸çŸ¥é“该怎么处ç†è¿™ä¸ªå‚数,请使用Nothing - ''' - Sub New(Name As String, InitEntryPoint As EntryPoints.APIEntryPoint) - Me.Name = Name - - If Not InitEntryPoint Is Nothing Then - Dim [SignatureHandles] = __getTypeSignatureHandles(InitEntryPoint.EntryPoint) - Call _OverloadAPIEntryPoints.Add(New SignedFuncEntryPoint(InitEntryPoint, [Handles]:=SignatureHandles)) - Call __addSignatureHandles(SignatureHandles) - End If - End Sub - - Sub New(Name As String, APIList As EntryPoints.APIEntryPoint()) - Me.Name = Name - - If Not APIList Is Nothing Then - For Each InitEntryPoint In APIList - Dim [SignatureHandles] = __getTypeSignatureHandles(InitEntryPoint.EntryPoint) - Call _OverloadAPIEntryPoints.Add(New SignedFuncEntryPoint(InitEntryPoint, [Handles]:=SignatureHandles)) - Call __addSignatureHandles(SignatureHandles) - Next - End If - End Sub - - ''' - ''' å‘当å‰çš„æ‰§è¡Œå…¥å£ç‚¹æ·»åŠ ä¸€ä¸ªé‡è½½å‡½æ•°ï¼Œå½“当å‰çš„æ‰§è¡Œå…¥å£ç‚¹ä¹‹ä¸­å…·å¤‡æœ‰ä¸¤ä¸ªå®Œå…¨ç›¸åŒçš„函数签å的入å£ç‚¹çš„æ—¶å€™ï¼Œæ–°çš„å…¥å£ç‚¹ä¼šæ›¿æ¢æŽ‰æ—§çš„å…¥å£ç‚¹ - ''' - ''' - ''' - Public Sub OverloadsAPIEntryPoint(EntryPoint As EntryPoints.APIEntryPoint) - Dim SignatureHandles = __getTypeSignatureHandles(EntryPoint.EntryPoint) - Dim SignatureSignedEntryPoint = New SignedFuncEntryPoint(EntryPoint, SignatureHandles) - Dim LQuery = (From p As SignedFuncEntryPoint - In Me._OverloadAPIEntryPoints - Where p.Equals(SignatureSignedEntryPoint) - Select p).ToArray - - If Not LQuery.IsNullOrEmpty Then - Call _OverloadAPIEntryPoints.Remove(LQuery.First) '当出现了两个具有完全一样的数字签å的函数的时候,新的入å£ç‚¹ä¼šæ›¿æ¢æŽ‰æ—§çš„å…¥å£ç‚¹ - End If - - Call _OverloadAPIEntryPoints.Add(SignatureSignedEntryPoint) - Call __addSignatureHandles([Handles]:=SignatureHandles) - End Sub - - Private Sub __addSignatureHandles([Handles] As MetaData.OverloadsSignatureHandle()) - For Each HWND In [Handles] - Dim Name As String = HWND.TypeIDBrief - If _OverloadSignatureHandles.ContainsKey(Name) Then - Call _OverloadSignatureHandles.Remove(Name) - End If - Call _OverloadSignatureHandles.Add(Name, HWND) - Next - End Sub - - ''' - ''' 获å–用于支æŒå‡½æŽˆé‡è½½æ‰€éœ€è¦çš„æ•°å­—ç­¾åä¿¡æ¯ - ''' - ''' - ''' - ''' - Private Shared Function __getTypeSignatureHandles(EntryInfo As System.Reflection.MethodInfo) As MetaData.OverloadsSignatureHandle() - Dim Assembly = EntryInfo.DeclaringType - Dim Signature As Type = GetType(MetaData.OverloadsSignatureHandle) - Dim [Handles] = (From attr As Object - In Assembly.GetCustomAttributes(attributeType:=Signature, inherit:=True) - Select DirectCast(attr, MetaData.OverloadsSignatureHandle)).ToArray - Return [Handles] - End Function - - Public Overrides Function ToString() As String - If _OverloadAPIEntryPoints.Count = 1 Then - Return $"{Name} --> {_OverloadAPIEntryPoints.First.ToString}" - Else - Return $"{Name} has {_OverloadAPIEntryPoints.Count} overloads..." - End If - End Function - -#Region "Implements IReadOnlyList(Of InternalGetTypeSignatureHandles(InitMethod))" - - Public Iterator Function GetEnumerator() As IEnumerator(Of SignedFuncEntryPoint) Implements IEnumerable(Of SignedFuncEntryPoint).GetEnumerator - For Each Item As SignedFuncEntryPoint In _OverloadAPIEntryPoints - Yield Item - Next - End Function - - ''' - ''' Overloads Entry Point Counts. (当å‰çš„这个执行入å£ç‚¹ä¹‹ä¸­çš„é‡è½½çš„函数的åå°„å…¥å£ç‚¹çš„æ•°ç›®) - ''' - ''' - ''' - ''' - Public ReadOnly Property OverloadsNumber As Integer Implements IReadOnlyCollection(Of SignedFuncEntryPoint).Count - Get - Return _OverloadAPIEntryPoints.Count - End Get - End Property - - Default Public ReadOnly Property OverloadsEntryPoint(index As Integer) As SignedFuncEntryPoint Implements IReadOnlyList(Of SignedFuncEntryPoint).Item - Get - Return _OverloadAPIEntryPoints(index) - End Get - End Property - - Private Iterator Function GetEnumerator1() As IEnumerator Implements IEnumerable.GetEnumerator - Yield GetEnumerator() - End Function -#End Region - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Interpreter/Linker/API/APIInvoker.vb b/Shoal.v2/Shoal.v2/Interpreter/Linker/API/APIInvoker.vb deleted file mode 100644 index 27b312c97..000000000 --- a/Shoal.v2/Shoal.v2/Interpreter/Linker/API/APIInvoker.vb +++ /dev/null @@ -1,41 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Linker.APIHandler.Alignment -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Linker.APIHandler.Alignment.FunctionCalls -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Exceptions - -Namespace Interpreter.Linker.APIHandler - - Public Module APIInvoker - - ''' - ''' 傿•°çš„ä½ç½®é€‚åˆå‡½æ•°çš„定义是一一对应的 - ''' - ''' - ''' - ''' - Public Function TryInvoke(API As APIEntryPoint, args As Object()) As Object - Dim LQuery = (From Method As SignedFuncEntryPoint - In API.AsParallel - Let ref = __tryInvoke(Method.EntryPoint.EntryPoint, args) - Where Not ref Is Nothing - Select Method, ref - Order By ref.Score Descending).ToArray - - If LQuery.IsNullOrEmpty Then - Throw New MethodNotFoundException( - API, - (From obj In args Select New KeyValuePair(Of String, Object)(OrderReference, obj)).ToArray, - Nothing, - Nothing) - End If - - Dim APIEntryPoint = LQuery(Scan0) - Dim value As Object = APIEntryPoint.Method.EntryPoint.DirectInvoke(APIEntryPoint.ref.args) - Return value - End Function - - Private Function __tryInvoke(FuncDef As System.Reflection.MethodInfo, args As Object()) As ParamAlignments - Dim ref As ParamAlignments = FunctionCalls.OrderReferenceAlignment(FuncDef.GetParameters, args) - Return ref - End Function - End Module -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Interpreter/Linker/API/Alignment/Alignments/OneParameter.vb b/Shoal.v2/Shoal.v2/Interpreter/Linker/API/Alignment/Alignments/OneParameter.vb deleted file mode 100644 index 39b3279bd..000000000 --- a/Shoal.v2/Shoal.v2/Interpreter/Linker/API/Alignment/Alignments/OneParameter.vb +++ /dev/null @@ -1,70 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Parser.Tokens.ParameterName -Imports Microsoft.VisualBasic.Scripting.MetaData.Parameter -Imports System.Reflection - -Namespace Interpreter.Linker.APIHandler.Alignment - - Friend Class OneParameter : Inherits SpecialAlignment(Of System.Reflection.ParameterInfo) - - Sub New(FuncDef As System.Reflection.ParameterInfo, ByRef InputParam As Dictionary(Of String, Object)) - Call MyBase.New(FuncDef, InputParam) - End Sub - - Public Overrides Function OverloadsAlignment() As ParamAlignments - If InputParam.IsNullOrEmpty Then 'è¾“å…¥çš„å‚æ•°æ˜¯ç©ºçš„ï¼Œåˆ™åˆ¤æ–­å‡½æ•°å‚æ•°æ˜¯å¦ä¸ºå¯é€‰å‚æ•° - - If Not FuncDef.IsOptional Then - Return Nothing - Else - Return New ParamAlignments With { - .Score = 10, - .args = {FuncDef.DefaultValue} - } - End If - - End If - - Dim pName As String = GetAliasNameView(FuncDef).ToLower - - If InputParam.ContainsKey(pName) Then - Return __equals(pName) - End If - - If InputParam.ContainsKey(FunctionCalls.ExtensionMethodCaller) Then 'æ‹“å±•æ–¹æ³•å‚æ•° - Return __equals(FunctionCalls.ExtensionMethodCaller) - End If - - If InputParam.ContainsKey(FunctionCalls.SingleParameter) Then - Return __equals(FunctionCalls.SingleParameter) - End If - - Return Nothing '都找ä¸åˆ°ç›¸åŒçš„定义,则肯定ä¸å¯ä»¥è¿›è¡Œè°ƒç”¨ - End Function - - Private Function __equals(Name As String) As ParamAlignments - Dim equalsValue As Integer - Dim valueInput As Object = InputParam(Name) - - If __boolsEquals(FuncDef, valueInput) Then Return New ParamAlignments With {.Score = 100, .args = {True}} - - Dim inputType As Type = valueInput.GetType - - If TypeEquals.TypeEquals(FuncDef.ParameterType, inputType).ShadowCopy(equalsValue) > 0 Then - Return New ParamAlignments With { - .Score = equalsValue, - .args = {valueInput} - } - Else - - If InputHandler.Convertible(inputType, FuncDef.ParameterType) Then - Return New ParamAlignments With { - .Score = 20, - .args = {CTypeDynamic(valueInput, FuncDef.ParameterType)} - } - Else - Return Nothing - End If - End If - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Interpreter/Linker/API/Alignment/Alignments/SpecialAlignment(Of T).vb b/Shoal.v2/Shoal.v2/Interpreter/Linker/API/Alignment/Alignments/SpecialAlignment(Of T).vb deleted file mode 100644 index c8a139169..000000000 --- a/Shoal.v2/Shoal.v2/Interpreter/Linker/API/Alignment/Alignments/SpecialAlignment(Of T).vb +++ /dev/null @@ -1,18 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Parser.Tokens.ParameterName -Imports Microsoft.VisualBasic.Scripting.MetaData.Parameter -Imports System.Reflection - -Namespace Interpreter.Linker.APIHandler.Alignment - - Public MustInherit Class SpecialAlignment(Of T) - Protected InputParam As Dictionary(Of String, Object) - Protected FuncDef As T - - Sub New(FuncDef As T, ByRef InputParam As Dictionary(Of String, Object)) - Me.FuncDef = FuncDef - Me.InputParam = InputParam - End Sub - - Public MustOverride Function OverloadsAlignment() As ParamAlignments - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Interpreter/Linker/API/Alignment/Alignments/TwoParameter.vb b/Shoal.v2/Shoal.v2/Interpreter/Linker/API/Alignment/Alignments/TwoParameter.vb deleted file mode 100644 index 84f01a290..000000000 --- a/Shoal.v2/Shoal.v2/Interpreter/Linker/API/Alignment/Alignments/TwoParameter.vb +++ /dev/null @@ -1,66 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Parser.Tokens.ParameterName -Imports Microsoft.VisualBasic.Scripting.MetaData.Parameter -Imports System.Reflection - -Namespace Interpreter.Linker.APIHandler.Alignment - - Friend Class TwoParameter : Inherits SpecialAlignment(Of ParameterInfo()) - - Sub New(FuncDef As ParameterInfo(), ByRef InputParam As Dictionary(Of String, Object)) - Call MyBase.New(FuncDef, InputParam) - End Sub - - Public Overrides Function OverloadsAlignment() As ParamAlignments - If InputParam.ContainsKey(ExtensionMethodCaller) Then - Return __extends() - Else '普通的, 直接按照顺åºè¿›è¡Œæ¯”较 - Return OrderAlignment(FuncDef, InputParam) - End If - End Function - - Private Function __extends() As ParamAlignments - Dim score As Integer - Dim valueInput As Object = InputParam(ExtensionMethodCaller) - Dim args As New List(Of Object) - Dim paramType As Type = FuncDef(Scan0).ParameterType - - If Not __alignType(paramType, valueInput, score, valueInput) Then - Return Nothing - Else - Call args.Add(valueInput) - End If - - If InputParam.ContainsKey(ExtSingle) Then - - Dim paramDef As ParameterInfo = FuncDef(1) - valueInput = InputParam(ExtSingle) - - If __boolsEquals(paramDef, valueInput) Then - score += 100 - Call args.Add(True) - Else - - If Not __alignType(paramDef.ParameterType, valueInput, score, valueInput) Then - Return Nothing - Else - Call args.Add(valueInput) - End If - End If - - Return New ParamAlignments With {.Score = score, .args = args.ToArray} - Else - - Call InputParam.Remove(ExtensionMethodCaller) - - Dim tmpAlign = New OneParameter(FuncDef(1), InputParam).OverloadsAlignment - - If tmpAlign Is Nothing Then - Return Nothing - End If - - score += tmpAlign.Score - Return New ParamAlignments With {.Score = score, .args = args.Join(tmpAlign.args).ToArray} - End If - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Interpreter/Linker/API/Alignment/FunctionCalls.vb b/Shoal.v2/Shoal.v2/Interpreter/Linker/API/Alignment/FunctionCalls.vb deleted file mode 100644 index 4c43e0d1f..000000000 --- a/Shoal.v2/Shoal.v2/Interpreter/Linker/API/Alignment/FunctionCalls.vb +++ /dev/null @@ -1,306 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Parser.Tokens.ParameterName -Imports Microsoft.VisualBasic.Scripting.MetaData.Parameter -Imports System.Reflection - -Namespace Interpreter.Linker.APIHandler.Alignment - - ''' - ''' æ‰€è¾“å…¥çš„å‚æ•°æ˜¯å¯èƒ½æ²¡æœ‰é¡ºåºçš„ï¼Œä½†æ˜¯å‡½æ•°çš„å‚æ•°å®šä¹‰æ˜¯æœ‰é¡ºåºçš„ - ''' - Public Module FunctionCalls - - Public ReadOnly Property ExtensionMethodCaller As String = NameOf(ParameterType.ExtensionMethodCaller) - Public ReadOnly Property OrderReference As String = NameOf(ParameterType.OrderReference) - - ''' - ''' ç”¨æˆ·æ‰€è¾“å…¥çš„å‚æ•°æ˜¯å¦æ˜¯å’Œå‡½æ•°çš„å®šä¹‰çš„é¡ºåºæ˜¯ä¸€è‡´çš„ - ''' - ''' - ''' - ''' - Public Function IsOrderReference(Of T)(InputParam As KeyValuePair(Of String, T)()) As Boolean - If InputParam.IsNullOrEmpty OrElse InputParam.Length = 1 Then - Return False - End If - - Return String.Equals(OrderReference, InputParam(1).Key) - End Function - - Friend Function __alignType(paramDef As Type, valueInput As Object, ByRef score As Integer, ByRef outRef As Object) As Boolean - Dim equalsValue As Integer - Dim inputType As Type = valueInput.GetType - - If TypeEquals.TypeEquals(paramDef, inputType).ShadowCopy(equalsValue) > 0 Then - score += equalsValue - outRef = valueInput - Else - If InputHandler.Convertible(inputType, paramDef) Then - score += 20 - outRef = CTypeDynamic(valueInput, paramDef) - Else - Return False - End If - End If - - Return True - End Function - - ''' - ''' - ''' - ''' å‡½æ•°ä¹‹ä¸­çš„å‚æ•°ç±»åž‹çš„定义 - ''' - ''' - Public Function AlignType(paramDef As Type, valueInput As Object) As Object - Dim out As Object = Nothing - Call __alignType(paramDef, valueInput, 0, out) - Return out - End Function - - ''' - ''' 一一对应比较 - ''' - ''' - ''' - ''' - ''' ä¸€ä¸€å¯¹åº”æ¯”è¾ƒå’Œå‚æ•°åæ— å…³ - Public Function OrderReferenceAlignment(FuncDef As ParameterInfo(), InputParam As Object()) As ParamAlignments - Dim score As Integer - Dim args As New List(Of Object) - - For i As Integer = 0 To FuncDef.Length - 1 - If __orderStep(i, FuncDef(i), InputParam, score, args) Then - Return Nothing - End If - Next - - Return New ParamAlignments With {.Score = score, .args = args.ToArray} - End Function - - Private Function __orderStep(i As Integer, paramDef As ParameterInfo, InputParam As Object(), ByRef score As Integer, ByRef args As List(Of Object)) As Boolean - If i <= InputParam.Length - 1 Then - - Dim valueInput As Object = InputParam(i) - - If __boolsEquals(paramDef, valueInput) Then - - score += 100 - Call args.Add(True) - - Else - - If Not __alignType(paramDef.ParameterType, valueInput, score, valueInput) Then - Return False - Else - Call args.Add(valueInput) - End If - End If - - Else 'åˆ¤æ–­å‡½æ•°å‚æ•°æ˜¯å¦ä¸ºå¯é€‰ç±»åž‹çš„ - - If paramDef.IsOptional Then - score += 100 - Call args.Add(paramDef.DefaultValue) - Else - Return False - End If - End If - - Return True - End Function - - ''' - ''' 处ç†é€»è¾‘开关标记的 - ''' - ''' - ''' - ''' 函数ä¸ä¼šè®¡ç®—æ‹“å±•å‡½æ•°çš„è°ƒç”¨å‚æ•° - Public Function __boolsEquals(FuncDef As ParameterInfo, inputParam As Object) As Boolean - If Not FuncDef.Equals(Bool) Then Return False - If Not inputParam.GetType.Equals(GetType(String)) Then Return False - - Dim str As String = DirectCast(inputParam, String) - - If CommandLine.IsPossibleLogicFlag(str) Then - str = CommandLine.TrimParamPrefix(str) - - Return String.Equals(FuncDef.Name, '开关还è¦å’Œå‚æ•°åç›¸åŒ - str, - StringComparison.OrdinalIgnoreCase) - Else - Return False - End If - End Function - - ReadOnly Bool As Type = GetType(Boolean) - - ''' - ''' 使用这个函数æ¥è¿›è¡Œåˆ¤æ–­ - ''' - ''' - ''' - ''' - Public Function OverloadsAlignment(FuncDef As MethodInfo, InputParam As KeyValuePair(Of String, Object)()) As ParamAlignments - Dim inputParamType = (From obj In InputParam Select New KeyValuePair(Of String, Type)(obj.Key, obj.Value.GetType)).ToArray - - If IsOrderReference(inputParamType) Then - Return OrderReferenceAlignment(FuncDef.GetParameters, (From obj In InputParam Select obj.Value).ToArray) '需è¦é¡ºåºæ¯”较,所以ä¸ç”¨å¹¶è¡Œæ¥ç ´çŽ¯åŽŸæœ‰çš„é¡ºåº - Else - Return OverloadsAlignment(FuncDef, InputParam.ToDictionary(Function(obj) obj.Key, elementSelector:=Function(obj) obj.Value)) - End If - End Function - - ''' - ''' - ''' - ''' - ''' - ''' - Private Function OverloadsAlignment(FuncDef As MethodInfo, InputParam As Dictionary(Of String, Object)) As ParamAlignments - Dim FuncParameters = FuncDef.GetParameters - - If FuncParameters.IsNullOrEmpty Then - Dim score As Integer - - If InputParam.IsNullOrEmpty Then - score = Integer.MaxValue - Else - score = 1 'å‡½æ•°æ²¡æœ‰ä»»ä½•å‚æ•°ï¼Œä¹Ÿå¯ä»¥è°ƒç”¨ - End If - - Return New ParamAlignments With {.Score = score, .args = New Object() {}} - End If - - If FuncParameters.Length = 1 Then 'å‡½æ•°åªæœ‰ä¸€ä¸ªå‚æ•° - Return New OneParameter(FuncParameters(Scan0), InputParam).OverloadsAlignment - End If - - If FuncParameters.Length = 2 Then - Return New TwoParameter(FuncParameters, InputParam).OverloadsAlignment - End If - - Return MultipleAlignment(FuncParameters, InputParam) - End Function - - ''' - ''' - ''' - ''' - ''' - ''' - Private Function MultipleAlignment(FuncDef As ParameterInfo(), ByRef InputParam As Dictionary(Of String, Object)) As ParamAlignments - Dim score As Integer - Dim offset As Integer = 0 - Dim args As New List(Of Object) - - If InputParam.ContainsKey(ExtensionMethodCaller) Then - Dim valueInput As Object = InputParam(ExtensionMethodCaller) - Dim paramType As Type = FuncDef(Scan0).ParameterType - - If Not __alignType(paramType, valueInput, score, valueInput) Then - Return Nothing - Else - Call args.Add(valueInput) - End If - - Call InputParam.Remove(ExtensionMethodCaller) - End If - - FuncDef = FuncDef.Skip(offset).ToArray - Dim tmpAlign = OrderAlignment(FuncDef, InputParam) 'å·²ç»æ²¡æœ‰å…¶ä»–çš„ç‰¹æ®Šçš„ç±»åž‹äº†ç›´æŽ¥é¡ºåºæ¯”较 - - If tmpAlign Is Nothing Then - Return Nothing - End If - - score += tmpAlign.Score - args.AddRange(tmpAlign.args) - - Return New ParamAlignments With {.Score = score, .args = args.ToArray} - End Function - - Private Function __orderSingle(FuncDef As ParameterInfo(), ByRef InputParam As Dictionary(Of String, Object)) As ParamAlignments - Dim value As Object = InputParam.First.Value - Dim paramType As Type = FuncDef(Scan0).ParameterType - Dim score As Integer = 0 - Dim args As New List(Of Object) - - If __alignType(paramType, value, score, value) Then - Call args.Add(value) - Else - Return Nothing - End If - - If Not FuncDef(1).IsOptional Then - Return Nothing - - Else - - For Each param In FuncDef.Skip(1) - score += 10 - Call args.Add(param.DefaultValue) - Next - - Return New ParamAlignments With {.Score = score, .args = args.ToArray} - End If - End Function - - ''' - ''' è¾“å…¥çš„å‚æ•°é‡Œé¢æ˜¯æ²¡æœ‰ä»»ä½•的特殊的å称的,会使用字典查询,ä¸ä¼šåƒ - ''' - ''' - ''' - ''' - Public Function OrderAlignment(FuncDef As ParameterInfo(), ByRef InputParam As Dictionary(Of String, Object)) As ParamAlignments - If InputParam.Count = 1 AndAlso - (String.Equals(InputParam.First.Key, SingleParameter) OrElse String.Equals(InputParam.First.Key, ExtSingle)) Then - - Return __orderSingle(FuncDef, InputParam) - End If - - Dim score As Integer = 0 - Dim args As New List(Of Object) - - For Each param In FuncDef - Dim Name As String = GetAliasNameView(param).ToLower - - If Not InputParam.ContainsKey(Name) Then - 'åœ¨è¾“å…¥çš„å‚æ•°é‡Œé¢æ‰¾ä¸åˆ°ï¼Œå¯èƒ½æ˜¯å‡½æ•°çš„è¿™ä¸ªå‚æ•°ä¸ºå¯é€‰çš„ - If param.IsOptional Then - score += 10 - Call args.Add(param.DefaultValue) - Continue For - Else - Return Nothing - End If - End If - - Dim valueInput As Object = InputParam(Name) - Dim InputType As Type = valueInput.GetType - - If __boolsEquals(param, valueInput) Then - - score += 100 - Call args.Add(True) - - Else - - If Not __alignType(param.ParameterType, valueInput, score, valueInput) Then - Return Nothing - Else - Call args.Add(valueInput) - End If - - End If - Next - - Return New ParamAlignments With { - .Score = score, - .args = args.ToArray - } - End Function - - Public ReadOnly Property ExtSingle As String = NameOf(ParameterType.EXtensionSingleParameter) - Public ReadOnly Property SingleParameter As String = NameOf(ParameterType.SingleParameter) - End Module -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Interpreter/Linker/API/Alignment/ParamAlignments.vb b/Shoal.v2/Shoal.v2/Interpreter/Linker/API/Alignment/ParamAlignments.vb deleted file mode 100644 index 5f684a30e..000000000 --- a/Shoal.v2/Shoal.v2/Interpreter/Linker/API/Alignment/ParamAlignments.vb +++ /dev/null @@ -1,11 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Parser.Tokens.ParameterName -Imports Microsoft.VisualBasic.Scripting.MetaData.Parameter - -Namespace Interpreter.Linker.APIHandler.Alignment - - Public Class ParamAlignments - - Public Property Score As Integer - Public Property args As Object() - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Interpreter/Linker/API/Alignment/TypeEquals.vb b/Shoal.v2/Shoal.v2/Interpreter/Linker/API/Alignment/TypeEquals.vb deleted file mode 100644 index f3783d38e..000000000 --- a/Shoal.v2/Shoal.v2/Interpreter/Linker/API/Alignment/TypeEquals.vb +++ /dev/null @@ -1,104 +0,0 @@ -Imports System.Runtime.CompilerServices - -Namespace Interpreter.Linker.APIHandler.Alignment - - ''' - ''' 这个模å—åªæ˜¯ç”¨æ¥åˆ¤æ–­å‡½æ•°å¦‚何é‡è½½çš„,数æ®ç±»åž‹çš„è½¬æ¢æœ‰ç³»ç»Ÿè‡ªåŠ¨å®Œæˆ - ''' - Public Module TypeEquals - - ''' - ''' 判断两ç§ç±»åž‹æ˜¯å¦ç›¸ç­‰ - ''' - ''' 当å‰çš„这个é‡è½½æ–¹æ³•çš„å‚æ•°å®šä¹‰çš„类型 - ''' 从脚本传递进æ¥çš„å‡½æ•°å‚æ•°çš„类型 - ''' - ''' - Public Function TypeEquals(FuncDef As Type, InputParam As Type) As Integer - If FuncDef.Equals(InputParam) OrElse - String.Equals(FuncDef.FullName, InputParam.FullName) Then ' 为什么这个会ä¸ç›¸ç­‰ï¼Œæ˜Žæ˜Žéƒ½å·²ç»æ˜¯åŒä¸€ä¸ªç±»åž‹äº† - Return 10000 - End If - - If FuncDef.Equals(_ObjectType) Then ' Objectç±»åž‹è¯´æ˜Žé‚£ä¸ªå‡½æ•°çš„å‚æ•°å¯ä»¥æŽ¥å—任何类型 - Return 1000 - End If - - If InputParam.IsInheritsFrom(FuncDef) Then 'ç»§æ‰¿ç±»åž‹å…·æœ‰åŸºæœ¬ç±»åž‹çš„æ‰€æœ‰ç‰¹æ€§ï¼Œå‡½æ•°çš„å‚æ•°æ˜¯åŸºæœ¬ç±»åž‹çš„è¯ï¼Œåˆ™å¯ä»¥ä½¿ç”¨ - Return 2000 - End If - - If InputParam.IsInterfaceInheritsFrom(FuncDef) Then - Return 2000 - End If - - If CollectionEquals(FuncDef, InputParam) Then - Return 500 - End If - - Return -10000 '最åŽå®žåœ¨æ²¡è¾™äº†ï¼Œåˆ™åªèƒ½å¤Ÿè®¤ä¸ºäºŒè€…ä¸ç›¸ç­‰ - End Function - - Public Function CollectionEquals(FuncDef As Type, InputParam As Type) As Boolean - Dim BaseCollection = FuncDef.GetInterfaces - Dim InputCollection = InputParam.GetInterfaces - - If Array.IndexOf(BaseCollection, GetType(IEnumerable)) = -1 Then Return False - - Dim baseElements = FuncDef.GenericTypeArguments - - If baseElements.Length = 1 Then - - Dim inputElement = InputParam.GetElementType '是å¦ä¸ºæ•°ç»„类型 - If inputElement Is Nothing Then - If InputParam.GenericTypeArguments.IsNullOrEmpty Then - Return False - End If - inputElement = InputParam.GenericTypeArguments.First - End If - - Dim b = TypeEquals(baseElements(Scan0), inputElement) - Return b - - ElseIf baseElements.IsNullOrEmpty Then 'å‡è‹¥å‡½æ•°å‚数是一个枚举的泛型,则å¯ä»¥è¢«ä½¿ç”¨ - - Dim baseElement = FuncDef.GetElementType - Dim inputElement = InputParam.GetElementType - - If baseElement Is Nothing Then - Return True - ElseIf inputElement Is Nothing Then 'åŸºæœ¬ç±»åž‹æ˜¯ä¸€ä¸ªæ•°ç»„ä½†æ˜¯è¾“å…¥çš„å‚æ•°æ•°æ®ä¸æ˜¯æ•°ç»„,则肯定ä¸ç›¸åŒ - Return False - Else - - Dim b = TypeEquals(FuncDef:=baseElement, InputParam:=inputElement) - Return b - - End If - - End If - - Return False - End Function - - ''' - ''' Is a inherits from b - ''' - ''' 继承类型继承自基本类型,具备有基本类型的所有特性 - ''' 基本类型 - ''' - Private Function IsInterfaceInheritsFrom(a As Type, b As Type) As Boolean - Dim [Implements] = a.GetInterfaces - - If [Implements].IsNullOrEmpty Then - Return False '䏿˜¯æŽ¥å£ç±»åž‹ï¼Œåˆ™ä¸å¯ä»¥ä½¿ç”¨æœ¬å‡½æ•°åˆ¤æ–­ - End If - - Dim IsInherits As Boolean = Array.IndexOf([Implements], b) > -1 - - Return IsInherits - End Function - - Private ReadOnly _ObjectType As Type = GetType(System.Object) - End Module -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Interpreter/Linker/API/Arguments.vb b/Shoal.v2/Shoal.v2/Interpreter/Linker/API/Arguments.vb deleted file mode 100644 index 7683bed2f..000000000 --- a/Shoal.v2/Shoal.v2/Interpreter/Linker/API/Arguments.vb +++ /dev/null @@ -1,54 +0,0 @@ -Imports System.Collections.ObjectModel -Imports System.Text -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Parser.Tokens -Imports Microsoft.VisualBasic.SecurityString.MD5Hash - -Namespace Interpreter.Linker.APIHandler - - Public Class Arguments : Inherits Runtime.SCOM.RuntimeComponent - - Sub New(ScriptEngine As ShoalShell.Runtime.ScriptEngine) - Call MyBase.New(ScriptEngine) - End Sub - - Public Function GetParameters(LDM As LDM.Expressions.FunctionCalls) As KeyValuePair(Of String, Object)() - Dim args As New List(Of KeyValuePair(Of String, InternalExpression)) - - If Not LDM.ExtensionVariable Is Nothing Then - Dim extValue = New KeyValuePair(Of String, InternalExpression)( - APIHandler.Alignment.FunctionCalls.ExtensionMethodCaller, - LDM.ExtensionVariable) - Call args.Add(extValue) - End If - - If Not LDM.Parameters.IsNullOrEmpty Then - Call args.AddRange((From arg As KeyValuePair(Of ParameterName, InternalExpression) - In LDM.Parameters - Let Name As String = __getName(arg.Key) - Select New KeyValuePair(Of String, InternalExpression)(Name, arg.Value)).ToArray) - End If - - Dim argsValue = (From arg In args Select New KeyValuePair(Of String, Object)(arg.Key, ScriptEngine.ExecuteModel.Exec(arg.Value.Expression))).ToArray - Return argsValue - End Function - - Private Function __getName(ref As Parser.Tokens.ParameterName) As String - Select Case ref.Type - Case ParameterName.ParameterType.ExtensionMethodCaller : Return APIHandler.Alignment.FunctionCalls.ExtensionMethodCaller - Case ParameterName.ParameterType.EXtensionSingleParameter : Return APIHandler.Alignment.FunctionCalls.ExtSingle - Case ParameterName.ParameterType.OrderReference : Return APIHandler.Alignment.OrderReference - Case ParameterName.ParameterType.SingleParameter : Return APIHandler.Alignment.SingleParameter - Case Else - Return __calculateRefName(ref) - End Select - End Function - - Private Function __calculateRefName(ref As Parser.Tokens.ParameterName) As String - If ref.Expression.ExprTypeID = LDM.Expressions.ExpressionTypes.DynamicsExpression Then - Return ref.Expression.PrimaryExpression - Else - Return CStr(ScriptEngine.ExecuteModel.Exec(ref.Expression)) - End If - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Interpreter/Linker/API/FunctionSignature.vb b/Shoal.v2/Shoal.v2/Interpreter/Linker/API/FunctionSignature.vb deleted file mode 100644 index 4e8020f03..000000000 --- a/Shoal.v2/Shoal.v2/Interpreter/Linker/API/FunctionSignature.vb +++ /dev/null @@ -1,179 +0,0 @@ -Imports System.Collections.ObjectModel -Imports System.Text -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports Microsoft.VisualBasic.Scripting.MetaData -Imports Microsoft.VisualBasic.SecurityString.MD5Hash - -Namespace Interpreter.Linker.APIHandler - - ''' - ''' 用于表示一个已ç»è¢«ç­¾å的函数 - ''' - ''' - Public Class SignedFuncEntryPoint - - ''' - ''' 返回值的数字签å - ''' - ''' - ''' - ''' - Public ReadOnly Property TypeSignature As String - - Public ReadOnly Property ParameterCounts As Integer - Get - Return Me.Parameters.Count - End Get - End Property - - Public ReadOnly Property EntryPoint As EntryPoints.APIEntryPoint - - ''' - ''' 当傿•°æœ‰å¤šä¸ªçš„æ—¶å€™ï¼Œå‡ºäº†ç¬¬ä¸€ä¸ªä¹‹å¤–ï¼Œå…¶ä»–çš„å‚æ•°éƒ½æ˜¯å¯é€‰çš„æˆ–者类型为逻辑值,则该函数被定义为伪å•傿•°å‡½æ•° - ''' - ''' - Public ReadOnly Property FakeSingleParameter As Boolean - Get - If Me.Parameters.IsNullOrEmpty Then - Return False 'å‡½æ•°æ²¡æœ‰å‚æ•°ï¼Œå¾ˆæ˜Žæ˜¾ä¸æ˜¯å•傿•°å‡½æ•° - ElseIf Me.Parameters.Count = 1 Then - Return False '这个是真实的å•傿•°å‡½æ•°ï¼Œä½†æ˜¯æˆ‘们è¦çš„æ˜¯ä¼ªå•傿•°å‡½æ•° - End If - - Dim Tokens = Me.Parameters.ToArray - For i As Integer = 1 To Tokens.Length - 1 'è·³è¿‡ç¬¬ä¸€ä¸ªå‚æ•° - Dim Parameter = Tokens(i) - If Not (Parameter.Value.ParameterType.Equals(GetType(Boolean)) OrElse Parameter.Value.ParameterInfo.IsOptional) Then - Return False - End If - Next - - Return True - End Get - End Property - - ''' - ''' 傿•°åˆ—表按照从å°åˆ°å¤§æŽ’åºä¹‹åŽè®¡ç®—MD5å“ˆå¸Œå€¼ä½œä¸ºå‚æ•°åˆ—表的数字签å - ''' - ''' - ''' - ''' - Public ReadOnly Property ParameterSignature As String - - Public ReadOnly Property Parameters As ReadOnlyDictionary(Of String, ParameterWithAlias) - - ''' - ''' éžå¯é€‰å‚数的数目 - ''' - ''' - Dim _numOfNonOptional As Integer - - Sub New(EntryPoint As EntryPoints.APIEntryPoint, [Handles] As OverloadsSignatureHandle()) - Call Me._EntryPoint.InvokeSet(EntryPoint) - Call Me.__handlesTypeSignature([Handles]) - - Dim pInfo As System.Reflection.ParameterInfo() = EntryPoint.EntryPoint.GetParameters '在这里生æˆå˜é‡å的别å - Dim InternalGetSigned = (From parameter As System.Reflection.ParameterInfo In pInfo - Let pAlias = MetaData.Parameter.GetParameterNameAlias(parameter, False) - Let Name As String = If(pAlias Is Nothing, parameter.Name, pAlias.Alias).ToLower - Select Name, - parameter.ParameterType.FullName, - pAlias, - parameter).ToArray '这里ä¸èƒ½å¤Ÿæ‰“乱原始顺åºï¼ï¼ï¼ - Me.ParameterSignature = String.Join("+", (From sign In InternalGetSigned Let strSignValue As String = sign.ToString Select strSignValue).ToArray) - - If String.IsNullOrEmpty(ParameterSignature) Then - Me.ParameterSignature = "NULL" '函数ä¸éœ€è¦ä»»ä½•傿•° - Else - Me.ParameterSignature = SecurityString.GetMd5Hash(ParameterSignature) - End If - - Me.Parameters = New ReadOnlyDictionary(Of String, ParameterWithAlias)( - InternalGetSigned.ToDictionary(Function(p) p.Name.ToLower, - Function(obj) New ParameterWithAlias(obj.parameter, obj.pAlias))) - Me._numOfNonOptional = (From p As KeyValuePair(Of String, ParameterWithAlias) - In Parameters - Where Not p.Value.ParameterInfo.IsOptional - Select 1).ToArray.Sum - End Sub - - Private Sub __handlesTypeSignature([Handles] As OverloadsSignatureHandle()) - If [Handles].IsNullOrEmpty Then - Me._TypeSignature = EntryPoint.EntryPoint.ReturnType.FullName - End If - - Dim TypeSignature = (From Hwnd As OverloadsSignatureHandle - In [Handles] - Where Hwnd.FullName = EntryPoint.EntryPoint.ReturnType - Select Hwnd).FirstOrDefault - - If TypeSignature Is Nothing Then '没有定义返回值的签å,则直接使用返回值的全å - Me._TypeSignature = EntryPoint.EntryPoint.ReturnType.FullName - Else - Me._TypeSignature = TypeSignature.TypeIDBrief 'var <- [typeidbrief] function - End If - End Sub - - ''' - ''' 创建共享方法的签å实例 - ''' - ''' - ''' - Public Shared Function CreateObject(EntryPoint As System.Reflection.MethodInfo, [Handles] As OverloadsSignatureHandle()) As SignedFuncEntryPoint - Dim EntryPointInfo As New EntryPoints.APIEntryPoint(New ExportAPIAttribute("VB$InternalAnonymousSharedMethod"), Invoke:=EntryPoint) - Return New SignedFuncEntryPoint(EntryPointInfo, [Handles]) - End Function - - Public Overrides Function ToString() As String - Return String.Format("({0}) {1}", ParameterSignature, EntryPoint.ToString) - End Function - - Public Function GetDescription(DescriptionGeneration As Func(Of System.Reflection.MethodInfo, String, String)) As String - Dim sBuilder As StringBuilder = New StringBuilder(1024) - - Call sBuilder.AppendLine("[" & Me.EntryPoint.EntryPointFullName(False) & "]" & vbCrLf) - Call sBuilder.AppendLine(DescriptionGeneration(Me.EntryPoint.EntryPoint, ParameterSignature)) - - Return sBuilder.ToString - End Function - - Public Function CanDelegateCalling(paras As Object()) As Boolean - - If Parameters.IsNullOrEmpty Then - Return True - ElseIf ParameterCounts > paras.Length Then 'å¯èƒ½æœ‰å¯é€‰å‚æ•° - Dim p As KeyValuePair(Of String, ParameterWithAlias)() = - Me.Parameters.ToArray.Skip(paras.Length).ToArray - Dim LQuery = (From ParameterInfo In p Where ParameterInfo.Value.ParameterInfo.IsOptional Select ParameterInfo).ToArray - Return LQuery.Length = p.Length - End If - - Dim InternalHashList = Parameters.ToArray - - For i As Integer = 0 To paras.Length - 1 - If Alignment.TypeEquals.TypeEquals(InternalHashList(i).Value.ParameterType, paras(i).GetType) < 0 Then - Return False - End If - Next - - Return True - End Function - - ''' - ''' 判断两个函数入å£ç‚¹å¯¹è±¡æ˜¯å¦å…·æœ‰å®Œå…¨ä¸€æ ·çš„æ•°å­—ç­¾å - ''' - ''' - ''' - ''' - Public Overrides Function Equals(obj As Object) As Boolean - If Not TypeOf (obj) Is SignedFuncEntryPoint Then - Return False - End If - - Dim Signature As SignedFuncEntryPoint = DirectCast(obj, SignedFuncEntryPoint) - - Return String.Equals(ParameterSignature, Signature.ParameterSignature) AndAlso - String.Equals(TypeSignature, Signature.TypeSignature, StringComparison.OrdinalIgnoreCase) - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Interpreter/Linker/API/ParameterWithAlias.vb b/Shoal.v2/Shoal.v2/Interpreter/Linker/API/ParameterWithAlias.vb deleted file mode 100644 index cc5461652..000000000 --- a/Shoal.v2/Shoal.v2/Interpreter/Linker/API/ParameterWithAlias.vb +++ /dev/null @@ -1,31 +0,0 @@ -Imports System.Collections.ObjectModel -Imports System.Text -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports Microsoft.VisualBasic.Scripting.MetaData -Imports Microsoft.VisualBasic.SecurityString.MD5Hash - -Namespace Interpreter.Linker.APIHandler - - Public Structure ParameterWithAlias - Dim ParameterInfo As System.Reflection.ParameterInfo, [Alias] As Parameter - - Public ReadOnly Property ParameterType As Type - Get - Return ParameterInfo.ParameterType - End Get - End Property - - Sub New(ParameterInfo As System.Reflection.ParameterInfo, [Alias] As Parameter) - Me.ParameterInfo = ParameterInfo - Me.Alias = If([Alias] Is Nothing, New Parameter(ParameterInfo.Name.ToLower), [Alias]) - End Sub - - Public Overrides Function ToString() As String - If String.IsNullOrEmpty([Alias].Description) Then - Return [Alias].Alias - Else - Return [Alias].Alias & ": " & [Alias].Description - End If - End Function - End Structure -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Interpreter/Linker/EntryPoint.vb b/Shoal.v2/Shoal.v2/Interpreter/Linker/EntryPoint.vb deleted file mode 100644 index 13eeafe9e..000000000 --- a/Shoal.v2/Shoal.v2/Interpreter/Linker/EntryPoint.vb +++ /dev/null @@ -1,161 +0,0 @@ -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports Microsoft.VisualBasic.CommandLine.Reflection.EntryPoints -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Linker.APIHandler -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.HybridsScripting -Imports Microsoft.VisualBasic.CommandLine.Interpreter -Imports Microsoft.VisualBasic.Linq - -Namespace Interpreter.Linker - - Public Class EntryPoint : Inherits Runtime.SCOM.RuntimeComponent - - Public ReadOnly Property ImportedAPI As SortedDictionary(Of String, APIHandler.APIEntryPoint) = - New SortedDictionary(Of String, APIHandler.APIEntryPoint) - Public ReadOnly Property AnonymousDelegate As AnonymousDelegate - Public ReadOnly Property HybridAdapter As InteropAdapter - - Sub New(ScriptEngine As ShoalShell.Runtime.ScriptEngine) - Call MyBase.New(ScriptEngine) - Call [Imports](GetType(ShoalShell.InternalExtension)) '导入内部的一些简å•的常用命令 - AnonymousDelegate = New AnonymousDelegate(ScriptEngine) - HybridAdapter = New InteropAdapter(ScriptEngine) - - For Each preLoad As String In ScriptEngine.Config.PreLoadedModules - Call [Imports](preLoad) - Next - End Sub - - ''' - ''' - ''' - ''' - ''' ä¸»è¦æ˜¯ä¸ºäº†æ–¹ä¾¿æŸ¥æ‰¾å‡½æ•°æŒ‡é’ˆçš„,因为åŽé¢å¯ä»¥ç›´æŽ¥ä½¿ç”¨è¿™ä¸ªå˜é‡è€Œä¸éœ€è¦å†è®¡ç®—一é了 - ''' - Public Function TryGetEntryPoint(EntryPoint As Parser.Tokens.EntryPoint, - ByRef execName As String, - ByRef execValue As Object) As APIHandler.APIEntryPoint - Dim API = TryGetEntryPoint(TryGetName(EntryPoint, execValue).ShadowCopy(execName)) - Return API - End Function - - Public Function TryGetName(EntryPoint As Parser.Tokens.EntryPoint, ByRef __execValue As Object) As String - Dim value As Object = - If(EntryPoint.Name.Expression.ExprTypeID = LDM.Expressions.ExpressionTypes.DynamicsExpression, - EntryPoint.Name.Expression.PrimaryExpression, - ScriptEngine.ExecuteModel.Exec(EntryPoint.Name.Expression)) - - If value Is Nothing Then - Throw New MissingMethodException(className:=NameOf(EntryPoint), methodName:=EntryPoint.Name.GetTokenValue) - Else - __execValue = value - End If - - Dim Name As String = InputHandler.ToString(value) - Return Name - End Function - - Public Function TryGetEntryPoint(NameRef As String) As APIHandler.APIEntryPoint - If String.IsNullOrEmpty(NameRef) Then - Return Nothing - End If - - If InStr(NameRef, "::") > 0 Then - - Dim p As Integer = InStrRev(NameRef, "::") - Dim [Namespace] = Mid(NameRef, 1, p - 1) - NameRef = Mid(NameRef, p + 2) - - Return __tryGetEntryPoint([Namespace], NameRef) - Else '从已ç»å¯¼å…¥äº†çš„函数之中进行查找 - NameRef = NameRef.ToLower - - If ImportedAPI.ContainsKey(NameRef) Then - Return ImportedAPI(NameRef) - Else - Return Nothing - End If - End If - End Function - - Public Function [Imports]([Namespace] As String) As SPM.Nodes.Namespace - Dim nsEntry = ScriptEngine.Interpreter.SPMDevice([Namespace].ToLower) - If nsEntry Is Nothing Then Return Nothing - For Each partialModule In nsEntry.PartialModules - Call [Imports](partialModule.Assembly.GetType) - Next - - Return nsEntry - End Function - - Public Sub [Imports](apiList As APIHandler.APIEntryPoint()) - For Each api As APIHandler.APIEntryPoint In apiList - Call __imports(api) - Next - End Sub - - Private Sub __imports(API As APIHandler.APIEntryPoint) - Dim apiName As String = API.Name.ToLower - - If Not Me.ImportedAPI.ContainsKey(apiName) Then - Call Me.ImportedAPI.Add(apiName, API) - Return - End If - - Dim ImportedAPI As APIHandler.APIEntryPoint = - Me.ImportedAPI(apiName) - - For Each EntryPoint In API.OverloadsAPI - Call ImportedAPI.OverloadsAPIEntryPoint(EntryPoint) - Next - End Sub - - Public Function [Imports]([module] As Type) As Boolean - Dim apiList = SPM.Nodes.AssemblyParser.Imports([module]) - Call [Imports](apiList) - Call ScriptEngine.MMUDevice.MappingImports.Imports([module]) - Call ScriptEngine.ExecuteModel.Imports([module]) - - Return True - End Function - - Private Function __tryGetEntryPoint(nsValue As String, Name As String) As APIHandler.APIEntryPoint - Dim [Namespace] = ScriptEngine.Interpreter.SPMDevice(nsValue.ToLower) - - If [Namespace] Is Nothing Then - Return Nothing - Else - Return [Namespace].GetEntryPoint(Name) - End If - End Function - - ''' - ''' 请使用这个方法导入实例对象之中的定义的命令 - ''' - ''' - ''' - Public Sub ImportsInstance(Of T As Class)(InvokedObject As T) - Dim setValue = New SetValue(Of EntryPoints.APIEntryPoint)().GetSet(NameOf(EntryPoints.APIEntryPoint.InvokeOnObject)) - Dim Commands = (From EntryPoint As EntryPoints.APIEntryPoint - In __allInstanceCommands(InvokedObject.GetType) - Select setValue(EntryPoint, InvokedObject)).ToList 'è§£æžå‡ºå‘½ä»¤å¹¶è¿žæŽ¥ç›®æ ‡å®žä¾‹å¯¹è±¡ä¸Žå‡½æ•°çš„æ‰§è¡Œå…¥å£ç‚¹ - Dim API = SPM.Nodes.AssemblyParser.APIParser(Commands) - Call [Imports](API) - End Sub - - Protected Function __allInstanceCommands(Type As Type) As List(Of EntryPoints.APIEntryPoint) - Dim InternalChunkList = GetAllCommands(Type) - Dim commandAttribute As System.Type = GetType(ExportAPIAttribute) - Dim commandsSource = (From MethodHandle As System.Reflection.MethodInfo - In Type.GetMethods() - Select Entry = MethodHandle.GetCustomAttributes(commandAttribute, True), MethodInfo = MethodHandle).ToArray - Dim commandsInfo = (From methodInfo In commandsSource - Where Not methodInfo.Entry.IsNullOrEmpty - Let commandInfo = New EntryPoints.APIEntryPoint(TryCast(methodInfo.Entry.First, ExportAPIAttribute), methodInfo.MethodInfo) - Select commandInfo - Order By commandInfo.Name Ascending).ToArray - Call InternalChunkList.AddRange(commandsInfo) - - Return InternalChunkList - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Interpreter/Linker/Linker.vb b/Shoal.v2/Shoal.v2/Interpreter/Linker/Linker.vb deleted file mode 100644 index 1b897bc6e..000000000 --- a/Shoal.v2/Shoal.v2/Interpreter/Linker/Linker.vb +++ /dev/null @@ -1,60 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Linker.APIHandler -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Parser.Tokens - -Namespace Interpreter.Linker - - Public Class Linker : Inherits Runtime.SCOM.RuntimeComponent - - Sub New(ScriptEngine As ShoalShell.Runtime.ScriptEngine) - Call MyBase.New(ScriptEngine) - End Sub - - ''' - ''' 得到内存之中的实际引用ä½ç½® - ''' - ''' - Public Function GetAddress(var As LeftAssignedVariable) As Long - Dim Addr As String = var.RefEntry - Dim Ref As Object - - If String.Equals(Addr, "$") Then - Return 0 '系统ä¿ç•™å˜é‡æ€»æ˜¯å¤„在0ä½ç½® - End If - - If var.IsPointer Then '$var的值为所需è¦å†™å…¥çš„å˜é‡å - Ref = ScriptEngine.MMUDevice.GetValue(Addr) - Addr = var.GetAddress(Ref) - Return __addressOf(Addr) - End If - - If Addr.First = "*"c Then '内存指针 - Addr = Mid(Addr, 2) - Return CLng(Val(Addr)) - End If - - If Len(var.RefEntry) <= 2 Then Return __addressOf(Addr) - - '表达å¼çš„æŒ‡é’ˆå¼•用形å¼é•¿åº¦è‡³å°‘è¦å¤§äºŽ2 - - If var.RefEntry.First = "{"c AndAlso var.RefEntry.Last = "}"c Then 'å†…éƒ¨è¡¨è¾¾å¼æŒ‡é’ˆå¼•用 - Addr = Mid(var.RefEntry, 2, Len(var.RefEntry) - 2) 'å¾—åˆ°è¡¨è¾¾å¼ - Call ScriptEngine.Exec(Addr) - Ref = ScriptEngine.TopOfStack - Addr = var.GetAddress(Ref) - Return __addressOf(Addr) - Else - Return __addressOf(Addr) - End If - End Function - - Private Function __addressOf(var As String) As Long - Return ScriptEngine.MMUDevice.AddressOf("$" & var, True) - End Function - - Public Function GetValue(var As Parser.Tokens.LeftAssignedVariable) As Object - Dim Addr As String = GetAddress(var) - Dim value As Object = ScriptEngine.MMUDevice.GetValue(Addr) - Return value - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Interpreter/Parser/LDM/Expressions/Collection/CollectionAppends.vb b/Shoal.v2/Shoal.v2/Interpreter/Parser/LDM/Expressions/Collection/CollectionAppends.vb deleted file mode 100644 index 859864327..000000000 --- a/Shoal.v2/Shoal.v2/Interpreter/Parser/LDM/Expressions/Collection/CollectionAppends.vb +++ /dev/null @@ -1,29 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Parser.Tokens - -Namespace Interpreter.LDM.Expressions - - ''' - ''' å‘集åˆä¹‹ä¸­æ·»åŠ ä¸€ä¸ªå…ƒç´  - ''' - ''' [$experiments] <= $exper ' 添加至末尾; - ''' [$experiments[index]] <= $exper ' 给指定元素赋值 - ''' 元素ä½ç½®å¯ç”¨çš„ä½ç½®è¡¨è¾¾å¼: ~First, ~Last - ''' 元素ä½ç½®å¯ç”¨çš„æ¡ä»¶è¡¨è¾¾å¼: [Where <Element Bool Expression>] - ''' - Public Class CollectionAppends : Inherits PrimaryExpression - - Public Overrides ReadOnly Property ExprTypeID As ExpressionTypes - Get - Return ExpressionTypes.CollectionElementAssigned - End Get - End Property - - Public Property Collection As DynamicsExpression - Public Property ElementIndex As DynamicsExpression - Public Property Value As LDM.Expressions.PrimaryExpression - - Sub New(Expression As String) - Call MyBase.New(Expression) - End Sub - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Interpreter/Parser/LDM/Expressions/Collection/CollectionOpr.vb b/Shoal.v2/Shoal.v2/Interpreter/Parser/LDM/Expressions/Collection/CollectionOpr.vb deleted file mode 100644 index e5c63607d..000000000 --- a/Shoal.v2/Shoal.v2/Interpreter/Parser/LDM/Expressions/Collection/CollectionOpr.vb +++ /dev/null @@ -1,25 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Parser.Tokens - -Namespace Interpreter.LDM.Expressions - - ''' - ''' Dim array <= {expression} as type - ''' - Public Class CollectionOpr : Inherits PrimaryExpression - - Public Overrides ReadOnly Property ExprTypeID As ExpressionTypes - Get - Return ExpressionTypes.CollectionOpr - End Get - End Property - - Public Property DeclareNew As Boolean - Public Property InitLeft As LeftAssignedVariable - Public Property Array As InternalExpression() - Public Property Type As String - - Sub New(Expression As String) - Call MyBase.New(Expression) - End Sub - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Interpreter/Parser/LDM/Expressions/Collection/CollectionRef.vb b/Shoal.v2/Shoal.v2/Interpreter/Parser/LDM/Expressions/Collection/CollectionRef.vb deleted file mode 100644 index 875418480..000000000 --- a/Shoal.v2/Shoal.v2/Interpreter/Parser/LDM/Expressions/Collection/CollectionRef.vb +++ /dev/null @@ -1,8 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Parser.Tokens - -Namespace Interpreter.LDM.Expressions - - Public Class CollectionRef - - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Interpreter/Parser/LDM/Expressions/Comments.vb b/Shoal.v2/Shoal.v2/Interpreter/Parser/LDM/Expressions/Comments.vb deleted file mode 100644 index c56a51d28..000000000 --- a/Shoal.v2/Shoal.v2/Interpreter/Parser/LDM/Expressions/Comments.vb +++ /dev/null @@ -1,51 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Parser.Tokens - -Namespace Interpreter.LDM.Expressions - - Public Class Comments : Inherits PrimaryExpression - - Public Overrides ReadOnly Property ExprTypeID As ExpressionTypes - Get - Return ExpressionTypes.Comments - End Get - End Property - - Sub New(Expression As String) - Call MyBase.New(Expression) - - Dim Expr As String = Trim(Expression) - Dim Length As Integer = CommentFLAGLen(Expr) + 1 - Me.Comments = Mid(Expr, Length).Trim - End Sub - - ''' - ''' -1è¡¨ç¤ºä¸æ˜¯æ³¨é‡Š - ''' - ''' - ''' - Private Shared Function CommentFLAGLen(Expression As String) As Integer - If Expression.First = "#"c OrElse Expression.First = "'"c OrElse Expression.First = ";"c Then - Return 1 - End If - - If String.Equals(Expression, "rem", StringComparison.OrdinalIgnoreCase) Then - Return 3 - End If - - If InStr(Expression, "::") = 1 OrElse InStr(Expression, "//") = 1 Then - Return 2 - End If - - If InStr(Expression, " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - ..\Resources\gpl.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 - - - ..\Resources\license.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 - - - ..\Resources\sdk_doc.html;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8 - - - ..\Resources\Shoal.ico_dat;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ..\Resources\index.html;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 - - - ..\Resources\typeLinks_doc.html;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 - - \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/My Project/Settings.Designer.vb b/Shoal.v2/Shoal.v2/My Project/Settings.Designer.vb deleted file mode 100644 index b1c0d7faa..000000000 --- a/Shoal.v2/Shoal.v2/My Project/Settings.Designer.vb +++ /dev/null @@ -1,73 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - - -Namespace My - - _ - Partial Friend NotInheritable Class MySettings - Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) - -#Region "My.Settings Auto-Save Functionality" -#If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean - - Private Shared addedHandlerLockObject As New Object - - _ - Private Shared Sub AutoSaveSettings( sender As Global.System.Object, e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub -#End If -#End Region - - Public Shared ReadOnly Property [Default]() As MySettings - Get - -#If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If -#End If - Return defaultInstance - End Get - End Property - End Class -End Namespace - -Namespace My - - _ - Friend Module MySettingsProperty - - _ - Friend ReadOnly Property Settings() As Global.Microsoft.VisualBasic.Scripting.ShoalShell.My.MySettings - Get - Return Global.Microsoft.VisualBasic.Scripting.ShoalShell.My.MySettings.Default - End Get - End Property - End Module -End Namespace diff --git a/Shoal.v2/Shoal.v2/My Project/Settings.settings b/Shoal.v2/Shoal.v2/My Project/Settings.settings deleted file mode 100644 index 85b890b3c..000000000 --- a/Shoal.v2/Shoal.v2/My Project/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Shoal.v2/Shoal.v2/My Project/Settings1.Designer.vb b/Shoal.v2/Shoal.v2/My Project/Settings1.Designer.vb deleted file mode 100644 index 5f282702b..000000000 --- a/Shoal.v2/Shoal.v2/My Project/Settings1.Designer.vb +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Resources/Shoal.ico_dat b/Shoal.v2/Shoal.v2/Resources/Shoal.ico_dat deleted file mode 100644 index 043d8d988..000000000 Binary files a/Shoal.v2/Shoal.v2/Resources/Shoal.ico_dat and /dev/null differ diff --git a/Shoal.v2/Shoal.v2/Resources/index.html b/Shoal.v2/Shoal.v2/Resources/index.html deleted file mode 100644 index 680fe6b79..000000000 --- a/Shoal.v2/Shoal.v2/Resources/index.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - GCModeller ShoalShell Document Library - - - - - -
    - -

    ShoalShell Library :-)

    -
    - - - -
    - - %etc% - -

    - - - - - - - - - - - - - - - - - - - - - -
    HOMEGCModeller.org
    Publisherxie.guigang@gcmodeller.org
    Version%Version%
    LicenseGPL3 -
    GCModeller ShoalShell is an open source program which it's distributed under the GPL3 license, you can download the latest source code from SourceForge.net: -
  • SourceForge.net/projects/shoal
  • -

    -
    -
    - -
    -
    -


    - -

    %SDK_HELP%

    - -
    -


    -
    - -

    Copyright (c) GCModeller Virtual Cell System. 2015 All rights reserved.

    -
    - - \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Resources/license.txt b/Shoal.v2/Shoal.v2/Resources/license.txt deleted file mode 100644 index da76ca0a9..000000000 --- a/Shoal.v2/Shoal.v2/Resources/license.txt +++ /dev/null @@ -1,12 +0,0 @@ -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Resources/sdk_doc.html b/Shoal.v2/Shoal.v2/Resources/sdk_doc.html deleted file mode 100644 index dba3585ee..000000000 --- a/Shoal.v2/Shoal.v2/Resources/sdk_doc.html +++ /dev/null @@ -1,269 +0,0 @@ - - - - - - - - %Namespace% - - - - - -
    - -

    Document for %Namespace% :-)

    -
    - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    < Back To Index

    -

    - - - - - - - - - - - - - - - - - -
    Related Namespace %Related%
    - -

    -
    Package%Namespace%
    HOME%Url%
    Publisher%Publisher%
    Description%Description%
    Cited References%Cites%
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Summary Contents %Contents%
    -
    -
    - -

    %SDK_HELP%

    - -
    -


    -
    - -

    Copyright (c) GCModeller Virtual Cell System. 2015 All rights reserved.

    -
    - - \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Resources/typeLinks_doc.html b/Shoal.v2/Shoal.v2/Resources/typeLinks_doc.html deleted file mode 100644 index 174951920..000000000 --- a/Shoal.v2/Shoal.v2/Resources/typeLinks_doc.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - %Type% - - - - - -
    - -

    Document for %Type% :-)

    -
    - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    < Back To Index

    -
    Type Name%Type%
    Define From%DefineFile%
    Publisher%Publisher%
    Description%Description%
    -
    -

    -

    -
    Here list the functions which can generate this type of data, which you can reference to the function parameter: -


    - -

    %SDK_HELP%

    - -
    -


    -

    -[↑] -
    - -

    Copyright (c) GCModeller Virtual Cell System. 2015 All rights reserved.

    -
    - \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/Debugger/Debugger.vb b/Shoal.v2/Shoal.v2/Runtime/Debugger/Debugger.vb deleted file mode 100644 index d85351b4f..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/Debugger/Debugger.vb +++ /dev/null @@ -1,142 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Configuration -Imports Microsoft.VisualBasic.Net -Imports Microsoft.VisualBasic.Net.Protocols -Imports Microsoft.VisualBasic.Parallel -Imports Microsoft.VisualBasic.Terminal.STDIO__ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.LDM -Imports Microsoft.VisualBasic.Net.Http - -Namespace Runtime.Debugging - - ''' - ''' 这个对象是è¿è¡ŒäºŽShoal内部的,用作为调试的客户端的。当IDEå¯åŠ¨çš„æ—¶å€™ï¼Œä¼šæ‰“å¼€è°ƒè¯•æœåŠ¡ï¼ŒæŽ¥ç€é€šè¿‡å‘½ä»¤è¡Œå¯åЍShoal程åºï¼Œå°†ç«¯å£å·ä¼ é€’给本对象,二者之间通过Tcpå议进行通信 - ''' - ''' - Public Class Debugger : Inherits ScriptEngine - Implements I_ConsoleDeviceHandle - - ''' - ''' 主动å‘IDEå‘é€è°ƒè¯•æ¶ˆæ¯ - ''' - ''' - Dim __tcpClient As AsynInvoke - ''' - ''' ç›‘å¬æ¥è‡ªäºŽIDE的控制命令 - ''' - ''' - Dim ReadListenerServices As TcpSynchronizationServicesSocket - - Public ReadOnly Property DebuggerExit As Boolean - - ''' - ''' - ''' - ''' - ''' IDE调试监å¬å™¨çš„监å¬ç«¯å£å· - Sub New(ScriptEngine As ShoalShell.Runtime.ScriptEngine, DebugListenerPort As Integer) - Call MyBase.New(Config.Default.SettingsData) - __tcpClient = New Net.AsynInvoke("127.0.0.1", DebugListenerPort) - Call $"Shoal debugger listeners at 127.0.0.1:{ DebugListenerPort}".__DEBUG_ECHO - Call RunTask(AddressOf __startListen) - Call Threading.Thread.Sleep(100) - Call __sendMessage(ReadListenerServices.LocalPort, DebuggerMessage.MessageTypes.CTRL_DEBUGGER_INIT_INFO) - End Sub - - Private Sub __sendMessage(Message As String, Type As DebuggerMessage.MessageTypes) - Message = New DebuggerMessage() With {.Message = Message, .MessageType = Type}.GetXml - Call RunTask(Sub() Call __tcpClient.SendMessage(Message)) - End Sub - - ''' - ''' - ''' - ''' - ''' IDE调试监å¬å™¨çš„监å¬ç«¯å£å· - Sub New(Config As Config, DebugListenerPort As Integer) - Call Me.New(New ScriptEngine(Config), DebugListenerPort) - End Sub - - Private Sub __startListen() - ReadListenerServices = New TcpSynchronizationServicesSocket(AddressOf __internalProtocol, GetFirstAvailablePort) - Try -RESTART: ReadListenerServices.Run() - Catch ex As Exception - Call App.LogException(ex, NameOf(Debugger) & "::" & NameOf(__startListen)) - GoTo RESTART - End Try - End Sub - - Dim _InternalScriptDebugger As Runtime.Debugging.ShellScriptDebuggerModel - Dim _RunningScript As Boolean = False - - Protected Sub InternalExecuteScript(Script As SyntaxModel) - _InternalScriptDebugger = New ShellScriptDebuggerModel(Script, ScriptEngine:=Me) - _RunningScript = True - _InternalScriptDebugger.Execute() - _InternalScriptDebugger.Free() - _RunningScript = False - End Sub - - Private Function __internalProtocol(uid As Long, request As RequestStream, remoteDevice As System.Net.IPEndPoint) As RequestStream - Dim strMessage As String = request.GetUTF8String - Dim data As DebuggerMessage = strMessage.CreateObjectFromXml(Of DebuggerMessage)(False) - - If data Is Nothing Then - Return NetResponse.RFC_TOKEN_INVALID - End If - - Dim currentProcess = Process.GetCurrentProcess - - If data.Pid <> currentProcess.Id Then - - End If - - If data.MessageType = DebuggerMessage.MessageTypes.OUTPUT_MESSAGE Then - data.Message.__DEBUG_ECHO - Return NetResponse.RFC_OK - End If - - If data.MessageType = DebuggerMessage.MessageTypes.CTRL_PUSH_SCRIPT Then - Call "Execute pushed script....".__DEBUG_ECHO - Call (Sub() Call __execuPushedScript(data.Message)).BeginInvoke(Nothing, Nothing) - - If Me._RunningScript Then - strMessage = New DebuggerMessage() With { - .MessageType = DebuggerMessage.MessageTypes.OUTPUT_MESSAGE, - .Message = "Currently running a script, waiting for the script exit..." - }.GetXml - Return New RequestStream(0, 0, strMessage) - Else - Return NetResponse.RFC_OK - End If - End If - - Return NetResponse.RFC_NOT_FOUND - End Function - - Private Sub __execuPushedScript(Script As String) - Do While Me._RunningScript - Threading.Thread.Sleep(100) - Loop - - Call Exec(Script) - End Sub - - Public Function Read() As Integer Implements I_ConsoleDeviceHandle.Read - Throw New NotImplementedException - End Function - - Public Function ReadLine() As String Implements I_ConsoleDeviceHandle.ReadLine - Throw New NotImplementedException - End Function - - Public Sub WriteLine(s As String) Implements I_ConsoleDeviceHandle.WriteLine - Call __sendMessage(s, DebuggerMessage.MessageTypes.OUTPUT_MESSAGE) - End Sub - - Public Sub WriteLine(s As String, ParamArray args() As String) Implements I_ConsoleDeviceHandle.WriteLine - Dim Message As String = String.Format(s, args) - Call __sendMessage(Message, DebuggerMessage.MessageTypes.OUTPUT_MESSAGE) - End Sub - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/Debugger/DebuggerListener.vb b/Shoal.v2/Shoal.v2/Runtime/Debugger/DebuggerListener.vb deleted file mode 100644 index 62d4206c2..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/Debugger/DebuggerListener.vb +++ /dev/null @@ -1,135 +0,0 @@ -Imports Microsoft.VisualBasic.CommandLine -Imports Microsoft.VisualBasic.Net -Imports Microsoft.VisualBasic.Net.Http -Imports Microsoft.VisualBasic.Net.Protocols - -Namespace Runtime.Debugging - - ''' - ''' 这个对象为æœåŠ¡å™¨å¯¹è±¡ï¼Œè¿è¡Œåœ¨IDE模å—之中 - ''' - ''' - Public Class DebuggerListener : Implements System.IDisposable - - Dim _DebuggerListener As TcpSynchronizationServicesSocket - Dim _InternalMessageSender As AsynInvoke - Dim pid As Integer - Dim DebuggerProcess As IORedirect - Dim LocalPort As Integer = GetFirstAvailablePort() - Dim DebuggerStarted As Boolean = False - - ''' - ''' /debug listener_port <listen_port> [-work <working_Dir>] - ''' - ''' - ''' - ''' - Sub New(Debugger As String, WorkDir As String) - Call (Sub() Call InternalStartListener()).BeginInvoke(Nothing, Nothing) - Call Threading.Thread.Sleep(100) - - Dim DebuggerArgvs As String = "/debug listener_port " & LocalPort - If Not String.IsNullOrEmpty(WorkDir) Then DebuggerArgvs = DebuggerArgvs & " -work """ & WorkDir & """" - Debugger = FileIO.FileSystem.GetFileInfo(Debugger).FullName - DebuggerProcess = New IORedirect(Debugger, DebuggerArgvs, _disp_debug:=True) - Call DebuggerProcess.Start(_DISP_DEBUG_INFO:=True) - Call InternalWaitForDebuggerStart() - Call (Sub() SendHelloWorld()).BeginInvoke(Nothing, Nothing) - End Sub - - Private Sub InternalStartListener() - Try -RESTART: _DebuggerListener = New TcpSynchronizationServicesSocket(AddressOf __protocol, LocalPort) - Call _DebuggerListener.Run() - Catch ex As Exception - Call Console.WriteLine(ex.ToString) - GoTo RESTART - End Try - End Sub - - Private Sub InternalWaitForDebuggerStart() - Do While Not DebuggerStarted - Call Threading.Thread.Sleep(10) - Loop - End Sub - - Private Function __protocol(uid As Long, request As RequestStream, remote As System.Net.IPEndPoint) As RequestStream - Dim str As String = request.GetUTF8String - - Call Console.WriteLine(str) - - Dim Message As DebuggerMessage = str.CreateObjectFromXml(Of DebuggerMessage)(False) - - If Message Is Nothing Then - Return NetResponse.RFC_TOKEN_INVALID - End If - - If Message.MessageType = DebuggerMessage.MessageTypes.CTRL_DEBUGGER_INIT_INFO AndAlso Not DebuggerStarted Then - DebuggerStarted = True - _InternalMessageSender = New AsynInvoke("127.0.0.1", Val(Message.Message)) - Return NetResponse.RFC_OK - End If - - Return NetResponse.RFC_NOT_FOUND - End Function - - Private Sub SendHelloWorld() - Call Threading.Thread.Sleep(1500) - pid = DebuggerProcess.ProcessInfo.Id - Dim Message As String = SendMessage("[DEBUGGING] Hello World!") - Call Console.WriteLine(Message) - End Sub - - Public Function PushScript(Script As String) As String - Dim Message = New Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging.DebuggerMessage() With - { - .Pid = pid, .MessageType = DebuggerMessage.MessageTypes.CTRL_PUSH_SCRIPT, .Message = Script} - Dim s_Message As String = _InternalMessageSender.SendMessage(Message.GetXml) - Call Console.WriteLine(s_Message) - Return s_Message - End Function - - Public Function SendMessage(s As String) As String - Dim msg As New DebuggerMessage() With { - .Pid = pid, - .Message = s, - .MessageType = DebuggerMessage.MessageTypes.OUTPUT_MESSAGE - } - Return _InternalMessageSender.SendMessage(msg.GetXml) - End Function - -#Region "IDisposable Support" - Private disposedValue As Boolean ' To detect redundant calls - - ' IDisposable - Protected Overridable Sub Dispose(disposing As Boolean) - If Not Me.disposedValue Then - If disposing Then - ' TODO: dispose managed state (managed objects). - Call DebuggerProcess.ProcessInfo.Kill() - Call DebuggerProcess.Free() - End If - - ' TODO: free unmanaged resources (unmanaged objects) and override Finalize() below. - ' TODO: set large fields to null. - End If - Me.disposedValue = True - End Sub - - ' TODO: override Finalize() only if Dispose( disposing As Boolean) above has code to free unmanaged resources. - 'Protected Overrides Sub Finalize() - ' ' Do not change this code. Put cleanup code in Dispose( disposing As Boolean) above. - ' Dispose(False) - ' MyBase.Finalize() - 'End Sub - - ' This code added by Visual Basic to correctly implement the disposable pattern. - Public Sub Dispose() Implements IDisposable.Dispose - ' Do not change this code. Put cleanup code in Dispose(disposing As Boolean) above. - Dispose(True) - GC.SuppressFinalize(Me) - End Sub -#End Region - - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/Debugger/DebuggerMessage.vb b/Shoal.v2/Shoal.v2/Runtime/Debugger/DebuggerMessage.vb deleted file mode 100644 index 44c54b25c..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/Debugger/DebuggerMessage.vb +++ /dev/null @@ -1,57 +0,0 @@ -Imports System.Xml.Serialization - -Namespace Runtime.Debugging - - Public Class DebuggerMessage - - Public Property Message As String - Public Property Pid As Integer - Public Property MessageType As MessageTypes - - Public Enum MessageTypes - - ''' - ''' IDEå‘Shoalè°ƒè¯•ç¨‹åºæŽ¨é€è„šæœ¬ - ''' - ''' - CTRL_PUSH_SCRIPT - ''' - ''' IDEå‘é€ç»ˆæ­¢è„šæœ¬è°ƒè¯•çš„ä¿¡å· - ''' - ''' - CTRL_KILL_SCRIPT - ''' - ''' IDE请求Shoalçš„å˜é‡å†…容 - ''' - ''' - CTRL_GETS_MEMORY - ''' - ''' IDE修改Shoal内存之中的å˜é‡çš„内容 - ''' - ''' - CTRL_MODIFY_VALUE - ''' - ''' è°ƒè¯•å®¢æˆ·ç«¯å‘æœåŠ¡å™¨è¿”å›žåˆå§‹åŒ–ä¿¡æ¯ - ''' - ''' - CTRL_DEBUGGER_INIT_INFO - - ''' - ''' Shoalå‘IDEå‘é€ä¸€èˆ¬çš„æ¶ˆæ¯ - ''' - ''' - OUTPUT_MESSAGE - ''' - ''' Shoalå‘IDEå‘é€é”™è¯¯æ¶ˆæ¯ - ''' - ''' - OUTPUT_ERROR - ''' - ''' Shoalå‘IDEå‘é€è­¦å‘Šæ¶ˆæ¯ - ''' - ''' - OUTPUT_WARNING - End Enum - End Class - -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/Debugger/DebuggerProtocol.vb b/Shoal.v2/Shoal.v2/Runtime/Debugger/DebuggerProtocol.vb deleted file mode 100644 index 0ba52275d..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/Debugger/DebuggerProtocol.vb +++ /dev/null @@ -1,7 +0,0 @@ -Namespace Runtime.Debugging - - Module DebuggerProtocol - - - End Module -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/Debugger/ShellScriptDebuggerModel.vb b/Shoal.v2/Shoal.v2/Runtime/Debugger/ShellScriptDebuggerModel.vb deleted file mode 100644 index 86386d649..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/Debugger/ShellScriptDebuggerModel.vb +++ /dev/null @@ -1,52 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.LDM - -Namespace Runtime.Debugging - - Public Class ShellScriptDebuggerModel : Inherits SyntaxModel - - Public ReadOnly Property ScriptEngine As Runtime.ScriptEngine - - Sub New(LDM As SyntaxModel, ScriptEngine As ScriptEngine) - Me.Expressions = LDM.Expressions - Me.FilePath = LDM.FilePath - Me.GotoJumpsLabel = LDM.GotoJumpsLabel - Me.ScriptEngine = ScriptEngine - End Sub - - Dim p As Integer - - Public Function Execute() As Object - Throw New NotImplementedException - End Function - - Protected Sub __executeScript() - 'If String.Equals(CodeLine.OrignialScriptLine, FLAG_STATEMENT_RETURN_STACK, StringComparison.OrdinalIgnoreCase) Then - ' Call _InternalEXEC_Pointer.MoveNext() - ' Return - 'ElseIf InternalExecuteGoto(CodeLine) Then - ' Return - 'End If - - 'Dim CurrentExecHandle = CodeLine.InvokeMethod.BeginInvoke(Nothing, Nothing) - - 'Do While Not CurrentExecHandle.IsCompleted - ' If _KillScript Then - ' Call CurrentExecHandle.Free() - ' Return - ' End If - - ' Call Threading.Thread.Sleep(1) - 'Loop - - 'Dim Value As Object = CodeLine.InvokeMethod.EndInvoke(CurrentExecHandle) - 'Dim sys As Objects.I_MemoryManagementDevice = ScriptEngine._EngineMemoryDevice - 'Call sys.InsertOrUpdate(CodeLine.VariableAssigned, Value) - End Sub - - Dim _KillScript As Boolean = False - - Public Sub KillScript() - _KillScript = True - End Sub - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/Driver/DriverBase.vb b/Shoal.v2/Shoal.v2/Runtime/Driver/DriverBase.vb deleted file mode 100644 index 8eb5d143f..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/Driver/DriverBase.vb +++ /dev/null @@ -1,89 +0,0 @@ -Imports System.Reflection -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.DeviceDriver.DriverHandles -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.SCOM -Imports Microsoft.VisualBasic.Scripting.ShoalShell.SPM.Nodes - -Namespace Runtime.DeviceDriver - - Public MustInherit Class DriverBase(Of - HwndEntry As HwndEntryPoint, - Handler, - __TYPE_ID) : Inherits RuntimeComponent - - Protected _MMUDevice As MMU.MMUDevice - Protected _innerHwnds As Dictionary(Of __TYPE_ID, Handler) - - Dim _HwndTrace As Dictionary(Of __TYPE_ID, String) = New Dictionary(Of __TYPE_ID, String) - - Protected MustOverride Function HandleEntryToString(hwnd As __TYPE_ID) As String - - Public Function GetMountEntries() As String() - If _HwndTrace.IsNullOrEmpty Then - Return {"No external device was mount at here yet..." & vbCrLf} - End If - - Dim LQuery = (From hwnd In _HwndTrace - Select $" ----> [{HandleEntryToString(hwnd.Key)}] Mount at ""{hwnd.Value}""" & vbCrLf).ToList - Call LQuery.Insert(0, "Device TYPE_ID is " & Me.GetType.FullName & vbCrLf) - Return LQuery.ToArray - End Function - - Protected Sub __recordHandleTrace(Entry As __TYPE_ID, MountPoint As MethodInfo) - If _HwndTrace.ContainsKey(Entry) Then - Call _HwndTrace.Remove(Entry) - End If - - Dim Assembly = MountPoint.DeclaringType - Dim sPoint As String = - $"{Assembly.Assembly.Location}!{Assembly.FullName}::{MountPoint.ToString}" - - Call _HwndTrace.Add(Entry, sPoint) - End Sub - - Sub New(ScriptEngine As ScriptEngine) - Call MyBase.New(ScriptEngine) - _MMUDevice = ScriptEngine.MMUDevice - End Sub - - Public MustOverride Function ImportsHandler([Module] As System.Type) As Integer - - Protected Shared Function GetMethods([module] As PartialModule) As __TYPEHwnd() - Dim HwndEntry = GetType(HwndEntry) - Dim Methods = (From Entry As System.Type - In [module].Assembly.LoadAssembly.DefinedTypes - Select (From MethodInfo As MethodInfo - In Entry.GetMethods(System.Reflection.BindingFlags.Public Or System.Reflection.BindingFlags.Static) - Let attrs As Object() = MethodInfo.GetCustomAttributes(attributeType:=HwndEntry, inherit:=True) - Where Not attrs.IsNullOrEmpty - Let Handle = DirectCast(attrs.First, HwndEntry) - Select New __TYPEHwnd With { - .Type = Handle.SupportType, - .Handle = Handle, - .MethodInfo = MethodInfo}).ToArray).ToArray - Return Methods.MatrixToVector - End Function - - Protected Shared Function GetMethods([module] As System.Type) As __TYPEHwnd() - Dim Methods = (From MethodInfo As System.Reflection.MethodInfo - In [module].GetMethods(System.Reflection.BindingFlags.Public Or System.Reflection.BindingFlags.Static) - Let attrs As Object() = MethodInfo.GetCustomAttributes(attributeType:=GetType(HwndEntry), inherit:=True) - Where Not attrs.IsNullOrEmpty - Let Handle = DirectCast(attrs.First, HwndEntry) - Select New __TYPEHwnd With { - .Handle = Handle, - .Type = Handle.SupportType, - .MethodInfo = MethodInfo}).ToArray - Return Methods - End Function - - Protected Structure __TYPEHwnd - Dim Type As Type - Dim MethodInfo As MethodInfo - Dim Handle As HwndEntry - - Public Overrides Function ToString() As String - Return Handle.ToString - End Function - End Structure - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/Driver/DriverHandles.vb b/Shoal.v2/Shoal.v2/Runtime/Driver/DriverHandles.vb deleted file mode 100644 index cab34ee9d..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/Driver/DriverHandles.vb +++ /dev/null @@ -1,90 +0,0 @@ -Imports System.Drawing -Imports System.Reflection - -Namespace Runtime.DeviceDriver.DriverHandles - - Public MustInherit Class HwndEntryPoint : Inherits Attribute - - Public ReadOnly Property SupportType As Type - - Sub New(dataType As Type) - _SupportType = dataType - End Sub - End Class - - ''' - ''' 将目标å˜é‡åœ¨ç»ˆç«¯è¿›è¡Œè¾“出 - ''' - ''' - - Public Class OutputDeviceHandle : Inherits HwndEntryPoint - - Sub New(DataType As Type) - Call MyBase.New(DataType) - End Sub - End Class - - ''' - ''' 傿•°æŒ‡çš„æ˜¯ç›®æ ‡å‡½æ•°æ‰€è¿”回的值的类型,驱动程åºä¼šè‡ªåŠ¨æ ¹æ®å‡½æ•°çš„傿•°çš„类型æ¥å†³å®šå‡½æ•°æ–¹æ³•的调用 - ''' - ''' - - Public Class InputDeviceHandle : Inherits HwndEntryPoint - - Public ReadOnly Property Description As String - Public ReadOnly Property TypeHandleId As String - - ''' - ''' - ''' - ''' - ''' The brief name of the type information, usage syntax of this input type casting driver in the shoal scripting is: var < (TypeId) $variable - ''' (类型简称,在脚本之中的使用语法为: var < (TypeId) $variable) - ''' - ''' - Sub New(TypeId As String, Optional Description As String = "") - Call MyBase.New(Nothing) - Me.TypeHandleId = TypeId - Me._Description = Description - End Sub - - Public Overrides Function ToString() As String - If String.IsNullOrEmpty(Description) Then - Return $"Input Device Handle => ""{Me.TypeHandleId}""" - Else - Return $"Input Device Handle => ""{Me.TypeHandleId}""; //{_Description}" - End If - End Function - End Class - - ''' - ''' Target delegate must compatible with delegate Func(Of T, String, Boolean), the first parameter in the delegate is the - ''' data type and the data to write to the file, the second parameter is the file path of the IO operation and the last bool - ''' return value indicated that the io operation success or not. please notices that, for the considerations of the data - ''' type compatible, the collection data type is recommended implement as generic enumeration interface. - ''' (目标接å£å§”托对象必须è¦ç¬¦åˆä»¥ä¸‹æŽ¥å£ç±»åž‹Func(Of T, String, Boolean),其中第一个将è¦å†™æ–‡ä»¶çš„æ•°æ®ç±»åž‹ï¼Œç¬¬äºŒä¸ªå‚数为 - ''' 文件路径,最åŽä¸€ä¸ªå‚数是文件是å¦å†™å…¥æˆåŠŸï¼Œè¯·æ³¨æ„,对于任æ„的集åˆç±»åž‹æŽ¨è使用泛型集åˆ) - ''' - ''' - - Public Class IO_DeviceHandle : Inherits HwndEntryPoint - - ''' - ''' - ''' - ''' 目标数æ®ç±»åž‹ï¼Œè„šæœ¬å¼•æ“Žä¼šè‡ªåŠ¨æ ¹æ®å‡½æ•°çš„æ•°æ®ç±»åž‹è‡ªåŠ¨é€‰æ‹©æ–‡ä»¶ç³»ç»Ÿçš„å†™å…¥æ–¹å¼çš„é©±åŠ¨ç¨‹åº - ''' - Sub New(DataType As Type) - Call MyBase.New(DataType) - End Sub - - Sub New(TypeId As String) - Call MyBase.New(System.Type.GetType(TypeId, throwOnError:=True, ignoreCase:=True)) - End Sub - - Public Overrides Function ToString() As String - Return $"IOSupport::{SupportType.FullName}" - End Function - End Class - -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/Driver/DynamicsCast.vb b/Shoal.v2/Shoal.v2/Runtime/Driver/DynamicsCast.vb deleted file mode 100644 index b1aeaea0a..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/Driver/DynamicsCast.vb +++ /dev/null @@ -1,108 +0,0 @@ -Imports System.Drawing -Imports System.Reflection -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.DeviceDriver.DriverHandles - -Namespace Runtime.DeviceDriver - - ''' - ''' 字典之中的Key属性分别为所需è¦è½¬æ¢çš„ç›®æ ‡ç±»åž‹çš„ç®€ç§°å’Œè¾“å…¥çš„ç¬¬ä¸€ä¸ªå‚æ•°çš„类型,目标方法åªèƒ½å¤Ÿæœ‰ä¸€ä¸ªå‚æ•° - ''' - ''' - Public Class DynamicsCast : Inherits DriverBase(Of - InputDeviceHandle, - Func(Of Object, Object), - KeyValuePair(Of String, Type)) - - Sub New(ScriptEngine As Runtime.ScriptEngine) - Call MyBase.New(ScriptEngine) - MyBase._innerHwnds = - New Dictionary(Of KeyValuePair(Of String, Type), Func(Of Object, Object)) From { - _ - {New KeyValuePair(Of String, Type)("string", GetType(String)), AddressOf DynamicsCast.__readText}, - {New KeyValuePair(Of String, Type)("string()", GetType(String)), AddressOf IO.File.ReadAllLines}, - {New KeyValuePair(Of String, Type)("byte()", GetType(String)), AddressOf IO.File.ReadAllBytes}, - {New KeyValuePair(Of String, Type)("int", GetType(String)), AddressOf DynamicsCast.__getInteger}, - {New KeyValuePair(Of String, Type)("int32", GetType(String)), AddressOf DynamicsCast.__getInteger}, - {New KeyValuePair(Of String, Type)("integer", GetType(String)), AddressOf DynamicsCast.__getInteger}} - End Sub - - - - - Private Shared Function __getInteger(value As String) As Integer - Return CInt(Val(value)) - End Function - - - Private Shared Function __readText(path As String) As String - Return VisualBasic.FileIO.FileSystem.ReadAllText(path) - End Function - - - Private Shared Function InternalReadTextLines(path As String) As String() - Return IO.File.ReadAllLines(path).ToArray - End Function - - Public Overrides Function ImportsHandler([Module] As Type) As Integer - Dim Entries = GetMethods([Module]) - Dim LQuery = (From hwnd As __TYPEHwnd In Entries - Let n = hwnd.Handle - Let Method = hwnd.MethodInfo - Let p = Method.GetParameters - Where p.Length = 1 - Let objType = p.First.ParameterType - Let DeviceHandle = Function(obj As Object) Method.Invoke(Nothing, {obj}) - Select DriverHandle = DeviceHandle, - Entry = New KeyValuePair(Of String, Type)(n.TypeHandleId, objType), - Mounts = Method).ToArray - - For Each Line In LQuery - If _innerHwnds.ContainsKey(Line.Entry) Then - Call _innerHwnds.Remove(Line.Entry) - End If - - If Line.Entry.Value.Equals(GetType(String)) Then - Call InputHandler.CapabilityPromise( - Line.Entry.Key, - Line.Mounts.ReturnType, - Function(s) Line.Mounts.Invoke(Nothing, {s})) - End If - - Call _innerHwnds.Add(Line.Entry, Line.DriverHandle) - Call __recordHandleTrace(Line.Entry, Line.Mounts) - Next - - Return LQuery.Length - End Function - - ''' - ''' - ''' - ''' ç›®æ ‡å‡½æ•°çš„ç¬¬ä¸€ä¸ªå‚æ•°ï¼Œæœ¬æ–¹æ³•会根æ®è¿™ä¸ªå‚数以åŠå‚数查找最åˆé€‚çš„å¥æŸ„æ¥å¤„ç†æœ¬å‚数的输入 - ''' 类型标记信æ¯çš„简写 - ''' - ''' - Public Function TypeCastDynamics(obj As Object, typeId As String) As Object - Dim EntryType As System.Type = obj.GetType - Dim LQuery = (From Hwnd As KeyValuePair(Of KeyValuePair(Of String, Type), Func(Of Object, Object)) - In Me._innerHwnds - Where String.Equals(Hwnd.Key.Key, typeId, StringComparison.OrdinalIgnoreCase) - Select Val = Hwnd.Value).ToArray - - If LQuery.IsNullOrEmpty Then - Dim ex As String = String.Format(MISSING_HANDLE, typeId, EntryType.FullName) - Throw New MissingPrimaryKeyException(ex) - End If - - Dim DriverHandle As Func(Of Object, Object) = LQuery.First - Dim value As Object = DriverHandle(obj) - Return value - End Function - - Const MISSING_HANDLE As String = "[MISSING_HANDLER {0}, {1}] You should imports a namespace which was contains the handle of this type and then run this program again." - - Protected Overrides Function HandleEntryToString(hwnd As KeyValuePair(Of String, Type)) As String - Return $"[{hwnd.Key}, {hwnd.Value.FullName}]" - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/Driver/IODeviceDriver.vb b/Shoal.v2/Shoal.v2/Runtime/Driver/IODeviceDriver.vb deleted file mode 100644 index 910019db7..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/Driver/IODeviceDriver.vb +++ /dev/null @@ -1,174 +0,0 @@ -Imports System.Drawing -Imports System.Reflection -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.DeviceDriver.DriverHandles -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Exceptions - -Namespace Runtime.DeviceDriver - - Public Class IODeviceDriver : Inherits DriverBase(Of IO_DeviceHandle, Func(Of Object, String, Boolean), Type) - - Delegate Function IWriteData(data As Object, path As String) As Boolean - - Private Shared Function WriteDat(data As Object, path As String) As Boolean - Return CastArray(Of Byte)(data).FlushStream(path) - End Function - - Private Shared Function WriteBooleanBytes(data As Object, path As String) As Boolean - Dim value = (From b As Boolean - In InputHandler.CastArray(Of Boolean)(data) - Select If(b, CByte(1), CByte(0))).ToArray - Return value.FlushStream(path) - End Function - - ReadOnly GenericCollection As New Dictionary(Of Type, IWriteData) From { - {GetType(Integer), AddressOf WriteTextCollection}, - {GetType(Double), AddressOf WriteTextCollection}, - {GetType(Byte), AddressOf WriteDat}, - {GetType(Long), AddressOf WriteTextCollection}, - {GetType(Boolean), AddressOf WriteBooleanBytes}, - {GetType(Date), AddressOf WriteTextCollection}, - {GetType(Object), AddressOf WriteTextCollection} - } - - Sub New(ScriptEngine As Runtime.ScriptEngine) - MyBase.New(ScriptEngine) - MyBase._innerHwnds = New Dictionary(Of Type, Func(Of Object, String, Boolean)) From { - {GetType(String), AddressOf IODeviceDriver.WriteTextFile}, - {GetType(Char()), AddressOf IODeviceDriver.WriteCharCollectionAsText}, - {GetType(String()), AddressOf IODeviceDriver.WriteTextCollection}, - {GetType(Image), AddressOf IODeviceDriver.WriteImageFile}, - {GetType(Bitmap), AddressOf IODeviceDriver.WriteBitmapFile}, - {GetType(Microsoft.VisualBasic.Logging.LogFile), AddressOf IODeviceDriver.SaveLogFile}, - {GetType(Byte), Function(byt As Object, path As String) {DirectCast(byt, Byte)}.FlushStream(path)}} - End Sub - - Private Shared Function SaveLogFile(log As Microsoft.VisualBasic.Logging.LogFile, path As String) As Boolean - Return log.Save(path) - End Function - - ''' - ''' 返回æˆåŠŸå¯¼å…¥çš„IO方法 - ''' - ''' - ''' - ''' - Public Overrides Function ImportsHandler([Module] As System.Type) As Integer - Dim Methods As __TYPEHwnd() = GetMethods([Module]) - - For Each hwnd In Methods - If _innerHwnds.ContainsKey(hwnd.Type) Then - Call $"[UPDATE] {hwnd.Type.FullName} ==> {[Module].FullName}::{hwnd.MethodInfo.Name}".__DEBUG_ECHO - Call _innerHwnds.Remove(hwnd.Type) '如果已ç»å­˜åœ¨è¯¥ç±»åž‹çš„写入方法,则进行更新 - End If - Call _innerHwnds.Add(hwnd.Type, value:=Function(data As Object, path As String) As Boolean - Dim rtvl As Object = hwnd.MethodInfo.Invoke(Nothing, New Object() {data, path}) - Return CType(rtvl, Boolean) - End Function) - Call __recordHandleTrace(hwnd.Type, hwnd.MethodInfo) - Next - - Return Methods.Length - End Function - - Private Shared Function WriteImageFile(data As Image, path As String) As Boolean - Call data.Save(path, Drawing.Imaging.ImageFormat.Png) - Return True - End Function - - Private Shared Function WriteBitmapFile(data As Bitmap, path As String) As Boolean - Call data.Save(path) - Return True - End Function - - Private Shared Function WriteTextFile(data As Object, path As String) As Boolean - Dim sValue As String = InputHandler.ToString(data) - Return sValue.SaveTo(path) - End Function - - Private Shared Function WriteTextCollection(data As Object, path As String) As Boolean - Dim textBuffer As String() = (From line In DirectCast(data, IEnumerable) - Let sValue As String = Scripting.ToString(line) - Select sValue).ToArray - Call IO.File.WriteAllLines(path, textBuffer) - Return True - End Function - - Private Shared Function WriteCharCollectionAsText(data As Object, path As String) As Boolean - Dim sValue As String = If(data Is Nothing, "", New String((From c In DirectCast(data, IEnumerable) Let ch As Char = DirectCast(c, Char) Select ch).ToArray)) - Call VisualBasic.FileIO.FileSystem.WriteAllText(path, sValue, False) - Return True - End Function - - Const EXCEPTION_MESSAGE_IO_HANDLER_MISSING As String = - "IO method is missing for type: {0}, please try using ""imports "" command for imports the io method." - - ''' - ''' This function will trying to save the data in a properly method from the data type: - ''' Function will trying save the string as a text file; - ''' Basic data type collection will be save as a csv data table; - ''' All of the other data type will be saved based on the registry data; - ''' If the method is not found in the registry for the data type, then function will throw a method missing exception! - ''' (函数会å°è¯•æ ¹æ®æ–‡ä»¶çš„类型æ¥é€‰æ‹©åˆé€‚çš„ä¿å­˜æ ¼å¼: - ''' 字符串类型会ä¿å­˜ä¸ºæ–‡æœ¬æ–‡ä»¶ - ''' 数组会ä¿å­˜ä¸ºCsv - ''' å…¶ä»–çš„å¤æ‚类型会å°è¯•æ ¹æ®æ³¨å†Œçš„奿Ÿ„æ¥æ‰§è¡Œç›¸åº”的数æ®ä¿å­˜æ“作) - ''' - ''' - ''' - ''' - ''' - Public Function WriteData(value As Object, path As String) As Boolean - Dim type As Type = value.GetType - - path = VisualBasic.FileIO.FileSystem.GetFileInfo(MyBase.ScriptEngine.Strings.Format(path)).FullName - - Call $"Flush data to handle *""{path.ToFileURL}""...".__DEBUG_ECHO - Call VisualBasic.FileIO.FileSystem.CreateDirectory(VisualBasic.FileIO.FileSystem.GetParentPath(path)) - - If Not _innerHwnds.ContainsKey(type) Then Return __writeCollection(type, value, path) - - Try - Return _innerHwnds(type)(value, path) - Catch ex As Exception - Throw New ShoalShell.Runtime.Exceptions.RuntimeException( - $"An unexpected exception occurs while trying flush the data to the handle *""{path.ToFileURL}""...", ex, ScriptEngine) - End Try - End Function - - Private Function __writeCollection(type As Type, value As Object, path As String) As Boolean - Dim GenericCollection As Type = __genericCollection(type) - - If Not Me.GenericCollection.ContainsKey(GenericCollection) Then _ - Throw New MethodNotFoundException(String.Format(EXCEPTION_MESSAGE_IO_HANDLER_MISSING, type.FullName), ScriptEngine) - - Try - Dim Hwnd = Me.GenericCollection(GenericCollection) '???字典查找有问题?? - Return Hwnd(value, path) - Catch ex As Exception - Throw New ShoalShell.Runtime.Exceptions.RuntimeException( - $"An unexpected exception occurs while trying flush the data to the handle *""{path.ToFileURL}""...", ex, ScriptEngine) - End Try - End Function - - Private Function __genericCollection(type As Type) As Type - Dim GenericCollection As Type = Nothing - - Try - GenericCollection = type.Collection2GenericIEnumerable - GenericCollection = GenericCollection.GenericTypeArguments.First - Catch ex As Exception - Dim Message As String = String.Format(EXCEPTION_ON_HANDLE_GENERIC_TYPE, type.FullName) - Throw New ShoalShell.Runtime.Exceptions.RuntimeException(Message, ex, ScriptEngine) - End Try - - Return GenericCollection - End Function - - Public Const EXCEPTION_ON_HANDLE_GENERIC_TYPE As String = - "Unable to handle the type to generic: ""{0}"". The reason for this error maybe is you haven't imports the io device handler for target type." - - Protected Overrides Function HandleEntryToString(item As Type) As String - Return item.FullName - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/Driver/OutputDeviceDriver.vb b/Shoal.v2/Shoal.v2/Runtime/Driver/OutputDeviceDriver.vb deleted file mode 100644 index 6ab08a8a7..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/Driver/OutputDeviceDriver.vb +++ /dev/null @@ -1,115 +0,0 @@ -Imports System.Drawing -Imports System.Reflection -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.DeviceDriver.DriverHandles -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Exceptions - -Namespace Runtime.DeviceDriver - - ''' - ''' Output support module for that data type.(å„ç§æ•°æ®ç±»åž‹çš„输出模å—) - ''' - ''' - Public Class OutputDeviceDriver : Inherits DriverBase(Of OutputDeviceHandle, Func(Of Object, Object), Type) - - Sub New(ScriptEngine As Runtime.ScriptEngine) - MyBase.New(ScriptEngine) - MyBase._innerHwnds = New Dictionary(Of Type, Func(Of Object, Object)) _ - From - { - {GetType(String), AddressOf OutputDeviceDriver.WriteLineText}, - {GetType(Generic.IEnumerable(Of String)), AddressOf OutputDeviceDriver.WriteStringCollection}, - {GetType(Generic.IEnumerable(Of Object)), AddressOf OutputDeviceDriver.WriteObjectCollection}, - {GetType(Double), AddressOf OutputDeviceDriver.WriteLineText}, - {GetType(Integer), AddressOf OutputDeviceDriver.WriteLineText}, - {GetType(UInteger), AddressOf OutputDeviceDriver.WriteLineText}, - {GetType(Short), AddressOf OutputDeviceDriver.WriteLineText}, - {GetType(Long), AddressOf OutputDeviceDriver.WriteLineText}, - {GetType(Date), AddressOf OutputDeviceDriver.WriteLineText}, - {GetType(Boolean), AddressOf OutputDeviceDriver.WriteLineText}, - {GetType(Byte), AddressOf OutputDeviceDriver.WriteLineText}, - {GetType(Object), AddressOf OutputDeviceDriver.WriteLineText}} - End Sub - - Private Shared Function WriteLineText(s As Object) As Object - Call Console.WriteLine(" = [0] " & s.ToString) - Return s - End Function - - Private Shared Function WriteObjectCollection(data As Generic.IEnumerable(Of Object)) As Object() - If data.IsNullOrEmpty Then - Call Console.WriteLine(" = null array") - End If - - Call WriteStringCollection((From obj In data Select InputHandler.ToString(obj)).ToArray) - Return data.ToArray - End Function - - Private Shared Function WriteStringCollection(data As Generic.IEnumerable(Of String)) As String() - If data.IsNullOrEmpty Then - Call Console.WriteLine(" = null array") - End If - - Call Console.WriteLine(" =") - For i As Integer = 0 To data.Count - 1 - Call Console.WriteLine(" [{0}] {1}", i, data(i)) - Next - - Return data.ToArray - End Function - - Public Overrides Function ImportsHandler([Module] As Type) As Integer - Dim Methods As __TYPEHwnd() = GetMethods([Module]) - - For Each item As __TYPEHwnd In Methods - - If _innerHwnds.ContainsKey(item.Type) Then - Call Console.WriteLine("[UPDATE] {0} ==> {1}::{2}", item.Type.FullName, [Module].FullName, item.MethodInfo.Name) - Call _innerHwnds.Remove(item.Type) '如果已ç»å­˜åœ¨è¯¥ç±»åž‹çš„写入方法,则进行更新 - End If - - Call _innerHwnds.Add(item.Type, value:=Function(data As Object) item.MethodInfo.Invoke(Nothing, New Object() {data})) - Call __recordHandleTrace(item.Type, item.MethodInfo) - Next - - Return Methods.Length - End Function - - Const EXCEPTION_MESSAGE_OUTPUT_HANDLER_MISSING As String = "Output handler method is missing for type: {0}, please try using ""imports "" command for imports the io method." - Const NULL As String = "NULL" - - Public Function HandleOutput(var As Object) As Object - If var Is Nothing Then var = NULL ' var是空值,则输出空值所指示的字符串 - - Dim Type As Type = var.GetType - - If _innerHwnds.ContainsKey(Type) Then - Dim DriverHandle = _innerHwnds(Type) - Return DriverHandle(var) - Else - Return __processArrayOutput(Type, var) - End If - End Function - - Private Function __processArrayOutput(TypeInfo As Type, var As Object) As Object - Dim GenericCollection As Type = TypeInfo.Collection2GenericIEnumerable - - If _innerHwnds.ContainsKey(GenericCollection) Then - Return _innerHwnds(GenericCollection)(var) - Else - Try - Dim cString As String = var.ToString 'å°è¯•将目标对象转æ¢ä¸ºå­—符串进行输出 - Call Console.WriteLine(cString) - Return cString - Catch ex As Exception '但是转æ¢å¤±è´¥äº†ï¼Œæœ€ç»ˆåªèƒ½å¤Ÿè·‘出错误 - Dim Msg As String = String.Format(EXCEPTION_MESSAGE_OUTPUT_HANDLER_MISSING, TypeInfo.FullName) - ex = New Exception(Msg, ex) - Throw New MethodNotFoundException(ex.ToString, ScriptEngine) - End Try - End If - End Function - - Protected Overrides Function HandleEntryToString(item As Type) As String - Return item.FullName - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/Dynamics.vb b/Shoal.v2/Shoal.v2/Runtime/Dynamics.vb deleted file mode 100644 index 0233af2cb..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/Dynamics.vb +++ /dev/null @@ -1,324 +0,0 @@ -Imports System.Dynamic -Imports System.Text -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.MMU - -Namespace Runtime - - ''' - ''' Dynamics programming environment. If the environment thorw member not found exception, then you should consider of the - ''' target method namespace may be not registered yet so then you should try using - ''' to initialize the environment. - ''' (Shoal脚本的动æ€ç¼–程环境,注æ„:å‡è‹¥æç¤ºæ‰¾ä¸åˆ°æ–¹æ³•æˆ–è€…ç©ºå¼•ç”¨ï¼Œè¯·ä½¿ç”¨å¸¦å‚æ•°çš„ - ''' 创建方法在扫æå®Œæ’件文件夹之åŽå†æ¥åˆ›å»ºå¯¹è±¡å®žä¾‹) - ''' - ''' 所返回的是Shoal的系统ä¿ç•™å˜é‡çš„值 - ''' - ''' - Public Class Dynamics : Inherits Dynamic.DynamicObject - Implements System.IDisposable - Implements IConvertible - - Public ReadOnly Property ScriptEngine As Runtime.ScriptEngine - - Public ReadOnly Property SysTopStack As Object - Get - Return ScriptEngine.MMUDevice.SystemReserved.Value - End Get - End Property - - Sub New(ScriptEngine As Runtime.ScriptEngine) - Me.ScriptEngine = ScriptEngine - End Sub - - ''' - ''' Initialize the dynamics programming runtime environment from the configuration data. - ''' - ''' - ''' - Public Shared Function CreateDefaultEnvironment() As Dynamics - Return New ShoalShell.Runtime.Dynamics(New ScriptEngine(ShoalShell.Configuration.Config.LoadDefault)) - End Function - - Public Shared Function CreateDefaultEnvironment(scanPlugins As String) As Dynamics - Call Runtime.SCOM.RuntimeEnvironment.ScanPlugins($"-scan.plugins -dir {scanPlugins.CliPath}") - Return Dynamics.CreateDefaultEnvironment - End Function - - Public Function [Imports]([Namespace] As String) As Integer - Return Me.ScriptEngine.Interpreter.EPMDevice.Imports([Namespace]).API?.Length - End Function - - Public Function Install(AssemblyPath As String) As Boolean - Dim b As Boolean = Not ScriptEngine.Interpreter.SPMDevice.Imports(AssemblyPath).IsNullOrEmpty - Call ScriptEngine.Interpreter.SPMDevice.UpdateDb() - Return b - End Function - - Public Function Evaluate(script As String) As Object - Return ScriptEngine.Exec(script) - End Function - -#Region "Dynamics Support" - - Public Overrides Function GetDynamicMemberNames() As IEnumerable(Of String) - Return (From var In ScriptEngine.MMUDevice Select var.Value.Name).ToArray - End Function - - Public Overrides Function TryGetMember( binder As GetMemberBinder, ByRef result As Object) As Boolean - If ScriptEngine.MMUDevice.Exists(binder.Name) Then - result = ScriptEngine.MMUDevice(binder.Name).Value - Else - result = Nothing - End If - - Return True - End Function - - Public Overrides Function TrySetMember(binder As SetMemberBinder, value As Object) As Boolean - Call ScriptEngine.MMUDevice.Update(binder.Name, value) - Return False - End Function - - Dim _VirtualInvokeAPINsCache As StringBuilder = New StringBuilder(1024) - - ''' - ''' 首先å°è¯•查看里é¢çš„æ•°æ®ï¼Œå‡è‹¥æ²¡æœ‰çš„è¯åœ¨ç›´æŽ¥æŸ¥æ‰¾ï¼Œå‡è‹¥æœ‰æ•°æ®ï¼Œåˆ™æ‰§è¡Œå‘½å空间的连接æ“作之åŽåœ¨æŸ¥æ‰¾æ‰§è¡Œ - ''' - ''' - ''' 按照函数的定义排åºçš„ - ''' - ''' - ''' - Public Overrides Function TryInvokeMember(binder As InvokeMemberBinder, args() As Object, ByRef result As Object) As Boolean - Dim MethodName As String - - If _VirtualInvokeAPINsCache.Length = 0 Then - MethodName = binder.Name - Else - MethodName = String.Format("{0}.{1}", _VirtualInvokeAPINsCache.ToString, binder.Name) - End If - - Try - Dim API = ScriptEngine.Interpreter.TryGetAPI(MethodName) - result = Interpreter.Linker.APIHandler.APIInvoker.TryInvoke(API, args) - _VirtualInvokeAPINsCache.Clear() - Catch ex As Exception - If _VirtualInvokeAPINsCache.Length = 0 Then - _VirtualInvokeAPINsCache.Append(binder.Name) - Else - Call _VirtualInvokeAPINsCache.Append("." & binder.Name) - End If - - result = Me - End Try - - Return True - End Function - - Public Overrides Function TryConvert(binder As ConvertBinder, ByRef result As Object) As Boolean - Return MyBase.TryConvert(binder, result) - End Function -#End Region - -#Region "Implements IConvertible" - -#Region "GetTypeCode" - - Public Shared ReadOnly Property TypeCodes As SortedDictionary(Of Type, TypeCode) = - New SortedDictionary(Of Type, TypeCode) From { - _ - {GetType(Object), TypeCode.Object}, - {GetType(Boolean), TypeCode.Boolean}, - {GetType(Byte), TypeCode.Byte}, - {GetType(Char), TypeCode.Char}, - {GetType(DateTime), TypeCode.DateTime}, - {GetType(DBNull), TypeCode.DBNull}, - {GetType(Decimal), TypeCode.Decimal}, - {GetType(Double), TypeCode.Double}, - {GetType(Int16), TypeCode.Int16}, - {GetType(Int32), TypeCode.Int32}, - {GetType(Int64), TypeCode.Int64}, - {GetType(SByte), TypeCode.SByte}, - {GetType(Single), TypeCode.Single}, - {GetType(String), TypeCode.String}, - {GetType(UInt16), TypeCode.UInt16}, - {GetType(UInt32), TypeCode.UInt32}, - {GetType(UInt64), TypeCode.UInt64} - } - - ''' - ''' Specifies the type of an object. - ''' - ''' - Public Function GetTypeCode() As TypeCode Implements IConvertible.GetTypeCode - Dim typeRef = InputHandler.GetType(Me.SysTopStack, True) - - If _TypeCodes.ContainsKey(typeRef) Then - Return _TypeCodes(typeRef) - Else - Return TypeCode.Object - End If - End Function -#End Region - - Public Function ToBoolean(provider As IFormatProvider) As Boolean Implements IConvertible.ToBoolean - Return InputHandler.ToString(SysTopStack).getBoolean - End Function - - Public Function ToByte(provider As IFormatProvider) As Byte Implements IConvertible.ToByte - Return CType(SysTopStack, Byte) - End Function - - Public Function ToChar(provider As IFormatProvider) As Char Implements IConvertible.ToChar - Dim value As String = InputHandler.ToString(SysTopStack) - If String.IsNullOrEmpty(value) Then - Return NIL - Else - Return value(Scan0) - End If - End Function - - Public Function ToDateTime(provider As IFormatProvider) As Date Implements IConvertible.ToDateTime - Dim value As Object = SysTopStack - If value Is Nothing Then - Return New Date - Else - Dim d As DateTime = CType(value.ToString, DateTime) - Return d - End If - End Function - - Public Function ToDecimal(provider As IFormatProvider) As Decimal Implements IConvertible.ToDecimal - Dim value As Object = SysTopStack - If value Is Nothing Then - Return 0 - Else - Return CType(value, Decimal) - End If - End Function - - Public Function ToDouble(provider As IFormatProvider) As Double Implements IConvertible.ToDouble - Dim value = SysTopStack - If value Is Nothing Then - Return 0 - Else - Return Val(value.ToString) - End If - End Function - - Public Function ToInt16(provider As IFormatProvider) As Short Implements IConvertible.ToInt16 - Dim value = SysTopStack - If value Is Nothing Then - Return 0 - Else - Return CType(Val(value.ToString), Int16) - End If - End Function - - Public Function ToInt32(provider As IFormatProvider) As Integer Implements IConvertible.ToInt32 - Dim value = SysTopStack - If value Is Nothing Then - Return 0 - Else - Return CInt(Val(value.ToString)) - End If - End Function - - Public Function ToInt64(provider As IFormatProvider) As Long Implements IConvertible.ToInt64 - Dim value = SysTopStack - If value Is Nothing Then - Return 0 - Else - Return CLng(Val(value.ToString)) - End If - End Function - - Public Function ToSByte(provider As IFormatProvider) As SByte Implements IConvertible.ToSByte - Dim value = SysTopStack - If value Is Nothing Then - Return 0 - Else - Return CType(Val(value.ToString), SByte) - End If - End Function - - Public Function ToSingle(provider As IFormatProvider) As Single Implements IConvertible.ToSingle - Dim value = SysTopStack - If value Is Nothing Then - Return 0 - Else - Return CSng(Val(value.ToString)) - End If - End Function - - Public Overloads Function ToString(provider As IFormatProvider) As String Implements IConvertible.ToString - Return InputHandler.ToString(Me.SysTopStack) - End Function - - Public Function ToType(conversionType As Type, provider As IFormatProvider) As Object Implements IConvertible.ToType - Return SysTopStack.GetType - End Function - - Public Function ToUInt16(provider As IFormatProvider) As UShort Implements IConvertible.ToUInt16 - Dim value = SysTopStack - If value Is Nothing Then - Return 0 - Else - Return CType(Val(value.ToString), UInt16) - End If - End Function - - Public Function ToUInt32(provider As IFormatProvider) As UInteger Implements IConvertible.ToUInt32 - Dim value = SysTopStack - If value Is Nothing Then - Return 0 - Else - Return CType(Val(value.ToString), UInteger) - End If - End Function - - Public Function ToUInt64(provider As IFormatProvider) As ULong Implements IConvertible.ToUInt64 - Dim value = SysTopStack - If value Is Nothing Then - Return 0 - Else - Return CType(Val(value.ToString), ULong) - End If - End Function -#End Region - -#Region "IDisposable Support" - Private disposedValue As Boolean ' To detect redundant calls - - ' IDisposable - Protected Overridable Sub Dispose(disposing As Boolean) - If Not Me.disposedValue Then - If disposing Then - ' TODO: dispose managed state (managed objects). - End If - - ' TODO: free unmanaged resources (unmanaged objects) and override Finalize() below. - ' TODO: set large fields to null. - End If - Me.disposedValue = True - End Sub - - ' TODO: override Finalize() only if Dispose(disposing As Boolean) above has code to free unmanaged resources. - 'Protected Overrides Sub Finalize() - ' ' Do not change this code. Put cleanup code in Dispose(disposing As Boolean) above. - ' Dispose(False) - ' MyBase.Finalize() - 'End Sub - - ' This code added by Visual Basic to correctly implement the disposable pattern. - Public Sub Dispose() Implements IDisposable.Dispose - ' Do not change this code. Put cleanup code in Dispose(disposing As Boolean) above. - Dispose(True) - ' TODO: uncomment the following line if Finalize() is overridden above. - ' GC.SuppressFinalize(Me) - End Sub -#End Region - - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/Exceptions/DriverNotFound.vb b/Shoal.v2/Shoal.v2/Runtime/Exceptions/DriverNotFound.vb deleted file mode 100644 index aa92587d7..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/Exceptions/DriverNotFound.vb +++ /dev/null @@ -1,15 +0,0 @@ -Namespace Runtime.Exceptions - - Public Class DriverNotFound : Inherits RuntimeException - - Public Property Driver As String - - Sub New(Message As String, ScriptEngine As Runtime.ScriptEngine) - Call MyBase.New(Message, ScriptEngine) - End Sub - - Sub New(Message As String, InnerException As Exception, ScriptEngine As Runtime.ScriptEngine) - Call MyBase.New(Message, InnerException, ScriptEngine) - End Sub - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/Exceptions/MethodNotFoundException.vb b/Shoal.v2/Shoal.v2/Runtime/Exceptions/MethodNotFoundException.vb deleted file mode 100644 index 0629321c0..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/Exceptions/MethodNotFoundException.vb +++ /dev/null @@ -1,85 +0,0 @@ -Imports System.Text - -Namespace Runtime.Exceptions - - Public Class FunCallFailured : Inherits RuntimeException - - Sub New(Expr As Interpreter.LDM.Expressions.FunctionCalls, ScriptEngine As Runtime.ScriptEngine) - Call MyBase.New($"Unable call function: {Expr.ToString}", ScriptEngine) - End Sub - End Class - - ''' - ''' The exception that is thrown when there is an attempt to dynamically access a - ''' method that does not exist. - ''' - Public Class MethodNotFoundException : Inherits RuntimeException - - Dim API As Interpreter.Linker.APIHandler.APIEntryPoint, - args As KeyValuePair(Of String, Object)(), - Expr As Interpreter.LDM.Expressions.FunctionCalls - - ''' - ''' Initializes a new instance of the class with the - ''' specified class name and method name. - ''' - ''' The name of the class in which access to a nonexistent method was attempted. - ''' - ''' The name of the method that cannot be accessed. - ''' - Sub New(API As Interpreter.Linker.APIHandler.APIEntryPoint, - args As KeyValuePair(Of String, Object)(), - Expr As Interpreter.LDM.Expressions.FunctionCalls, - ScriptEngine As Runtime.ScriptEngine) - - Call MyBase.New(MethodNotFoundException.__innerMessage(API, args, Expr, ScriptEngine), - New MissingMethodException(className:=NameOf(ExecuteModel), - methodName:=Expr.EntryPoint.Name.Expression.PrimaryExpression), - ScriptEngine) - - Me.Script = Expr - Me.API = API - Me.args = args - Me.Expr = Expr - End Sub - - Public Sub New(innerMessage As String, ScriptEngine As Runtime.ScriptEngine) - Call MyBase.New(innerMessage, ScriptEngine) - End Sub - - Private Shared Function __innerMessage(API As Interpreter.Linker.APIHandler.APIEntryPoint, - args As KeyValuePair(Of String, Object)(), - Expr As Interpreter.LDM.Expressions.FunctionCalls, - ScriptEngine As Runtime.ScriptEngine) As String - - Dim sbr As StringBuilder = New StringBuilder(Expr.PrimaryExpression) - Call sbr.AppendLine() - Call sbr.AppendLine() - - If Not Expr Is Nothing Then - Call sbr.AppendLine("Source Details:") - Call sbr.AppendLine($"{NameOf(Expr.ExtensionVariable)} = $[{If(Expr.ExtensionVariable Is Nothing, "", Expr.ExtensionVariable.Expression.ExceptionExpr)}]") - Call sbr.AppendLine($"{NameOf(Expr.Comments)} = {Expr.Comments}") - Call sbr.AppendLine($"{NameOf(Expr.LeftAssignedVariable)} = {Expr.LeftAssignedVariable.ExceptionExpr}") - Call sbr.AppendLine($"{NameOf(Expr.EntryPoint)} = {Expr.EntryPoint.ExceptionExpr}") - Call sbr.AppendLine($"{NameOf(Expr.Parameters)} = ") - Call sbr.AppendLine(String.Join(vbCrLf & " ", (From param In Expr.Parameters Select $"[{param.Key.ExceptionExpr}, {param.Value.ExceptionExpr}]").ToArray)) - Call sbr.AppendLine() - End If - - Call sbr.AppendLine($"{NameOf(args)} =") - Call sbr.AppendLine(String.Join(vbCrLf & " ", (From param In args Select $"{param.Key} ==> {InputHandler.ToString(param.Value)}"))) - Call sbr.AppendLine() - Call sbr.AppendLine() - Call sbr.AppendLine($"{NameOf(API)} Details:") - Call sbr.AppendLine($"{NameOf(API.Name)} = {API.Name} {If(API.IsOverloaded, $"(+{API.OverloadsNumber} Overloads)", "")}") - Call sbr.AppendLine("[") - For Each func In API - Call sbr.AppendLine($" {func.EntryPoint.EntryPoint.ToString}") - Next - Call sbr.AppendLine("]") - - Return sbr.ToString - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/Exceptions/RuntimeException.vb b/Shoal.v2/Shoal.v2/Runtime/Exceptions/RuntimeException.vb deleted file mode 100644 index 39afe1563..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/Exceptions/RuntimeException.vb +++ /dev/null @@ -1,18 +0,0 @@ -Namespace Runtime.Exceptions - - Public Class RuntimeException : Inherits Exception - - Public Property Script As Interpreter.LDM.Expressions.PrimaryExpression - Public ReadOnly Property ScriptEngine As Runtime.ScriptEngine - - Sub New(Message As String, ScriptEngine As Runtime.ScriptEngine) - Call MyBase.New(Message) - Me.ScriptEngine = ScriptEngine - End Sub - - Sub New(Message As String, InnerException As Exception, ScriptEngine As Runtime.ScriptEngine) - Call MyBase.New(Message, InnerException) - Me.ScriptEngine = ScriptEngine - End Sub - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/HybridScripting/EntryPoint.vb b/Shoal.v2/Shoal.v2/Runtime/HybridScripting/EntryPoint.vb deleted file mode 100644 index 43eb1ac14..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/HybridScripting/EntryPoint.vb +++ /dev/null @@ -1,73 +0,0 @@ -Imports System.Reflection - -Namespace Runtime.HybridsScripting - - Public Structure EntryPoint - - ''' - ''' Script name.(æ··åˆç¼–程的脚本åç§°) - ''' - ''' - Dim Language As LanguageEntryPoint - Dim Init, Evaluate, SetValue As MethodInfo - ''' - ''' Basic type data convert interface.(基本数æ®ç±»åž‹çš„è½¬æ¢æŽ¥å£) - ''' - ''' - Dim DataConvertors As SortedDictionary(Of Char, System.Reflection.MethodInfo) - ''' - ''' When the handlers can not found the data type - ''' convert method for the basically type then it will try this system preserved string type convert - ''' method to convert the data as string as default. - ''' (å½“ä¹‹ä¸­æ²¡æœ‰æŸ¥æ‰¾åˆ°ç›®æ ‡ç±»åž‹çš„è½¬æ¢æ“作接å£çš„æ—¶å€™ï¼Œåˆ™é»˜è®¤ä½¿ç”¨æœ¬æ–¹æ³•è½¬æ¢ - ''' 为字符串的格å¼ï¼Œä¿ç•™çš„字符串类型的转æ¢å‡½æ•°) - ''' - ''' - Dim ConservedString As System.Reflection.MethodInfo - Dim TypeFullName As String - Dim DeclaredAssemblyType As System.Type - - Public Function EvaluateInvoke(Script As String) As Object - Return Evaluate.Invoke(Nothing, {Script}) - End Function - - Public Function SetValueInvoke(Name As String, value As Object) As Boolean - Return SetValue.Invoke(Nothing, {Name, value}) - End Function - - Public Function ReservedConvert(value As String) As Object - Return ConservedString.Invoke(Nothing, {value}) - End Function - - Public Overrides Function ToString() As String - Return Language.ToString - End Function - - Public Function Converts(ch As Char, value As String) As Object - Return DataConvertors(ch).Invoke(Nothing, {value}) - End Function - - ''' - ''' åˆå§‹åŒ–外部环境 - ''' - Public Sub InitInvoke() - If Not Init Is Nothing Then - Call Init.Invoke(Nothing, Nothing) - End If - End Sub - - ''' - '''This property indicated that the entry data which was parsing from the assembly module is valid or not.(å¯ä»¥ä½¿ç”¨æœ¬å±žæ€§æ¥åˆ¤æ–­ç›®æ ‡è§£æžæ•°æ®æ˜¯å¦å¯ç”¨) - ''' - ''' - ''' - ''' - Public ReadOnly Property IsNull As Boolean - Get - Return Language Is Nothing OrElse - Evaluate Is Nothing OrElse - SetValue Is Nothing - End Get - End Property - End Structure -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/HybridScripting/EnvironmentParser.vb b/Shoal.v2/Shoal.v2/Runtime/HybridScripting/EnvironmentParser.vb deleted file mode 100644 index 3850c8b12..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/HybridScripting/EnvironmentParser.vb +++ /dev/null @@ -1,63 +0,0 @@ -Imports System.Reflection - -Namespace Runtime.HybridsScripting - - Public Module EnvironmentParser - - Public Function [Imports](assm As System.Type) As EntryPoint - Dim attributes As Object() = assm.GetCustomAttributes(LanguageEntryPoint.TypeInfo, True) - - If attributes.IsNullOrEmpty Then - Return Nothing - End If - - Dim InitEntry As MethodInfo = GetEntry(assm, InterfaceTypes.EntryPointInit) - Dim Evaluate As MethodInfo = GetEntry(assm, InterfaceTypes.Evaluate) - Dim SetValue As MethodInfo = GetEntry(assm, InterfaceTypes.SetValue) - Dim DataConvertors = GetEntries(Of DataTransform)(assm) - Dim ConservedString As MethodInfo = (From cMethod As KeyValuePair(Of DataTransform, MethodInfo) - In DataConvertors - Where cMethod.Key.ReservedStringTLTR = True - Select cMethod.Value).FirstOrDefault - If Evaluate Is Nothing Then - Return Nothing - Else - Return New EntryPoint With { - .DeclaredAssemblyType = assm, - .ConservedString = ConservedString, - .Language = DirectCast(attributes(0), LanguageEntryPoint), - .Init = InitEntry, - .Evaluate = Evaluate, - .TypeFullName = assm.FullName, - .SetValue = SetValue, - .DataConvertors = New SortedDictionary(Of Char, MethodInfo)( - DataConvertors.ToDictionary(Function(item) item.Key.TypeChar, - Function(item) item.Value)) - } - End If - End Function - - Private Function GetEntries(Of TEntryType As EntryInterface)(TypeInfo As Type) As KeyValuePair(Of TEntryType, MethodInfo)() - Dim EntryType As Type = GetType(TEntryType) - Dim LQuery = (From LoadHandle As MethodInfo - In TypeInfo.GetMethods(BindingFlags.Public Or BindingFlags.Static) - Let attributes As Object() = LoadHandle.GetCustomAttributes(EntryType, False) - Where Not attributes.IsNullOrEmpty - Select (From attr As Object - In attributes - Let Entry As TEntryType = DirectCast(attr, TEntryType) - Select New KeyValuePair(Of TEntryType, MethodInfo)(Entry, LoadHandle)).ToArray).ToArray - Return LQuery.MatrixToVector - End Function - - Private Function GetEntry(TypeInfo As System.Type, EntryType As InterfaceTypes) As MethodInfo - Dim LQuery = (From LoadHandle As MethodInfo - In TypeInfo.GetMethods(BindingFlags.Public Or BindingFlags.Static) - Let attributes As Object() = LoadHandle.GetCustomAttributes(EntryInterface.TypeInfo, False) - Where Not attributes.IsNullOrEmpty AndAlso - DirectCast(attributes(0), EntryInterface).InterfaceType = EntryType - Select LoadHandle).FirstOrDefault - Return LQuery - End Function - End Module -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/HybridScripting/Interface/DataTransform.vb b/Shoal.v2/Shoal.v2/Runtime/HybridScripting/Interface/DataTransform.vb deleted file mode 100644 index 01ed48911..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/HybridScripting/Interface/DataTransform.vb +++ /dev/null @@ -1,35 +0,0 @@ -Imports System.Reflection - -Namespace Runtime.HybridsScripting - - - Public Class DataTransform : Inherits EntryInterface - - Public ReadOnly Property TypeChar As Char - Public ReadOnly Property ReservedStringTLTR As Boolean - - ''' - ''' - ''' - ''' - ''' æ•°æ®ç±»åž‹çš„åŽç¼€ï¼ŒæŽ¨è: - ''' $ ; - ''' & ; - ''' % ; - ''' ? ; - ''' ! ; - ''' @ - ''' - ''' åœ¨è„šæœ¬çŽ¯å¢ƒä¹‹ä¸­å¿…é¡»è¦æœ‰ä¸€ä¸ªä¿ç•™çš„å­—ç¬¦ä¸²è½¬æ¢æ–¹æ³• - ''' - Sub New(type As Char, Optional ReservedString As Boolean = False) - Call MyBase.New(InterfaceTypes.DataTransform) - _TypeChar = type - _ReservedStringTLTR = ReservedString - End Sub - - Public Overrides Function ToString() As String - Return _TypeChar.ToString - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/HybridScripting/Interface/EntryInterface.vb b/Shoal.v2/Shoal.v2/Runtime/HybridScripting/Interface/EntryInterface.vb deleted file mode 100644 index 9e9ad77f9..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/HybridScripting/Interface/EntryInterface.vb +++ /dev/null @@ -1,49 +0,0 @@ -Imports System.Reflection - -Namespace Runtime.HybridsScripting - - ''' - ''' å¿…é¡»è¦å…·å¤‡ä¸¤ç§ç±»åž‹çš„æŽ¥å£ï¼Œç›®æ ‡è„šæœ¬æ‰§è¡ŒçŽ¯å¢ƒæ‰ä¼šè¢«æˆåŠŸæŒ‚è½½ - ''' - ''' - - Public Class EntryInterface : Inherits Attribute - - Public ReadOnly Property InterfaceType As InterfaceTypes - - Sub New(Type As InterfaceTypes) - _InterfaceType = Type - End Sub - - Public Overrides Function ToString() As String - Return _InterfaceType.ToString - End Function - - Public Shared ReadOnly Property TypeInfo As Type = GetType(EntryInterface) - - End Class - - ''' - ''' The hybrids programming interface description.(æ··åˆç¼–程的接å£ç±»åž‹) - ''' - ''' - Public Enum InterfaceTypes - - ''' - ''' 有些简å•类型å¯èƒ½å¹¶ä¸éœ€è¦åˆå§‹åŒ–过程,所以这一个接å£çŽ°åœ¨æ˜¯å¯é€‰çš„ - ''' - ''' - EntryPointInit - ''' - ''' 接å£ç±»åž‹ï¼šPublic Function Evaluate(script As String) As Object - ''' - ''' - Evaluate - ''' - ''' Public Function SetValue(variableName As String, value As Object) As Boolean - ''' - ''' - SetValue - DataTransform - End Enum -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/HybridScripting/Interface/ScriptEntryPoint.vb b/Shoal.v2/Shoal.v2/Runtime/HybridScripting/Interface/ScriptEntryPoint.vb deleted file mode 100644 index 05493d706..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/HybridScripting/Interface/ScriptEntryPoint.vb +++ /dev/null @@ -1,28 +0,0 @@ -Imports System.ComponentModel -Imports System.Reflection - -Namespace Runtime.HybridsScripting - - ''' - ''' 与ShellScript进行混åˆç¼–程的脚本语言,必须è¦åœ¨API的命å空间之中实现这个自定义属性 - ''' - ''' æ¯ä¸€æ¬¡åˆ‡æ¢è„šæœ¬è¯­å¥çŽ¯å¢ƒä¹‹å‰å…ˆä½¿ç”¨!EntryNameæ¥è¿›è¡Œï¼Œä¹‹åŽç›´æŽ¥å¯ä»¥åªç”¨å·¦ç§»è¿ç®—符尽心计算求值 - ''' - - Public Class LanguageEntryPoint : Inherits DescriptionAttribute - - Public ReadOnly Property Language As String - - ''' - ''' 设置脚本的åç§° - ''' - ''' 脚本语言的åç§° - Sub New(Language As String, Optional Description As String = "") - Call MyBase.New(Description) - Me.Language = Language - End Sub - - Public Shared ReadOnly Property TypeInfo As System.Type = GetType(LanguageEntryPoint) - - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/HybridScripting/InteropAdapter.vb b/Shoal.v2/Shoal.v2/Runtime/HybridScripting/InteropAdapter.vb deleted file mode 100644 index 2e4658b06..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/HybridScripting/InteropAdapter.vb +++ /dev/null @@ -1,132 +0,0 @@ -Imports System.Reflection -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.SCOM - -Namespace Runtime.HybridsScripting - - ''' - ''' 和外部脚本进行编程计算 - ''' - ''' 外部脚本的脚本命令行 - ''' 返回所输入的脚本的文本行所执行的结果 - Delegate Function Evaluation(Line As String) As Object - ''' - ''' 从Shoal语言环境之中å‘外部脚本环境设置å˜é‡çš„值 - ''' - ''' 在外部脚本环境之中的å˜é‡çš„åç§° - ''' 值,需è¦è¿›è¡Œç±»åž‹è½¬æ¢çš„ - ''' æ˜¯å¦æˆåŠŸ - Delegate Function SetValue(var As String, value As Object) As Boolean - - Public Class InteropAdapter : Inherits RuntimeComponent - Implements IDisposable - - ''' - ''' å°å†™çš„é”®åç§° - ''' - Dim _Environments As SortedDictionary(Of String, EntryPoint) = New SortedDictionary(Of String, EntryPoint) - Dim _currentEnvironment As EntryPoint - - ''' - ''' Attach the hybrid scripting environment onto the script host. - ''' - ''' - ''' - Public Function RedirectStream(pointName As String) As Boolean - _currentEnvironment = _Environments(pointName.ToLower) - - Call $"Dynamic load the external ""{ _currentEnvironment.Language.Language}"" runtime enviroment entry point, this may taks a while...".__DEBUG_ECHO - Call _currentEnvironment.InitInvoke() - - If _currentEnvironment.ConservedString Is Nothing Then - Call "[WARNING] Empty string type convertor, data convertion maybe failure in the hybrid scripting!".__DEBUG_ECHO - End If - - Call $"Load entry point and connect to the ""{ _currentEnvironment.Language.Language}"" runtime enviroment successfully!".__DEBUG_ECHO - - Return True - End Function - - ''' - ''' 这个函数会自动调用进行格å¼åŒ–çš„ - ''' - ''' - ''' - Public Function Evaluate(script As String) As Object - script = ScriptEngine.Strings.Format(script) - Return _currentEnvironment.EvaluateInvoke(script) - End Function - - Sub New(ScriptEngine As ShoalShell.Runtime.ScriptEngine) - Call MyBase.New(ScriptEngine) - - If Not ScriptEngine.PMgrDb.HybridEnvironments.IsNullOrEmpty Then - For Each Environment In ScriptEngine.PMgrDb.HybridEnvironments - Call [Imports](Environment) - Next - End If - End Sub - - '''' - '''' - '''' - '''' è¿™ä¸ªå‚æ•°éœ€è¦å·²ç»åŽ»é™¤äº†ç¬¬ä¸€ä¸ª!æ ‡è¯†ç¬¦ï¼Œä¼šä¸´æ—¶åˆ‡æ¢æ··åˆç¼–程的脚本环境 - '''' 脚本对象å[ 傿•°åˆ—表] - '''' - '''' - 'Public Function Evaluate(envir As String, Cmdl As CommandLine.CommandLine) As Object - ' Dim ScriptText As String '= ScriptEngine.InternalEntryPointManager.GetHybridsScript(Cmdl.Name) - ' Dim Environment = _Environments(envir.ToLower) - - ' For Each var In Cmdl 'å…¶ä¸­çš„å‚æ•°çš„值为å˜é‡å¼•用,å‡è‹¥æ‰¾ä¸åˆ°å˜é‡å€¼ï¼Œåˆ™ä¸€å¾‹è½¬æ¢ä¸ºå­—符串 - ' Dim value As Object = ScriptEngine.MMUDevice.GetValue(var.Value) - - ' If value.GetType = GetType(String) Then '说明ä¸å­˜åœ¨ç›®æ ‡å˜é‡ï¼Œåˆ™çŽ°åœ¨éœ€è¦ä½¿ç”¨ç±»åž‹è½¬æ¢æ¥è½¬æ¢ç›®æ ‡å­—ç¬¦ä¸²å‚æ•°å€¼ - ' Dim type As Char = var.Key.Last - - ' If Environment.DataConvertors.ContainsKey(type) Then - ' value = Environment.Converts(type, InputHandler.ToString(value)) - ' Else - ' value = Environment.ReservedConvert(InputHandler.ToString(value)) 'å‡è‹¥æ‰¾ä¸åˆ°è½¬æ¢å™¨ï¼Œåˆ™é»˜è®¤è½¬æ¢ä¸ºå­—符串 - ' End If - ' End If - ' Call Environment.SetValueInvoke(var.Key, value) - ' Next - - ' ScriptText = ScriptEngine.Strings.Format(ScriptText) - - ' Return Environment.EvaluateInvoke(ScriptText) - 'End Function - - Public Function SetValue(variableName As String, value As Object) As Boolean - variableName = ScriptEngine.Strings.Format(variableName) - Return _currentEnvironment.SetValueInvoke(variableName, value) - End Function - - Public Function [Imports](Environment As SPM.Nodes.HybridEnvir) As Boolean - Dim assm As Assembly = Environment.LoadAssembly - - If assm Is Nothing Then - Call $"!!! Missing Module @ {Environment.Path.ToFileURL}..".__DEBUG_ECHO - Return False - End If - - Dim EntryPoint = EnvironmentParser.[Imports](assm.GetType(Environment.TypeId)) - - If EntryPoint.IsNull Then - Return False - End If - - Dim name As String = EntryPoint.Language.Language.ToLower - - If _Environments.ContainsKey(name) Then - Call $"Script entry point ""{name}"": { EntryPoint.TypeFullName}::{EntryPoint.Init.Name} is already mount in the shellscript".__DEBUG_ECHO - Call _Environments.Remove(name) - End If - - Call _Environments.Add(name, EntryPoint) - Call ScriptEngine.MMUDevice.MappingImports.Imports(EntryPoint.DeclaredAssemblyType) - - Return True - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/MMU/MMUDevice.vb b/Shoal.v2/Shoal.v2/Runtime/MMU/MMUDevice.vb deleted file mode 100644 index f94cb3df1..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/MMU/MMUDevice.vb +++ /dev/null @@ -1,342 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.SCOM - -Namespace Runtime.MMU - - ''' - ''' Memory Management Unit Device.(大å°å†™ä¸æ•感的,直接使用å³å¯) - ''' - Public Class MMUDevice : Inherits RuntimeComponent - - Implements IReadOnlyDictionary(Of String, IPageUnit) - - ''' - ''' 内存设备 - ''' - Protected Friend MMU_CHUNKS As MMU.IPageUnit() - Public ReadOnly Property HeapSize As Integer - Public ReadOnly Property Linker As Linker.Linker - - ''' - ''' 寄存器 - ''' - ReadOnly MTRR As SortedDictionary(Of String, MMU.Variable) = - New SortedDictionary(Of String, Variable) - ReadOnly SRAM As SortedDictionary(Of String, MMU.Variable) = - New SortedDictionary(Of String, Variable) - Protected Friend ReadOnly PageMapping As SortedDictionary(Of String, MMU.PageMapping.DataSourceModel) = - New SortedDictionary(Of String, PageMapping.DataSourceModel) - - ReadOnly __SYS_RESERVED As MMU.Variable - - Public ReadOnly Property ImportedConstants As KeyValuePair(Of String, Object)() - Get - Return (From var In SRAM - Select New KeyValuePair(Of String, Object)(var.Key, var.Value.Value)).ToArray - End Get - End Property - - Public ReadOnly Property Variables As KeyValuePair(Of String, Object)() - Get - Return (From var In Me.MTRR - Select New KeyValuePair(Of String, Object)(var.Key, var.Value.Value)).ToArray - End Get - End Property - - Public ReadOnly Property PageMappings As KeyValuePair(Of String, Object)() - Get - Return (From var In Me.PageMapping - Select New KeyValuePair(Of String, Object)(var.Key, var.Value.Value)).ToArray - End Get - End Property - - ''' - ''' The pointer address of this variable in the memory is always ZERO. - ''' (å†…å­˜ä¹‹ä¸­çš„åœ°å€æ€»æ˜¯ 0; 函数会写入返回数æ®åˆ°è¿™ä¸ªä¿ç•™å˜é‡ä¹‹ä¸­) - ''' - ''' - Public ReadOnly Property SystemReserved As MMU.Variable - Get - Return __SYS_RESERVED - End Get - End Property - - Public ReadOnly Property MappingImports As PageMapping.MappingImports - - Sub New(ScriptEngine As Runtime.ScriptEngine, ChunkSize As Integer) - Call MyBase.New(ScriptEngine) - - MappingImports = New PageMapping.MappingImports(Me) - Linker = New Linker.Linker(ScriptEngine) - MMU_CHUNKS = New MMU.Variable(ChunkSize - 1) {} - - __SYS_RESERVED = New Variable("$", "Any", Nothing, False) - Call Allocate(__SYS_RESERVED) - Call __importsConstantsInit() - End Sub - - ''' - ''' 导入系统åˆå§‹çš„é»˜è®¤å¸¸é‡ - ''' - Private Sub __importsConstantsInit() - Dim strType As String = GetType(String).FullName - - Call Me.ImportConstant("Null", New MMU.Variable.Any, GetType(MMU.Variable.Any).Name) - Call Me.ImportConstant("HOME", App.HOME, strType) - Call Me.ImportConstant("BIN", App.ExecutablePath, strType) - Call Me.ImportConstant("TEMP", My.Computer.FileSystem.SpecialDirectories.Temp, strType) - Call Me.ImportConstant("DESKTOP", My.Computer.FileSystem.SpecialDirectories.Desktop, strType) - Call Me.ImportConstant("MY_DOCUMENTS", My.Computer.FileSystem.SpecialDirectories.MyDocuments, strType) - Call Me.ImportConstant("APP_DATA", App.LocalData, strType) - Call Me.ImportConstant("PID", App.PID, GetType(Integer).FullName) - End Sub - - Public Sub Update(Addr As Long, value As Object) - PointTo(Addr).Value = value - End Sub - - Public Sub Update(Name As String, value As Object) - Dim var = Me(Name) - var.Value = value - End Sub - - Public Function Read(p As Long) As Object - Return PointTo(p).Value - End Function - - Public Function PointTo(Addr As Long) As MMU.IPageUnit - Dim var = MMU_CHUNKS(Addr) - If var Is Nothing Then '这个内存å—还没有被åˆå§‹åŒ–,说明这个指针指å‘äº†ä¸€ä¸ªæ— æ•ˆçš„å†…å­˜åœ°å€ - Throw New NullReferenceException($"Invalid Memory: pointer &{Addr} reference to null location!") - Else - Return var - End If - End Function - - ''' - ''' 目标内存对象ä¸å­˜åœ¨åˆ™ä¼šè¿”回-1指针值 - ''' - ''' - ''' 内存对象ä¸å­˜åœ¨çš„æ—¶å€™æ˜¯å¦è‡ªåŠ¨åˆ†é…内存空间 - ''' - Public Function [AddressOf](Name As String, autoAlloc As Boolean) As Long - Dim var = __getPageUnit(Name) - - If var Is Nothing Then - If autoAlloc Then - var = New MMU.Variable(Name, "Any", Nothing, False) - Call Me.MTRR.Add(Name.ToLower, var) - Call Allocate(var) - Else - Return -1 - End If - End If - - Return var.Address - End Function - - ''' - ''' - ''' - ''' 必须为å°å†™çš„ - ''' - Private Sub __addInternal(keyFind As String, ByRef var As MMU.IPageUnit) - Call Me.MTRR.Add(keyFind, var) - Call Allocate(var) - End Sub - - ''' - ''' 叏釿˜¯å¤§å°å†™æ•感的,但是å˜é‡å¤§å°å†™ä¸æ•感 - ''' - ''' ä¸éœ€è¦åŠ å‰å¯¼ç¬¦å· - ''' - ''' - ''' - Public Function ImportConstant(Name As String, value As Object, Type As String) As Boolean - Dim KeyFind As String = "&" & Name - - If Me.SRAM.ContainsKey(KeyFind) Then ' å·²ç»å­˜åœ¨ä¸€ä¸ªåŒå的常é‡ï¼Œåˆ™å°†æ–°å¯¼å…¥çš„叏釿›¿æ¢æŽ‰æ—§çš„å¸¸é‡ - Dim str As String - Try - str = value.ToString - Catch ex As Exception - str = "null" - End Try - - Call $"Const with name ""{Name}"" was overridden to new value ""{str}""!".__DEBUG_ECHO - Call Me.SRAM.Remove(KeyFind) - End If - - Dim [const] = New Variable(Name, Type, value, True) - - Call Me.SRAM.Add(KeyFind, [const]) - Call Allocate([const]) - - Return True - End Function - - ''' - ''' 函数会返回该新申请的å˜é‡çš„å†…å­˜ä¹‹ä¸­çš„åœ°å€ - ''' - ''' - ''' - ''' - ''' - Public Function InitLocals(Name As String, value As Object, Type As String) As Long - Dim KeyFind As String = "$" & Name.ToLower - - If Me.MTRR.ContainsKey(KeyFind) Then ' å·²ç»å­˜åœ¨ä¸€ä¸ªåŒåçš„å˜é‡äº†ï¼Œä¸å¯ä»¥å†æ·»åŠ äº† - Throw New Exception($"A variable with same name ""{Name}"" is already been declared!") - End If - - Dim var As New Variable(Name, Type, value, False) - Call __addInternal(KeyFind, var) - - Return var.Address - End Function - - ''' - ''' 为新的å˜é‡åˆ†é…新的内存区域 - ''' - ''' - Friend Sub Allocate(var As MMU.IPageUnit) - Call __increaseMemory() - MMU_CHUNKS(HeapSize) = var - var.Address = HeapSize - _HeapSize += 1 - End Sub - - Private Sub __increaseMemory() - If HeapSize < MMU_CHUNKS.Length Then - Return - End If - - Dim ChunkBuffer = New MMU.IPageUnit(HeapSize * 1.5) {} - Call Array.ConstrainedCopy(MMU_CHUNKS, Scan0, ChunkBuffer, Scan0, MMU_CHUNKS.Length) - Me.MMU_CHUNKS = ChunkBuffer - End Sub - - Public Function GetValue(Name As String) As Object - Return Me(Name).Value - End Function - - Public Sub WriteMemory(var As Interpreter.Parser.Tokens.LeftAssignedVariable, value As Object) - Dim varAddr = Linker.GetAddress(var) - Call ScriptEngine.MMUDevice.Update(varAddr, value) - End Sub - - Public Sub WriteMemory(var As String, value As Object) - Dim varAddr As Long = [AddressOf](var, True) - Call ScriptEngine.MMUDevice.Update(varAddr, value) - End Sub - - Public Function Exists(Name As String) As Boolean - Name = Name.ToLower - - If Me.MTRR.ContainsKey(Name) Then - Return True - End If - - If Me.SRAM.ContainsKey(Name) Then - Return True - End If - - If Me.PageMapping.ContainsKey(Name) Then - Return True - End If - - Return False - End Function - -#Region "Implements IReadOnlyDictionary(Of String, MMU.IPageUnit)" - - Public ReadOnly Property MTRRSize As Integer Implements IReadOnlyCollection(Of KeyValuePair(Of String, MMU.IPageUnit)).Count - Get - Return MTRR.Count - End Get - End Property - - Private Function __getPageUnit(hashKey As String) As MMU.IPageUnit - If String.IsNullOrEmpty(hashKey) OrElse String.Equals(hashKey, "$") Then - Return __SYS_RESERVED - End If - - If hashKey.First = "&" Then '叏釿˜¯å¤§å°å†™æ•感的 - If Me.SRAM.ContainsKey(hashKey) Then - Return Me.SRAM(hashKey) - Else - Throw New Exception($"Constant ""{hashKey}"" haven't been imports yet!") - End If - End If - - Dim keyFind = hashKey.ToLower 'å˜é‡æ˜¯å¤§å°å†™ä¸æ•感的 - - If Me.PageMapping.ContainsKey(keyFind) Then 'è¿™ä¸ªæ–¹æ³•ä¼šä¼˜å…ˆè¯»å–æ˜ å°„的内存 - Return Me.PageMapping(keyFind) - End If - - If Me.MTRR.ContainsKey(keyFind) Then - Return Me.MTRR(keyFind) - Else 'ä¸å­˜åœ¨åˆ™åˆ†é…新的内存 - Return Nothing - End If - End Function - - ''' - ''' 请ä¸è¦åˆ é™¤å‰é¢çš„å‰å¯¼ç¬¦å·ï¼Œè¿™ä¸ªæ–¹æ³•ä¼šä¼˜å…ˆè¯»å–æ˜ å°„的内存ä¸ï¼Œä½†æ˜¯æ›´æ–°çš„æ—¶å€™ä¼šä¸¤ä¸ªéƒ¨åˆ†éƒ½ä¼šæ›´æ–°æŽ‰ - ''' - ''' - ''' - Default Public ReadOnly Property GetPageUnit(hashKey As String) As MMU.IPageUnit Implements IReadOnlyDictionary(Of String, MMU.IPageUnit).Item - Get - Dim var = __getPageUnit(hashKey) - - If var Is Nothing Then 'ä¸å­˜åœ¨åˆ™åˆ†é…新的内存 - var = New MMU.Variable(hashKey, "Any", Nothing, False) - Call Me.MTRR.Add(hashKey.ToLower, var) - Call Allocate(var) - End If - - Return var - End Get - End Property - - Public ReadOnly Property Keys As IEnumerable(Of String) Implements IReadOnlyDictionary(Of String, MMU.IPageUnit).Keys - Get - Return MTRR.Keys - End Get - End Property - - Public ReadOnly Property Values As IEnumerable(Of MMU.IPageUnit) Implements IReadOnlyDictionary(Of String, MMU.IPageUnit).Values - Get - Return MTRR.Values - End Get - End Property - - Public Function ContainsKey(key As String) As Boolean Implements IReadOnlyDictionary(Of String, MMU.IPageUnit).ContainsKey - Return Me.MTRR.ContainsKey(key.ToLower) - End Function - - Public Function TryGetValue(key As String, ByRef value As MMU.IPageUnit) As Boolean Implements IReadOnlyDictionary(Of String, MMU.IPageUnit).TryGetValue - Return Me.MTRR.TryGetValue(key.ToLower, value) - End Function - -#Region "请注æ„,这里是é历整个内存模å—çš„" - - Public Iterator Function GetEnumerator() As IEnumerator(Of KeyValuePair(Of String, MMU.IPageUnit)) Implements IEnumerable(Of KeyValuePair(Of String, MMU.IPageUnit)).GetEnumerator - For i As Integer = 0 To Me.HeapSize - Dim var = Me.MMU_CHUNKS(i) - Yield New KeyValuePair(Of String, IPageUnit)(var.Name, var) - Next - End Function - - Private Iterator Function IEnumerable_GetEnumerator() As IEnumerator Implements IEnumerable.GetEnumerator - Yield GetEnumerator() - End Function -#End Region - -#End Region - - End Class -End Namespace - diff --git a/Shoal.v2/Shoal.v2/Runtime/MMU/PageMapping/DDM.vb b/Shoal.v2/Shoal.v2/Runtime/MMU/PageMapping/DDM.vb deleted file mode 100644 index 318440a0f..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/MMU/PageMapping/DDM.vb +++ /dev/null @@ -1,54 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter - -Namespace Runtime.MMU.PageMapping - - Public Class Field : Inherits DataSourceModel - Implements IPageUnit - - Dim BindingField As System.Reflection.FieldInfo - - Sub New(Target As System.Reflection.FieldInfo, Name As String) - Call MyBase.New(Name) - BindingField = Target - End Sub - - Public Overrides Function GetValue() As Object - Return BindingField.GetValue(Nothing) - End Function - - Public Overrides Sub SetValue(value As Object) - Call BindingField.SetValue(Nothing, value) - End Sub - - Public Overrides ReadOnly Property [TypeOf] As Type - Get - Return BindingField.FieldType - End Get - End Property - End Class - - Public Class [Property] : Inherits DataSourceModel - Implements IPageUnit - - Dim BindingProperty As System.Reflection.PropertyInfo - - Sub New(Target As System.Reflection.PropertyInfo, Name As String) - Call MyBase.New(Name) - BindingProperty = Target - End Sub - - Public Overrides Function GetValue() As Object - Return BindingProperty.GetValue(Nothing) - End Function - - Public Overrides Sub SetValue(value As Object) - Call BindingProperty.SetValue(Nothing, value) - End Sub - - Public Overrides ReadOnly Property [TypeOf] As Type - Get - Return BindingProperty.PropertyType - End Get - End Property - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/MMU/PageMapping/MappingImports.vb b/Shoal.v2/Shoal.v2/Runtime/MMU/PageMapping/MappingImports.vb deleted file mode 100644 index 9079c5542..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/MMU/PageMapping/MappingImports.vb +++ /dev/null @@ -1,110 +0,0 @@ -Imports Microsoft.VisualBasic.ComponentModel -Imports Microsoft.VisualBasic.ComponentModel.DataSourceModel.SchemaMaps -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter - -Namespace Runtime.MMU.PageMapping - - Public Class MappingImports - - ReadOnly MMUDevice As MMUDevice - - Sub New(MMUDevice As MMU.MMUDevice) - Me.MMUDevice = MMUDevice - End Sub - - Public Function [Imports]([Module] As System.Reflection.TypeInfo) As Integer - Dim DataSource As DataSourceModel() = - MappingImports.Imports([Module], False) - For Each Entry As DataSourceModel In DataSource - Call __imports(Entry) - Next - - Return DataSource.Length - End Function - - Private Sub __imports(Page As MMU.PageMapping.DataSourceModel) - Dim KeyFind As String = "$" & Page.Name.ToLower - Dim Handle As Long - - If MMUDevice.PageMapping.ContainsKey(KeyFind) Then ' å·²ç»å­˜åœ¨ä¸€ä¸ªåŒåçš„å˜é‡äº†ï¼Œåˆ™æ–°çš„ä¼šæ›¿æ¢æŽ‰æ—§çš„ - Handle = MMUDevice.PageMapping(KeyFind).Address - Call MMUDevice.PageMapping.Remove(KeyFind) - End If - - Call MMUDevice.PageMapping.Add(KeyFind, Page) - - If Handle > 0 Then 'æ›´æ–°å†…å­˜åŒºå— - Page.Address = Handle - MMUDevice.MMU_CHUNKS(Handle) = Page - Else - Call MMUDevice.Allocate(Page) - End If - End Sub - -#Region "DataSource Mapping Imports" - - ''' - ''' åªä¼šç»‘定éžå®žä¾‹çš„属性或者域 - ''' - ''' - ''' - ''' - Public Shared Function [Imports](Assembly As System.Reflection.TypeInfo, Explicit As Boolean) As DataSourceModel() - Return If(Explicit, __importsExplicit(Assembly), __imports(Assembly)) - End Function - - ''' - ''' åªä¼šç»‘定éžå®žä¾‹çš„属性或者域 - ''' - ''' - ''' - ''' - Private Shared Function __imports(Assembly As System.Reflection.TypeInfo) As DataSourceModel() - Dim MappingEntry = GetType(DataFrameColumnAttribute) - Dim Fields As Field() = (From p As System.Reflection.FieldInfo - In Assembly.GetFields(System.Reflection.BindingFlags.NonPublic Or - System.Reflection.BindingFlags.Public Or - System.Reflection.BindingFlags.Static) - Let attrs As Object() = p.GetCustomAttributes(MappingEntry, inherit:=True) - Let Name As String = __getName(p.Name, attrs) - Select New Field(p, Name)).ToArray - Dim [Property] As [Property]() = (From p As System.Reflection.PropertyInfo - In Assembly.GetProperties(System.Reflection.BindingFlags.NonPublic Or - System.Reflection.BindingFlags.Public Or - System.Reflection.BindingFlags.Static) - Let attrs As Object() = p.GetCustomAttributes(MappingEntry, inherit:=True) - Let Name As String = __getName(p.Name, attrs) - Select New [Property](p, Name)).ToArray - Return Fields.Cast(Of DataSourceModel).Join([Property]).ToArray - End Function - - Private Shared Function __importsExplicit(Assembly As System.Reflection.TypeInfo) As DataSourceModel() - Dim MappingEntry = GetType(DataFrameColumnAttribute) - Dim Fields As Field() = (From p In Assembly.GetFields(System.Reflection.BindingFlags.NonPublic Or - System.Reflection.BindingFlags.Public Or - System.Reflection.BindingFlags.Static) - Let attrs As Object() = p.GetCustomAttributes(MappingEntry, inherit:=True) - Where Not attrs.IsNullOrEmpty - Let Name = __getName(p.Name, attrs) - Select New Field(p, Name)).ToArray - Dim [Property] As [Property]() = (From p In Assembly.GetProperties(System.Reflection.BindingFlags.NonPublic Or - System.Reflection.BindingFlags.Public Or - System.Reflection.BindingFlags.Static) - Let attrs As Object() = p.GetCustomAttributes(MappingEntry, inherit:=True) - Where Not attrs.IsNullOrEmpty - Let Name = __getName(p.Name, attrs) - Select New [Property](p, Name)) - Return Fields.Cast(Of DataSourceModel).Join([Property]).ToArray - End Function - - Private Shared Function __getName(pName As String, attrs As Object()) As String - If attrs.IsNullOrEmpty Then Return pName - - Dim datEntry = DirectCast(attrs(Scan0), DataFrameColumnAttribute) - Dim Name = If(String.IsNullOrEmpty(datEntry.Name), pName, datEntry.Name) - Return Name - End Function -#End Region - - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/MMU/PageMapping/PageMapping.vb b/Shoal.v2/Shoal.v2/Runtime/MMU/PageMapping/PageMapping.vb deleted file mode 100644 index 4b79c31c6..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/MMU/PageMapping/PageMapping.vb +++ /dev/null @@ -1,57 +0,0 @@ -Imports Microsoft.VisualBasic.ComponentModel -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter -Imports Microsoft.VisualBasic.ComponentModel.DataSourceModel.DataFramework - -Namespace Runtime.MMU.PageMapping - - Public MustInherit Class DataSourceModel : Inherits MMU.Variable - Implements IPageUnit - - Public MustOverride Overrides ReadOnly Property [TypeOf] As Type Implements IPageUnit.TypeOf - - Public Overrides ReadOnly Property PageType As IPAGE_TYPES Implements IPageUnit.PageType - Get - Return IPAGE_TYPES.PageMapping - End Get - End Property - - Public Overrides Property Value As Object Implements IPageUnit.Value - Get - Return GetValue() - End Get - Set(value As Object) - Call SetValue(value) - End Set - End Property - - Public Overrides ReadOnly Property [ReadOnly] As Boolean Implements IPageUnit.ReadOnly - Get - Return False - End Get - End Property - -#Region "Public Property" - - Public MustOverride Sub SetValue(value As Object) - Public MustOverride Function GetValue() As Object -#End Region - - Sub New(Name As String) - Me._Name = Name - End Sub - - Public Overrides Function ToString() As String - Dim o As Object = GetValue() - Dim value As String = If(o Is Nothing, "&NULL", o.ToString) - Return $"{Name} = {value} As {[TypeOf].FullName}" - End Function - - Public Function Convertable(sourceType As Type) As Boolean - Dim convertType As Type = Me.TypeOf - Dim YON As Boolean = - ToStrings.ContainsKey(convertType) AndAlso - ToStrings.ContainsKey(sourceType) - Return YON - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/MMU/PageUnit.vb b/Shoal.v2/Shoal.v2/Runtime/MMU/PageUnit.vb deleted file mode 100644 index 75d92a467..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/MMU/PageUnit.vb +++ /dev/null @@ -1,80 +0,0 @@ -Imports System.Text -Imports Microsoft.VisualBasic.ComponentModel -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter - -Namespace Runtime.MMU - - Public Interface IPageUnit : Inherits IAddressHandle - - ReadOnly Property PageType As IPAGE_TYPES - ReadOnly Property Name As String - Property Value As Object - ReadOnly Property Type As String - ReadOnly Property [ReadOnly] As Boolean - ''' - ''' 在使用å˜é‡ç”³æ˜Žè¯­å¥çš„æ—¶å€™çš„æ³¨é‡Šä¿¡æ¯ - ''' - ''' - Property [REM] As String - ''' - ''' 得到å˜é‡çš„值的当å‰çš„æ•°æ®ç±»åž‹ - ''' - ''' - ReadOnly Property [TypeOf] As Type - ''' - ''' è¯¦ç»†ä¿¡æ¯ - ''' - ''' - Function View() As String - End Interface - - Public Enum IPAGE_TYPES - PageMapping - ''' - ''' Variable - ''' - MMU - ''' - ''' Constant - ''' - SMMU - End Enum - - Public Module PageUnitView - - ''' - ''' è¯¦ç»†ä¿¡æ¯ - ''' - ''' - Public Function View(PageUnit As MMU.IPageUnit) As String - Dim sbr As StringBuilder = New StringBuilder(1024) - - Call sbr.AppendLine($"{If(PageUnit.[ReadOnly], "[ReadOnly] ", "")}({NameOf(PageUnit.Address)}-> &{PageUnit.Address})") - Call sbr.AppendLine($"{NameOf(PageUnit.Name)}:= {PageUnit.Name}{vbTab}{vbTab}{PageUnit.[REM]}") - Call sbr.AppendLine($"{NameOf(PageUnit.Type)}:= {PageUnit.Type}") - Call sbr.AppendLine() - - If PageUnit.Value() Is Nothing Then - Call sbr.AppendLine(" = null") - Return sbr.ToString - End If - - Dim type As Type = PageUnit.Value.GetType - Dim array As Object() - - If System.Array.IndexOf(type.GetInterfaces, GetType(System.Collections.IEnumerable)) > -1 Then - array = InputHandler.CastArray(Of Object)(PageUnit.Value) - Else - array = {PageUnit.Value()} - End If - - Call sbr.AppendLine(" =") - - For i As Integer = 0 To array.Length - 1 - Call sbr.AppendLine($" [{i}] { InputHandler.ToString(array(i))}") - Next - - Return sbr.ToString - End Function - End Module -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/MMU/Strings.vb b/Shoal.v2/Shoal.v2/Runtime/MMU/Strings.vb deleted file mode 100644 index e5aa718e2..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/MMU/Strings.vb +++ /dev/null @@ -1,79 +0,0 @@ -Imports System.Text -Imports System.Text.RegularExpressions -Imports Microsoft.VisualBasic.Scripting.InputHandler -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.SCOM -Imports Variable = System.Collections.Generic.KeyValuePair(Of String, Object) - -Namespace Runtime.MMU - - ''' - ''' 字符串æœåŠ¡ - ''' - Public Class Strings : Inherits RuntimeComponent - - Sub New(ScriptEngine As ScriptEngine) - Call MyBase.New(ScriptEngine) - End Sub - - Const Variable As String = "(^|\\)?\$[^$^\\]+" - Const Constant As String = "(^|\\)?&[^&^\\]+" - - ''' - ''' 叏釿˜¯åŒºåˆ†å¤§å°å†™çš„ - ''' - ''' - ''' - Public Function Format(Expr As String) As String - Dim matches As String() = Regex.Matches(Expr, Variable, RegexOptions.Multiline).ToArray - Dim exprBuilder As StringBuilder = New StringBuilder(Expr) - - For Each var As KeyValuePair(Of String, Object) In (From varRef In MyBase.ScriptEngine.MMUDevice.ImportedConstants - Select varRef - Order By VisualBasic.Strings.Len(varRef.Key) Descending).ToArray - Call exprBuilder.Replace(var.Key, InputHandler.ToString(var.Value)) - Next - - If matches.IsNullOrEmpty Then '没有任何匹é…ï¼Œè¯´æ˜Žä»…ä»…æ˜¯ä¸€ä¸ªå­—ç¬¦ä¸²å¸¸é‡ - Return Expr - End If - - Dim OriginalTokens = (From i As Integer In matches.Sequence - Let strValue As String = matches(i) - Where strValue.First = "\"c - Select i, strValue).ToArray - Dim EscapeTokens As List(Of KeyValuePair(Of String, String)) = New List(Of KeyValuePair(Of String, String)) - - For Each orinlToken In OriginalTokens '先处ç†éœ€è¦è¢«è½¬ä¹‰çš„部分 - Dim ESC As String = orinlToken.i & "___//-$" - Call EscapeTokens.Add(New KeyValuePair(Of String, String)(ESC, orinlToken.strValue)) - Call exprBuilder.Replace(orinlToken.strValue, ESC) - Next - - Dim ReplacedTokens = (From m As String In matches Where m.First <> "\"c Select m).ToArray - Dim vars = ScriptEngine.MMUDevice.Variables - - For Each token As String In ReplacedTokens - Call __replaceString(token, exprBuilder, vars) - Next - - For Each ESC In EscapeTokens '替æ¢å›žè½¬ä¹‰å­—符 - Call exprBuilder.Replace(ESC.Key, Mid(ESC.Value, 2)) - Next - - Return exprBuilder.ToString - End Function - - Private Sub __replaceString(Token As String, ByRef ExprBuilder As StringBuilder, varList As KeyValuePair(Of String, Object)()) - Dim Variable = (From varEntry In varList - Where InStr(Token, varEntry.Key, CompareMethod.Text) = 1 - Select varEntry - Order By Len(varEntry.Key) Descending).ToArray - - If Variable.IsNullOrEmpty Then Return - - Dim var = Variable(Scan0) - Token = Mid(Token, 1, Len(var.Key)) 'ä¸»è¦æ˜¯å› ä¸ºå¤§å°å†™çš„问题,所以需è¦åŽŸå§‹çš„ç­‰é•¿å­—ç¬¦ä¸²æ¥è¿›è¡Œæ›¿æ¢ - Call ExprBuilder.Replace(Token, InputHandler.ToString(var.Value)) - End Sub - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/MMU/Variable.vb b/Shoal.v2/Shoal.v2/Runtime/MMU/Variable.vb deleted file mode 100644 index 5614f3634..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/MMU/Variable.vb +++ /dev/null @@ -1,136 +0,0 @@ -Imports System.Text -Imports Microsoft.VisualBasic.ComponentModel - -Namespace Runtime.MMU - - Public Class Variable - Implements IPageUnit, IAddressHandle - - ''' - ''' 内存之中的ä½ç½®æŒ‡é’ˆï¼Œä½¿ç”¨ *p æ¥è¡¨ç¤º - ''' - ''' - Public Property Address As Integer Implements IAddressHandle.Address - Public Overridable ReadOnly Property Name As String Implements IPageUnit.Name - Get - Return _Name - End Get - End Property - - Public Overridable Property Value As Object Implements IPageUnit.Value - Get - Return _value - End Get - Set(value As Object) - If [ReadOnly] Then - Throw New Exception($"Constant {Name} can not be re-assigned value!") - Else - _value = value - End If - End Set - End Property - - Public ReadOnly Property Type As String Implements IPageUnit.Type - Public Overridable ReadOnly Property [ReadOnly] As Boolean = False Implements IPageUnit.ReadOnly - ''' - ''' 在使用å˜é‡ç”³æ˜Žè¯­å¥çš„æ—¶å€™çš„æ³¨é‡Šä¿¡æ¯ - ''' - ''' - Public Property [REM] As String Implements IPageUnit.[REM] - - Dim _value As Object - Protected _Name As String - - ''' - ''' 得到å˜é‡çš„值的当å‰çš„æ•°æ®ç±»åž‹ - ''' - ''' - Public Overridable ReadOnly Property [TypeOf] As Type Implements IPageUnit.TypeOf - Get - If _value Is Nothing Then - Return InputHandler.GetType(Type, True) - Else - Return _value.GetType - End If - End Get - End Property - - Public Overridable ReadOnly Property PageType As IPAGE_TYPES Implements IPageUnit.PageType - Get - Return If([ReadOnly], IPAGE_TYPES.SMMU, IPAGE_TYPES.MMU) - End Get - End Property - - ''' - ''' For Serialization - ''' - Sub New() - End Sub - - ''' - ''' - ''' - ''' - ''' - ''' 是å¦ä¸ºå¸¸é‡ - Sub New(Name As String, Type As String, value As Object, [ReadOnly] As Boolean) - Me._Name = Name - Me.Type = Type - Me.Value = value - Me.ReadOnly = [ReadOnly] - End Sub - - Public Overrides Function ToString() As String - Dim value As String = "" - Try - value = Me.Value.ToString - Catch ex As Exception - value = "null" - End Try - Return $"{If([ReadOnly], "[ReadOnly] ", "")}({NameOf(Address)}-> &{Address}) ""{Name}"" As {Type} = {value}" - End Function - -#Region "IDisposable Support" - Private disposedValue As Boolean ' To detect redundant calls - - ' IDisposable - Protected Overridable Sub Dispose(disposing As Boolean) - If Not Me.disposedValue Then - If disposing Then - ' TODO: dispose managed state (managed objects). - End If - - ' TODO: free unmanaged resources (unmanaged objects) and override Finalize() below. - ' TODO: set large fields to null. - End If - Me.disposedValue = True - End Sub - - ' TODO: override Finalize() only if Dispose(disposing As Boolean) above has code to free unmanaged resources. - 'Protected Overrides Sub Finalize() - ' ' Do not change this code. Put cleanup code in Dispose(disposing As Boolean) above. - ' Dispose(False) - ' MyBase.Finalize() - 'End Sub - - ' This code added by Visual Basic to correctly implement the disposable pattern. - Public Sub Dispose() Implements IDisposable.Dispose - ' Do not change this code. Put cleanup code in Dispose(disposing As Boolean) above. - Dispose(True) - ' TODO: uncomment the following line if Finalize() is overridden above. - ' GC.SuppressFinalize(Me) - End Sub -#End Region - - Public Function View() As String Implements IPageUnit.View - Return MMU.PageUnitView.View(Me) - End Function - - Public Class Any - - Public Overrides Function ToString() As String - Return "Any Data Type" - End Function - End Class - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/RuntimeComponent.vb b/Shoal.v2/Shoal.v2/Runtime/RuntimeComponent.vb deleted file mode 100644 index 46227bf25..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/RuntimeComponent.vb +++ /dev/null @@ -1,57 +0,0 @@ -Namespace Runtime.SCOM - - ''' - ''' This type of the class object consist of the shoal shell scripting engine. - ''' - ''' - Public MustInherit Class RuntimeComponent : Implements System.IDisposable - - ''' - ''' Script engine.(脚本引擎) - ''' - ''' - ''' - ''' - Public Overridable ReadOnly Property ScriptEngine As ScriptEngine - - Sub New(ScriptEngine As ShoalShell.Runtime.ScriptEngine) - Me.ScriptEngine = ScriptEngine - End Sub - - Public Overrides Function ToString() As String - Return ScriptEngine.ToString & "::" & Me.GetType.FullName - End Function - -#Region "IDisposable Support" - Protected disposedValue As Boolean ' To detect redundant calls - - ' IDisposable - Protected Overridable Sub Dispose(disposing As Boolean) - If Not Me.disposedValue Then - If disposing Then - ' TODO: dispose managed state (managed objects). - End If - - ' TODO: free unmanaged resources (unmanaged objects) and override Finalize() below. - ' TODO: set large fields to null. - End If - Me.disposedValue = True - End Sub - - ' TODO: override Finalize() only if Dispose(disposing As Boolean) above has code to free unmanaged resources. - 'Protected Overrides Sub Finalize() - ' ' Do not change this code. Put cleanup code in Dispose(disposing As Boolean) above. - ' Dispose(False) - ' MyBase.Finalize() - 'End Sub - - ' This code added by Visual Basic to correctly implement the disposable pattern. - Public Sub Dispose() Implements IDisposable.Dispose - ' Do not change this code. Put cleanup code in Dispose(disposing As Boolean) above. - Dispose(True) - ' TODO: uncomment the following line if Finalize() is overridden above. - ' GC.SuppressFinalize(Me) - End Sub -#End Region - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/RuntimeEnvironment.vb b/Shoal.v2/Shoal.v2/Runtime/RuntimeEnvironment.vb deleted file mode 100644 index f9f8f673a..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/RuntimeEnvironment.vb +++ /dev/null @@ -1,49 +0,0 @@ -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Configuration - -Namespace Runtime.SCOM - - Public Module RuntimeEnvironment - - Public Const SCAN_PLUGINS_ARGVS As String = "-scan.plugins -dir ""{0}""" - - ''' - ''' -scan.plugins -dir <dir>[ -ext *.*/*.dll/*.exe/*.lib /top_only /clean] - ''' - ''' - ''' - - Public Function ScanPlugins(args As CommandLine.CommandLine) As Integer - Dim Dir As String = args("-dir"), Ext As String = args("-ext") - Ext = If(String.IsNullOrEmpty(Ext), "*.dll;*.exe;*.lib", Ext) - Dim ExtList As String() = Ext.Split(";"c) - Dim [option] = If(args.GetBoolean("/recursive") = False, - FileIO.SearchOption.SearchTopLevelOnly, - FileIO.SearchOption.SearchAllSubDirectories) - Dim FilesForScan = FileIO.FileSystem.GetFiles(Dir, [option], ExtList) - - If args.GetBoolean("/clean") Then - Try - Call FileIO.FileSystem.DeleteFile(Config.LoadDefault.GetRegistryFile) - Catch ex As Exception - - End Try - End If - - Dim Db As Microsoft.VisualBasic.Scripting.ShoalShell.SPM.PackageModuleDb = - Microsoft.VisualBasic.Scripting.ShoalShell.SPM.PackageModuleDb.Load(Config.LoadDefault.GetRegistryFile) - - Using SPM As New Scripting.ShoalShell.SPM.ShoalPackageMgr(Db) - For Each File As String In FilesForScan - Call SPM.Imports(File) - Next - - Call SPM.UpdateDb() - End Using - - Return 0 - End Function - End Module -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/ScriptEngine.vb b/Shoal.v2/Shoal.v2/Runtime/ScriptEngine.vb deleted file mode 100644 index 1ea089315..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/ScriptEngine.vb +++ /dev/null @@ -1,165 +0,0 @@ -Imports System.ComponentModel -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Configuration -Imports Microsoft.VisualBasic.Scripting.ShoalShell.HTML -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.LDM.Expressions -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.MMU -Imports Microsoft.VisualBasic.Linq - -Namespace Runtime - - ''' - ''' Shoal Shell script Engine, you can using this object to embedded a script engine into - ''' your application or using this script engine as a powerfully debugging tool. - ''' Try using object to dynamics programming in your .NET program. - ''' - - Public Class ScriptEngine : Inherits SCOM.RuntimeComponent - - ''' - ''' Shoal Shell memory management device. - ''' - ''' - Public ReadOnly Property MMUDevice As MMU.MMUDevice - Public ReadOnly Property Interpreter As Interpreter.Interpreter - Public ReadOnly Property PMgrDb As SPM.PackageModuleDb - Public ReadOnly Property WikiEngine As HTML.Wiki - - Public Function GetHelpInfo(obj As String, ShowManual As Boolean) As String() - Return WikiEngine.WikiSearchView(obj) - End Function - - Public Overrides ReadOnly Property ScriptEngine As ScriptEngine - Get - Return Me - End Get - End Property - - ''' - ''' String interpolated services.(字符串æœåŠ¡) - ''' - ''' - Public ReadOnly Property Strings As Runtime.MMU.Strings - Public ReadOnly Property ExecuteModel As ExecuteModel - - Public ReadOnly Property TopOfStack As Object - Get - Return MMUDevice.SystemReserved.Value - End Get - End Property - - Public ReadOnly Property ImportsAPI As String() - Get - Return Interpreter.EPMDevice.ImportedAPI.ToArray(Function(api) api.Value.Name) - End Get - End Property - - Public ReadOnly Property Config As Config - - ''' - ''' Create the Shoal instance using the default configuration file: . - ''' (采用默认的é…ç½®æ–‡ä»¶æ•°æ®æ¥åˆå§‹åŒ–脚本引擎) - ''' - Sub New() - Call Me.New(Config.LoadDefault) - End Sub - - Sub New(Config As Config) - Call MyBase.New(Nothing) - - Me.Config = Config - PMgrDb = ShoalShell.SPM.PackageModuleDb.Load(Config.GetRegistryFile) - Dim SPM = New SPM.ShoalPackageMgr(PMgrDb) - - ExecuteModel = New ExecuteModel(Me) - MMUDevice = New MMU.MMUDevice(Me, Config.GetInitHeapSize) - Interpreter = New Interpreter.Interpreter(Me, SPM) - Strings = New Runtime.MMU.Strings(Me) - WikiEngine = New Wiki(Me) - - Call Interpreter.EPMDevice.AnonymousDelegate.CdTemp() - Call [Imports](Of ShoalShell.Configuration.Configuration)(New ShoalShell.Configuration.Configuration(Me)) - End Sub - - ''' - ''' Evaluate the script line which is user input from the terminal. - ''' (å¤„ç†æ¥è‡ªäºŽç»ˆç«¯è¾“入的一行脚本代ç ) - ''' - ''' User input from the terminal. - ''' - Public Function Exec(Script As String) As Object - Dim Expr As PrimaryExpression = - ShoalShell.Interpreter.Interpreter.InternalExpressionParser(Script) - - If Expr.IsNonExecuteCode = True Then Return Nothing - -#Const DEBUG_ENABLE = 0 - -#If DEBUG_ENABLE Then - Return __execInner(Expr) -#Else - Try - Return __execInner(Expr) - Catch ex As Exception - ex = New Exception(vbCrLf & vbCrLf & - $" ({Script.GetHashCode}::ERROR_LINE) ==> "" {Script} """ & - vbCrLf & vbCrLf, ex) - Call ex.PrintException - Call App.LogException(ex) - Return Nothing - End Try -#End If - End Function - - Private Function __execInner(Expr As PrimaryExpression) As Object - Dim value As Object = ExecuteModel.Exec(Expr) '从终端输入的脚本需è¦é¢å¤–çš„é”™è¯¯å¤„ç†æ¥é¿å…崩溃 - Return value - End Function - - ''' - ''' Evaluate script which is on a specific file system location: . - ''' (å¤„ç†æ¥è‡ªäºŽæ–‡ä»¶ä¹‹ä¸­çš„脚本代ç ) - ''' - ''' The file path of the script file. - ''' - Public Function Source(path As String) As Object - Dim Pager As Interpreter.LDM.SyntaxModel = Interpreter.ParseFile(path) - Dim value As Object = - New Runtime.FSMMachine(Me, Pager).Execute - Return value - End Function - - Public Function GetValue(Name As String) As Object - Return MMUDevice(Name).Value - End Function - - Public Function [TypeOf](Name As String) As Type - Return MMUDevice(Name).TypeOf - End Function - - Public Overrides Function ToString() As String - Return MMUDevice.HeapSize - End Function - - Public Function [Imports](type As Type) As Boolean - Return Me.Interpreter.EPMDevice.Imports(type) - End Function - - Public Function [Imports](Of T As Class)(obj As T) As Boolean - Try - Call Interpreter.EPMDevice.ImportsInstance(Of T)(obj) - Catch ex As Exception - Call App.LogException(ex, $"{NameOf(ScriptEngine)}::{NameOf(Runtime.ScriptEngine.Imports)}") - Return False - End Try - - Return True - End Function - - Protected Overrides Sub Dispose(disposing As Boolean) - Call Interpreter.Dispose() - Call Me.Config.Save() - Call MyBase.Dispose(disposing) - End Sub - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/StatusMachine/ExecuteModel.vb b/Shoal.v2/Shoal.v2/Runtime/StatusMachine/ExecuteModel.vb deleted file mode 100644 index 46b092dea..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/StatusMachine/ExecuteModel.vb +++ /dev/null @@ -1,813 +0,0 @@ -Imports System.Text -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports Microsoft.VisualBasic.FileIO.FileSystem -Imports Microsoft.VisualBasic.Linq.Extensions -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.LDM.Expressions -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Linker.APIHandler -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Linker.APIHandler.Alignment -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Exceptions -Imports arg = System.Collections.Generic.KeyValuePair(Of String, Object) - -Namespace Runtime - - ''' - ''' æ‰§è¡Œä¾æ®è„šæœ¬è¯­å¥ - ''' - Public Class ExecuteModel : Inherits Runtime.SCOM.RuntimeComponent - - ReadOnly __Exechash As SortedDictionary(Of Interpreter.LDM.Expressions.ExpressionTypes, ExecuteModel.Execute) = - New SortedDictionary(Of Interpreter.LDM.Expressions.ExpressionTypes, Execute) From { - {Interpreter.LDM.Expressions.ExpressionTypes.Die, AddressOf Die}, - {Interpreter.LDM.Expressions.ExpressionTypes.DoUntil, AddressOf DoUntil}, - {Interpreter.LDM.Expressions.ExpressionTypes.DoWhile, AddressOf DoWhile}, - {Interpreter.LDM.Expressions.ExpressionTypes.DynamicsExpression, AddressOf DynamicsExpression}, - {Interpreter.LDM.Expressions.ExpressionTypes.Else, AddressOf [Else]}, - {Interpreter.LDM.Expressions.ExpressionTypes.ElseIf, AddressOf [ElseIf]}, - {Interpreter.LDM.Expressions.ExpressionTypes.ForLoop, AddressOf ForLoop}, - {Interpreter.LDM.Expressions.ExpressionTypes.FunctionCalls, AddressOf FunctionCalls}, - {Interpreter.LDM.Expressions.ExpressionTypes.HashTable, AddressOf Hashtable}, - {Interpreter.LDM.Expressions.ExpressionTypes.HybirdsScriptPush, AddressOf HybirdsScriptPush}, - {Interpreter.LDM.Expressions.ExpressionTypes.HybridsScript, AddressOf HybridsScript}, - {Interpreter.LDM.Expressions.ExpressionTypes.If, AddressOf [If]}, - {Interpreter.LDM.Expressions.ExpressionTypes.Imports, AddressOf [Imports]}, - {Interpreter.LDM.Expressions.ExpressionTypes.Include, AddressOf Include}, - {Interpreter.LDM.Expressions.ExpressionTypes.Library, AddressOf Library}, - {Interpreter.LDM.Expressions.ExpressionTypes.OutDeviceRef, AddressOf OutDeviceRef}, - {Interpreter.LDM.Expressions.ExpressionTypes.VariableDeclaration, AddressOf VariableDeclaration}, - {Interpreter.LDM.Expressions.ExpressionTypes.FileIO, AddressOf FileIO}, - {Interpreter.LDM.Expressions.ExpressionTypes.DynamicsCast, AddressOf DynamicsCast}, - {Interpreter.LDM.Expressions.ExpressionTypes.CollectionOpr, AddressOf CollectionOpr}, - {Interpreter.LDM.Expressions.ExpressionTypes.Memory, AddressOf Memory}, - {Interpreter.LDM.Expressions.ExpressionTypes.Delegate, AddressOf [Delegate]}, - {Interpreter.LDM.Expressions.ExpressionTypes.CD, AddressOf Cd}, - {Interpreter.LDM.Expressions.ExpressionTypes.Wiki, AddressOf Wiki}, - {Interpreter.LDM.Expressions.ExpressionTypes.Source, AddressOf Source}, - {Interpreter.LDM.Expressions.ExpressionTypes.RedirectStream, AddressOf RedirectStream} - } - - Public ReadOnly Property ArgumentsLinker As Interpreter.Linker.APIHandler.Arguments - Public ReadOnly Property IODevice As Runtime.DeviceDriver.IODeviceDriver - Public ReadOnly Property DynamicsHwnd As Runtime.DeviceDriver.DynamicsCast - Public ReadOnly Property OutputDevice As Runtime.DeviceDriver.OutputDeviceDriver - Public ReadOnly Property Stack As Stack(Of Runtime.Stack) = New Stack(Of Stack) - - Sub New(ScriptEngine As ShoalShell.Runtime.ScriptEngine) - Call MyBase.New(ScriptEngine) - - _ArgumentsLinker = New Arguments(ScriptEngine) - - DynamicsHwnd = New DeviceDriver.DynamicsCast(ScriptEngine) - OutputDevice = New DeviceDriver.OutputDeviceDriver(ScriptEngine) - IODevice = New DeviceDriver.IODeviceDriver(ScriptEngine) - End Sub - - ''' - ''' ShoalShell evaluation. - ''' - ''' - ''' - Public Delegate Function Execute(Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - - ''' - ''' Evaluate the Shoal Language DataModel and returns the script value. - ''' (出于性能方é¢çš„考虑,这个执行函数是没有进行任何错误处ç†çš„) - ''' - ''' - ''' - Public Function Exec(Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Execute = Me.__Exechash(Expression.ExprTypeID) - Dim value = Execute(Expression) - Return value - End Function - - Public Function [Imports](Type As Type) As Boolean - Try - Call IODevice.ImportsHandler(Type) - Call DynamicsHwnd.ImportsHandler(Type) - Call OutputDevice.ImportsHandler(Type) - - Return True - Catch ex As Exception - Return Conversion.CTypeDynamic(Of Boolean)(App.LogException(ex, NameOf(ExecuteModel) & "::" & NameOf([Imports]))) - End Try - End Function - -#Region "Language Syntax" - - Public Function RedirectStream(Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Interpreter.LDM.Expressions.HybridScript.RedirectStream) - Return ScriptEngine.Interpreter.EPMDevice.HybridAdapter.RedirectStream(Expr.EntryPoint) - End Function - - Public Function Source(Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Interpreter.LDM.Expressions.Source) - Dim args As KeyValuePair(Of String, Object)() - - If Expr.args.IsNullOrEmpty Then - args = New KeyValuePair(Of String, Object)() {} - Else - args = (From obj In Expr.args - Select New KeyValuePair(Of String, Object)(obj.Key, Exec(obj.Value.Expression))).ToArray - End If - - Dim path As String = ScriptEngine.Strings.Format(InputHandler.ToString(Exec(Expr.Path.Expression))) - Dim value As Object = InternalExtension.Source(path, args) - Return value - End Function - - Public Function CollectionOpr(Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Interpreter.LDM.Expressions.CollectionOpr) - Dim Type As Type = InputHandler.GetType(Expr.Type, True) - Dim ArrayValue = (From obj In Expr.Array Select Microsoft.VisualBasic.Conversion.CTypeDynamic(Exec(obj.Expression), Type)).ToArray - Dim Array = If(GetType(Object).Equals(Type), ArrayValue, [DirectCast](ArrayValue, Type)) - - If Expr.DeclareNew Then - Dim addr = ScriptEngine.MMUDevice.InitLocals(Expr.InitLeft.GetTokenValue, Array, Expr.Type) - ScriptEngine.MMUDevice.PointTo(addr).[REM] = Expr.Comments - Else - Call ScriptEngine.MMUDevice.WriteMemory(Expr.InitLeft, Array) - End If - - Return Array - End Function - - ''' - ''' 在入å£ç‚¹ç®¡ç†å™¨ä¹‹ä¸­ç”Ÿæˆä¸€ä¸ªåŒ¿å函数 - ''' - ''' - ''' - Public Function [Delegate](Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Interpreter.LDM.Expressions.Delegate) - Call ScriptEngine.Interpreter.EPMDevice.AnonymousDelegate.Declare(Expr.FuncPointer, Expr.FuncExpr) - Return Expr.FuncExpr - End Function - - Public Function Die(Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Interpreter.LDM.Expressions.Die) - Dim Trigger As Object = Exec(Expr.When.Expression) - - If Microsoft.VisualBasic.Conversion.CTypeDynamic(Of Boolean)(Trigger) Then - Throw New RuntimeException(Expr.ExceptionMessage, ScriptEngine) - Else - Return 0 - End If - End Function - - ''' - ''' åœ¨è§£é‡Šå™¨é˜¶æ®µç”±äºŽç¼ºå°‘ç±»åž‹ä¿¡æ¯æ— æ³•判断目标类型,所以被设置为动æ€ç±»åž‹ - ''' - Public Function DynamicsExpression(Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Interpreter.LDM.Expressions.DynamicsExpression) - - If Expr.IsVariable OrElse Expr.IsConstant Then - Dim p = ScriptEngine.MMUDevice.AddressOf(Expr.PrimaryExpression, False) - - If p > -1 Then - Return ScriptEngine.MMUDevice.PointTo(p).Value - End If - End If - - Dim API As Interpreter.Linker.APIHandler.APIEntryPoint = - ScriptEngine.Interpreter.EPMDevice.TryGetEntryPoint(Expr.PrimaryExpression) - - If API Is Nothing Then - Return Expr.PrimaryExpression - Else - Dim LQuery = (From entryPoint In API 'ä¸å¸¦ä»»ä½•傿•°çš„函数调用 - Let params = entryPoint.EntryPoint.EntryPoint.GetParameters - Let args As Object() = __fillBool(params) - Where Not args Is Nothing - Select args, entryPoint.EntryPoint - Order By args.Length Ascending).ToArray '优先调用ä¸å¸¦ä»»ä½•傿•°çš„æ–¹æ³• - - If LQuery.IsNullOrEmpty Then '找ä¸åˆ°ç¬¦åˆæ¡ä»¶çš„命令,则åªå½“ä½œå­—ç¬¦ä¸²å¤„ç† - Return Expr.PrimaryExpression - Else - Dim invoke = LQuery(Scan0) - Return invoke.EntryPoint.DirectInvoke(invoke.args) - End If - End If - End Function - - ''' - ''' 逻辑值默认为False - ''' - ''' - ''' - Private Function __fillBool(params As System.Reflection.ParameterInfo()) As Object() - If params.IsNullOrEmpty Then - Return {} - End If - - Dim args As New List(Of Object) - For Each param In params - If Not param.ParameterType.Equals(GetType(Boolean)) Then - Return Nothing - Else - Call args.Add(False) - End If - Next - - Return args.ToArray - End Function - - ''' - ''' 函数调用。函数的执行级别优先于Delegate函数指针 - ''' - Public Function FunctionCalls(Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Interpreter.LDM.Expressions.FunctionCalls) - Dim __execName As String = "" - Dim value As Object = Nothing - Dim API As Interpreter.Linker.APIHandler.APIEntryPoint = - ScriptEngine.Interpreter.EPMDevice.TryGetEntryPoint(Expr.EntryPoint, __execName, execValue:=value) - - If API Is Nothing Then 'å‡è‹¥æ‰¾ä¸åˆ°ï¼Œåˆ™è¯´æ˜Žæ˜¯å˜é‡ä¹‹é—´çš„赋值æ“作了 - Dim __execDelegate As Boolean = False - Dim __execValue As Object = value - - value = ScriptEngine.Interpreter.EPMDevice.AnonymousDelegate.Exec( - __execName, - Expr, - __execDelegate) - - If Not __execDelegate Then '没有找到相应的函数指针,则å¯èƒ½åªæ˜¯ç®€å•的赋值函数 - - If Not __execMemberAccessor(Expr, __execValue) Then ' 好åƒè¿™ä¸ªif并没有什么åµç”¨ï¼Œ 但是为了以åŽçš„æ‹“展方便,现在留ç€ä»– - If Expr.Parameters.IsNullOrEmpty Then - value = __execValue ' EntryPoint表达å¼è¿™ä¸ªå·²ç»åœ¨å¯»æ‰¾å‡½æ•°å称的时候计算过了,ä¸éœ€è¦å†è®¡ç®—一é了,直接赋值 - Else - Throw New ShoalShell.Runtime.Exceptions.FunCallFailured(Expr, Me.ScriptEngine) - End If - Else - value = __execValue ' 返回对象的实例方法和属性的计算值 - End If - End If - Else - value = __functionCalls(API, Expr) - End If - - Call ScriptEngine.MMUDevice.WriteMemory(Expr.LeftAssignedVariable, value) - - Return value - End Function - - ''' - ''' -> - ''' 执行的是对象本身所具有的实例方法或者属性值的获å–,请注æ„,这个必须è¦ä¸ºæ‹“å±•æ–¹æ³•å½¢å¼ - ''' - ''' 方法所执行的对象 - ''' - Private Function __execMemberAccessor(Expr As Interpreter.LDM.Expressions.FunctionCalls, ByRef obj As Object) As Boolean - If obj Is Nothing Then - Return False ' 无法计算入å£ç‚¹ï¼Œ ä»£ç æ²¡æœ‰è¢«æ‰§è¡Œ - End If - - Dim Name As String = InputHandler.ToString(Exec(Expr.EntryPoint.Name.Expression)) - - If String.IsNullOrEmpty(Name) Then - Return False - End If - - Dim type As Type = obj.GetType - Dim properties = type.GetProperties - Dim [Property] = (From prop In properties Where String.Equals(prop.Name, Name, StringComparison.OrdinalIgnoreCase) Select prop).FirstOrDefault - - If Not [Property] Is Nothing Then - obj = [Property].GetValue(obj) - Return True - End If - - Dim methods As System.Reflection.MethodInfo() = type.GetMethods - methods = (From method As System.Reflection.MethodInfo - In methods - Where String.Equals(Name, method.Name, StringComparison.OrdinalIgnoreCase) - Select method).ToArray ' å¯èƒ½æœ‰é‡è½½æ–¹æ³• - - Dim argsValue As arg() = Me._ArgumentsLinker.GetParameters(Expr) - Dim OverloadsAlignments = (From MethodEntryPoint As System.Reflection.MethodInfo - In methods - Let match As ParamAlignments = OverloadsAlignment(MethodEntryPoint, argsValue) - Where Not match Is Nothing - Select match, MethodEntryPoint - Order By match.Score Descending).ToArray - If OverloadsAlignments.IsNullOrEmpty Then '找ä¸åˆ°å¯ä»¥è®¿é—®çš„æ–¹æ³• - Return False ' ä¹Ÿä¸æ˜¯å¯¹è±¡å®žä¾‹æ–¹æ³•的调用 - End If - - Dim FoundEntryPoint = OverloadsAlignments(Scan0) - Dim args As Object() = (From argValue As Object - In FoundEntryPoint.match.args - Select If(InputHandler.GetType(argValue, True).Equals(GetType(String)), - ScriptEngine.Strings.Format(InputHandler.ToString(argValue)), - argValue)).ToArray - - obj = FoundEntryPoint.MethodEntryPoint.Invoke(obj, args) - - Return True - End Function - - Private Function __nonOverlaodsDirectInvoke(API As EntryPoints.APIEntryPoint, args As Object()) As Object - Dim value As Object = API.DirectInvoke((From argValue As Object - In args - Select If(InputHandler.GetType(argValue, True).Equals(GetType(String)), - ScriptEngine.Strings.Format(InputHandler.ToString(argValue)), argValue)).ToArray, True) - Return value - End Function - - ''' - ''' 执行的是API方法 - ''' - ''' - ''' - ''' - Private Function __functionCalls(API As Interpreter.Linker.APIHandler.APIEntryPoint, Expr As Interpreter.LDM.Expressions.FunctionCalls) As Object - Dim argsValue As arg() = Me._ArgumentsLinker.GetParameters(Expr) - - If (Not API.IsOverloaded) AndAlso Alignment.FunctionCalls.IsOrderReference(argsValue) Then - Dim EntryPoint = API(Scan0).EntryPoint - Dim params = EntryPoint.EntryPoint.GetParameters - Dim defaults As Object() = (From param As System.Reflection.ParameterInfo - In params - Where param.IsOptional - Select param.DefaultValue).ToArray - Dim args As Object() = New Object(EntryPoint.EntryPoint.GetParameters.Length - 1) {} - Dim inputs As Object() = argsValue.ToArray(Function(arg, idx) Alignment.FunctionCalls.AlignType(params(idx).ParameterType, arg.Value)) - Dim offset As Integer = args.Length - inputs.Length - - Call Array.ConstrainedCopy(inputs, Scan0, args, Scan0, inputs.Length) - Call Array.ConstrainedCopy(defaults, defaults.Length - offset, args, inputs.Length, offset) - - Return __nonOverlaodsDirectInvoke(EntryPoint, args) - End If - - Dim OverloadsAlignments = (From EntryPoint As SignedFuncEntryPoint In API - Let EntryPointRef = EntryPoint.EntryPoint - Let match = Interpreter.Linker.APIHandler.Alignment.FunctionCalls.OverloadsAlignment(EntryPointRef.EntryPoint, argsValue) - Where Not match Is Nothing - Select match, EntryPointRef - Order By match.Score Descending).ToArray - If OverloadsAlignments.IsNullOrEmpty Then '找ä¸åˆ°å¯ä»¥è®¿é—®çš„æ–¹æ³• - Throw New Runtime.Exceptions.MethodNotFoundException(API, argsValue, Expr, ScriptEngine) - Else - Dim FoundEntryPoint = OverloadsAlignments(Scan0) - Dim value As Object = __apiCall(FoundEntryPoint.EntryPointRef, FoundEntryPoint.match) - Return value - End If - End Function - - Private Function __apiCall(apiEntryPoint As EntryPoints.APIEntryPoint, argValues As ParamAlignments) As Object - Dim args As Object() = (From argValue As Object - In argValues.args - Select If(InputHandler.GetType(argValue, True).Equals(GetType(String)), - ScriptEngine.Strings.Format(InputHandler.ToString(argValue)), - argValue)).ToArray - Dim value As Object = apiEntryPoint.DirectInvoke(args, True) - Return value - End Function - - Public Function VariableDeclaration(Expression As PrimaryExpression) As Object - Dim Expr = Expression.As(Of VariableDeclaration) - Dim value As Object = Exec(Expr.Initializer.Expression) - Dim refType As Type = InputHandler.GetType(Expr.Type, True) - - If value Is Nothing Then - Return Nothing - End If - - Dim valType As Type = value.GetType - If valType.IsArray Then - value = Scripting.CastArray(value, refType) - Else - value = Conversion.CTypeDynamic(value, refType) - End If - - Dim p = ScriptEngine.MMUDevice.InitLocals(Expr.Name, value, Expr.Type) - ScriptEngine.MMUDevice.PointTo(p).[REM] = Expr.Comments - - Return value - End Function - - ''' - ''' å•ç‹¬æ‰§è¡Œè¾“å‡ºè®¾å¤‡çš„è°ƒç”¨ï¼Œåœ¨ç»ˆç«¯è¾“å‡ºæˆ–è€…æ‰“å¼€ç»˜å›¾çª—å£ - ''' - Public Function OutDeviceRef(Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Driver.OutDeviceRef) - Dim value = Exec(Expr.InnerExpression.Expression) - - Call Me.OutputDevice.HandleOutput(value) - - Return value - End Function - - Public Function Hashtable(Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - - End Function - - ''' - ''' << Hybrids scripting; - ''' - Public Function HybridsScript(Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Interpreter.LDM.Expressions.HybridScript.HybridsScript) - Dim Script As String = InputHandler.ToString(Exec(Expr.ExternalScript.Expression)) - Dim value = ScriptEngine.Interpreter.EPMDevice.HybridAdapter.Evaluate(Script) - - Call ScriptEngine.MMUDevice.WriteMemory(Expr.LeftAssignedVariable, value) - - Return value - End Function - - ''' - ''' >> Setup variable of hybrids scripting; - ''' - Public Function HybirdsScriptPush(Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Interpreter.LDM.Expressions.HybridScript.HybirdsScriptPush) - Dim var As String = InputHandler.ToString(Exec(Expr.ExternalVariable.Expression)) - Dim value As Object = Exec(Expr.InternalExpression.Expression) - - Return ScriptEngine.Interpreter.EPMDevice.HybridAdapter.SetValue(var, value) - End Function - - ''' - ''' > æ“作符将数æ®å†™å…¥æ–‡ä»¶ - ''' - ''' - ''' - Public Function FileIO(Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Driver.FileIO) - Dim value = Exec(Expr.Value.Expression) - Dim Path = Exec(Expr.Path.Expression) - - Return Me.IODevice.WriteData(value, Path) - End Function - - Public Function DynamicsCast(Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Driver.DynamicsCast) - Dim TypeID = InputHandler.ToString(Exec(Expr.TypeID.Expression)) - Dim value As Object = Exec(Expr.SourceExpr.Expression) - value = Me.DynamicsHwnd.TypeCastDynamics(value, TypeID) - Call ScriptEngine.MMUDevice.WriteMemory(Expr.LeftAssigned, value) - - Return value - End Function -#End Region - -#Region "æµç¨‹æŽ§åˆ¶ç»“æž„" - - ''' - ''' For n in {a, b, c, d, e} => {delegate} - ''' For i in {5 to 100 step 9} => {delegate} - ''' - ''' - ''' - Public Function ForLoop(Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Interpreter.LDM.Expressions.ControlFlows.ForLoop) - Dim value As Object = - If(Expr.Collection.LoopType = ControlFlows.ForLoopStatus.LoopTypes.ForEach, - __forEach(Expr), - __forStep(Expr)) - - Return value - End Function - - Private Function __forEach(Expr As Interpreter.LDM.Expressions.ControlFlows.ForLoop) As Object - Dim Collection = Expr.Collection.As(Of Interpreter.LDM.Expressions.ControlFlows.ForLoopStatus.ForEach).ToArray - Dim i As Integer - - For Each Expression In Collection - Dim value = Exec(Expression.Expression) - Call ScriptEngine.MMUDevice.Update(Expr.LoopVariable, value) - Call New FSMMachine(ScriptEngine, Expr.Invoke).Execute() - Call i.MoveNext - Next - - Return i - End Function - - Private Function __forStep(Expr As Interpreter.LDM.Expressions.ControlFlows.ForLoop) As Object - Dim n As Integer = 0, Status = Expr.Collection.As(Of Interpreter.LDM.Expressions.ControlFlows.ForLoopStatus.ForStep) - Dim InitStart As Double = InputHandler.CTypeDynamic(InputHandler.ToString(Exec(Status.InitStart.Expression)), GetType(Double)) - Dim LoopStop As Double = InputHandler.CTypeDynamic(InputHandler.ToString(Exec(Status.LoopStop.Expression)), GetType(Double)) - Dim MoveStep As Double = InputHandler.CTypeDynamic(InputHandler.ToString(Exec(Status.MoveStep.Expression)), GetType(Double)) - - For i As Double = InitStart To LoopStop Step MoveStep - Call ScriptEngine.MMUDevice.Update(Expr.LoopVariable, i) - Call New FSMMachine(ScriptEngine, Expr.Invoke).Execute() - Call n.MoveNext - Next - - Return n - End Function - - Public Function [If](Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Interpreter.LDM.Expressions.ControlFlows.If) - Dim BoolIf As Boolean = InputHandler.ToString(Exec(Expr.BooleanIf.Expression)).getBoolean - Dim Stack = Me.Stack.Peek - Dim value As Object - - Stack.If = BoolIf - - If Stack.If = True Then - value = New Runtime.FSMMachine(ScriptEngine, Expr.Invoke).Execute - Else - value = False - End If - - Return value - End Function - - Public Function [ElseIf](Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Interpreter.LDM.Expressions.ControlFlows.ElseIf) - Dim Stack = Me.Stack.Peek - Dim value As Object - - If Not Stack.If = True Then Return True - - Dim BoolIf As Boolean = InputHandler.ToString(Exec(Expr.BooleanIf.Expression)).getBoolean - - If BoolIf = True Then - value = New Runtime.FSMMachine(ScriptEngine, Expr.Invoke).Execute - Else - value = False - End If - - Return value - End Function - - Public Function [Else](Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Interpreter.LDM.Expressions.ControlFlows.Else) - Dim Stack = Me.Stack.Peek - Dim value As Object - - If Not Stack.If = True Then - value = New Runtime.FSMMachine(ScriptEngine, Expr.Invoke).Execute - Else - value = True - End If - - Return value - End Function - - Public Function DoWhile(Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Interpreter.LDM.Expressions.ControlFlows.DoWhile) - Dim i As Integer = 0 - - Do While __getBoolean(Expr.BooleanIf) - Call New Runtime.FSMMachine(ScriptEngine, Expr.Invoke).Execute() - Call i.MoveNext - Loop - - Return i - End Function - - Public Function DoUntil(Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Interpreter.LDM.Expressions.ControlFlows.DoUntil) - Dim i As Integer = 0 - - Do Until __getBoolean(Expr.BooleanIf) - Call New Runtime.FSMMachine(ScriptEngine, Expr.Invoke).Execute() - Call i.MoveNext - Loop - - Return i - End Function - - Private Function __getBoolean(Expr As Interpreter.Parser.Tokens.InternalExpression) As Boolean - Dim __execed As Object = Exec(Expr.Expression) - Dim bool As Boolean = InputHandler.ToString(__execed).getBoolean - Return bool - End Function - -#End Region - -#Region "è¿™äº›è¡¨è¾¾å¼æ˜¯å…³é”®è¯è¡¨è¾¾å¼" - - ''' - ''' ~ 是主文件夹的简写 - ''' - ''' - ''' - Public Function Cd(Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Interpreter.LDM.Expressions.Keywords.Cd) - Dim Path As String = Exec(Expr.Path.Expression) - - If String.Equals(Path, "~") Then - Path = App.HOME - End If - - Microsoft.VisualBasic.FileIO.FileSystem.CurrentDirectory = Path - Call ScriptEngine.Interpreter.EPMDevice.AnonymousDelegate.CdTemp() - - If Not ScriptEngine.Interpreter.EPMDevice.AnonymousDelegate.TempDelegate.IsNullOrEmpty Then - Dim sbr As StringBuilder = New StringBuilder() - Dim NameMaxLen As Integer = (From name As String - In ScriptEngine.Interpreter.EPMDevice.AnonymousDelegate.TempDelegate.Keys - Select Len(name)).ToArray.Max - - Call sbr.AppendLine($"There are {ScriptEngine.Interpreter.EPMDevice.AnonymousDelegate.TempDelegate.Count} script command is current directory: {Microsoft.VisualBasic.FileIO.FileSystem.CurrentDirectory}") - Call sbr.AppendLine(String.Join(vbCrLf, (From obj - In ScriptEngine.Interpreter.EPMDevice.AnonymousDelegate.TempDelegate - Let name As String = IO.Path.GetFileNameWithoutExtension(obj.Value.FilePath) - Select $" {name} {New String(" "c, NameMaxLen - Len(name))}{GetFileInfo(obj.Value.FilePath).Name } // {obj.Value.Expressions.Length} Expressions").ToArray)) - Call sbr.ToString.__DEBUG_ECHO - End If - - If ScriptEngine.Config.LastDir_AsInit Then - ScriptEngine.Config.InitDir = Path - ScriptEngine.Config.Save() - End If - - Return Path - End Function - - ''' - ''' åŠ¨æ€æ³¨å†Œä¸€ä¸ªé“¾æŽ¥åº“,在进行挂载 - ''' - ''' - ''' - Public Function Library(Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Interpreter.LDM.Expressions.Keywords.Library) - - If String.IsNullOrEmpty(Expr.Assembly) Then - Return __libraries() - - ElseIf String.Equals(Expr.Assembly, "/index") - Dim html As String = ShoalShell.HTML.RequestHtml("index") - html = Microsoft.VisualBasic.FileIO.FileSystem.GetFileInfo(html).FullName - Call Process.Start(html) - Return html.ToFileURL - - Else - Return __importsLibrary(Expr.Assembly) - End If - End Function - - Private Function __importsLibrary(Assembly As String) As Boolean - Dim NsModules As SPM.Nodes.PartialModule() = - ScriptEngine.Interpreter.SPMDevice.Imports(Assembly) - - For Each ns As SPM.Nodes.PartialModule In NsModules - Call ScriptEngine.Interpreter.EPMDevice.Imports(ns.Assembly.GetType) - Next - - Call ScriptEngine.Interpreter.SPMDevice.UpdateDb() - - Return True - End Function - - ''' - ''' åˆ—ä¸¾å‡ºæ‰€æœ‰å·²ç»æ³¨å†Œçš„动æ€é“¾æŽ¥åº“ - ''' - ''' - ''' - ''' - Private Function __libraries() As String - Dim str As String - - If ScriptEngine.PMgrDb.NamespaceCollection.IsNullOrEmpty Then - str = "Shoal didn't install any plugin module yet..." - Else - str = __printLibraries() - End If - - Call str.__DEBUG_ECHO - Return str - End Function - - Private Function __printLibraries() As String - Dim sBuilder As StringBuilder = New StringBuilder(1024) - Dim MaxLength As Integer = (From ns As SPM.Nodes.Namespace - In ScriptEngine.PMgrDb.NamespaceCollection - Select Len(ns.Namespace)).ToArray.Max - - Call sBuilder.AppendLine() - Call sBuilder.AppendLine(String.Format(" Namespaces{0} assembly library", New String(" "c, MaxLength - Len("namespaces") + 4))) - Call sBuilder.AppendLine(String.Format("+----------{0}+-------------------------------------------------------------------------+", New String("-"c, MaxLength - Len("namespaces") + 4))) - - For Each nsEntry As SPM.Nodes.Namespace In (From ns As SPM.Nodes.Namespace - In ScriptEngine.PMgrDb.NamespaceCollection - Select ns - Order By ns.Namespace).ToArray - If nsEntry.PartialModules.Length > 1 Then - Call sBuilder.AppendLine() - End If - Call sBuilder.AppendLine($" {nsEntry.Namespace} {New String(" "c, MaxLength - Len(nsEntry.Namespace))} @{nsEntry.PartialModules.First.Assembly.Path}") - - For Each Partition As SPM.Nodes.PartialModule In nsEntry.PartialModules.Skip(1) - Call sBuilder.AppendLine(String.Format(" {0} @{1}", New String(" "c, MaxLength), Partition.Assembly.Path)) - Next - - If nsEntry.PartialModules.Length > 1 Then - Call sBuilder.AppendLine() - End If - Next - - Return sBuilder.ToString - End Function - - Public Function Include(Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - - End Function - - ''' - ''' Memory [varName] - ''' - ''' - ''' - Public Function Memory(Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Interpreter.LDM.Expressions.Keywords.Memory) - Dim value As Object - - If String.IsNullOrEmpty(Expr.var) Then - value = __printMemoryAbstract() - Else - Dim var = ScriptEngine.MMUDevice(Expr.var) - Dim view As String = var.View - value = {view} - - Call Console.WriteLine(view) - End If - - Return value - End Function - - Private Function __printMemoryAbstract() As Object - Dim Constants = ScriptEngine.MMUDevice.ImportedConstants - - If ScriptEngine.MMUDevice.IsNullOrEmpty AndAlso Constants.IsNullOrEmpty Then - Const NO_VALUE = "Currently no variables exists in the script host memory!" - Call Console.WriteLine(NO_VALUE) - Return New String() {NO_VALUE} - End If - - Dim Variables = ScriptEngine.MMUDevice.Variables - Dim List As New List(Of String) - Dim sBuilder As StringBuilder = New StringBuilder - - If Not Variables.IsNullOrEmpty Then - Dim LQuery = __variableViews(Variables) - - Call sBuilder.AppendLine() - Call sBuilder.AppendLine($" {Variables.Length} VARIABLES") - Call sBuilder.AppendLine() - Call sBuilder.AppendLine(String.Join(vbCrLf, LQuery)) - - Call List.AddRange(LQuery) - End If - - If Not Constants.IsNullOrEmpty Then - Dim LQuery = __variableViews(Constants) - - Call sBuilder.AppendLine() - Call sBuilder.AppendLine(String.Format(" {0} CONSTANTS", Constants.Length)) - Call sBuilder.AppendLine() - Call sBuilder.AppendLine(String.Join(vbCrLf, LQuery)) - - Call List.AddRange(LQuery) - End If - - Call Console.WriteLine(sBuilder.ToString) - - Return List.ToArray - End Function - - Private Function __variableViews(variables As KeyValuePair(Of String, Object)()) As String() - Dim Views = (From var As arg In variables - Select Name = var.Key, - value = InputHandler.ToString(var.Value), - Type = If(var.Value Is Nothing, "Any", var.Value.GetType.FullName)).ToArray - Dim nameMaxLength As Integer = (From var In Views.AsParallel Select Len(var.Name)).ToArray.Max - Dim valueMaxLength As Integer = (From var In Views.AsParallel Select Len(var.value)).ToArray.Max - Dim LQuery = (From var In Views - Let sp1 = New String(" "c, nameMaxLength - Len(var.Name) + 2) - Let sp2 = New String(" "c, valueMaxLength - Len(var.value) + 2) - Select $"{var.Name} {sp1}--> {var.value} {sp2}//{var.Type}").ToArray - Return LQuery - End Function - - Public Function [Imports](Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Interpreter.LDM.Expressions.Keywords.Imports) - - For Each [Namespace] As String In Expr.Namespaces - Dim ns = ScriptEngine.Interpreter.EPMDevice.Imports([Namespace]) - - If Not ns Is Nothing Then - Call Console.WriteLine($"Imports <{ns.Namespace}>") - Else - Dim ex As String = $"Imported namespace ""{[Namespace]}"" is not found!" - Throw New RuntimeException(ex, ScriptEngine) - End If - Next - - Return True - End Function - - Public Function Wiki(Expression As Interpreter.LDM.Expressions.PrimaryExpression) As Object - Dim Expr = Expression.As(Of Interpreter.LDM.Expressions.Keywords.Wiki) - Return If(String.IsNullOrEmpty(Expr.Object), - ScriptEngine.WikiEngine.WikiHelp, - ScriptEngine.WikiEngine.HandleWikiSearch(Expr.Object)) - End Function -#End Region - - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/StatusMachine/FSMMachine.vb b/Shoal.v2/Shoal.v2/Runtime/StatusMachine/FSMMachine.vb deleted file mode 100644 index 6a9c6a6f6..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/StatusMachine/FSMMachine.vb +++ /dev/null @@ -1,102 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.LDM -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.LDM.Expressions -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.SCOM - -Namespace Runtime - - ''' - ''' æ‰§è¡Œæ•´ä¸ªè„šæœ¬çš„æ¨¡å— - ''' - Public Class FSMMachine : Inherits RuntimeComponent - - Dim Script As SyntaxModel - Dim p As Integer - Dim OnErrorResumeNext As Boolean - - ''' - ''' Initialize a runtime state machine for running a script file. - ''' - ''' - ''' - Sub New(ScriptEngine As ScriptEngine, Script As SyntaxModel) - Call MyBase.New(ScriptEngine) - Me.Script = Script - Me.ExecuteModel = ScriptEngine.ExecuteModel - End Sub - - ReadOnly ExecuteModel As ExecuteModel - - ''' - ''' å·²ç»åŒ…嫿œ‰é”™è¯¯å¤„ç†çš„代ç äº†ï¼Œç”±äºŽè¿™ä¸ªæ˜¯æ‰§è¡Œçš„æ˜¯è„šæœ¬æ–‡ä»¶ï¼Œæ•…è€Œå‡ºé”™çš„æ—¶å€™ä¼šç›´æŽ¥é€€å‡ºè¿è¡Œ - ''' - ''' - ''' Dirty works here in this function. - Public Function Execute() As Object - Dim __executeReturn As Boolean = False - Dim consoleTitleEnable As Boolean = ScriptEngine.Config.EnableConsoleTitle - - Call ExecuteModel.Stack.Push(New Stack(Script.FilePath)) - - Do While p <= Script.Expressions.Length - 1 -#If Not DEBUG Then '调试的模å¼ä¼šä¸å¤„ç†é”™è¯¯ï¼Œè®©é”™è¯¯è‡ªåŠ¨å®šä½åˆ°åŽŸå§‹çš„ä½ç½®æ–¹ä¾¿è°ƒè¯•ç¨‹åº - Try -#End If - If consoleTitleEnable Then - Call Console.Title.InvokeSet(Script.Expressions(p).PrimaryExpression) - End If - - Call __execute(__executeReturn) -#If Not DEBUG Then - Catch ex As Exception - Call App.LogException(ex, $"{NameOf(FSMMachine)}::{NameOf(Execute)}") - - If OnErrorResumeNext Then '忽略掉错误继续执行 - - Else - Return -1 'æ‰§è¡Œé”™è¯¯ï¼Œåˆ™è¿”å›žé”™è¯¯ä»£ç  - End If - End Try -#End If - If __executeReturn Then - Exit Do - Else - Call p.MoveNext 'ç§»åŠ¨åˆ°ä¸‹ä¸€è¡Œä»£ç æ‰§è¡Œ - End If - Loop - - Call ExecuteModel.Stack.Pop() - - If consoleTitleEnable Then - Call Console.Title.InvokeSet(App.ExecutablePath.ToFileURL) - End If - - Return ScriptEngine.MMUDevice.SystemReserved.Value '执行了Return代ç ä¹‹åŽï¼ŒReturn的表达å¼ä¼šè¢«å†™å…¥åˆ°è¿™ä¸ªå˜é‡ä¹‹ä¸­ - End Function - - ''' - ''' - ''' - ''' æ˜¯å¦æ‰§è¡Œäº†ä»£ç  - Private Sub __execute(ByRef __return As Boolean) - Dim Line As PrimaryExpression = Script.Expressions(p) - - If Line.IsNonExecuteCode Then Return - - If Line.ExprTypeID = ExpressionTypes.OnErrorResumeNext Then - OnErrorResumeNext = True - - ElseIf Line.ExprTypeID = ExpressionTypes.Return Then '退出脚本的è¿è¡Œå¹¶è¿”å›žæŒ‡å®šçš„ä»£ç  - Dim rtvlExpr = Line.As(Of Keywords.Return) - Dim value = ExecuteModel.Exec(rtvlExpr.ValueExpression.Expression) - __return = True - ScriptEngine.MMUDevice.SystemReserved.Value = value - - Else - - Dim value = ExecuteModel.Exec(Line) - ScriptEngine.MMUDevice.SystemReserved.Value = value - - End If - End Sub - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Runtime/StatusMachine/Stack.vb b/Shoal.v2/Shoal.v2/Runtime/StatusMachine/Stack.vb deleted file mode 100644 index 53ac81552..000000000 --- a/Shoal.v2/Shoal.v2/Runtime/StatusMachine/Stack.vb +++ /dev/null @@ -1,19 +0,0 @@ -Namespace Runtime - - Public Class Stack - - Public Property [If] As Boolean - Public Property DoWhile As Interpreter.LDM.Expressions.PrimaryExpression - - ReadOnly _uid As String - - Sub New(uid As String) - _uid = uid - End Sub - - Public Overrides Function ToString() As String - Return _uid - End Function - - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/SPM/Nodes/Assembly.vb b/Shoal.v2/Shoal.v2/SPM/Nodes/Assembly.vb deleted file mode 100644 index 5dbd71eff..000000000 --- a/Shoal.v2/Shoal.v2/SPM/Nodes/Assembly.vb +++ /dev/null @@ -1,106 +0,0 @@ -Imports System.Runtime.Versioning -Imports System.Xml.Serialization -Imports Microsoft.VisualBasic.Scripting.ShoalShell.HTML - -Namespace SPM.Nodes - - ''' - ''' 用于引用的程åºçš„定ä½çš„,用æ¥å¤„ç†ç›¸å¯¹è·¯å¾„以åŠç½‘络路径 - ''' - Public Class Assembly : Implements HTML.IWikiHandle - - Public Property Path As String - Public Property Version As String - Public Property UpdateTime As Long - Public Property Company As String - Public Property FrameworkVersion As String - ''' - ''' 这个属性使用于记录é‡å¤çš„命å空间模å—之间的相互比较的 - ''' 路径å¯ä»¥ä¸ä¸€æ ·ï¼Œä½†æ˜¯è¿™ä¸ªå¿…é¡»è¦ä¸€æ · - ''' - ''' - Public Property TypeId As String - Public Property Description As String - - Public Overrides Function ToString() As String - Return $"{Path}!{TypeId}" - End Function - - ''' - ''' Gets this partial module defined type information.(出错会返回空值) - ''' - ''' - Public Overloads Function [GetType]() As Type - Return [GetType](TypeId) - End Function - - Public Overloads Function [GetType](Type As String) As Type - Dim Assembly As System.Reflection.Assembly = LoadAssembly() - If Assembly Is Nothing Then - Return Nothing - Else - Return Assembly.GetType(Type) - End If - End Function - - Public Shared Function CreateObject(Of T As Assembly)(Assembly As System.Reflection.Assembly) As T - Dim attrs = Assembly.CustomAttributes - Dim Company As String = (From attr In attrs - Where attr.AttributeType = GetType(System.Reflection.AssemblyCompanyAttribute) - Let value = attr.ConstructorArguments.First.Value.ToString - Select value).FirstOrDefault - Dim Version As String = (From attr In attrs - Where attr.AttributeType = GetType(System.Reflection.AssemblyFileVersionAttribute) - Let value = attr.ConstructorArguments.First.Value.ToString - Select value).FirstOrDefault - Dim FrameworkVersion As String = (From attr In attrs - Where attr.AttributeType = GetType(TargetFrameworkAttribute) - Let value = attr.ToString - Select value).FirstOrDefault - Dim FileInfo = VisualBasic.FileIO.FileSystem.GetFileInfo(Assembly.Location) - Dim Updates As Long = FileInfo.LastWriteTime.ToBinary - Dim assmDef = Activator.CreateInstance(Of T) - - assmDef.Path = __createPath(FileInfo.FullName) - assmDef.Company = Company - assmDef.FrameworkVersion = FrameworkVersion - assmDef.UpdateTime = Updates - assmDef.Version = Version - - Return assmDef - End Function - - Private Shared Function __createPath(path As String) As String - path = ProgramPathSearchTool.RelativePath(App.HOME, path) - Call FileIO.FileSystem.WriteAllText(App.HOME & "/Imports.txt", path & vbCrLf, append:=True) - Return path - End Function - - Public Function GenerateDescription() As String Implements IWikiHandle.GenerateDescription - Throw New NotImplementedException() - End Function - - Public Function Match(keyword As String) As String Implements IWikiHandle.Match - Throw New NotImplementedException() - End Function - - ''' - ''' 出错的时候会返回空值 - ''' - ''' - ''' 请注æ„,在执行的时候å¯èƒ½å½“å‰çš„工作目录会å‘生改å˜ï¼Œæ‰€ä»¥è®¡ç®—相对路径的时候总是需è¦ä»¥å½“å‰çš„程åºçš„ä½ç½®æ¥è®¡ç®— - Public Function LoadAssembly() As System.Reflection.Assembly - Try - Dim currentWork As String = FileIO.FileSystem.CurrentDirectory ' 切æ¢å½“å‰çš„工作目录 - FileIO.FileSystem.CurrentDirectory = App.HOME - Dim path As String = VisualBasic.FileIO.FileSystem.GetFileInfo(Me.Path).FullName - FileIO.FileSystem.CurrentDirectory = currentWork - Return System.Reflection.Assembly.LoadFile(path) - Catch ex As Exception - Dim Trace As String = $"{GetType(Assembly).FullName}::{NameOf(LoadAssembly)}" - Call App.LogException(Path.ToFileURL, Trace) - Return App.LogException(ex, Trace) - End Try - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/SPM/Nodes/AssemblyParser.vb b/Shoal.v2/Shoal.v2/SPM/Nodes/AssemblyParser.vb deleted file mode 100644 index 38fc6b414..000000000 --- a/Shoal.v2/Shoal.v2/SPM/Nodes/AssemblyParser.vb +++ /dev/null @@ -1,132 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.MetaData -Imports Microsoft.VisualBasic.Scripting.ShoalShell.HTML -Imports Microsoft.VisualBasic.CommandLine.Interpreter -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Linker.APIHandler -Imports Microsoft.VisualBasic.ComponentModel - -Namespace SPM.Nodes - - Public Module AssemblyParser - - ''' - ''' è§£æžå‡ºé”™æˆ–返回空集åˆå¹¶åœ¨ç»ˆç«¯ä¸Šé¢æ‰“å°å‡ºé”™è¯¯ä¿¡æ¯ - ''' - ''' ä¸éœ€è¦ç‰¹æ®Šå¤„ç†ï¼Œå‡½æ•°ä¼šè‡ªåŠ¨è½¬æ¢ä¸ºå…¨è·¯å¾„ - ''' - Public Function LoadAssembly(Path As String) As PartialModule() - Dim Assembly As System.Reflection.Assembly - - Try - Assembly = System.Reflection.Assembly.LoadFile(VisualBasic.FileIO.FileSystem.GetFileInfo(Path).FullName) - Catch ex As Exception - Return __exHandler(ex, Path) - End Try - - Try - Dim assemblyValue = Nodes.Assembly.CreateObject(Of Assembly)(Assembly) - Dim Namespaces = (From Type In Assembly.DefinedTypes '.AsParallel - Let [Namespace] = __getNamespaceEntry(Type, assemblyValue) '得到原始的部分的模å—定义 - Where Not [Namespace] Is Nothing - Select [Namespace]).ToArray - Return Namespaces - Catch ex As Exception - Return __exHandler(ex, Path) - End Try - End Function - - Private Function __exHandler(ex As Exception, path As String) As PartialModule() - ex = New Exception($"Assembly Parsing Error: {path.ToFileURL}", ex) - Call App.LogException(ex, $"{NameOf(AssemblyParser)}::{NameOf(LoadAssembly)}") - Call ex.PrintException() - - Return New PartialModule() {} - End Function - - Private Function __getNamespaceEntry(Type As Type, Assembly As Assembly) As SPM.Nodes.PartialModule - If Not Type.IsClass Then - Return Nothing - End If - - Dim attrs As Object() = - Type.GetCustomAttributes( - attributeType:=PackageNamespace.TypeInfo, - inherit:=False) - - If attrs.IsNullOrEmpty Then - attrs = (From ns As Object - In Type.GetCustomAttributes( - attributeType:=Microsoft.VisualBasic.CommandLine.Reflection.Namespace.TypeInfo, - inherit:=False) - Let nsEntry = DirectCast(ns, Microsoft.VisualBasic.CommandLine.Reflection.Namespace) - Select New PackageNamespace(nsEntry)).ToArray - If attrs.IsNullOrEmpty Then - Return Nothing - End If - End If - - Dim nsAttr As PackageNamespace = DirectCast(attrs(Scan0), PackageNamespace) - Return __nsParser(Type, nsAttr, Assembly) - End Function - - Private Function __nsParser(type As Type, - nsEntry As PackageNamespace, - assembly As Assembly) As PartialModule - Dim Functions = GetAllCommands(type, False) - Dim EntryPoints = (From Func In Functions Select __entryPointParser(Func)).ToArray - Dim assm As Assembly = Serialization.ShadowsCopy.ShadowsCopy(assembly) - - assm.TypeId = type.FullName - - Return New PartialModule(nsEntry) With { - .Assembly = assm, - .EntryPoints = EntryPoints - } - End Function - - ''' - ''' ç›´æŽ¥å¯¼å…¥é™æ€æ–¹æ³• - ''' - ''' - ''' - Public Function [Imports]([module] As Type) As APIEntryPoint() - Dim Functions = GetAllCommands([module], False) - Return APIParser(Functions.ToArray) - End Function - - Public Function APIParser(EntryPoints As IEnumerable(Of EntryPoints.APIEntryPoint)) As APIEntryPoint() - Dim OverloadsGroup = (From api As EntryPoints.APIEntryPoint - In EntryPoints - Select api - Group api By api.Name.ToLower Into Group).ToArray - Dim __LoadedEntryPoints = (From apiGroup - In OverloadsGroup - Select New APIEntryPoint( - apiGroup.Group.First.Name, - apiGroup.Group.ToArray)).ToArray - Return __LoadedEntryPoints - End Function - - Private Function __entryPointParser(Command As EntryPoints.APIEntryPoint) As EntryPointMeta - Return New EntryPointMeta() With { - .Description = Command.Info, - .Name = Command.Name, - .ReturnedType = Command.EntryPoint.ReturnType.FullName, - .Parameters = __getParameters(Command.EntryPoint) - } - End Function - - Private Function __getParameters(Method As System.Reflection.MethodInfo) As TripleKeyValuesPair() - Dim parameters = Method.GetParameters - Dim LQuery = (From p As System.Reflection.ParameterInfo - In parameters - Let attrs = p.GetCustomAttributes(Parameter.TypeInfo, True) - Let attr = If(attrs.IsNullOrEmpty, New Parameter(p.Name), DirectCast(attrs(Scan0), Parameter)) - Select New TripleKeyValuesPair With { - .Key = attr.Alias, - .Value1 = attr.Description, - .Value2 = p.ParameterType.FullName}).ToArray - Return LQuery - End Function - End Module -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/SPM/Nodes/EntryPointMeta.vb b/Shoal.v2/Shoal.v2/SPM/Nodes/EntryPointMeta.vb deleted file mode 100644 index c0a7cfea2..000000000 --- a/Shoal.v2/Shoal.v2/SPM/Nodes/EntryPointMeta.vb +++ /dev/null @@ -1,84 +0,0 @@ -Imports System.Text -Imports System.Xml.Serialization -Imports Microsoft.VisualBasic.ComponentModel -Imports Microsoft.VisualBasic.Scripting.ShoalShell.HTML - -Namespace SPM.Nodes - - ''' - ''' ä¸€ä¸ªæ–¹æ³•çš„å…ƒæ•°æ® - ''' - ''' - Public Class EntryPointMeta : Implements HTML.IWikiHandle - - Public Property Name As String - Public Property Description As String - Public Property Parameters As TripleKeyValuesPair() - Public Property ReturnedType As String - - Public Overrides Function ToString() As String - If String.IsNullOrEmpty(Description) Then - Return Name - Else - Return $"{Name}: {Description}" - End If - End Function - - Public Function Match(keyword As String) As String Implements IWikiHandle.Match - Dim Head As String = String.Format("[{0}]", keyword) - - If InStr(Name, keyword, CompareMethod.Text) > 0 Then - Head = "Function Entry: " & Name.ToLower.Replace(keyword.ToLower, Head) - ElseIf InStr(Description, keyword, CompareMethod.Text) > 0 Then - Head = Description.ToLower.Replace(keyword.ToLower, Head) - ElseIf InStr(ReturnedType, keyword, CompareMethod.Text) > 0 Then - Head = "Function Return Type: " & ReturnedType.ToLower.Replace(keyword.ToLower, Head) - Else - Dim n = MatchParameters(keyword) - - If n.IsNullOrEmpty Then - Return "" '没有匹é…ä¸Šä»»ä½•æ•°æ® - Else - Head = String.Join(vbCrLf, (From item In n Select String.Format("{0} {1} {2}", item.Key, item.Value1, item.Value2).ToLower.Replace(keyword.ToLower, Head))) - End If - End If - - Return ">>>> " & Head & vbCrLf & vbCrLf & GenerateDescription() - End Function - - Public Function MatchParameters(keyword As String) As TripleKeyValuesPair() - If Parameters.IsNullOrEmpty Then - Return Nothing - End If - - Dim LQuery = (From item In Parameters - Where InStr(item.Key, keyword, CompareMethod.Text) > 0 OrElse - InStr(item.Value1, keyword, CompareMethod.Text) > 0 OrElse - InStr(item.Value2, keyword, CompareMethod.Text) > 0 - Select item).ToArray - Return LQuery - End Function - - Public Function GenerateDescription() As String Implements IWikiHandle.GenerateDescription - Dim sBuilder As StringBuilder = New StringBuilder(1024) - Call sBuilder.AppendLine("Name: " & Name) - Call sBuilder.AppendLine("Description: " & If(String.IsNullOrEmpty(Description), "This function have no description data defined.", Description)) - Call sBuilder.AppendLine("Return: " & ReturnedType) - - If Not Parameters.IsNullOrEmpty Then - Dim Max As Integer = (From item In Parameters Select Len(item.Key)).ToArray.Max - - Call sBuilder.AppendLine(vbCrLf & String.Format("Function have {0} parameters:", Parameters.Length)) - Call sBuilder.AppendLine(String.Format("-Name-{0}------Type--------------", New String("-"c, Max))) - - For Each p In Parameters - Call sBuilder.AppendLine(String.Format(" {0} {1} {2} {3}", p.Key, New String(" "c, 6 + Max - Len(p.Key)), p.Value1, If(Not String.IsNullOrEmpty(p.Value2), "// " & p.Value2, ""))) - Next - Else - Call sBuilder.AppendLine("This function doesn't required of the parameters.") - End If - - Return sBuilder.ToString - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/SPM/Nodes/HybridEnvir.vb b/Shoal.v2/Shoal.v2/SPM/Nodes/HybridEnvir.vb deleted file mode 100644 index 47873441e..000000000 --- a/Shoal.v2/Shoal.v2/SPM/Nodes/HybridEnvir.vb +++ /dev/null @@ -1,11 +0,0 @@ -Imports System.Xml.Serialization -Imports Microsoft.VisualBasic.Scripting.ShoalShell.HTML - -Namespace SPM.Nodes - - Public Class HybridEnvir : Inherits Assembly - Implements HTML.IWikiHandle - - Public Property Language As String - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/SPM/Nodes/Namespace.vb b/Shoal.v2/Shoal.v2/SPM/Nodes/Namespace.vb deleted file mode 100644 index aec91e6e4..000000000 --- a/Shoal.v2/Shoal.v2/SPM/Nodes/Namespace.vb +++ /dev/null @@ -1,107 +0,0 @@ -Imports System.Xml.Serialization -Imports Microsoft.VisualBasic.Scripting.MetaData -Imports Microsoft.VisualBasic.Scripting.ShoalShell.HTML -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.Linker.APIHandler - -Namespace SPM.Nodes - - - Public Class [Namespace] : Implements HTML.IWikiHandle - - ''' - ''' 命å空间是å¯ä»¥è¢«åˆ†éš”为多个模å—分别开å‘于ä¸åŒçš„ç¨‹åºæ¨¡å—之中的 - ''' - ''' - Public Property PartialModules As PartialModule() - - Public Property Url As String - Public Property Publisher As String - Public Property Revision As Integer - Public Property Cites As String() - - ''' - ''' A brief description text about the function of this namespace.(关于本模å—之中的æè¿°æ€§çš„æ‘˜è¦æ–‡æœ¬) - ''' - ''' - ''' - ''' - Public Property Description As String - - ''' - ''' The name value of this namespace module.(本命å空间模å—çš„å称值) - ''' - ''' - ''' - ''' - Public Property [Namespace] As String - Public Property Category As APICategories - - Public Overrides Function ToString() As String - Return [Namespace] - End Function - - Public Function GenerateDescription() As String Implements IWikiHandle.GenerateDescription - Throw New NotImplementedException() - End Function - - Public Function Match(keyword As String) As String Implements IWikiHandle.Match - Throw New NotImplementedException() - End Function - - Private Sub __LoadEntryPoints() - Dim LQuery = (From [module] As PartialModule In Me.PartialModules - Let assm As System.Reflection.Assembly = [module].Assembly.LoadAssembly - Let EntryType As Type = __loadTypeInfo(assm, [module].Assembly.TypeId, [module].Assembly.Path) - Select CommandLine.Interpreter.GetAllCommands(EntryType)).ToArray - Dim __loadedAPIList = APIParser(LQuery.MatrixToVector) - Dim hash = __loadedAPIList.ToDictionary(Function(api) api.Name.ToLower) - Me.__loadedEntryPoints = New SortedDictionary(Of String, APIEntryPoint)(hash) - End Sub - - ''' - ''' - ''' - ''' - ''' - ''' 输出调试信æ¯çš„æ—¶å€™ä½¿ç”¨ - ''' - Private Function __loadTypeInfo(assm As System.Reflection.Assembly, TypeId As String, path As String) As Type - If assm Is Nothing Then - Return Nothing - End If - - Dim type As Type = assm.GetType(TypeId) - - If type Is Nothing Then '找ä¸åˆ°ç±»åž‹ï¼Œåˆ™å¯èƒ½æ˜¯å¼€å‘人员修改了类型的命令空间或者其åç§°å±žæ€§ï¼Œåˆ™ç»™å‡ºè­¦å‘Šä¿¡æ¯ - Call $"{path.ToFileURL}!{TypeId} missing!".__DEBUG_ECHO - End If - Return type - End Function - - Dim __loadedEntryPoints As SortedDictionary(Of String, APIEntryPoint) - - Public ReadOnly Property API As APIEntryPoint() - Get - If __loadedEntryPoints Is Nothing Then - Call __LoadEntryPoints() - End If - - Return __loadedEntryPoints.Values.ToArray - End Get - End Property - - Public Function GetEntryPoint(Name As String) As APIEntryPoint - Name = Name.ToLower - - If __loadedEntryPoints Is Nothing Then - Call __LoadEntryPoints() - End If - - If __loadedEntryPoints.ContainsKey(Name) Then - Return __loadedEntryPoints(Name) - Else - Return Nothing - End If - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/SPM/Nodes/PartialModule.vb b/Shoal.v2/Shoal.v2/SPM/Nodes/PartialModule.vb deleted file mode 100644 index 9dc9487ba..000000000 --- a/Shoal.v2/Shoal.v2/SPM/Nodes/PartialModule.vb +++ /dev/null @@ -1,75 +0,0 @@ -Imports System.Xml.Serialization -Imports Microsoft.VisualBasic.Scripting.MetaData -Imports Microsoft.VisualBasic.Scripting.ShoalShell.HTML - -Namespace SPM.Nodes - - Public Class PartialModule : Inherits PackageNamespace - Implements HTML.IWikiHandle - - Public Property Assembly As Assembly - Public Property EntryPoints As EntryPointMeta() - - Public Sub New() - End Sub - - Public Sub New([Namespace] As PackageNamespace) - Me.Description = [Namespace].Description - Me.Namespace = [Namespace].Namespace - Me.Publisher = [Namespace].Publisher - Me.Revision = [Namespace].Revision - Me.AutoExtract = [Namespace].AutoExtract - Me.Url = [Namespace].Url - Me.Cites = [Namespace].Cites - Me.Category = [Namespace].Category - End Sub - - ''' - ''' 从文件之中解æžå‡ºæ¥çš„æ–°çš„æ•°æ®æ›´æ–°å½“å‰çš„æ¨¡å— - ''' - ''' - Public Sub Copy(ns As PartialModule) - Me.Description = ns.Description - Me.Assembly = ns.Assembly - Me.EntryPoints = ns.EntryPoints - Me.Namespace = ns.Namespace - Me.Publisher = ns.Publisher - Me.Revision = ns.Revision - Me.Url = ns.Url - Me.Cites = ns.Cites - Me.Category = ns.Category - End Sub - - Public Overloads Shared Function Equals(ns1 As PartialModule, ns2 As PartialModule) As Boolean - Dim nsAssm1 = ns1.Assembly?.LoadAssembly - Dim nsAssm2 = ns2.Assembly?.LoadAssembly - - If nsAssm1 Is Nothing OrElse nsAssm2 Is Nothing Then - Return False '无法判断则肯定ä¸ç›¸ç­‰ - End If - - If Not String.Equals(ns1.Assembly.TypeId, ns2.Assembly.TypeId) Then - Return False 'æ¥æºä¸ä¸€æ ·ï¼Œåˆ™è‚¯å®šä¸ä¸€æ · - End If - - Return True - End Function - - Public Function GetCites() As String - Dim typeDef As Type = Assembly.GetType - If typeDef Is Nothing Then - Return "" - Else - Return HTML.Cites.GetCites(typeDef) - End If - End Function - - Public Function GenerateDescription() As String Implements IWikiHandle.GenerateDescription - Throw New NotImplementedException() - End Function - - Public Overloads Function Match(keyword As String) As String Implements IWikiHandle.Match - Throw New NotImplementedException() - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/SPM/PackageModuleDb.vb b/Shoal.v2/Shoal.v2/SPM/PackageModuleDb.vb deleted file mode 100644 index e07b66e66..000000000 --- a/Shoal.v2/Shoal.v2/SPM/PackageModuleDb.vb +++ /dev/null @@ -1,86 +0,0 @@ -Imports System.Text -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.HybridsScripting -Imports Microsoft.VisualBasic.Scripting.ShoalShell.SPM.Nodes - -Namespace SPM - - ''' - ''' 包管ç†å™¨çš„æ•°æ®åº“文件 - ''' - Public Class PackageModuleDb : Inherits ComponentModel.ITextFile - - Public Property NamespaceCollection As [Namespace]() - Public Property HybridEnvironments As HybridEnvir() - Get - If __innerListEnvir Is Nothing Then - __innerListEnvir = New List(Of Nodes.HybridEnvir) - End If - Return __innerListEnvir.ToArray - End Get - Set(value As SPM.Nodes.HybridEnvir()) - If value Is Nothing Then - value = New Nodes.HybridEnvir() {} - End If - - __innerListEnvir = value.ToList - End Set - End Property - - Dim __innerListEnvir As List(Of SPM.Nodes.HybridEnvir) - - ''' - ''' 默认的注册表é…置文件,该文件是在与本程åºåŒä¸€ä¸ªæ–‡ä»¶å¤¹ä¹‹ä¸‹çš„以程åºå开始的XML文件.åœ¨è¯¥æ–‡ä»¶ä¹‹ä¸­åŒ…å«æœ‰æ‰€æœ‰çš„ç±»åž‹æ³¨å†Œä¿¡æ¯ - ''' - ''' - Public Shared ReadOnly Property DefaultFile As String = $"{App.ProductSharedDir}/.Settings/shoal-spm.xml" - - Public Shared Function Load(path As String) As PackageModuleDb - Dim Db = path.LoadXml(Of PackageModuleDb)(ThrowEx:=False) - - If Db Is Nothing Then - Db = New PackageModuleDb - Call Db.GetXml(False).SaveTo(path) - End If - - Db.FilePath = path - - Return Db - End Function - - Public Shared Function LoadDefault() As PackageModuleDb - Call $"Load SPM Database from ==> {DefaultFile.ToFileURL}...".__DEBUG_ECHO - Return Load(DefaultFile) - End Function - - Public Overrides Function Save(Optional FilePath As String = "", - Optional Encoding As Encoding = Nothing) As Boolean - - FilePath = getPath(FilePath) - Return Me.GetXml.SaveTo(FilePath, Encoding) - End Function - - Public Sub Update(Environment As EntryPoint) - Dim LQuery As HybridEnvir() = (From obj As HybridEnvir - In HybridEnvironments - Where String.Equals(obj.Language, Environment.Language.Language, StringComparison.OrdinalIgnoreCase) - Select obj).ToArray - - Dim Node As HybridEnvir = - Assembly.CreateObject(Of HybridEnvir)(Environment.DeclaredAssemblyType.Assembly) - - Node.Language = Environment.Language.Language - Node.TypeId = Environment.DeclaredAssemblyType.FullName - Node.Description = Environment.Language.Description - - If Not LQuery.IsNullOrEmpty Then - Call __innerListEnvir.Remove(LQuery(Scan0)) - End If - - Call __innerListEnvir.Add(Node) - End Sub - - Protected Overrides Function __getDefaultPath() As String - Return DefaultFile - End Function - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/SPM/ShoalPackageMgr.vb b/Shoal.v2/Shoal.v2/SPM/ShoalPackageMgr.vb deleted file mode 100644 index c2f8c103f..000000000 --- a/Shoal.v2/Shoal.v2/SPM/ShoalPackageMgr.vb +++ /dev/null @@ -1,317 +0,0 @@ -Imports System.Reflection -Imports System.Text.RegularExpressions -Imports Microsoft.VisualBasic.Scripting.ShoalShell.SPM.Nodes -Imports Microsoft.VisualBasic.Linq.Extensions - -Namespace SPM - - ''' - ''' Shoal模å—管ç†å™¨ - ''' - Public Class ShoalPackageMgr - - Implements IDictionary(Of String, SPM.Nodes.Namespace) - Implements System.IDisposable - - Dim _NamespaceHash As Dictionary(Of String, SPM.Nodes.Namespace) - Dim _LibraryDb As SPM.PackageModuleDb - - Sub New(ByRef Library As SPM.PackageModuleDb) - If Library.NamespaceCollection Is Nothing Then - Library.NamespaceCollection = New [Namespace]() {} - End If - - _LibraryDb = Library - _NamespaceHash = Library.NamespaceCollection.ToDictionary(Function(ns) ns.Namespace.ToLower) - End Sub - - ''' - ''' 将所得到的模å—åˆå¹¶åˆ°çŽ°æœ‰çš„æ¨¡å—之中 - ''' - ''' - ''' - Public Function MergeNamespace(NsCollection As Nodes.PartialModule()) As Integer - Dim LQuery = (From ns As Nodes.PartialModule - In NsCollection 'ä¸éœ€è¦å¹¶è¡Œï¼Œå› ä¸ºç»™å‡ºçš„集åˆä¹‹ä¸­å¯èƒ½å«æœ‰åŒå的命å空间,åˆå¹¶çš„æ—¶å€™ä½¿ç”¨å¹¶è¡ŒåŒ–ä¼šäº§ç”Ÿå†²çª - Where Me.__mergeNamespace(ns) Select 1).ToArray.Sum - Return LQuery - End Function - - ''' - ''' å‘è„šæœ¬çŽ¯å¢ƒä¹‹ä¸­å®‰è£…æ³¨å†Œä¸€ä¸ªå¤–éƒ¨çš„æ¨¡å— - ''' - ''' 文件路径ä¸éœ€è¦ç‰¹æ®Šå¤„ç†ï¼Œå‡½æ•°ä¼šè‡ªåŠ¨è½¬æ¢ä¸ºå…¨è·¯å¾„ - ''' - Public Function [Imports](assemPath As String) As PartialModule() - Dim nsModules = AssemblyParser.LoadAssembly(assemPath) - Call MergeNamespace(nsModules) - Call __safelyImports(System.Reflection.Assembly.LoadFile(FileIO.FileSystem.GetFileInfo(assemPath).FullName)) - - Return nsModules - End Function - - Private Sub __safelyImports(assm As System.Reflection.Assembly) - Try - Call __importsEnvir(assm) - Catch ex As Exception - Call Console.WriteLine(vbCrLf) - Call $"{MethodBase.GetCurrentMethod.GetFullName}{vbCrLf} >> {assm.Location.ToFileURL}::{assm.FullName}".__DEBUG_ECHO - Call Console.WriteLine(ex.ToString) - End Try - End Sub - - Private Sub __importsEnvir(Assembly As System.Reflection.Assembly) - Dim LQuery = (From typeRef In Assembly.GetTypes.AsParallel - Let envir = Runtime.HybridsScripting.EnvironmentParser.Imports(typeRef) - Where Not envir.IsNull - Select envir).ToArray - For Each environment In LQuery - Call Me._LibraryDb.Update(environment) - Next - End Sub - - Public Sub UpdateDb() - _LibraryDb.NamespaceCollection = _NamespaceHash.Values.ToArray - _LibraryDb.Save() - - Call HTML.DocRenderer.Indexing(_LibraryDb) - Call $"[Job DONE!] {NameOf(UpdateDb)}".__DEBUG_ECHO - End Sub - - Private Function __mergeNamespace(ns As Nodes.PartialModule) As Boolean - Dim [Namespace] As SPM.Nodes.Namespace - Dim Name As String = ns.Namespace.ToLower - - If _NamespaceHash.ContainsKey(Name) Then - [Namespace] = _NamespaceHash(Name) - - Dim EqualsModule = (From [module] In [Namespace].PartialModules - Where SPM.Nodes.PartialModule.Equals([module], ns) - Select [module]).FirstOrDefault - If EqualsModule Is Nothing Then '没有相åŒçš„æ¨¡å—,则直接添加 - [Namespace].PartialModules = [Namespace].PartialModules.Join(ns).ToArray - Else - Call EqualsModule.Copy(ns) - End If - - [Namespace].Cites = __mergeCites([Namespace].Cites, ns.Cites) - [Namespace].Publisher = __mergeAuthors([Namespace].Publisher, ns.Publisher) - Else - [Namespace] = New [Namespace] With { 'ä¸å­˜åœ¨åˆ™æ–°å»ºæ·»åŠ  - .Description = ns.Description, - .Publisher = ns.Publisher, - .Revision = ns.Revision, - .Cites = {ns.Cites}, - .Url = ns.Url, - .PartialModules = {ns}, - .Namespace = ns.Namespace - } - Call _NamespaceHash.Add(Name, [Namespace]) - End If - - Call HTML.DocRenderer.GenerateHtmlDoc([Namespace]) - - Return True - End Function - - ''' - ''' 这个是å‚ç…§EndNote使用逗å·ä»¥åŠåˆ†å·åˆ†å‰²çš„ - ''' - ''' - ''' - ''' - Private Shared Function __mergeAuthors(DbValue As String, Merge As String) As String - If String.IsNullOrEmpty(DbValue) Then - Return Merge - End If - If String.IsNullOrEmpty(Merge) Then - Return DbValue - End If - - Dim Tokens = DbValue.Split(";"c).ToArray(Function(name) name.Split(","c)).MatrixToList - Dim mToken = Merge.Split(";"c).ToArray(Function(name) name.Split(","c)).MatrixToList - Dim Values As List(Of String) = Tokens.Join(mToken) - Dim GroupName = (From name As String - In Values - Let tName As String = Trim(name) - Where Not String.IsNullOrEmpty(tName) - Select tName.ToUpper, tName - Group By ToUpper Into Group).ToArray - Dim Names As String() = GroupName.ToArray(Function(ng) ng.Group.First.tName) - Return String.Join(", ", Names) - End Function - - Private Shared Function __mergeCites(cites As String(), imported As String) As String() - If cites.IsNullOrEmpty Then - If String.IsNullOrEmpty(imported) Then - Return New String() {} - Else - Return Strings.Split(imported, "///") - End If - - ElseIf String.IsNullOrEmpty(imported) - Return cites - - Else - For Each cite As String In Strings.Split(imported, "///") - cites = ___mergeCites2(cites, cite) - Next - Return cites - End If - End Function - - Private Shared Function ___mergeCites2(cites As String(), imported As String) As String() - Dim ImportedTitle As String = Regex.Match(imported, """[^""]+", RegexOptions.Singleline).Value - - If String.IsNullOrEmpty(ImportedTitle) Then - ImportedTitle = imported - End If - - For i As Integer = 0 To cites.Length - 1 - If InStr(cites(i), ImportedTitle, CompareMethod.Text) > 0 Then - cites(i) = imported - Return cites - End If - Next - - cites = cites.Join(imported).ToArray - - Return cites - End Function - -#Region "Implements System.Collections.Generic.IDictionary(Of String, SPM.Nodes.Namespace)" - - ''' - ''' 大å°å†™ä¸æ•感 - ''' - ''' - ''' - Default Public Property Item(key As String) As [Namespace] Implements IDictionary(Of String, [Namespace]).Item - Get - key = key.ToLower - - If Me._NamespaceHash.ContainsKey(key) Then - Return Me._NamespaceHash(key) - Else - Return Nothing - End If - End Get - Set(value As [Namespace]) - key = key.ToLower - - If Me._NamespaceHash.ContainsKey(key) Then - Call Me._NamespaceHash.Remove(key) - End If - - Call Me._NamespaceHash.Add(key, value) - End Set - End Property - - Public ReadOnly Property Keys As ICollection(Of String) Implements IDictionary(Of String, [Namespace]).Keys - Get - Return Me._NamespaceHash.Keys - End Get - End Property - - Public ReadOnly Property Values As ICollection(Of [Namespace]) Implements IDictionary(Of String, [Namespace]).Values - Get - Return Me._NamespaceHash.Values - End Get - End Property - - Public ReadOnly Property Count As Integer Implements ICollection(Of KeyValuePair(Of String, [Namespace])).Count - Get - Return Me._NamespaceHash.Count - End Get - End Property - - Public ReadOnly Property IsReadOnly As Boolean Implements ICollection(Of KeyValuePair(Of String, [Namespace])).IsReadOnly - Get - Return False - End Get - End Property - - Public Function ContainsKey(key As String) As Boolean Implements IDictionary(Of String, [Namespace]).ContainsKey - Return Me._NamespaceHash.ContainsKey(key.ToLower) - End Function - - Public Sub Add(key As String, value As [Namespace]) Implements IDictionary(Of String, [Namespace]).Add - Call Me._NamespaceHash.Add(key.ToLower, value) - End Sub - - Public Function Remove(key As String) As Boolean Implements IDictionary(Of String, [Namespace]).Remove - Return Me._NamespaceHash.Remove(key.ToLower) - End Function - - Public Function TryGetValue(key As String, ByRef value As [Namespace]) As Boolean Implements IDictionary(Of String, [Namespace]).TryGetValue - Return Me._NamespaceHash.TryGetValue(key.ToLower, value) - End Function - - Public Sub Add(item As KeyValuePair(Of String, [Namespace])) Implements ICollection(Of KeyValuePair(Of String, [Namespace])).Add - Call Me._NamespaceHash.Add(item.Key.ToLower, item.Value) - End Sub - - Public Sub Clear() Implements ICollection(Of KeyValuePair(Of String, [Namespace])).Clear - Call Me._NamespaceHash.Clear() - End Sub - - Public Function Contains(item As KeyValuePair(Of String, [Namespace])) As Boolean Implements ICollection(Of KeyValuePair(Of String, [Namespace])).Contains - Return Me._NamespaceHash.ContainsKey(item.Key.ToLower) - End Function - - Public Sub CopyTo(array() As KeyValuePair(Of String, [Namespace]), arrayIndex As Integer) Implements ICollection(Of KeyValuePair(Of String, [Namespace])).CopyTo - Call Me._NamespaceHash.ToArray.CopyTo(array, arrayIndex) - End Sub - - Public Function Remove(item As KeyValuePair(Of String, [Namespace])) As Boolean Implements ICollection(Of KeyValuePair(Of String, [Namespace])).Remove - Return Me._NamespaceHash.Remove(item.Key.ToLower) - End Function - - Public Iterator Function GetEnumerator() As IEnumerator(Of KeyValuePair(Of String, [Namespace])) _ - Implements IEnumerable(Of KeyValuePair(Of String, [Namespace])).GetEnumerator - - For Each obj In Me._NamespaceHash - Yield obj - Next - End Function - - Private Iterator Function IEnumerable_GetEnumerator() As IEnumerator Implements IEnumerable.GetEnumerator - Yield GetEnumerator() - End Function -#End Region - -#Region "IDisposable Support" - Private disposedValue As Boolean ' To detect redundant calls - - ' IDisposable - Protected Overridable Sub Dispose(disposing As Boolean) - If Not Me.disposedValue Then - If disposing Then - ' TODO: dispose managed state (managed objects). - Call UpdateDb() - End If - - ' TODO: free unmanaged resources (unmanaged objects) and override Finalize() below. - ' TODO: set large fields to null. - End If - Me.disposedValue = True - End Sub - - ' TODO: override Finalize() only if Dispose(disposing As Boolean) above has code to free unmanaged resources. - 'Protected Overrides Sub Finalize() - ' ' Do not change this code. Put cleanup code in Dispose(disposing As Boolean) above. - ' Dispose(False) - ' MyBase.Finalize() - 'End Sub - - ' This code added by Visual Basic to correctly implement the disposable pattern. - Public Sub Dispose() Implements IDisposable.Dispose - ' Do not change this code. Put cleanup code in Dispose(disposing As Boolean) above. - Dispose(True) - ' TODO: uncomment the following line if Finalize() is overridden above. - ' GC.SuppressFinalize(Me) - End Sub -#End Region - - End Class -End Namespace \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Shoal.v2.Designer.cd b/Shoal.v2/Shoal.v2/Shoal.v2.Designer.cd deleted file mode 100644 index 071580f77..000000000 --- a/Shoal.v2/Shoal.v2/Shoal.v2.Designer.cd +++ /dev/null @@ -1,1039 +0,0 @@ - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - Compiler\CodeDOM\Expression.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - Compiler\CodeDOM\Tokens.vb - - - - - - ABAAAAAAAAAAAAAAAAAAIAAEAAAAAAAAAAAAAAAAAEA= - Compiler\VBC.vb - - - - - - AIAEQIKAIAgQABCgAAUBAAAAACBAAAAAASAAAAkCAAA= - Configuration\Config.vb - - - - - - - - - Interpreter\Interpreter.vb - - - - - AAAAAAAAACAAEAAEAgABAAAAAAAgAAAAAAAAABAAAQA= - Interpreter\Interpreter.vb - - - - - - AAAAgAAAAAAAAAAAEAAACBAAARAAAmAAAAQAAAAAAAA= - Interpreter\Linker\EntryPoint.vb - - - - - - BAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\Comments.vb - - - - - - BAAAAIAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\Die.vb - - - - - - DAAAAQAAAAAAAAAGAAAIAAAEAAAAAAAAAAAAAAAAIAA= - Interpreter\Parser\LDM\Expressions\Expression.vb - - - - - - BAAAAAEAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\DynamicsExpression.vb - - - - - - BAAACCAAAAAAAAAAAAAAAIAAAAAQAAAAAIABAAAAAAA= - Interpreter\Parser\LDM\Expressions\FunctionCalls.vb - - - - - - BAAACAAAAAAAAAQAAAAAQAAAAAAAAAAAAAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\HashTable.vb - - - - - - BAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAQAAAAAABAA= - Interpreter\Parser\LDM\Expressions\VariableDeclaration.vb - - - - - - BAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\ControlFlow\DoWhile.vb - - - - - - BAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\ControlFlow\DoWhile.vb - - - - - - BAAAAAAAAAAIQAAAAAAAAAAAAABAAAAAAAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\ControlFlow\For.vb - - - - - - BACAAAAAAAAACAAEAAAAAAAAAAAAAAAAAAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\ControlFlow\GotoJumps.vb - - - - - - BAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\ControlFlow\GotoJumps.vb - - - - - - BAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\ControlFlow\If.vb - - - - - - BAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\ControlFlow\If.vb - - - - - - BAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\ControlFlow\If.vb - - - - - - BQAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\HybridScript\HybirdsScriptPush.vb - - - - - - BAAACAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\HybridScript\HybridsScript.vb - - - - - - BAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\Keywords\Imports.vb - - - - - - BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\Keywords\Include.vb - - - - - - BAAAAAAAAAAAAAAEAAAAAAAAAAAAAIAAAAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\Keywords\Library.vb - - - - - - BAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\Keywords\OnErrorResumeNext.vb - - - - - - BEAAAAAAAAAAAAAECAAAAAAAAAAAAAAIAAAAEAAAAAA= - Interpreter\Parser\LDM\Expressions\Keywords\SyntaxError.vb - - - - - - AAAgAIAAQAAAAAAEAAABAAIAQAQAAgAAAABAAgAAhAA= - Interpreter\Parser\LDM\SyntaxModel.vb - - - - - - AAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAACAAABAAA= - Interpreter\Parser\Tokenliser\FullTokenliser.vb - - - - - - AAAAAAAAAAAAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAgA= - Interpreter\Parser\Tokenliser\Tokens\EntryPoint.vb - - - - - - AAAAAAEAAAAAAAAEAAAAAIAAAAAAAAAQAAAEAAACAgA= - Interpreter\Parser\Tokenliser\Tokens\InternalExpression.vb - - - - - - AACAAAAAAAAAAAAEAAAAAIAAEAAAAAgCAAAAACAAAgA= - Interpreter\Parser\Tokenliser\Tokens\LeftAssignedVariable.vb - - - - - - - - Interpreter\Parser\Tokenliser\Tokens\Operator.vb - - - - - AAAAAAIAAAAAAAAEAAAAAAAAAAAAAAAAAQAAAAAAAgA= - Interpreter\Parser\Tokenliser\Tokens\Operator.vb - - - - - - - - - - - Interpreter\Parser\Tokenliser\Tokens\ParameterName.vb - - - - - AAAACAAAAAAAQBAEAAAAAAAAAAAAABAAAQAAAAAAAkA= - Interpreter\Parser\Tokenliser\Tokens\ParameterName.vb - - - - - - DAAAABAAAAAAAAAEBAABAQAAAAAAAQQAAAAAAAAAAgE= - Interpreter\Parser\Tokenliser\Tokens\Tokens.vb - - - - - - AAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAA= - - - - - - - - - - - Runtime\ExecuteModel.vb - - - - - IggAAIAAi0zEAgggCQAQCAAJoCQE8VAAAgCBKEIAAAA= - Runtime\StatusMachine\ExecuteModel.vb - - - - - - AAAAAAAAAAAAAAQAAAAAAABAAAAEAAABAEAAAAAgAAA= - Runtime\StatusMachine\FSMMachine.vb - - - - - - AAgAAAMAIjAAAAAEAAgAAggAAEAEAFAAAAAAAAAAIAA= - Runtime\ScriptEngine.vb - - - - - - CCRgAEAEIlAEABAAiCBCQAAgBABIgAAEAAQgAAEACMA= - Runtime\MMU\MMUDevice.vb - - - - - - - - - Runtime\MMU\Variable.vb - - - - - ABAAAAAAACIAAAAEAAgAIAQAAAgBAgACAQAgAgAAAAA= - Runtime\MMU\Variable.vb - - - - - - - AAAAAAIAACAAAAAEAAAAAAAAAAAAAAAAAAAAAgAAAAA= - Runtime\RuntimeComponent.vb - - - - - - - IAAAAgAAACQgAQIEAAAEAEAAAAAAAgAggAAABAAAAAA= - SPM\Nodes\Assembly.vb - - - - - - - AAAAEgAAAAAgAAAEAAAEAAQAAAAAAAAAAIAAAAAAAgA= - SPM\Nodes\EntryPointMeta.vb - - - - - - - AAAAEgAAAAAgAAAETAAEAgEgQEAABAAACAAAAAAACAA= - SPM\Nodes\Namespace.vb - - - - - - - AIAAAgAAAABAAAAAgAAEAAAAAgAAAIAAAAAAAAAAAAA= - SPM\Nodes\PartialModule.vb - - - - - - - ACQEgIAAACAAAAAAAAABAAAIAABAAAAAAAAAAAAAAAA= - SPM\PackageModuleDb.vb - - - - - - CEYIAAAAACAEBBAQGAAQBAQEAAAAAEoUAAAgAgBQIAA= - SPM\ShoalPackageMgr.vb - - - - - - - CAAAAACgAAAAEBBEAAACAAQAAAACAAAAAIEAAABAAAA= - Interpreter\Linker\API\APIEntryPoint.vb - - - - - - - AIBAAAEAAAAAAAAEoAAAAAAAAABAAgAAAIABAAAEAAA= - Interpreter\Linker\API\FunctionSignature.vb - - - - - - AAAAAAAAIAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAA= - Interpreter\Linker\Linker.vb - - - - - - AAAAAQAgIAAAAAAEAAAAAAAAAAAAAJAAAAAAABAAAAQ= - Compiler\CodeDOM\Program.vb - - - - - - AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAEAAA= - Configuration\Configuration.vb - - - - - - AAAACAAAAAAAIAAABAAAAAAAAAAAAAAAAAgAAAAAAAA= - HTML\IWikiHandle.vb - - - - - - KQCAABAAAgAEABAACAAAAAAAIAAAABAEAAAgAAAAAIA= - Interpreter\AnonymousDelegate.vb - - - - - - - AAAAAAAAAEAAAAAAACAAAAAAAAAAAAAAAAAAgAAAAAA= - Interpreter\Linker\API\Arguments.vb - - - - - - BAAAAAAAAAAACAAAAABAAAAAACAAAAAAAQAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\Collection\CollectionOpr.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\Collection\CollectionRef.vb - - - - - - BAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAQAAAAA= - Interpreter\Parser\LDM\Expressions\Delegate.vb - - - - - - BAQAAAAAAAAAAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\Source.vb - - - - - - BAAAAAAAAAAAAAAAAAEAAAIAAAAAAAAgAAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\Driver\DynamicsCast.vb - - - - - - BAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAgAAAAAAA= - Interpreter\Parser\LDM\Expressions\Driver\FileIO.vb - - - - - - BAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\Driver\OutDeviceRef.vb - - - - - - BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAA= - Interpreter\Parser\LDM\Expressions\HybridScript\RedirectStream.vb - - - - - - BAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\Keywords\Cd.vb - - - - - - BAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\Keywords\Memory.vb - - - - - - BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAA= - Interpreter\Parser\LDM\Expressions\Keywords\Return.vb - - - - - - BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAA= - Interpreter\Parser\LDM\Expressions\Keywords\Wiki.vb - - - - - - CAAQAAAAAAQAACAAAIAAwAAAgAAAAAAACgAASAABIAg= - Interpreter\Parser\Tokenliser\MSLTokens.vb - - - - - - ABBACAAAIAAAAAAIAAAEAAAggAACAAABAABAAAgAAAA= - Runtime\Debugger\Debugger.vb - - - - - - - AAAIAAAIASAAIAIAACAAAAQAAAIAAAAAQAAICgAABAA= - Runtime\Debugger\DebuggerListener.vb - - - - - - - AAAAAAAAAAAEAAAAAAACAAAAAAAAAAAAAAAAIAAAAAA= - Runtime\Debugger\DebuggerMessage.vb - - - - - - IAAAAAIABAAAAAQAAAAAAAAAAAAAAAAAAEAAAAAAAAI= - Runtime\Debugger\ShellScriptDebuggerModel.vb - - - - - - - - Runtime\Driver\DriverBase.vb - - - - - QAAAAgAEAAEAAAAAAAACAAAIAAAAAAAAAAAAAAgAIAA= - Runtime\Driver\DriverBase.vb - - - - - - AAAAAAAAAAAAAAAQQAACAAAAAAAACAAAIAAAAAiAAAA= - Runtime\Driver\DynamicsCast.vb - - - - - - - - - - - Runtime\Driver\IODeviceDriver.vb - - - - - AAAkAACACAAAAIAAAEACggAAAACgAAAAAAAAAAiAAAA= - Runtime\Driver\IODeviceDriver.vb - - - - - - BAAAAAAAAAAAAAAAAAECAAAAFAABAIAAAAAAAAwAAAA= - Runtime\Driver\OutputDeviceDriver.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE= - Runtime\Driver\DriverHandles.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - Runtime\Driver\DriverHandles.vb - - - - - - AAAAAAAAAAAgAAAEAAAAAAAAAAAAAAAQAAAAAAAAAAA= - Runtime\Driver\DriverHandles.vb - - - - - - AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAA= - Runtime\Driver\DriverHandles.vb - - - - - - AAAAAAIABCAAAAUEAAAARoBEDAgCAEAgANgAogYQAAI= - Runtime\Dynamics.vb - - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAA= - Runtime\Exceptions\DriverNotFound.vb - - - - - - AAQAAAAAAAAAAAAAAAAAAAAgACAAAAAACAAAAAAAAAA= - Runtime\Exceptions\MethodNotFoundException.vb - - - - - - AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAA= - Runtime\Exceptions\RuntimeException.vb - - - - - - AAAAAAAAQAAAAAAEAAAAAAAAAAAAAAAAAAAQAAAAAAA= - Runtime\HybridScripting\Interface\DataTransform.vb - - - - - - - - - AAAAAAAAAAAAAAAEAAAAAAAAEAAAAAAAAAEAAAAAAAA= - Runtime\HybridScripting\Interface\EntryInterface.vb - - - - - - AAAAAAAAAAAAggAAAAAAAgAAAAAEAEAAAAAACAAAAAA= - Runtime\HybridScripting\InteropAdapter.vb - - - - - - - AAAAIAAAAAAAAAAAAAAAAAAAAAgAAAgAAAQAAAAAAAA= - Runtime\MMU\Strings.vb - - - - - - AAAQAAAAIAAAAgAAAAgAAAAAAAAAAAAAAAAAAAAAAAA= - Runtime\MMU\PageMapping\DDM.vb - - - - - - - AAAAAAAAJAAAAgAAAAgAAAAAAAAAAAAAAAAAAAAAAAA= - Runtime\MMU\PageMapping\DDM.vb - - - - - - - AAgAAAAAAAAAAAAAACAACAAAAAAAAEAAAAAAAAAQAAA= - Runtime\MMU\PageMapping\MappingImports.vb - - - - - - AAAAgAAAIAIAAgAEAAgAAAAAAAAAAgAAAAAgAAAAAAA= - Runtime\MMU\PageMapping\PageMapping.vb - - - - - - - AAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - SPM\Nodes\HybridEnvir.vb - - - - - - - - - - - - Interpreter\Parser\LDM\Expressions\ControlFlow\For.vb - - - - - Interpreter\Parser\LDM\Expressions\ControlFlow\For.vb - - - - - Interpreter\Parser\LDM\Expressions\ControlFlow\For.vb - - - - - AAAAAAAAAIAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAA= - Interpreter\Parser\LDM\Expressions\ControlFlow\For.vb - - - - - - IgAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAA= - Runtime\StatusMachine\Stack.vb - - - - - - CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - Interpreter\Parser\MachineElement.vb - - - - - - AAAAAAAACAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAA= - Runtime\HybridScripting\Interface\ScriptEntryPoint.vb - - - - - - BAAAAAAAAAAAQAAAAAAAAAAAACAAAAAAAAAgAAAAAAA= - Interpreter\Parser\LDM\Expressions\Collection\CollectionAppends.vb - - - - - - AAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAEAAAAAAgA= - Interpreter\Parser\Tokenliser\Tokens\CollectionElement.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAA= - Interpreter\Linker\API\Alignment\Alignments\OneParameter.vb - - - - - - AAAAAAAAAAAAAEAAAAQAAAAAAAAAAAAAACAAAAAAAAA= - Interpreter\Linker\API\Alignment\Alignments\SpecialAlignment(Of T).vb - - - - - - AAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAACAAAAAAAAA= - Interpreter\Linker\API\Alignment\Alignments\TwoParameter.vb - - - - - - AAQAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - Interpreter\Linker\API\Alignment\ParamAlignments.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAA= - Interpreter\Parser\Tokenliser\ParserCommon.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - Runtime\Exceptions\MethodNotFoundException.vb - - - - - - EAAAAAEAiAAIAgoEAAAAAgAAAAEAAAEIAAASAAAAAAA= - Runtime\HybridScripting\EntryPoint.vb - - - - - - AAAAIAAAAABAAAAEAAABAAAAAAAAAAAAAAAAAAAAAAA= - Interpreter\Linker\API\ParameterWithAlias.vb - - - - - - AAAAAgAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAA= - HTML\IWikiHandle.vb - - - - - - AAAAAAAAAAIAAAAAAAgAAAQAAAgBAgAAAQAgAAAAAAA= - Runtime\MMU\PageUnit.vb - - - - - - IggAAoBgAghGAiAgCQAQGAABACAEAGABAgDAKAIAIAA= - Interpreter\Parser\LDM\Expressions\ExpressionTypes.vb - - - - - - AAAAAAAAABAAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAA= - Runtime\MMU\PageUnit.vb - - - - - - AAAACCAAACAAAAAAgAAAAAAAAAAAABAAAAABAAAAACA= - Interpreter\Parser\Tokenliser\Tokens\TokenTypes.vb - - - - - - AAAAAAAAAAAAAgAAAAAAAgAAAAAAAAAAAgAAAAQAAAA= - Runtime\HybridScripting\Interface\EntryInterface.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAA= - Runtime\HybridScripting\InteropAdapter.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAgCAAAAAAAAAAAAAAAA= - Runtime\HybridScripting\InteropAdapter.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAA= - Debugger.vb - - - - - - AAAgAAgAEAgAAEAAAQAAAAAAAAgAAQAQAAIAAIEAAEA= - HTML\DocRenderer.vb - - - - - - AIApQgJJgRBAEEhAASCAQgADAEkiCABAAAgAQoEAAAA= - Interpreter\Parser\SyntaxParser.vb - - - - - - AAAAAAAAABAAAAAAAAABEAAAAQAAAACAAAgIAAABAKA= - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAA= - - - - - - AAAAAAAIAAAAAAAEAAAAEEAAAAAAAEAgACAAAAAAACA= - SPM\Nodes\AssemblyParser.vb - - - - - - AAABAAEgAIAAEAAgCAQAAAABAAAACAAAAiAQAAAEBAA= - Interpreter\Linker\API\Alignment\FunctionCalls.vb - - - - - - AAAAAAAAAAAAAAAAAABAAAAEAAABAAAAAAQAAAAAAAA= - Interpreter\Linker\API\Alignment\TypeEquals.vb - - - - - - IAAAAAAAAgQAAAgEAAAAIAAIAAAAIAAAAICAAABAGAI= - InternalExtension.vb - - - - - - AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAA= - Interpreter\Linker\API\APIInvoker.vb - - - - - - AAAAAAAAAAAAAAAAAQACCAAAAAAAAAAAAAAgAAAAAAA= - Interpreter\Parser\Tokenliser\ParserCommon.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - Runtime\Debugger\DebuggerProtocol.vb - - - - - - AAAAAAAAAAAAAQAAAAAAAAAAgAAAAEAAAAAAAAAAAAA= - Runtime\HybridScripting\EnvironmentParser.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAA= - Runtime\MMU\PageUnit.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAEAAAAAAA= - Runtime\RuntimeEnvironment.vb - - - - - - AAAggAABAAAQAAAAAAAAAAAAAAAAQAAAAAAAAAIAAIA= - HTML\TypeLinks.vb - - - - - - AAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - HTML\Cites.vb - - - - \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/ShoalShell_Core.v2.vbproj b/Shoal.v2/Shoal.v2/ShoalShell_Core.v2.vbproj deleted file mode 100644 index dc98afc0d..000000000 --- a/Shoal.v2/Shoal.v2/ShoalShell_Core.v2.vbproj +++ /dev/null @@ -1,363 +0,0 @@ - - - - - Debug - AnyCPU - {A7CB16FF-75C6-4746-8449-86C121D723C4} - Library - - - Microsoft.VisualBasic.Scripting.ShoalShell - Microsoft.VisualBasic.Scripting.ShoalShell - 512 - Windows - v4.6 - true - - - - AnyCPU - true - full - true - true - bin\Debug\ - Microsoft.VisualBasic.Scripting.ShoalShell.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - x64 - pdbonly - false - true - true - ..\..\..\GCModeller\GCModeller-x64\ - Microsoft.VisualBasic.Scripting.ShoalShell.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - false - - - On - - - Binary - - - Off - - - On - - - true - true - true - bin\x64\Debug\ - Microsoft.VisualBasic.Scripting.ShoalShell.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x64 - MinimumRecommendedRules.ruleset - - - true - bin\x64\Release\ - Microsoft.VisualBasic.Scripting.ShoalShell.xml - false - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - bin\Publish\ - Microsoft.VisualBasic.Scripting.ShoalShell.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - bin\x64\Publish\ - Microsoft.VisualBasic.Scripting.ShoalShell.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - true - true - bin\x86\Debug\ - Microsoft.VisualBasic.Scripting.ShoalShell.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x86 - MinimumRecommendedRules.ruleset - - - true - bin\x86\Release\ - Microsoft.VisualBasic.Scripting.ShoalShell.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - true - bin\x86\Publish\ - Microsoft.VisualBasic.Scripting.ShoalShell.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - true - bin\docs\ - Microsoft.VisualBasic.Scripting.ShoalShell.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - bin\x64\docs\ - Microsoft.VisualBasic.Scripting.ShoalShell.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - bin\x86\docs\ - Microsoft.VisualBasic.Scripting.ShoalShell.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - True - Application.myapp - - - True - True - Resources.resx - - - True - Settings.settings - True - - - - - - True - True - Settings.settings - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - VbMyResourcesResXFileCodeGenerator - Resources.Designer.vb - My.Resources - Designer - - - - - - - MyApplicationCodeGenerator - Application.Designer.vb - - - SettingsSingleFileGenerator - My - Settings1.Designer.vb - - - - - - - - - - - - - - - - - - - - - {fecce1fd-e1d4-49e3-a668-60bb5e7aed99} - +Microsoft.VisualBasic.Architecture.Framework - - - - - \ No newline at end of file diff --git a/Shoal.v2/Shoal.v2/Syntax Manual.docx b/Shoal.v2/Shoal.v2/Syntax Manual.docx deleted file mode 100644 index ede58a194..000000000 Binary files a/Shoal.v2/Shoal.v2/Syntax Manual.docx and /dev/null differ diff --git a/ShoalShell.Debugger/Debugger.vb b/ShoalShell.Debugger/Debugger.vb deleted file mode 100644 index f2dd4feed..000000000 --- a/ShoalShell.Debugger/Debugger.vb +++ /dev/null @@ -1,9 +0,0 @@ - -''' -''' 在IDE端所使用的调试æœåŠ¡å™¨ç»ˆç«¯ -''' -''' -Public Class DebuggerWorker - - -End Class diff --git a/ShoalShell.Debugger/My Project/Application.Designer.vb b/ShoalShell.Debugger/My Project/Application.Designer.vb deleted file mode 100644 index 88dd01c78..000000000 --- a/ShoalShell.Debugger/My Project/Application.Designer.vb +++ /dev/null @@ -1,13 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - diff --git a/ShoalShell.Debugger/My Project/Application.myapp b/ShoalShell.Debugger/My Project/Application.myapp deleted file mode 100644 index 758895def..000000000 --- a/ShoalShell.Debugger/My Project/Application.myapp +++ /dev/null @@ -1,10 +0,0 @@ - - - false - false - 0 - true - 0 - 1 - true - diff --git a/ShoalShell.Debugger/My Project/AssemblyInfo.vb b/ShoalShell.Debugger/My Project/AssemblyInfo.vb deleted file mode 100644 index a0dfd5622..000000000 --- a/ShoalShell.Debugger/My Project/AssemblyInfo.vb +++ /dev/null @@ -1,35 +0,0 @@ -Imports System -Imports System.Reflection -Imports System.Runtime.InteropServices - -' General Information about an assembly is controlled through the following -' set of attributes. Change these attribute values to modify the information -' associated with an assembly. - -' Review the values of the assembly attributes - - - - - - - - - - -'The following GUID is for the ID of the typelib if this project is exposed to COM - - -' Version information for an assembly consists of the following four values: -' -' Major Version -' Minor Version -' Build Number -' Revision -' -' You can specify all the values or you can default the Build and Revision Numbers -' by using the '*' as shown below: -' - - - diff --git a/ShoalShell.Debugger/My Project/Resources.Designer.vb b/ShoalShell.Debugger/My Project/Resources.Designer.vb deleted file mode 100644 index 4ced1cd23..000000000 --- a/ShoalShell.Debugger/My Project/Resources.Designer.vb +++ /dev/null @@ -1,63 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - -Imports System - -Namespace My.Resources - - 'This class was auto-generated by the StronglyTypedResourceBuilder - 'class via a tool like ResGen or Visual Studio. - 'To add or remove a member, edit your .ResX file then rerun ResGen - 'with the /str option, or rebuild your VS project. - ''' - ''' A strongly-typed resource class, for looking up localized strings, etc. - ''' - _ - Friend Module Resources - - Private resourceMan As Global.System.Resources.ResourceManager - - Private resourceCulture As Global.System.Globalization.CultureInfo - - ''' - ''' Returns the cached ResourceManager instance used by this class. - ''' - _ - Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager - Get - If Object.ReferenceEquals(resourceMan, Nothing) Then - Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging.Resources", GetType(Resources).Assembly) - resourceMan = temp - End If - Return resourceMan - End Get - End Property - - ''' - ''' Overrides the current thread's CurrentUICulture property for all - ''' resource lookups using this strongly typed resource class. - ''' - _ - Friend Property Culture() As Global.System.Globalization.CultureInfo - Get - Return resourceCulture - End Get - Set - resourceCulture = value - End Set - End Property - End Module -End Namespace diff --git a/ShoalShell.Debugger/My Project/Resources.resx b/ShoalShell.Debugger/My Project/Resources.resx deleted file mode 100644 index af7dbebba..000000000 --- a/ShoalShell.Debugger/My Project/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/ShoalShell.Debugger/My Project/Settings.Designer.vb b/ShoalShell.Debugger/My Project/Settings.Designer.vb deleted file mode 100644 index 52e7b276c..000000000 --- a/ShoalShell.Debugger/My Project/Settings.Designer.vb +++ /dev/null @@ -1,73 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - - -Namespace My - - _ - Partial Friend NotInheritable Class MySettings - Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) - -#Region "My.Settings Auto-Save Functionality" -#If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean - - Private Shared addedHandlerLockObject As New Object - - _ - Private Shared Sub AutoSaveSettings( sender As Global.System.Object, e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub -#End If -#End Region - - Public Shared ReadOnly Property [Default]() As MySettings - Get - -#If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If -#End If - Return defaultInstance - End Get - End Property - End Class -End Namespace - -Namespace My - - _ - Friend Module MySettingsProperty - - _ - Friend ReadOnly Property Settings() As Global.Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging.My.MySettings - Get - Return Global.Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging.My.MySettings.Default - End Get - End Property - End Module -End Namespace diff --git a/ShoalShell.Debugger/My Project/Settings.settings b/ShoalShell.Debugger/My Project/Settings.settings deleted file mode 100644 index 85b890b3c..000000000 --- a/ShoalShell.Debugger/My Project/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/ShoalShell.Debugger/ShoalShell.Debugger.vbproj b/ShoalShell.Debugger/ShoalShell.Debugger.vbproj deleted file mode 100644 index 3bf456a4e..000000000 --- a/ShoalShell.Debugger/ShoalShell.Debugger.vbproj +++ /dev/null @@ -1,222 +0,0 @@ - - - - - Debug - AnyCPU - {98B35793-A1A2-4E78-BAFD-75E0D95E6367} - Library - Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging - Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging - 512 - Windows - v4.6 - - - - true - full - true - true - bin\Debug\ - Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - pdbonly - false - true - true - ..\..\GCModeller\GCModeller\ - Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - On - - - Binary - - - Off - - - On - - - true - true - true - bin\x64\Debug\ - Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x64 - MinimumRecommendedRules.ruleset - - - true - ..\..\GCModeller\GCModeller-x64\ - Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - bin\Publish\ - Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - AnyCPU - MinimumRecommendedRules.ruleset - - - true - bin\x64\Publish\ - Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - true - true - bin\x86\Debug\ - Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x86 - MinimumRecommendedRules.ruleset - - - true - bin\x86\Release\ - Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - true - bin\x86\Publish\ - Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - true - bin\docs\ - Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - AnyCPU - MinimumRecommendedRules.ruleset - - - true - bin\x64\docs\ - Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - bin\x86\docs\ - Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - True - Application.myapp - - - True - True - Resources.resx - - - True - Settings.settings - True - - - - - VbMyResourcesResXFileCodeGenerator - Resources.Designer.vb - My.Resources - Designer - - - - - MyApplicationCodeGenerator - Application.Designer.vb - - - SettingsSingleFileGenerator - My - Settings.Designer.vb - - - - - {fecce1fd-e1d4-49e3-a668-60bb5e7aed99} - +Microsoft.VisualBasic.Architecture.Framework - - - {a7cb16ff-75c6-4746-8449-86c121d723c4} - ShoalShell_Core.v2 - - - - - \ No newline at end of file diff --git a/ShoalShell.Legacy/App.config b/ShoalShell.Legacy/App.config deleted file mode 100644 index 2d2a12d81..000000000 --- a/ShoalShell.Legacy/App.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/ShoalShell.Legacy/Code b/ShoalShell.Legacy/Code deleted file mode 100644 index 3d73f9726..000000000 Binary files a/ShoalShell.Legacy/Code and /dev/null differ diff --git a/ShoalShell.Legacy/ConsoleApplication/CommandLines.vb b/ShoalShell.Legacy/ConsoleApplication/CommandLines.vb deleted file mode 100644 index 932697b5a..000000000 --- a/ShoalShell.Legacy/ConsoleApplication/CommandLines.vb +++ /dev/null @@ -1,142 +0,0 @@ -Imports Microsoft.VisualBasic.CommandLine.Reflection - -''' -''' This module define the shoal commandlines for the command line interpreter. -''' -''' -Module CommandLines - - - Public Function Version() As Integer - Call Console.WriteLine($"Shoal Shell {My.Application.Info.Version.ToString}") - Return 0 - End Function - - - Public Function Start() As Integer - Dim work As String = Environment.CurrentDirectory - Return Program.ScriptShellTerminal(-1, work) - End Function - - - Public Function SetValue(argvs As CommandLine.CommandLine) As Integer - Using Profile = Config.Default - Dim var As String = argvs.Parameters.First - Dim value As String = argvs.Parameters(1) - Call Profile.Set(var, value) - End Using - - Return 0 - End Function - - - Public Function GetValue(argvs As CommandLine.CommandLine) As Integer - Dim Profile = Config.Default - Call Console.WriteLine(Profile.WriteLine(argvs.Parameters.FirstOrDefault)) - Return 0 - End Function - - msgbox title ""This is a hello world tesing example!""")> - Public Function Shell(scriptLine As CommandLine.CommandLine) As Integer - Dim strLine As String = Mid(scriptLine.CLICommandArgvs, 3).Trim - If Not String.IsNullOrEmpty(strLine) Then - strLine = strLine.GetString(wrapper:="""") - Else - Call Console.WriteLine("Syntax error on the shell commandline!") - Return -1 - End If - - Using ScriptHost As Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ShellScript = - New Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ShellScript(ShowInitializeMessage:=False, LibraryRegistry:=Program.Configuration.TargetSettingsData.get_RegistryFile) - Call ScriptHost.Imports(GetType(InternalCommands)) - Return ScriptHost.EXEC(ShellScript:=strLine) - End Using - End Function - - - - - Public Function RegisterModule(argvs As CommandLine.CommandLine) As Integer - Dim Path As String = argvs("-path") - Dim AssemblyName As String = argvs("-module_name") - - If String.IsNullOrEmpty(Path) Then - Return -1 - End If - - If Not String.IsNullOrEmpty(Path) AndAlso Not FileIO.FileSystem.FileExists(Path) Then - Call Console.WriteLine("FILE_NOT_FOUND: " & Path) - Return -2 - End If - - Using Registry As Microsoft.VisualBasic.Scripting.ShoalShell.DelegateHandlers.TypeLibraryRegistry.DelegateRegistry = - Microsoft.VisualBasic.Scripting.ShoalShell.DelegateHandlers.TypeLibraryRegistry.DelegateRegistry.CreateDefault - Call Registry.RegisterAssemblyModule(FileIO.FileSystem.GetFileInfo(Path).FullName, AssemblyName) - End Using - - Return 0 - End Function - - - Public Function ScanPlugins(argvs As CommandLine.CommandLine) As Integer - Dim Dir As String = argvs("-dir"), Ext As String = argvs("-ext") - Ext = If(String.IsNullOrEmpty(Ext), "*.*", Ext) - - Dim FilesForScan = FileIO.FileSystem.GetFiles(Dir, FileIO.SearchOption.SearchTopLevelOnly, Ext) - Dim Registry As Microsoft.VisualBasic.Scripting.ShoalShell.DelegateHandlers.TypeLibraryRegistry.DelegateRegistry = - Microsoft.VisualBasic.Scripting.ShoalShell.DelegateHandlers.TypeLibraryRegistry.DelegateRegistry.CreateFromFile(Program.Configuration.TargetSettingsData.get_RegistryFile) - - For Each File As String In FilesForScan - On Error Resume Next - Call Registry.RegisterAssemblyModule(File, "") - Next - - Call Registry.Save() - - Return 0 - End Function - - - Public Function ShowInfo(argvs As CommandLine.CommandLine) As Integer - Dim ScriptFile As String = argvs.Parameters.First - If FileIO.FileSystem.FileExists(ScriptFile) Then - Call Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ObjectModels.ScriptInfo.LoadInfo(ScriptFile, Microsoft.VisualBasic.Scripting.ShoalShell.DelegateHandlers.TypeLibraryRegistry.DelegateRegistry.CreateFromFile(Program.Configuration.TargetSettingsData.get_RegistryFile)).DisplayInfo() - Else - Call Console.WriteLine("'{0}' is not exists on the filesystem!", ScriptFile) - Return -1 - End If - - Return 0 - End Function - - - Public Function Start(argvs As CommandLine.CommandLine) As Integer - Throw New NotImplementedException - End Function - - ''' - ''' 以调试模å¼å¯åŠ¨è„šæœ¬å¼•æ“Ž - ''' - ''' - ''' - ''' 本应用程åºä½œä¸ºå®¢æˆ·ç«¯ï¼Œä¸Žä¸»æœºç¨‹åºè¿›è¡ŒTcpSocket通信æ¥å®Œæˆè°ƒè¯•ä¿¡æ¯çš„æ•°æ® - ''' - - Public Function DEBUG(argvs As CommandLine.CommandLine) As Integer - Dim Port As Integer = Val(argvs("listener_port")) - Dim Work As String = argvs("-work") - Return Program.ScriptShellTerminal(Port, Work) - End Function -End Module \ No newline at end of file diff --git a/ShoalShell.Legacy/ConsoleApplication/Config.vb b/ShoalShell.Legacy/ConsoleApplication/Config.vb deleted file mode 100644 index ab8184a1c..000000000 --- a/ShoalShell.Legacy/ConsoleApplication/Config.vb +++ /dev/null @@ -1,102 +0,0 @@ -Imports Microsoft.VisualBasic.ComponentModel.Settings - -Public Class Config : Inherits Microsoft.VisualBasic.ComponentModel.ITextFile - Implements Microsoft.VisualBasic.ComponentModel.Settings.IProfile - -#Region "Configuration storage property region" - - ''' - ''' 应用程åºå¯åŠ¨çš„æ—¶å€™çš„åˆå§‹å·¥ä½œç›®å½•ï¼Œé»˜è®¤ä¸ºåº”ç”¨ç¨‹åºæ‰€åœ¨çš„æ–‡ä»¶å¤¹ - ''' - ''' - ''' - ''' - Public Property InitDir As String - ''' - ''' 脚本引擎的类型注册表的文件ä½ç½®ï¼Œä¸ºç©ºçš„è¯ä¼šä½¿ç”¨é»˜è®¤çš„æ–‡ä»¶ä½ç½® - ''' - ''' - ''' - ''' - Public Property RegistryFileLocation As String - Get - Return _RegistryFileLocation - End Get - Set(value As String) - value = FileIO.FileSystem.GetFileInfo(value).FullName - _RegistryFileLocation = value - End Set - End Property - - Public Property LastDirAsInit As String - Public Property PreLoadModules As String - Public Property ManualPreferIndexPages As String = "TRUE" - Public Property SaveHistory As String = "TRUE" - - Dim _RegistryFileLocation As String - -#End Region - - Public Function get_PreferIndexingManual() As Boolean - Return ManualPreferIndexPages.getBoolean - End Function - - Public Function get_PreLoadedModules() As String() - Return PreLoadModules.Split - End Function - - Public Function get_LastDir_AsInit() As Boolean - Return LastDirAsInit.getBoolean - End Function - - Public Function get_InitDirectory() As String - If String.IsNullOrEmpty(InitDir) Then - Return My.Application.Info.DirectoryPath - Else - If Not FileIO.FileSystem.DirectoryExists(InitDir) Then - Try - Call FileIO.FileSystem.CreateDirectory(InitDir) - Catch ex As Exception - Call Console.WriteLine("[DEBUG] The specific work directory ""{0}"" is unable to located, using the application directory ""{1}"" insteaded.", InitDir, My.Application.Info.DirectoryPath) - Return My.Application.Info.DirectoryPath - End Try - End If - - Return FileIO.FileSystem.GetDirectoryInfo(InitDir).FullName - End If - End Function - - ''' - ''' Get shoal shell registry file path.(èŽ·å–æ³¨å†Œè¡¨çš„æ–‡ä»¶è·¯å¾„) - ''' - ''' - ''' - Public Function get_RegistryFile() As String - If String.IsNullOrEmpty(RegistryFileLocation) Then - Return Microsoft.VisualBasic.Scripting.ShoalShell.DelegateHandlers.TypeLibraryRegistry.DelegateRegistry.DefaultFile - Else - Return FileIO.FileSystem.GetFileInfo(RegistryFileLocation).FullName - End If - End Function - - Public Shared ReadOnly Property DefaultFile As String - Get - Return String.Format("{0}/{1}.cfg", My.Application.Info.DirectoryPath, My.Application.Info.AssemblyName) - End Get - End Property - - Public Shared ReadOnly Property [Default] As Microsoft.VisualBasic.ComponentModel.Settings.Settings(Of Config) - Get - Return Microsoft.VisualBasic.ComponentModel.Settings.Settings(Of Config).LoadFile(XmlFile:=Config.DefaultFile) - End Get - End Property - - Public Overrides Function Save(Optional FilePath As String = "", Optional Encoding As System.Text.Encoding = Nothing) As Boolean - If get_LastDir_AsInit() Then - InitDir = FileIO.FileSystem.GetDirectoryInfo(My.Computer.FileSystem.CurrentDirectory).FullName - End If - - FilePath = Me.getPath(FilePath) - Return Me.GetXml.SaveTo(FilePath, Encoding) - End Function -End Class diff --git a/ShoalShell.Legacy/ConsoleApplication/Program.vb b/ShoalShell.Legacy/ConsoleApplication/Program.vb deleted file mode 100644 index 0ae1a0032..000000000 --- a/ShoalShell.Legacy/ConsoleApplication/Program.vb +++ /dev/null @@ -1,190 +0,0 @@ -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports Microsoft.VisualBasic.ConsoleDevice.STDIO - -''' -''' The shoal program main entry. -''' -''' -Module Program - - Public Const STATUS_PREALPHA As String = "pre-alpha" - Public Const STATUS_BETA As String = "beta" - Public Const SHOAL_SHELL As String = "Shoal Shell" - - ''' - ''' Shoal主程åºçš„æ¬¢è¿Žæ–‡æœ¬ - ''' - ''' - ''' - ''' - Private ReadOnly Property ConsoleSplashPrintPage As String - Get - Return _ -LANS Shoal Shell [version {0} - {1}; {2}] -Copyright (c) 2014 LANS SystemsBiology Engineering Workstation. - -Shoal was developed by: xieguigang(xie.guigang@gmail.com) - - "A lot of fish in a shoal, in a gigantic scientific ocean." - -Shoal running cross-platform(Windows7/8/10, Linux/Ubuntu, OS X), and you can hybrid scripting using shoal with R/Perl -ShoalShell project source code is available on SourceForge via SVN command: - - svn checkout svn://svn.code.sf.net/p/shoal/Source/ shoal-Source. - -Commands quick guide: - - libraries - list all of the installed package for shoal shell - - library - Install a assembly library for Shoal - Usage: library <assembly_path> - The alias command for the "library" is "install" - - ? - Get the help information about the installed package or command - Usage: ? Namespace/<command name>/keyword - - ! - Attaching the external hybrid scripting language environment entry point onto Shoal - Usage: !<hybrid_script_name> - - imports - Imports the namespace from a installed package - Usage: imports namespace - - source - Calling the script file on your filesystem - Usage: source <script_file> argvs - - ver() - Display the version of Shoal - wiki() - Open the wiki page to get help information, this command required a Internet connection. - Usage: wiki() <keyword> - - q() - quit the shoal shell - -For more details help information, please visit the WIKI page on Shoal shell's SourceForge project home: sourceforge.net/projects/shoal/wiki - -Program files and source code was distributed under the GPL3 Licensed to "{3}", using license() command to view the license details. - - - End Get - End Property - - Public ReadOnly Property Configuration As Microsoft.VisualBasic.ComponentModel.Settings.Settings(Of Config) = - Config.Default - - Public Function Main() As Integer - Return GetType(CommandLines).RunCLI(Command, - AddressOf Program.ExecuteScriptFile, - AddressOf Program.ExecuteEmpty) - End Function - - Private Function ExecuteScriptFile(path As String, args As CommandLine.CommandLine) As Integer - Return Program.RunScriptFile(path, argvs:=args.ToArray) - End Function - - Private Function ExecuteEmpty() As Integer - Return Program.ScriptShellTerminal(-1, "") - End Function - - Private Function RunScriptFile(ScriptFile As String, argvs As KeyValuePair(Of String, String)()) As Integer - Using ScriptHost As Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ShellScript = - New Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ShellScript( - ShowInitializeMessage:=False, - LibraryRegistry:=Program.Configuration.TargetSettingsData.get_RegistryFile) - Return __runScriptFile(ScriptHost, ScriptFile, argvs) - End Using - End Function - - Private Function __runScriptFile(ScriptHost As Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ShellScript, - ScriptFile As String, - argvs As KeyValuePair(Of String, String)()) As Integer - - Call ScriptHost.Imports(GetType(InternalCommands)) - - For Each item In argvs - Call ScriptHost.ScriptEngineMemoryDevice.InsertOrUpdate(item.Key, item.Value) - Next - - Dim currentWork As String = My.Computer.FileSystem.CurrentDirectory - Dim work As String = FileIO.FileSystem.GetParentPath(ScriptFile) - - If String.IsNullOrEmpty(work) Then - work = "./" - End If - - My.Computer.FileSystem.CurrentDirectory = work - ScriptHost.ExceptionHandleRedirect = ScriptFile & ".ERROR.log" - Dim i = ScriptHost.EXEC(ShellScript:=FileIO.FileSystem.ReadAllText(ScriptFile)) - My.Computer.FileSystem.CurrentDirectory = currentWork - - Return i - End Function - - ''' - ''' 打开Shoal的交互终端 - ''' - ''' - ''' 空字符串表示使用é…置文件之中的路径,åä¹‹ä½¿ç”¨æœ¬å‚æ•°æ‰€åˆ¶å®šçš„路径åšå‡ºåˆå§‹åŒ–路径 - ''' - Public Function ScriptShellTerminal(ListenerPort As Integer, work As String) As Integer - Dim UserName As String = If(String.IsNullOrEmpty(My.Computer.Name), "EMPTY_USER_NAME", My.Computer.Name) - - Call System.Console.WriteLine(Program.ConsoleSplashPrintPage, - My.Application.Info.Version.ToString, - STATUS_BETA, - $"{Environment.OSVersion.Platform.ToString} - {Environment.OSVersion.Version.ToString}", - UserName) - - work = If(String.IsNullOrEmpty(work), - Program.Configuration.TargetSettingsData.get_InitDirectory, - FileIO.FileSystem.GetDirectoryInfo(work).FullName) - - My.Computer.FileSystem.CreateDirectory(work) - My.Computer.FileSystem.CurrentDirectory = work - - Using ScriptEngine As Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ShellScript = - If(ListenerPort > 0, - New Scripting.ShoalShell.Runtime.Debugging.Debugger( - LibraryRegistry:=Program.Configuration.TargetSettingsData.get_RegistryFile, - DebugListenerPort:=ListenerPort, - ShowInitializeMessage:=True), - New Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ShellScript( - ShowInitializeMessage:=True, - LibraryRegistry:=Program.Configuration.TargetSettingsData.get_RegistryFile)) - Return __scriptShellTerminal(ScriptEngine, ListenerPort > 0) - End Using - End Function - - Public Function __scriptShellTerminal(ScriptEngine As Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ShellScript, - DebuggerMode As Boolean) As Integer - Call ScriptEngine.Imports(GetType(InternalCommands)) - - If DebuggerMode Then - Call __runDebugger(ScriptEngine) - Else - Call __runTerminal(ScriptEngine) - End If - - Call Console.WriteLine("[MESSAGE] Auto save shoal environment variables..." & vbCrLf & " -----> ""file:///{0}""", Program.Configuration.TargetSettingsData.FilePath) - Call Program.Configuration.TargetSettingsData.Save() - Call Console.WriteLine("[DONE!]") - - Return 0 - End Function - - Private Sub __runTerminal(ScriptEngine As Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ShellScript) - Do While True - Dim CommandLine As String = scanf("$ ") - If String.Equals(CommandLine, "q()", StringComparison.OrdinalIgnoreCase) Then - Exit Do - Else - Call ScriptEngine.EXEC(ShellScript:=CommandLine) - End If - Loop - End Sub - - Private Sub __runDebugger(ScriptEngine As Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ShellScript) - Dim Debugger = DirectCast(ScriptEngine, Scripting.ShoalShell.Runtime.Debugging.Debugger) - - Do While Not Debugger.DebuggerExit - Call Threading.Thread.Sleep(2000) - Loop - End Sub -End Module \ No newline at end of file diff --git a/ShoalShell.Legacy/InternalCommands.vb b/ShoalShell.Legacy/InternalCommands.vb deleted file mode 100644 index 3c2c320b0..000000000 --- a/ShoalShell.Legacy/InternalCommands.vb +++ /dev/null @@ -1,234 +0,0 @@ -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports System.Drawing -Imports Microsoft.VisualBasic.Scripting.EntryPointMetaData -Imports System.Runtime.CompilerServices - -''' -''' This module provides some common operation in the shoal scripting. -''' -''' -<[Namespace]("System.Extensions", Description:="This module provides some common operation in the shoal scripting.")> -Module InternalCommands - - - Public Function TrimLinux(Path As String) As Boolean - Dim s_Data As String() = System.IO.File.ReadAllLines(Path) - Dim Temp As String = String.Join(vbCr, s_Data) - Return Temp.SaveTo(Path, System.Text.Encoding.UTF8) - End Function - - ''' - ''' æ‰¹é‡æ‰§è¡ŒæŒ‡å®šçš„æ–‡ä»¶å¤¹ä¹‹ä¸­çš„æ‰€æœ‰Shoal脚本 - ''' - ''' - ''' - - Public Function BatchInvoke( Optional dir As String = "./", - Optional Parallel As Boolean = True) As Integer - Dim Shoal As String = ExecutablePath - Dim ScriptSource = dir.LoadSourceEntryList({"*.txt", "*.shl"}).ToArray - - If Parallel Then - Call System.Threading.Tasks.Parallel.ForEach(Of KeyValuePair(Of String, String))( - ScriptSource, - Sub(PathEntry As KeyValuePair(Of String, String)) - Call Threading.Thread.Sleep(5 * 1000) - Dim proc = Process.Start(Shoal, PathEntry.Value.CliPath) '执行脚本 - Call proc.WaitForExit() - End Sub) - Else - For Each PathEntry In ScriptSource - Dim proc = Process.Start(Shoal, PathEntry.Value.CliPath) '执行脚本 - Call Console.WriteLine($"[DEBUG {Now.ToString}] Execute task {PathEntry.Value.ToFileURL}.....") - Call proc.WaitForExit() - Next - End If - - Call Console.WriteLine("Job Done!") - Return 0 - End Function - - Public Function Invoke(Of T As Class)(obj As T, Entry As String) As Double - Dim Method = (From m In GetType(T).GetMethods(System.Reflection.BindingFlags.Public Or System.Reflection.BindingFlags.Instance) - Where String.Equals(m.Name, Entry) - Select m).ToArray.FirstOrDefault - If Method Is Nothing Then - Return -1 - Else - Call Threading.Thread.Sleep(5 * 1000) '有å¯èƒ½å‡ºçްåŒä¸€ä¸ªèµ„æºè¢«å ç”¨çš„æƒ…况,则å¯èƒ½ä¼šå‡ºé”™ï¼Œåˆ™æ‰¹é‡è°ƒç”¨çš„æ—¶å€™ä¼šæœ‰ä¸€ä¸ªæ—¶é—´å·®ä»¥é¿å…这个错误 - Dim sw = Stopwatch.StartNew - Call Method.Invoke(obj, Nothing) - Return sw.ElapsedMilliseconds - End If - End Function - - - Public Function Beep() As Integer - Call Console.Beep() - Return 0 - End Function - - - Public Function Sum(dat As Generic.IEnumerable(Of Double)) As Double - Return dat.Sum - End Function - - - Public Function Locate(Optional path As String = "") As String - If String.IsNullOrEmpty(path) OrElse Not FileIO.FileSystem.FileExists(path) Then - path = My.Computer.FileSystem.CurrentDirectory - End If - - path = FileIO.FileSystem.GetDirectoryInfo(path).FullName - - Call Process.Start(path) - Return path - End Function - - - Public Function Format(Expression As String, argvs As Generic.IEnumerable(Of Object)) As String - Return String.Format(Expression, argvs.ToArray) - End Function - - - Public Function WriteArray(array As Generic.IEnumerable(Of Object), saveTo As String) As Integer - Call IO.File.WriteAllLines(saveTo, (From item In array Let strValue As String = item.ToString Select strValue).ToArray) - Return array.Count - End Function - - - Public Function ReadTxt(file As String) As String - Dim strData = FileIO.FileSystem.ReadAllText(FileIO.FileSystem.GetFileInfo(file).FullName) - Return strData - End Function - - - Public Function ReadAllLines(path As String) As String() - Return IO.File.ReadAllLines(path) - End Function - - - Public Function WriteAllLines(data As Generic.IEnumerable(Of String), saveto As String) As Boolean - Call IO.File.WriteAllLines(saveto, data.ToArray) - Return True - End Function - - - Public Function _Msgbox(Message As String, Optional Title As String = "") As String - MsgBox(Message, MsgBoxStyle.Information, Title) - Return Message - End Function - - - Public Function [AND](logicals As Boolean()) As Boolean - For Each item In logicals - If item = False Then - Return False - End If - Next - - Return True - End Function - - - Public Function GreaterThan(a As Double, b As Double) As Boolean - Return a > b - End Function - - - Public Function [OR](logicals As Boolean()) As Boolean - Dim LQuery = (From item In logicals.AsParallel Where item = True Select 1).ToArray - Return Not LQuery.IsNullOrEmpty - End Function - - - Public Function [NOT](value As Boolean) As Boolean - Return Not value - End Function - - - Public Function ReadImage(path As String) As Image - Return Image.FromFile(path) - End Function - - - Public Function SplitCollection(collection As Generic.IEnumerable(Of Object), n As Integer) As Object()() - Return collection.Split(parTokens:=n) - End Function - - - Public Function Sleep(n As Integer) As Integer - Call System.Threading.Thread.Sleep(n * 1000) - Return n - End Function - - - Public Function Sequence(n As Integer) As Integer() - Return n.Sequence - End Function - - - Public Function Pause() As Integer - Call Console.WriteLine() - Call Console.WriteLine("Press any key to continute...") - Return Console.Read - End Function - - ''' - ''' 更加一般性的å¤åˆ¶å‡½æ•°ï¼Œå½“目标文件夹之中的文件数目éžå¸¸çš„多的时候,å¯ä»¥ä½¿ç”¨è¿™ä¸ªå‡½æ•°è¿›è¡Œæ‰¹é‡çš„æ–‡ä»¶å¤åˆ¶ï¼Œåªéœ€è¦æŠŠæ–‡ä»¶å填入列表之中å³å¯ï¼Œå¤§å°å†™æ— å…³ - ''' - ''' å¤åˆ¶å¤±è´¥çš„æ–‡ä»¶å列表 - - Public Function SourceCopy( IDList As Generic.IEnumerable(Of String), - Source As String, - CopyTo As String) As String() - - Dim FailuredList As New List(Of String) - Dim FileList = FileIO.FileSystem.GetFiles(Source, FileIO.SearchOption.SearchTopLevelOnly).ToList - - Call FileIO.FileSystem.CreateDirectory(CopyTo) - - For Each ID As String In IDList - Dim Files = (From path As String In FileList.AsParallel Let Name As String = IO.Path.GetFileNameWithoutExtension(path) Where String.Equals(ID, Name, StringComparison.OrdinalIgnoreCase) Select path).ToArray - If Files.IsNullOrEmpty Then - Call FailuredList.Add(ID) - End If - - For Each path As String In Files - Try - Call FileIO.FileSystem.CopyFile(path, CopyTo & "/" & FileIO.FileSystem.GetFileInfo(path).Name) - Catch ex As Exception - Call Console.WriteLine(path.ToFileURL) - Call Console.WriteLine(ex.ToString) - End Try - Next - Next - - Return FailuredList.ToArray - End Function - -#Const DEBUG = 1 - -#If DEBUG Then - - - Public Function TestException() As Boolean - Throw New Exception("Dont worried, this is a test for shellscript exception handler.") - End Function - - - Public Function OverloadsTest(n As Integer) As Integer - Call Console.WriteLine(Integer.MaxValue) - Call Console.WriteLine(RandomDouble() * n) - Return Integer.MaxValue - End Function - - - Public Function OverloadsTest( s1 As String, s2 As String) As String - Call Console.WriteLine(s1) - Call Console.WriteLine(s2 & " anysdfs") - Return s1 - End Function -#End If - -End Module diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/BuildInModules/Array.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/BuildInModules/Array.vb deleted file mode 100644 index 18d65beb9..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/BuildInModules/Array.vb +++ /dev/null @@ -1,332 +0,0 @@ -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports System.Text.RegularExpressions -Imports System.Runtime.CompilerServices -Imports System.Text -Imports Microsoft.VisualBasic.Scripting.EntryPointMetaData - -Imports kyp = System.Collections.Generic.KeyValuePair(Of Object, Object) - -Namespace BuildInModules.System - - <[Namespace]("System")> - Module System - - - Public Function [GetType]( [object] As Object) As Global.System.Type - Try - Return [object].GetType - Catch ex As Exception - Return GetType(Object) - End Try - End Function - End Module - - <[Namespace]("System.Array")> - Module Array - - ''' - ''' A regex expression string that use for split the line text. - ''' - ''' - Const SplitRegxExpression As String = "[" & vbTab & ",](?=(?:[^""]|""[^""]*"")*$)" - - Public ReadOnly CastedTypes As Dictionary(Of String, Func(Of Object(), Object)) = - New Global.System.Collections.Generic.Dictionary(Of String, Global.System.Func(Of Object(), Object)) From { - {"integer", Function(argv As Object()) (From s In argv Let n = CInt(Val(s.ToString)) Select n).ToArray}, - {"double", Function(argv As Object()) (From s In argv Let n = Val(s.ToString) Select n).ToArray}, - {"string", Function(argv As Object()) (From s In argv Let str As String = s.ToString Select str).ToArray}, - {"boolean", Function(argv As Object()) (From s In argv Let b As Boolean = s.ToString.getBoolean Select b).ToArray}, - {"long", Function(argv As Object()) (From s In argv Let l As Long = CLng(Val(s.ToString)) Select l).ToArray}, - {"string()", AddressOf StringArray}} - - 'var <= $array [$index] - 'var <= $dict <$key> - - '[$index], $var => $array - '<$key>, $var => $dict/$hash - - 'dict <= <$array> - 'array <= [$dict] - - Private Function StringArray(val As Object()) As Object - If val.IsNullOrEmpty Then - Return New Object() {} - End If - Dim ref As String = CStr(val(0)) - Dim vec = ParseVector(ref) - Return {vec} - End Function - - ''' - ''' Row parsing into column tokens - ''' - ''' - ''' - - Public Function ParseVector(s As String) As String() - If String.IsNullOrEmpty(s) Then - Return New String() {} - End If - - Dim Row = Regex.Split(s, SplitRegxExpression) - - For i As Integer = 0 To Row.Count - 1 - If Not String.IsNullOrEmpty(Row(i)) Then - If Row(i).First = """"c AndAlso Row(i).Last = """"c Then - Row(i) = Mid(Row(i), 2, Len(Row(i)) - 2) - End If - End If - Next - - Return Row - End Function - - - Public Function get_Counts(Collection As Generic.IEnumerable(Of Object)) As Integer - If Collection.IsNullOrEmpty Then - Return 0 - Else - Return Collection.Count - End If - End Function - - - Public Function get_Item(collection As Generic.IEnumerable(Of Object), index As Integer) As Object - If collection.IsNullOrEmpty OrElse index > collection.Count - 1 Then - Return Nothing - Else - Return collection(index) - End If - End Function - - Const INDEXER_DICTIONARY As String = "<$?.+?>,?" - Const INDEXER_ARRAY As String = "\[\$?.+?\],?" - - - Public Function CreateList(obj As Object) As IEnumerable - Dim TypeID As Type = obj.GetType - Dim Array = Global.System.Array.CreateInstance(TypeID, 1) - Call Array.SetValue(obj, index:=0) - - Return Array - End Function - - - Public Function CreateHashTable() As Hashtable - Return New Hashtable - End Function - - ' [$Collection] <= element - - ''' - ''' å‘目标集åˆä¹‹ä¸­æ·»åŠ ä¸€ä¸ªå…ƒç´  - ''' - ''' - ''' - ''' - Public Function AppendCollection(Collection As Object, element As Object) As IEnumerable - - If Collection Is Nothing Then - Throw New Exception($"Target {NameOf(Collection)} data is null value!!!") - End If - - Try - Return InternalAppendCollection(Collection, element) - Catch ex As Exception - Throw New Exception($"Target {NameOf(Collection)} maybe it is not a valid collection type!" & vbCrLf & vbCrLf & ex.ToString) - End Try - - End Function - - Private Function InternalAppendCollection(Collection As IEnumerable, element As Object) As IEnumerable - Dim ElementType = (From item In (From obj In Collection.AsParallel Select typeID = obj.GetType Group By typeID Into Count).ToArray Select item Order By item.Count Descending).ToArray.First.typeID - Dim IListType = GetType(List(Of )).MakeGenericType({ElementType}) - Dim IListInit = Activator.CreateInstance(IListType) - Dim IList = DirectCast(IListInit, IList) - - For Each elementItem In Collection - Call IList.Add(elementItem) - Next - - Call Console.WriteLine($"[DEBUG {Now.ToString}] {NameOf(element)}:= { element} //{element.GetType.FullName }") - Call IList.Add(element) - - Return IList - End Function - - Public Function set_Item(expression As String, [object] As String, memory As ShoalShell.Runtime.Objects.I_MemoryManagementDevice) As Boolean - Dim index As String = Regex.Match(expression, INDEXER_ARRAY).Value - - If Not String.IsNullOrEmpty(index) Then '从集åˆä¹‹ä¸­æŒ‰ç…§ä¸‹æ ‡å–元素 - Dim value As String = expression.Replace(index, "").Trim.GetString("""") - index = Mid(index, 2, Len(index) - 3) - Return set_ArrayItem(index, value, [object], memory) - End If - - index = Regex.Match(expression, INDEXER_DICTIONARY).Value - - If Not String.IsNullOrEmpty(index) Then '从字典之中按照关键è¯å–元素 - Dim value As String = expression.Replace(index, "").Trim.GetString("""") - index = Mid(index, 2, Len(index) - 3) - Return set_DictItem(index, value, [object], memory) - Else '无法获å–到索引值,则认为语法错误 - Throw New ShoalShell.Runtime.Objects.ObjectModels.Exceptions.SyntaxErrorException("Unable to get the collection indexer!") - End If - End Function - - Public Function set_ArrayItem(index As String, value As String, [object] As String, memory As ShoalShell.Runtime.Objects.I_MemoryManagementDevice) As Boolean - Dim idx As Object = memory.TryGetValue(index) - Dim var As Object = memory.TryGetValue(value) - Dim collection As Object() = Object2Collection(memory.TryGetValue([object])) - Dim i As Integer = Val(If(idx Is Nothing, 0, idx.ToString)) - - If collection.Count - 1 < i Then - ReDim Preserve collection(i) - End If - - collection(i) = var - Call memory.SetValue(Mid([object], 2), collection) - - Return True - End Function - - Public Function set_DictItem(index As String, value As String, [object] As String, memory As ShoalShell.Runtime.Objects.I_MemoryManagementDevice) As Boolean - Dim idx As Object = memory.TryGetValue(index) - Dim var As Object = memory.TryGetValue(value) - Dim collection = DirectCast(memory.TryGetValue([object]), IDictionary) - - If collection.Contains(idx) Then - Call collection.Remove(idx) - End If - Call collection.Add(idx, var) - - Return True - End Function - - ''' - ''' 字典和集åˆçš„å…ƒç´ èŽ·å–æ–¹æ³•统一从这里开始 - ''' - ''' - ''' - ''' - ''' - Public Function get_Item(script As String, Memory As ShoalShell.Runtime.Objects.I_MemoryManagementDevice) As Object - Dim Index As String = Regex.Match(script, INDEXER_ARRAY).Value - - If Not String.IsNullOrEmpty(Index) Then '从集åˆä¹‹ä¸­æŒ‰ç…§ä¸‹æ ‡å–元素 - If String.Equals(Index, script.Trim) Then '这个是字典转æ¢ä¸ºé›†åˆçš„æ“ä½œ - Dim value = Memory.TryGetValue(Mid(Index, 2, Len(Index) - 2).Trim) - Return ConvertDictionaryToArray(DirectCast(value, IDictionary)) - End If - - Return get_ArrayItem(script, Index, Memory) - End If - - Index = Regex.Match(script, INDEXER_DICTIONARY).Value - - If String.Equals(Index, script.Trim) Then 'è¿™ä¸ªæ˜¯å­—å…¸è½¬æ¢æ“作 - Dim value = Memory.TryGetValue(Mid(Index, 2, Len(Index) - 2).Trim) - Return ConvertArrayToDictionary(Object2Collection(value)) - End If - - If Not String.IsNullOrEmpty(Index) Then '从字典之中按照关键è¯å–元素 - Return get_DictItem(script, Index, Memory) - Else '无法获å–到索引值,则认为语法错误 - Throw New ShoalShell.Runtime.Objects.ObjectModels.Exceptions.SyntaxErrorException("Unable to get the collection indexer!") - End If - End Function - - Public Function ConvertDictionaryToArray(dict As IDictionary) As Object - Return (From item In dict.Values Select item).ToArray - End Function - - Public Function ConvertArrayToDictionary(array As Object()) As Object - Dim dict As Hashtable = New Hashtable - Dim LQuery = (From i As Integer In array.Sequence.AsParallel Select GenerateKeyItem(array(i), i)).ToArray - - For Each item In LQuery - Call dict.Add(item.Key, item.Value) - Next - - Return dict - End Function - - Private Function GenerateKeyItem(item As Object, i As Integer) As KeyValuePair(Of Object, Object) - If item Is Nothing Then - Return New KeyValuePair(Of Object, Object)(i, item) - End If - - If Global.System.Array.IndexOf(item.GetType.GetInterfaces, GetType(KeyValuePair(Of ,))) > -1 Then - Dim kyp = DirectCast(item, KeyValuePair(Of Object, Object)) - Return New kyp(kyp.Key, kyp) - ElseIf Global.System.Array.IndexOf(item.GetType.GetInterfaces, GetType(Microsoft.VisualBasic.ComponentModel.Collection.Generic.IAccessionIdEnumerable)) > -1 Then - Dim kyp = DirectCast(item, Microsoft.VisualBasic.ComponentModel.Collection.Generic.IAccessionIdEnumerable) - Return New kyp(kyp.UniqueId, kyp) - Else - Return New kyp(i, item) - End If - End Function - - ''' - ''' 当所引用的集åˆä¸ºç©ºçš„æ—¶å€™ï¼Œè¿”回空,当应用的指针为空或者下标越界的时候,返回空值 - ''' - ''' - ''' - ''' - ''' - ''' - Public Function get_ArrayItem(script As String, indexer As String, Memory As ShoalShell.Runtime.Objects.I_MemoryManagementDevice) As Object - Dim var = Memory.TryGetValue(script.Replace(indexer, "").Trim) - - If var Is Nothing Then - Return Nothing - End If - - Dim Collection As Object() = Object2Collection(var) - - indexer = Mid(indexer, 2, Len(indexer) - 2) - Dim idx As Object = Memory.TryGetValue(indexer) - Dim i As Integer = Val(If(idx Is Nothing, 0, idx.ToString)) - - If i > Collection.Count - 1 Then - Return Nothing - Else - Return Collection(i) - End If - End Function - - ''' - ''' 字符串对象会被转æ¢ä¸ºå­—符数组 - ''' - ''' - ''' - ''' - Private Function Object2Collection(var As Object) As Object() - If var.GetType = GetType(String) Then - Return (From c As Char In var.ToString Select CType(c, Object)).ToArray - End If - - Dim collection As IEnumerable = DirectCast(var, IEnumerable) - Return (From item In collection Select item).ToArray - End Function - - Public Function get_DictItem(script As String, key As String, Memory As ShoalShell.Runtime.Objects.I_MemoryManagementDevice) As Object - Dim var = Memory.TryGetValue(script.Replace(key, "").Trim) - - If var Is Nothing Then - Return Nothing - End If - - Dim dict = DirectCast(var, IDictionary) - - key = Mid(key, 2, Len(key) - 2) - Dim idx As Object = Memory.TryGetValue(key) - - If dict.Contains(idx) Then - Return dict(idx) - Else - Return Nothing - End If - End Function - End Module -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/BuildInModules/Cowsay.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/BuildInModules/Cowsay.vb deleted file mode 100644 index 2e715a028..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/BuildInModules/Cowsay.vb +++ /dev/null @@ -1,64 +0,0 @@ -Imports System.Text -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports Microsoft.VisualBasic.Scripting.EntryPointMetaData - -Namespace BuildInModules.System - - <[Namespace]("System")> - Module System - - - Public Function [GetType]( [object] As Object) As Global.System.Type - Try - Return [object].GetType - Catch ex As Exception - Return GetType(Object) - End Try - End Function - End Module - - Public Module CowsayTricks - - Public ReadOnly NormalCow As String = - | - | ^__^ - -- (oo)\_______ - (__)\ )\/\ - ||----W | - || || - - - Public ReadOnly DeadCow As String = - | - | ^__^ - -- (XX)\_______ - (__)\ )\/\ - ||----W | - || || - - - Public Function Cowsay(msg As String, argvs As CommandLine.CommandLine) As String - Select Case argvs("-t").ToLower - Case "dead" - msg = Msgbox(msg) & DeadCow - Case Else - msg = Msgbox(msg) & NormalCow - End Select - - Call Console.WriteLine(msg) - - Return msg - End Function - - Private Function Msgbox(msg As String) As String - Dim l = Len(msg) - Dim offset As String = New String(" ", 8) - Dim sBuilder As StringBuilder = New StringBuilder(vbCrLf, 1024) - Call sBuilder.AppendLine(offset & " " & New String("_", l + 4) & " ") - Call sBuilder.AppendLine(offset & String.Format("< {0} >", msg)) - Call sBuilder.AppendLine(offset & " " & New String("-", l + 4) & " ") - - Return sBuilder.ToString - End Function - End Module -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/BuildInModules/Threading.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/BuildInModules/Threading.vb deleted file mode 100644 index ec30dee81..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/BuildInModules/Threading.vb +++ /dev/null @@ -1,54 +0,0 @@ -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports System.Runtime.CompilerServices - -Namespace BuildInModules.System.Threading - - Public Structure ThreadingHandle - - Implements Microsoft.VisualBasic.ComponentModel.Collection.Generic.IKeyValuePairObject(Of Global.System.IAsyncResult, Global.System.Func(Of Object)) - - Public Property ThreadingInvoke As Global.System.IAsyncResult Implements ComponentModel.Collection.Generic.IKeyValuePairObject(Of IAsyncResult, Func(Of Object)).Key - Public Property [Delegate] As Global.System.Func(Of Object) Implements ComponentModel.Collection.Generic.IKeyValuePairObject(Of IAsyncResult, Func(Of Object)).Value - - Public Overrides Function ToString() As String - Return [Delegate].ToString - End Function - End Structure - - <[Namespace]("System.Threading")> - Public Module ShoalThreading - - 't <- $command -> begin_invoke - 'r <- $t -> end_invoke - - - Public Function BeginInvoke(entry As ShoalShell.Runtime.Objects.ShellScript, Operation As Object) As ThreadingHandle - Dim [Delegate] As Func(Of Object) - - If TypeOf Operation Is String Then - [Delegate] = Function() entry.InternalSourceScript(ShellScript:=Operation, parameters:=Nothing) - ElseIf TypeOf Operation Is Global.System.Action Then - [Delegate] = Function() As Object - Call DirectCast(Operation, Global.System.Action) - Return True - End Function - Else - [Delegate] = DirectCast(Operation, Func(Of Object)) - End If - - Return New ThreadingHandle With {.Delegate = [Delegate], .ThreadingInvoke = [Delegate].BeginInvoke(Nothing, Nothing)} - End Function - - - Public Function EndInvoke(handle As ThreadingHandle) As Object - Return handle.Delegate.EndInvoke(handle.ThreadingInvoke) - End Function - - - Public Function Threading(entry As ShoalShell.Runtime.Objects.ShellScript, command As String) As Boolean - Call New Global.System.Threading.Thread(Sub() Call entry.InternalSourceScript(command, Nothing)).Start() - Return True - End Function - End Module -End Namespace - diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/CommonExtensions.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/CommonExtensions.vb deleted file mode 100644 index 901ce07ec..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/CommonExtensions.vb +++ /dev/null @@ -1,70 +0,0 @@ -Imports System.Text -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects - -Module CommonExtensions - - ' ''' - ' ''' 为整个ShellScriptæä¾›LINQ查询支æŒçš„LINQè¿è¡Œæ—¶çŽ¯å¢ƒ - ' ''' - ' ''' - 'Public ReadOnly LINQFramework As LINQ.Framework.LQueryFramework = New LINQ.Framework.LQueryFramework(String.Format("{0}/LINQ.Framework.TypeDef.xml", My.Application.Info.DirectoryPath)) - - Public Function GetPrintValue([Obj] As Object) As String() - Dim Type As ObjectTypes = [GetType](Obj) - If Type = ObjectTypes.Array Then - Dim DataArray = I_MemoryManagementDevice.GetArrayValue(DataSource:=DirectCast(Obj, IEnumerable)) - Dim LQuery = (From item In DataArray Let value As String = item.ToString Select value).ToArray - Return LQuery - Else - Return New String() {Obj.ToString} - End If - End Function - - Public Function CreatePrintValue(strData As String()) As String - If strData.IsNullOrEmpty Then - Return "" - End If - - Dim sBuilder As StringBuilder = - New StringBuilder("[0] " & strData.First & vbCrLf, capacity:=1024) - For i As Integer = 1 To strData.Count - 1 - Call sBuilder.AppendLine(String.Format("[{0}] {1}", i, strData(i))) - Next - - Return sBuilder.ToString - End Function - - Public Enum ObjectTypes - Value - Array - Reference - End Enum - - Private ReadOnly TYPE_IENUMERABLE As System.Type = GetType(IEnumerable) - Private ReadOnly TYPE_STRING As System.Type = GetType(String) - - Public Function [GetType](obj As Object) As ObjectTypes - Dim Type As System.Type = obj.GetType - - If IsGenericEnumerable(Type) OrElse Type.IsArray Then - Return ObjectTypes.Array - ElseIf Type.IsClass AndAlso Not Type Is TYPE_STRING Then - Return ObjectTypes.Reference - Else - Return ObjectTypes.Value - End If - End Function - - ''' - ''' 判断目标类型是å¦ä¸ºä¸€ä¸ªArray类型 - ''' - ''' - ''' - ''' - Public Function IsGenericEnumerable(Type As Type) As Boolean - Dim IsGenericType = Type.IsGenericType - Dim p = Array.IndexOf(Type.GetInterfaces, TYPE_IENUMERABLE) - Dim f = IsGenericType AndAlso p > -1 - Return f - End Function -End Module diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/EntryPointHandlers/CommandMethodEntryPoint.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/EntryPointHandlers/CommandMethodEntryPoint.vb deleted file mode 100644 index 62cbca242..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/EntryPointHandlers/CommandMethodEntryPoint.vb +++ /dev/null @@ -1,276 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ObjectModels.Exceptions - -Namespace DelegateHandlers.EntryPointHandlers - - ''' - ''' 命令执行的入å£ç‚¹ï¼Œä½¿ç”¨è¿™ä¸ªå¯¹è±¡è¿›è¡Œå‡½æ•°é‡è½½çš„å¤„ç† - ''' - ''' - ''' é‡è½½å‡½æ•°çš„ç­¾å冲çªçš„æ¡ä»¶ï¼š - ''' 1. å…·æœ‰å®Œå…¨ä¸€æ ·çš„å‚æ•°åˆ—表,å³å‚æ•°åå’Œå‚æ•°ç±»åž‹å®Œå…¨ä¸€è‡´ï¼Œå‚数的顺åºå¯¹ç­¾åå†²çªæ²¡æœ‰å½±å“ - ''' 2. 除了满足上é¢çš„æ¡ä»¶ï¼Œä¸¤ä¸ªå‡½æ•°ä¹‹é—´çš„è¿”å›žå€¼å®Œå…¨ä¸€æ ·çš„æ—¶å€™ï¼Œå³å¯è®¤ä¸ºä¸¤ä¸ªå‡½æ•°çš„ç­¾å完全一样 - ''' - Public Class CommandMethodEntryPoint - - Implements Microsoft.VisualBasic.ComponentModel.Collection.Generic.IReadOnlyAccessionId - Implements IReadOnlyList(Of SignatureSignedFunctionEntryPoint) - -#Region "Public Property & Fields" - - ''' - ''' Shoal脚本命令的函数é‡è½½ - ''' - ''' - Dim _InternalOverloadMethodEntryPointList As List(Of SignatureSignedFunctionEntryPoint) = New Generic.List(Of SignatureSignedFunctionEntryPoint) - Dim _InternalOverloadSignatureHandles As Dictionary(Of String, Microsoft.VisualBasic.Scripting.EntryPointMetaData.OverloadsSignatureHandle) = - New Dictionary(Of String, Scripting.EntryPointMetaData.OverloadsSignatureHandle) - - ''' - ''' Shoal API命令的åç§° - ''' - ''' - Dim _Name As String - - Public ReadOnly Property Name As String Implements ComponentModel.Collection.Generic.IReadOnlyAccessionId.UniqueId - Get - Return _Name - End Get - End Property - - ''' - ''' 当å‰çš„这个执行入å£ç‚¹æ˜¯å¦æœ‰é‡è½½çš„命令 - ''' - ''' - ''' - ''' - Public ReadOnly Property IsOverloaded As Boolean - Get - Return _InternalOverloadMethodEntryPointList.Count > 1 - End Get - End Property - - ''' - ''' 当没有函数é‡è½½çš„æ—¶å€™ï¼Œä¼šè¿”回一个唯一值,返回,当具有é‡è½½å‡½æ•°çš„æ—¶å€™ï¼Œæœ¬å±žæ€§è¿”回空,请使用方法æ¥èŽ·å–被调用的é‡è½½å‡½æ•° - ''' - ''' - ''' - ''' - Public ReadOnly Property NonOverloadsMethod As Microsoft.VisualBasic.CommandLine.Reflection.EntryPoints.CommandEntryPointInfo - Get - If _InternalOverloadMethodEntryPointList.Count = 1 Then - Return _InternalOverloadMethodEntryPointList.First.EntryPoint - Else - Return Nothing - End If - End Get - End Property -#End Region - - ''' - ''' 共享方法 - ''' - ''' - ''' 如果ä¸çŸ¥é“该怎么处ç†è¿™ä¸ªå‚数,请使用Nothing - ''' - Sub New(Name As String, InitMethod As System.Reflection.MethodInfo) - _Name = Name.ToLower - - If Not InitMethod Is Nothing Then - Dim [SignatureHandles] = InternalGetTypeSignatureHandles(InitMethod) - Dim EntryInfo As New Microsoft.VisualBasic.CommandLine.Reflection.CommandAttribute(Name) - Dim InitEntry As Microsoft.VisualBasic.CommandLine.Reflection.EntryPoints.CommandEntryPointInfo = New CommandLine.Reflection.EntryPoints.CommandEntryPointInfo(Invoke:=InitMethod, attribute:=EntryInfo) - - Call _InternalOverloadMethodEntryPointList.Add(New SignatureSignedFunctionEntryPoint(InitEntry, [Handles]:=SignatureHandles)) - Call InternalAddSignatureHandles(SignatureHandles) - End If - End Sub - - Sub New(Name As String, InitOverloadsMethod As System.Reflection.MethodInfo()) - _Name = Name.ToLower - - If Not InitOverloadsMethod.IsNullOrEmpty Then - For Each InitMethod In InitOverloadsMethod - Dim [SignatureHandles] = InternalGetTypeSignatureHandles(InitMethod) - Dim EntryInfo As New Microsoft.VisualBasic.CommandLine.Reflection.CommandAttribute(Name) - Dim InitEntry As Microsoft.VisualBasic.CommandLine.Reflection.EntryPoints.CommandEntryPointInfo = New CommandLine.Reflection.EntryPoints.CommandEntryPointInfo(Invoke:=InitMethod, attribute:=EntryInfo) - - Call _InternalOverloadMethodEntryPointList.Add(New SignatureSignedFunctionEntryPoint(InitEntry, [Handles]:=SignatureHandles)) - Call InternalAddSignatureHandles(SignatureHandles) - Next - End If - End Sub - - ''' - ''' 共享方法和实例方法 - ''' - ''' - ''' 如果ä¸çŸ¥é“该怎么处ç†è¿™ä¸ªå‚数,请使用Nothing - ''' - Sub New(Name As String, InitEntryPoint As Microsoft.VisualBasic.CommandLine.Reflection.EntryPoints.CommandEntryPointInfo) - _Name = Name.ToLower - - If Not InitEntryPoint Is Nothing Then - Dim [SignatureHandles] = InternalGetTypeSignatureHandles(InitEntryPoint.MethodEntryPoint) - Call _InternalOverloadMethodEntryPointList.Add(New SignatureSignedFunctionEntryPoint(InitEntryPoint, [Handles]:=SignatureHandles)) - Call InternalAddSignatureHandles(SignatureHandles) - End If - End Sub - - ''' - ''' 相当å‰çš„æ‰§è¡Œå…¥å£ç‚¹æ·»åŠ ä¸€ä¸ªé‡è½½å‡½æ•°ï¼Œå½“当å‰çš„æ‰§è¡Œå…¥å£ç‚¹ä¹‹ä¸­å…·å¤‡æœ‰ä¸¤ä¸ªå®Œå…¨ç›¸åŒçš„函数签å的入å£ç‚¹çš„æ—¶å€™ï¼Œæ–°çš„å…¥å£ç‚¹ä¼šæ›¿æ¢æŽ‰æ—§çš„å…¥å£ç‚¹ - ''' - ''' - ''' - Public Sub HashAddMethodEntryPoint(MethodEntryPoint As CommandLine.Reflection.EntryPoints.CommandEntryPointInfo) - Dim SignatureHandles = InternalGetTypeSignatureHandles(MethodEntryPoint.MethodEntryPoint) - Dim SignatureSignedEntryPoint = New SignatureSignedFunctionEntryPoint(MethodEntryPoint, SignatureHandles) - Dim LQuery = (From item In Me._InternalOverloadMethodEntryPointList Where item.Equals(SignatureSignedEntryPoint) Select item).ToArray - - If Not LQuery.IsNullOrEmpty Then - Call _InternalOverloadMethodEntryPointList.Remove(LQuery.First) '当出现了两个具有完全一样的数字签å的函数的时候,新的入å£ç‚¹ä¼šæ›¿æ¢æŽ‰æ—§çš„å…¥å£ç‚¹ - End If - - Call _InternalOverloadMethodEntryPointList.Add(SignatureSignedEntryPoint) - Call InternalAddSignatureHandles([Handles]:=SignatureHandles) - End Sub - - Private Sub InternalAddSignatureHandles([Handles] As Microsoft.VisualBasic.Scripting.EntryPointMetaData.OverloadsSignatureHandle()) - For Each item In [Handles] - Dim Name As String = item.TypeIDBrief - If _InternalOverloadSignatureHandles.ContainsKey(Name) Then - Call _InternalOverloadSignatureHandles.Remove(Name) - End If - Call _InternalOverloadSignatureHandles.Add(Name, item) - Next - End Sub - - ''' - ''' 获å–用于支æŒå‡½æŽˆé‡è½½æ‰€éœ€è¦çš„æ•°å­—ç­¾åä¿¡æ¯ - ''' - ''' - ''' - ''' - Private Shared Function InternalGetTypeSignatureHandles(EntryInfo As System.Reflection.MethodInfo) As Microsoft.VisualBasic.Scripting.EntryPointMetaData.OverloadsSignatureHandle() - Dim Assembly = EntryInfo.DeclaringType - Dim Signature As Type = GetType(Microsoft.VisualBasic.Scripting.EntryPointMetaData.OverloadsSignatureHandle) - Dim [Handles] = (From attr As Object In Assembly.GetCustomAttributes(attributeType:=Signature, inherit:=True) Select DirectCast(attr, Microsoft.VisualBasic.Scripting.EntryPointMetaData.OverloadsSignatureHandle)).ToArray - Return [Handles] - End Function - - ''' - ''' åˆ©ç”¨å‚æ•°å列表以åŠè¿”回值的签åä¿¡æ¯æ¥èŽ·å–å¯èƒ½è¢«è°ƒç”¨çš„é‡è½½å‡½æ•° - ''' - ''' å˜é‡å列表 - ''' 返回值的签åä¿¡æ¯ï¼Œå¯ä»¥ä¸ºç©ºå­—符串 - ''' - ''' ç¬¬ä¸€ä¸ªå‚æ•°å¯èƒ½ä¸ºæ‹“å±•æ–¹æ³•çš„å‚æ•°ï¼Œåˆ™å…¶å¯ä»¥ä¸Žä»»æ„å­—ç¬¦ä¸²è¿›è¡ŒåŒ¹é… - Public Function getMethodInfo(paras As Dictionary(Of String, Type), Signature As String) As CommandLine.Reflection.EntryPoints.CommandEntryPointInfo - If paras.IsNullOrEmpty Then '函数ä¸åŒ…嫿œ‰ä»»ä½•傿•°ï¼Œç”±äºŽåŒ…嫿œ‰å¼€å…³å‚æ•°ï¼Œæ•…è€Œé‚£äº›é€»è¾‘å€¼ç±»åž‹çš„å‡½æ•°å‚æ•°éƒ½ä¼šè¢«å½“ä½œä¸ºå¼€å…³å‚æ•°èµ‹å€¼é»˜è®¤å€¼False - - End If - If paras.Count = 1 AndAlso String.Equals(NameOf(ShoalShell.Interpreter.ObjectModels.Tokens.ParameterName.ParameterType.SingleParameter), paras.First.Key, StringComparison.OrdinalIgnoreCase) Then - Dim SingleParameterMethod = (From EntryPoint In Me._InternalOverloadMethodEntryPointList - Where EntryPoint.ParameterCounts = 1 AndAlso SignatureSignedFunctionEntryPoint.TypeEquals(EntryPoint.Parameters.First.Value.ParameterType, paras.First.Value) - Select EntryPoint).ToArray '在调用的时候åªåŒ…嫿œ‰ä¸€ä¸ªå‚æ•° - '默认先查询最符åˆçš„函数 - If SingleParameterMethod.IsNullOrEmpty Then - '查找ä¸åˆ°åˆ™ä¼šä»Žå¯é€‰å‚æ•°æˆ–è€…å¼€å…³å‚æ•°å…¥æ‰‹ - SingleParameterMethod = (From EntryPoint In Me._InternalOverloadMethodEntryPointList - Where EntryPoint.FakeSingleParameter AndAlso SignatureSignedFunctionEntryPoint.TypeEquals(EntryPoint.Parameters.First.Value.ParameterType, paras.First.Value) - Select EntryPoint).ToArray - If Not SingleParameterMethod.IsNullOrEmpty Then - Return SingleParameterMethod.First.EntryPoint - Else - Throw New MethodNotFoundException(Me.Name, $"{String.Join(", ", (From obj In paras Select $"{obj.Key} As {obj.Value.FullName}").ToArray)} //{Signature}") - End If - Else - Return SingleParameterMethod.First.EntryPoint - End If - End If - - Dim LQuery = (From EntryPoint As SignatureSignedFunctionEntryPoint - In Me._InternalOverloadMethodEntryPointList - Let psigInfo = (From item In paras Select item).ToArray.ToDictionary(Function(item) item.Key, elementSelector:=Function(item) item.Value) - Select EntryPoint = EntryPoint.EntryPoint, Score = EntryPoint.Equals(psigInfo, Signature) - Order By Score Descending).ToArray '釿–°åˆ›å»ºä¸€ä¸ªå­—典对象进行按值传递的原因是Equalsæ“作里é¢ä¼šå­˜åœ¨ç§»é™¤å­—å…¸ä¹‹ä¸­çš„æ‹“å±•æ–¹æ³•çš„å‚æ•°çš„æ“ä½œï¼Œæ•…è€ŒæŒ‰å€ä¼ é€’会影å“到第一个之åŽçš„é‡è½½æ–¹æ³•的评分 - Dim EntryPointInfo = LQuery.First - Return EntryPointInfo.EntryPoint - End Function - - Public Overrides Function ToString() As String - If _InternalOverloadMethodEntryPointList.Count = 1 Then - Return String.Format("{0} --> {1}", Name, _InternalOverloadMethodEntryPointList.First.ToString) - Else - Return String.Format("{0} has {1} overloads...", Name, _InternalOverloadMethodEntryPointList.Count) - End If - End Function - - Public Function TryInvoke(Target As Object, argvs As Object()) As Object - Dim LQuery = (From EntryPoint As SignatureSignedFunctionEntryPoint - In Me._InternalOverloadMethodEntryPointList - Where EntryPoint.CanDelegateCalling(argvs) - Select EntryPoint - Order By EntryPoint.ParameterCounts Descending).ToArray - If LQuery.IsNullOrEmpty Then - Throw New ShoalShell.Runtime.Objects.ObjectModels.Exceptions.MethodNotFoundException(Me._Name, "") - End If - - Dim MethodInfo = LQuery.First - Dim Parameters = MethodInfo.EntryPoint.MethodEntryPoint.GetParameters - - If argvs.Count < Parameters.Count Then - Dim ChunkBuffer As Object() = New Object(Parameters.Count - 1) {} - Call Array.ConstrainedCopy(argvs, 0, ChunkBuffer, 0, argvs.Length) - For i As Integer = argvs.Length To Parameters.Count - 1 - Dim DefaultValue As Object = Parameters(i).DefaultValue - ChunkBuffer(i) = DefaultValue - Next - - argvs = ChunkBuffer - End If - - Return MethodInfo.EntryPoint.Invoke(argvs, Target) - End Function - -#Region "Implements IReadOnlyList(Of InternalGetTypeSignatureHandles(InitMethod))" - - Public Iterator Function GetEnumerator() As IEnumerator(Of SignatureSignedFunctionEntryPoint) Implements IEnumerable(Of SignatureSignedFunctionEntryPoint).GetEnumerator - For Each Item As SignatureSignedFunctionEntryPoint In _InternalOverloadMethodEntryPointList - Yield Item - Next - End Function - - ''' - ''' 当å‰çš„这个执行入å£ç‚¹ä¹‹ä¸­çš„é‡è½½çš„函数的åå°„å…¥å£ç‚¹çš„æ•°ç›® - ''' - ''' - ''' - ''' - Public ReadOnly Property CountOfOverloadsCommand As Integer Implements IReadOnlyCollection(Of SignatureSignedFunctionEntryPoint).Count - Get - Return _InternalOverloadMethodEntryPointList.Count - End Get - End Property - - Default Public ReadOnly Property OverloadsMethodInfo(index As Integer) As SignatureSignedFunctionEntryPoint Implements IReadOnlyList(Of SignatureSignedFunctionEntryPoint).Item - Get - Return _InternalOverloadMethodEntryPointList(index) - End Get - End Property - - Public Iterator Function GetEnumerator1() As IEnumerator Implements IEnumerable.GetEnumerator - Yield GetEnumerator() - End Function -#End Region - - ''' - ''' 直接从命å空间之中直接调用 - ''' - ''' - ''' - ''' - Public Shared Function NamespaceDirectlyCalled(MethodInfo As System.Reflection.MethodInfo()) As CommandMethodEntryPoint - Return New CommandMethodEntryPoint("VB$AnonymousDelegate$NamespaceDirectlyCall", MethodInfo) - End Function - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/EntryPointHandlers/EntryPointHashTable.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/EntryPointHandlers/EntryPointHashTable.vb deleted file mode 100644 index 37e8db0f1..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/EntryPointHandlers/EntryPointHashTable.vb +++ /dev/null @@ -1,61 +0,0 @@ -Namespace DelegateHandlers.EntryPointHandlers - - ''' - ''' Imports Command, Delegate and Hybrid Scripting Delegate - ''' - ''' - Public Class EntryPointHashTable - - ''' - ''' Key都为å°å†™çš„ - ''' - ''' - Dim _InternalHashDictionary As SortedDictionary(Of String, ShoalShell.DelegateHandlers.EntryPointHandlers.CommandMethodEntryPoint) = New SortedDictionary(Of String, CommandMethodEntryPoint) - - ''' - ''' Key为å°å†™çš„,Value为Keyçš„åŽŸå…ˆçš„å€¼ï¼Œå³æ²¡æœ‰ç»è¿‡ToLower方法修剪的值 - ''' - ''' - Dim _InternalKeys As Dictionary(Of String, String) = New Dictionary(Of String, String) - - Public ReadOnly Property InternalKeys As Dictionary(Of String, String) - Get - Return _InternalKeys - End Get - End Property - - Public ReadOnly Property InternalHashDictionary As SortedDictionary(Of String, ShoalShell.DelegateHandlers.EntryPointHandlers.CommandMethodEntryPoint) - Get - Return _InternalHashDictionary - End Get - End Property - - ''' - ''' - ''' - ''' å°å†™çš„ - ''' - ''' - ''' - Default Public ReadOnly Property EntryPoint(Name As String) As DelegateHandlers.EntryPointHandlers.CommandMethodEntryPoint - Get - If _InternalHashDictionary.ContainsKey(Name) Then - Return _InternalHashDictionary(Name) - Else - Return Nothing - End If - End Get - End Property - - ''' - ''' - ''' - ''' å°å†™çš„ - ''' - ''' - Public Sub InternalAddEntryPoint(CommandName As String, EntryPointInfo As DelegateHandlers.EntryPointHandlers.CommandMethodEntryPoint) - Call _InternalHashDictionary.Add(CommandName, EntryPointInfo) '挂载新的入å£ç‚¹ - Call _InternalKeys.Add(CommandName, EntryPointInfo.Name) - End Sub - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/EntryPointHandlers/FunctionSignature.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/EntryPointHandlers/FunctionSignature.vb deleted file mode 100644 index cb608f4fc..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/EntryPointHandlers/FunctionSignature.vb +++ /dev/null @@ -1,304 +0,0 @@ -Imports System.Collections.ObjectModel -Imports System.Text -Imports Microsoft.VisualBasic.SecurityString.MD5Hash - -Namespace DelegateHandlers.EntryPointHandlers - - ''' - ''' 用于表示一个已ç»è¢«ç­¾å的函数 - ''' - ''' - Public Class SignatureSignedFunctionEntryPoint - - Dim _InternalTypeSignatureValue As String - Dim _InternalEntryPoint As Microsoft.VisualBasic.CommandLine.Reflection.EntryPoints.CommandEntryPointInfo - ''' - ''' 傿•°åˆ—表按照从å°åˆ°å¤§æŽ’åºä¹‹åŽè®¡ç®—MD5å“ˆå¸Œå€¼ä½œä¸ºå‚æ•°åˆ—表的数字签å - ''' - ''' - Dim _InternalParameterSignature As String - - ''' - ''' 返回值的数字签å - ''' - ''' - ''' - ''' - Public ReadOnly Property TypeSignature As String - Get - Return _InternalTypeSignatureValue - End Get - End Property - - Public ReadOnly Property ParameterCounts As Integer - Get - Return Me._MyParametersHash.Count - End Get - End Property - - Public ReadOnly Property EntryPoint As Microsoft.VisualBasic.CommandLine.Reflection.EntryPoints.CommandEntryPointInfo - Get - Return _InternalEntryPoint - End Get - End Property - - ''' - ''' 当傿•°æœ‰å¤šä¸ªçš„æ—¶å€™ï¼Œå‡ºäº†ç¬¬ä¸€ä¸ªä¹‹å¤–ï¼Œå…¶ä»–çš„å‚æ•°éƒ½æ˜¯å¯é€‰çš„æˆ–者类型为逻辑值,则该函数被定义为伪å•傿•°å‡½æ•° - ''' - ''' - Public ReadOnly Property FakeSingleParameter As Boolean - Get - If Me._MyParametersHash.IsNullOrEmpty Then - Return False 'å‡½æ•°æ²¡æœ‰å‚æ•°ï¼Œå¾ˆæ˜Žæ˜¾ä¸æ˜¯å•傿•°å‡½æ•° - ElseIf Me._MyParametersHash.Count = 1 - Return False '这个是真实的å•傿•°å‡½æ•°ï¼Œä½†æ˜¯æˆ‘们è¦çš„æ˜¯ä¼ªå•傿•°å‡½æ•° - End If - - Dim Tokens = Me._MyParametersHash.ToArray - For i As Integer = 1 To Tokens.Count - 1 'è·³è¿‡ç¬¬ä¸€ä¸ªå‚æ•° - Dim Parameter = Tokens(i) - If Not (Parameter.Value.ParameterType.Equals(GetType(Boolean)) OrElse Parameter.Value.ParameterInfo.IsOptional) Then - Return False - End If - Next - - Return True - End Get - End Property - - ''' - ''' 傿•°åˆ—表按照从å°åˆ°å¤§æŽ’åºä¹‹åŽè®¡ç®—MD5å“ˆå¸Œå€¼ä½œä¸ºå‚æ•°åˆ—表的数字签å - ''' - ''' - ''' - ''' - Public ReadOnly Property ParameterSignature As String - Get - Return _InternalParameterSignature - End Get - End Property - - Public ReadOnly Property Parameters As ReadOnlyDictionary(Of String, ParameterWithAlias) - Get - Return _MyParametersHash - End Get - End Property - - Dim _MyParametersHash As ReadOnlyDictionary(Of String, ParameterWithAlias) - ''' - ''' éžå¯é€‰å‚数的数目 - ''' - ''' - Dim _InternalNonOptionalCounts As Integer - - Public Structure ParameterWithAlias - Dim ParameterInfo As System.Reflection.ParameterInfo, [Alias] As Microsoft.VisualBasic.Scripting.EntryPointMetaData.ParameterAlias - - Public ReadOnly Property ParameterType As Type - Get - Return ParameterInfo.ParameterType - End Get - End Property - - Sub New(ParameterInfo As System.Reflection.ParameterInfo, [Alias] As Microsoft.VisualBasic.Scripting.EntryPointMetaData.ParameterAlias) - Me.ParameterInfo = ParameterInfo - Me.Alias = If([Alias] Is Nothing, New Microsoft.VisualBasic.Scripting.EntryPointMetaData.ParameterAlias(ParameterInfo.Name.ToLower), [Alias]) - End Sub - - Public Overrides Function ToString() As String - If String.IsNullOrEmpty([Alias].Description) Then - Return [Alias].Alias - Else - Return [Alias].Alias & ": " & [Alias].Description - End If - End Function - End Structure - - Sub New(EntryPoint As Microsoft.VisualBasic.CommandLine.Reflection.EntryPoints.CommandEntryPointInfo, [Handles] As Microsoft.VisualBasic.Scripting.EntryPointMetaData.OverloadsSignatureHandle()) - Call Me._InternalEntryPoint.InvokeSet(EntryPoint) - Call Me._InternalHandlesTypeSignature([Handles]) - - Dim pInfo As System.Reflection.ParameterInfo() = EntryPoint.MethodEntryPoint.GetParameters '在这里生æˆå˜é‡å的别å - Dim InternalGetSigned = (From parameter As System.Reflection.ParameterInfo In pInfo - Let pAlias = Microsoft.VisualBasic.Scripting.EntryPointMetaData.ParameterAlias.GetParameterNameAlias(parameter, True) - Let Name As String = If(pAlias Is Nothing, parameter.Name, pAlias.Alias).ToLower - Select Name, parameter.ParameterType.FullName, pAlias, parameter).ToArray '这里ä¸èƒ½å¤Ÿæ‰“乱原始顺åºï¼ï¼ï¼ - Me._InternalParameterSignature = String.Join("+", (From sign In InternalGetSigned Let strSignValue As String = sign.ToString Select strSignValue).ToArray) - - If String.IsNullOrEmpty(ParameterSignature) Then - _InternalParameterSignature = "NULL" '函数ä¸éœ€è¦ä»»ä½•傿•° - Else - _InternalParameterSignature = GetMd5Hash(ParameterSignature) - End If - - Me._MyParametersHash = New ReadOnlyDictionary(Of String, ParameterWithAlias)( - InternalGetSigned.ToDictionary(keySelector:=Function(p) p.Name.ToLower, elementSelector:=Function(obj) New ParameterWithAlias(obj.parameter, obj.pAlias))) - Me._InternalNonOptionalCounts = (From p As KeyValuePair(Of String, ParameterWithAlias) - In _MyParametersHash - Where Not p.Value.ParameterInfo.IsOptional - Select 1).ToArray.Sum - End Sub - - Private Sub _InternalHandlesTypeSignature([Handles] As Microsoft.VisualBasic.Scripting.EntryPointMetaData.OverloadsSignatureHandle()) - If [Handles].IsNullOrEmpty Then - Me._InternalTypeSignatureValue = EntryPoint.MethodEntryPoint.ReturnType.FullName - End If - - Dim TypeSignature = (From Hwnd In [Handles] Where Hwnd.FullName = EntryPoint.MethodEntryPoint.ReturnType Select Hwnd).ToArray.FirstOrDefault - - If TypeSignature Is Nothing Then '没有定义返回值的签å,则直接使用返回值的全å - Me._InternalTypeSignatureValue = EntryPoint.MethodEntryPoint.ReturnType.FullName - Else - Me._InternalTypeSignatureValue = TypeSignature.TypeIDBrief 'var <- [typeidbrief] function - End If - End Sub - - ''' - ''' 创建共享方法的签å实例 - ''' - ''' - ''' - Public Shared Function CreateObject(EntryPoint As System.Reflection.MethodInfo, [Handles] As Microsoft.VisualBasic.Scripting.EntryPointMetaData.OverloadsSignatureHandle()) As SignatureSignedFunctionEntryPoint - Dim EntryPointInfo As New CommandLine.Reflection.EntryPoints.CommandEntryPointInfo(New CommandLine.Reflection.CommandAttribute("VB$InternalAnonymousSharedMethod"), Invoke:=EntryPoint) - Return New SignatureSignedFunctionEntryPoint(EntryPointInfo, [Handles]) - End Function - - Public Overrides Function ToString() As String - Return String.Format("({0}) {1}", ParameterSignature, EntryPoint.ToString) - End Function - - Public Function GetDescription(DescriptionGeneration As Func(Of System.Reflection.MethodInfo, String, String)) As String - Dim sBuilder As StringBuilder = New StringBuilder(1024) - - Call sBuilder.AppendLine("[" & Me.EntryPoint.EntryPointFullName & "]" & vbCrLf) - Call sBuilder.AppendLine(DescriptionGeneration(Me.EntryPoint.MethodEntryPoint, ParameterSignature)) - - Return sBuilder.ToString - End Function - - ''' - ''' 判断两ç§ç±»åž‹æ˜¯å¦ç›¸ç­‰ - ''' - ''' 当å‰çš„这个é‡è½½æ–¹æ³•çš„å‚æ•°ç±»åž‹ - ''' 从脚本传递进æ¥çš„å‡½æ•°å‚æ•°çš„类型 - ''' - ''' - Public Shared Function TypeEquals(InternalHashValue As Type, InputType As Type) As Boolean - Dim InputTypeName As String = InputType.FullName - Dim InternalHashValueTypeName As String = InternalHashValue.FullName - - If String.Equals(InternalHashValueTypeName, _InternalObjectType) Then Return True ' Objectç±»åž‹è¯´æ˜Žé‚£ä¸ªå‡½æ•°çš„å‚æ•°å¯ä»¥æŽ¥å—任何类型 - If String.Equals(InternalHashValueTypeName, InputTypeName) Then Return True - If Not InputType.HasElementType Then Return False - If Not InternalHashValue.IsGenericType Then Return False - - InternalHashValue = InternalHashValue.GenericTypeArguments.First ' 本é‡è½½æ–¹æ³•çš„è¿™ä¸ªå‚æ•°çš„类型å¯èƒ½æ˜¯é€šç”¨çš„é›†åˆæžšä¸¾ç±»åž‹çš„æŽ¥å£ - InputType = InputType.GetElementType - InputTypeName = InputType.FullName - InternalHashValueTypeName = InternalHashValue.FullName - - If String.Equals(InternalHashValueTypeName, InputTypeName) Then Return True - - ' å¯èƒ½æ˜¯ç»§æ‰¿ç±»å’ŒåŸºç±»åž‹çš„关系 - ' 二者之间的关系åªèƒ½å¤Ÿæ˜¯è„šæœ¬çš„å‚æ•°çš„类型必须è¦ç»§æ‰¿è‡ªAPI傿•°çš„类型 - - Do While Not String.Equals(InputTypeName, _InternalObjectType) - If String.Equals(InternalHashValueTypeName, InputTypeName) Then - Return True - Else - InputType = InputType.BaseType - InputTypeName = InputType.FullName - End If - Loop - - Return False '最åŽå®žåœ¨æ²¡è¾™äº†ï¼Œåˆ™åªèƒ½å¤Ÿè®¤ä¸ºäºŒè€…ä¸ç›¸ç­‰ - End Function - - Private Shared ReadOnly _InternalObjectType As String = GetType(System.Object).FullName - - ''' - ''' 完全ä¸ç›¸ä¼¼çš„两个函数会返回0,值越高,则越有å¯èƒ½è¢«ç”¨ä½œä¸ºé‡è½½å‡½æ•° - ''' - ''' - ''' æœ¬å‚æ•°åªæ˜¯åœ¨å¯èƒ½å‘ç”Ÿå‚æ•°åˆ—表签å冲çªçš„æ—¶å€™ä½¿ç”¨ï¼Œæ•…而大多数的时候å¯èƒ½ä¸ºç©º - ''' - ''' - Public Overloads Function Equals(paras As Dictionary(Of String, Type), SignatureHandle As String) As Integer - Dim ScoreValue As Integer - - If Not paras.IsNullOrEmpty AndAlso String.Equals(paras.First.Key, Interpreter.Interpreter.EXTENSION_OPERATOR) Then 'å‡è‹¥ç¬¬ä¸€ä¸ªå‚数为拓展方法 - 'å‡è‹¥æœ¬å‡½æ•°æ²¡æœ‰å‚æ•°ï¼Œå¾ˆæ˜Žæ˜¾ä¸æ˜¯æƒ³è¦è°ƒç”¨çš„é‡è½½æ–¹æ³• - If Me._MyParametersHash.IsNullOrEmpty Then - Return Integer.MinValue - End If - - Dim Type = Me._MyParametersHash.First.Value.ParameterInfo.ParameterType 'å‡è‹¥ç±»åž‹å¯¹åº”ä¸ä¸Šï¼Œå¾ˆæ˜Žæ˜¾ä¹Ÿä¸æ˜¯æƒ³è¦çš„调用方法 - If TypeEquals(InternalHashValue:=Type, InputType:=paras.First.Value) Then - ScoreValue += 1 - Else - Return Integer.MinValue - End If - - Call paras.Remove(paras.First.Key) - End If - - For Each pInfo As KeyValuePair(Of String, Type) In paras - - If Me._MyParametersHash.ContainsKey(pInfo.Key) Then - - Dim Type As System.Type = - _MyParametersHash(pInfo.Key).ParameterInfo.ParameterType - ScoreValue += If(TypeEquals(Type, InputType:=pInfo.Value), 1, -10) - Else - ScoreValue -= 100 - End If - Next - - If Not String.IsNullOrEmpty(SignatureHandle) AndAlso Not String.Equals(SignatureHandle, Me.TypeSignature, StringComparison.OrdinalIgnoreCase) Then - ScoreValue -= 10 - End If - - ScoreValue -= _InternalNonOptionalCounts - - Return ScoreValue - End Function - - Public Function CanDelegateCalling(paras As Object()) As Boolean - - If _MyParametersHash.IsNullOrEmpty Then - Return True - ElseIf ParameterCounts > paras.Count Then 'å¯èƒ½æœ‰å¯é€‰å‚æ•° - Dim p As KeyValuePair(Of String, ParameterWithAlias)() = - Me._MyParametersHash.ToArray.Skip(paras.Count).ToArray - Dim LQuery = (From ParameterInfo In p Where ParameterInfo.Value.ParameterInfo.IsOptional Select ParameterInfo).ToArray - Return LQuery.Count = p.Count - End If - - Dim InternalHashList = _MyParametersHash.ToArray - - For i As Integer = 0 To paras.Count - 1 - If Not TypeEquals(InternalHashList(i).Value.ParameterType, paras(i).GetType) Then - Return True - End If - Next - - Return True - End Function - - ''' - ''' 判断两个函数入å£ç‚¹å¯¹è±¡æ˜¯å¦å…·æœ‰å®Œå…¨ä¸€æ ·çš„æ•°å­—ç­¾å - ''' - ''' - ''' - ''' - Public Overrides Function Equals(obj As Object) As Boolean - If Not TypeOf (obj) Is SignatureSignedFunctionEntryPoint Then - Return False - End If - - Dim Signature As SignatureSignedFunctionEntryPoint = DirectCast(obj, SignatureSignedFunctionEntryPoint) - - Return String.Equals(ParameterSignature, Signature.ParameterSignature) AndAlso String.Equals(TypeSignature, Signature.TypeSignature, StringComparison.OrdinalIgnoreCase) - End Function - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/EntryPointHandlers/ImportsEntryPointManager.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/EntryPointHandlers/ImportsEntryPointManager.vb deleted file mode 100644 index 4256d74ad..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/EntryPointHandlers/ImportsEntryPointManager.vb +++ /dev/null @@ -1,350 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.DelegateHandlers.TypeLibraryRegistry -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports System.Collections.ObjectModel -Imports Microsoft.VisualBasic.CommandLine.Reflection.EntryPoints - -Namespace DelegateHandlers.EntryPointHandlers - - Public Class ImportsEntryPointManager : Inherits ShoalShell.Runtime.Objects.ObjectModels.IScriptEngineComponent - - Implements Generic.IReadOnlyCollection(Of ShoalShell.DelegateHandlers.EntryPointHandlers.CommandMethodEntryPoint) - Implements Generic.IReadOnlyDictionary(Of String, DelegateHandlers.EntryPointHandlers.CommandMethodEntryPoint) - - Dim _InternalImportsEntryPointHash As EntryPointHashTable = New EntryPointHashTable - - ''' - ''' 与所ä¸åŒçš„æ˜¯ï¼Œè¿™ä¸ªå­˜å‚¨çš„æ˜¯Delegate,里é¢çš„命令会优先于中的命令被调用 - ''' - ''' - Dim _InternalDelegateHash As EntryPointHashTable = New EntryPointHashTable - - ''' - ''' 当切æ¢å·¥ä½œç›®å½•的时候,程åºä¼šè‡ªåŠ¨æ‰«æå½“å‰å·¥ä½œç›®å½•之下的所有å¯ç”¨çš„脚本文件,使用文件å作为临时的函数å - ''' - ''' - Dim _TEMP_HANDLERS As Dictionary(Of String, String) = New Dictionary(Of String, String) - - ''' - ''' 请注æ„,这里é¢çš„æ‰€æœ‰çš„对象的键值都是å°å†™å­—æ¯çš„ - ''' - ''' - Dim _HybridScriptingDelegates As Dictionary(Of String, String) = New Dictionary(Of String, String) - - ''' - ''' 当å‰çš„工作目录之下的脚本文件都会被当作为临时的脚本命令æ¥ä½¿ç”¨ - ''' - ''' - ''' - ''' - Public ReadOnly Property TempShellCommands As ReadOnlyDictionary(Of String, String) - Get - Return New ReadOnlyDictionary(Of String, String)(_TEMP_HANDLERS) - End Get - End Property - - Public ReadOnly Property ImportsCommandEntryPoints As Dictionary(Of String, DelegateHandlers.EntryPointHandlers.CommandMethodEntryPoint) - Get - Dim LQuery = (From item In _InternalImportsEntryPointHash.InternalHashDictionary Select cmdName = _InternalImportsEntryPointHash.InternalKeys(item.Key), item.Value).ToArray - Return LQuery.ToDictionary(keySelector:=Function(item) item.cmdName, elementSelector:=Function(item) item.Value) - End Get - End Property - - Sub New(ScriptEngine As ShoalShell.Runtime.Objects.ShellScript, Dir As String, Disp_Inits_Message As Boolean) - Call MyBase.New(ScriptEngine) - Me._InternalEntryPointLoader = New InternalEntryPointLoader(Me) - Call InternalScanTempShell(Dir, Disp_Inits_Message) - End Sub - - ''' - ''' - ''' - ''' 大å°å†™ä¸æ•感 - ''' - ''' - Public Function GetHybridsScript(name As String) As String - name = name.ToLower - Return _HybridScriptingDelegates(name) - End Function - - ''' - ''' æ—§çš„è„šæœ¬ä¼šè¢«æ–°çš„è„šæœ¬æ‰€æ›¿æ¢ - ''' - ''' 大å°å†™ä¸æ•感 - ''' - ''' - Public Function DeclaresHybridScripting(Name As String, script As String) As Object - Name = Name.ToLower - If _HybridScriptingDelegates.ContainsKey(Name) Then - Call _HybridScriptingDelegates.Remove(Name) - End If - - Call _HybridScriptingDelegates.Add(Name, script) - Return 0 - End Function - - ''' - ''' - ''' - ''' - ''' å‡è‹¥è¿™ä¸ªå‘½ä»¤æ˜¯åœ¨åˆå§‹åŒ–的时候调用的è¯ï¼Œåˆ™ä½¿ç”¨è¿™ä¸ªå‚æ•°æ¥æ ¹æ®é…ç½®æ•°æ®æ¥å†³å®šæ˜¯å¦æ˜¾ç¤ºç¨‹åºçš„åˆå§‹åŒ–æ¶ˆæ¯ - ''' - Friend Sub InternalScanTempShell(dir As String, disp_inits_message As Boolean) - Dim ScriptFiles = FileIO.FileSystem.GetFiles(dir, FileIO.SearchOption.SearchTopLevelOnly, "*.shl") - - Call Me._TEMP_HANDLERS.Clear() - - For Each file In ScriptFiles - Dim FileName As String = FileIO.FileSystem.GetFileInfo(file).Name - FileName = Mid(FileName, 1, Len(FileName) - 4).ToLower - Call Me._TEMP_HANDLERS.Add(FileName, file) - Next - - If disp_inits_message AndAlso Not ScriptFiles.IsNullOrEmpty Then - Call Console.WriteLine("There are {0} command(s) avaliable in the current work directory ""{1}"".", ScriptFiles.Count, My.Computer.FileSystem.CurrentDirectory) - End If - End Sub - - ''' - ''' 请使用这个方法导入实例对象之中的定义的命令 - ''' - ''' - ''' - ''' - Public Function ImportsInstanceNamespace(InvokedObject As Object) As Integer - Dim Commands = (From EntryPoint As Microsoft.VisualBasic.CommandLine.Reflection.EntryPoints.CommandEntryPointInfo - In InternalAllInstanceCommands(InvokedObject.GetType) - Select EntryPoint.InvokeSet(Sub() EntryPoint.InvokeOnObject = InvokedObject)).ToList 'è§£æžå‡ºå‘½ä»¤å¹¶è¿žæŽ¥ç›®æ ‡å®žä¾‹å¯¹è±¡ä¸Žå‡½æ•°çš„æ‰§è¡Œå…¥å£ç‚¹ - Return InternalMountEntryPoint(EntryPointList:=Commands) - End Function - - Protected Function InternalAllInstanceCommands(Type As Type) As List(Of Microsoft.VisualBasic.CommandLine.Reflection.EntryPoints.CommandEntryPointInfo) - Dim InternalChunkList = Microsoft.VisualBasic.CommandLine.Interpreter.GetAllCommands(Type) - Dim commandAttribute As System.Type = GetType(CommandAttribute) - Dim commandsSource = (From MethodHandle As System.Reflection.MethodInfo - In Type.GetMethods() - Select Entry = MethodHandle.GetCustomAttributes(commandAttribute, True), MethodInfo = MethodHandle).ToArray - Dim commandsInfo = (From methodInfo In commandsSource - Where Not methodInfo.Entry.IsNullOrEmpty - Let commandInfo = New CommandEntryPointInfo(TryCast(methodInfo.Entry.First, CommandAttribute), methodInfo.MethodInfo) - Select commandInfo - Order By commandInfo.Name Ascending).ToArray - Call InternalChunkList.AddRange(commandsInfo) - - Return InternalChunkList - End Function - - ''' - ''' 使用本方法导入外部命令,这样å­å°±å¯ä»¥ç›´æŽ¥è°ƒç”¨æ–¹æ³•而ä¸éœ€è¦æ¯ä¸€ä¸ªå‘½ä»¤è¡Œéƒ½æ·»åŠ æ¨¡å—å称了(这个方法导入的是共享方法,对于实例方法ä¸èƒ½å¤Ÿé€šè¿‡æœ¬æ–¹æ³•进行导入) - ''' - ''' - ''' - ''' - Public Function ImportsNamespace([Namespace] As String) As Integer - If _RuntimeEnvironment._ImportsNamespace.IndexOf([Namespace].ToLower) > -1 Then - Return 0 'å·²ç»å°†å‘½å空间导入了,则跳过这个æ“作 - End If - - Dim Modules As KeyValuePair(Of System.Type, CommandLine.Reflection.Namespace)() - Dim LoadedModule = _RuntimeEnvironment._Interpreter._DelegateRegistry.LoadedModules.get_LoadedModule([Namespace]) - - If Not LoadedModule Is Nothing Then - [Modules] = LoadedModule._InternalOriginalAssemblys.ToArray - Else - Dim assemblyPaths As String() = _RuntimeEnvironment._Interpreter._DelegateRegistry.GetAssemblyPaths([Namespace]) - - Modules = (From item As KeyValuePair(Of CommandLine.Reflection.Namespace, Type) - In (From path As String - In assemblyPaths - Select _RuntimeEnvironment._Interpreter._DelegateRegistry._RegisteredModuleLoader.get_ModuleFromAssembly(path)).ToArray.MatrixToVector - Select New KeyValuePair(Of Type, CommandLine.Reflection.Namespace)(item.Value, item.Key)).ToArray - Modules = (From [mod] In Modules Where String.Equals([mod].Value.Namespace, [Namespace], StringComparison.OrdinalIgnoreCase) Select [mod]).ToArray - End If - - Call Console.WriteLine(" '{0}'", [Namespace]) - - Return ImportsModule(Modules) - End Function - - Public Function ImportsModule([Module] As Type) As Integer - Dim Modules = RegistryModuleLoader.GetModule([Module]) - Call Console.WriteLine(" '{0}'", Modules.First.Value.Namespace) - Return ImportsModule(Modules) - End Function - - Public Function ImportsModule([Modules] As KeyValuePair(Of System.Type, Microsoft.VisualBasic.CommandLine.Reflection.[Namespace])()) As Integer - Dim ModuleItem As ShoalShell.DelegateHandlers.TypeLibraryRegistry.RegistryNodes.Module = New RegistryNodes.Module(Modules.First.Value, Modules.First.Key) - Dim i As Integer - - For Each [Module] In Modules - -1: Call _RuntimeEnvironment._ImportsNamespace.Add([Module].Value.Namespace.ToLower) - Call _RuntimeEnvironment._EngineMemoryDevice.ImportsConstant([Module].Key) 'å¯¼å…¥å¸¸é‡ - Call _RuntimeEnvironment.ImportsIOSupports([Module].Key) - - i += InternalMountEntryPoint(EntryPointList:=CommandLine.Interpreter.GetAllCommands([Module].Key)) - Next - - For Each Item As KeyValuePair(Of Type, Microsoft.VisualBasic.CommandLine.Reflection.Namespace) In Modules.Skip(1) - Call ModuleItem.MergeNamespace(Item.Value, Item.Key) - Next - - Call _RuntimeEnvironment.ImportsOutputHandlers(ModuleItem) - Call _RuntimeEnvironment.ImportsNewNamespace() - - Return i - End Function - - ''' - ''' 从命å空间之中导入方法 - ''' - ''' - ''' - ''' - Private Function InternalMountEntryPoint(EntryPointList As List(Of CommandLine.Reflection.EntryPoints.CommandEntryPointInfo)) As Integer - Dim i As Integer - - For Each MethodEntryPoint In EntryPointList - i += InternalMountEntryPoint(EntryPointInfo:=MethodEntryPoint, Hash:=Me._InternalImportsEntryPointHash) - Next - - Return i - End Function - - Private Shared Function InternalMountEntryPoint(EntryPointInfo As CommandLine.Reflection.EntryPoints.CommandEntryPointInfo, Hash As EntryPointHashTable) As Integer - Dim EntryPoint As DelegateHandlers.EntryPointHandlers.CommandMethodEntryPoint - Dim CommandName As String = EntryPointInfo.Name.ToLower - - If Hash.InternalHashDictionary.ContainsKey(CommandName) Then - EntryPoint = Hash(CommandName) '具有é‡è½½å‡½æ•° - Else - EntryPoint = New CommandMethodEntryPoint(CommandName, InitEntryPoint:=Nothing) '没有é‡è½½å‡½æ•° - Call Hash.InternalAddEntryPoint(CommandName, EntryPoint) - End If - - 'å‘å…¥å£ç‚¹ä¹‹ä¸­æ·»åŠ æ–°çš„æ‰§è¡Œå…¥å£ç‚¹ - Try - Call EntryPoint.HashAddMethodEntryPoint(EntryPointInfo) - Catch ex As Exception -#Const DEBUG = 0 -#If DEBUG Then - Call EntryPoint.HashAddMethodEntryPoint(EntryPointInfo) -#End If - Dim exMessage As String = EntryPointInfo.EntryPointFullName & vbCrLf & vbCrLf & ex.ToString - Throw New ShoalShell.Runtime.Objects.ObjectModels.Exceptions.InterpreterException(exMessage) - End Try - - Return 1 - End Function - - ''' - ''' 这个函数是为了Delegate和混åˆç¼–程的Delegate所准备的 - ''' - ''' - ''' - ''' - Private Function InternalMountEntryPoint(EntryPoint As System.Reflection.MethodInfo) As Boolean - Dim InfoData As CommandLine.Reflection.CommandAttribute = New CommandAttribute(EntryPoint.Name) - Dim EntryPointInfo As CommandLine.Reflection.EntryPoints.CommandEntryPointInfo = New CommandEntryPointInfo(InfoData, EntryPoint) - Return InternalMountEntryPoint(EntryPointInfo, Me._InternalDelegateHash) > 0 - End Function - - ''' - ''' Delegate也å¯ä»¥ä¸Žå¯¼å…¥çš„函数产生é‡è½½ - ''' - ''' Delegate函数指针 - ''' - Public Sub DeclaresDelegate([Delegate] As ShoalShell.Interpreter.Reflection.Delegate) - Call InternalMountEntryPoint(EntryPoint:=[Delegate]) - End Sub - -#Region "Implements Generic.IReadOnlyCollection(Of ShoalShell.DelegateHandlers.EntryPointHandlers.CommandMethod)" - - Public Iterator Function GetEnumerator() As IEnumerator(Of CommandMethodEntryPoint) Implements IEnumerable(Of CommandMethodEntryPoint).GetEnumerator - For Each ItemObject In _InternalImportsEntryPointHash.InternalHashDictionary - Yield ItemObject.Value - Next - End Function - - Public ReadOnly Property Count As Integer Implements IReadOnlyCollection(Of CommandMethodEntryPoint).Count, IReadOnlyCollection(Of KeyValuePair(Of String, CommandMethodEntryPoint)).Count - Get - Return _InternalImportsEntryPointHash.InternalHashDictionary.Count - End Get - End Property - - Public Iterator Function GetEnumerator1() As IEnumerator Implements IEnumerable.GetEnumerator - Yield GetEnumerator() - End Function -#End Region - -#Region "Implements Generic.IReadOnlyDictionary(Of String, DelegateHandlers.EntryPointHandlers.CommandMethod)" - - Public Function GetEnumerator2() As IEnumerator(Of KeyValuePair(Of String, CommandMethodEntryPoint)) Implements IEnumerable(Of KeyValuePair(Of String, CommandMethodEntryPoint)).GetEnumerator - Return Me._InternalImportsEntryPointHash.InternalHashDictionary.GetEnumerator - End Function - - ''' - ''' - ''' - ''' 对大å°å†™ä¸æ•感 - ''' - ''' - Public Function ExistsCommand(CommandName As String) As Boolean Implements IReadOnlyDictionary(Of String, CommandMethodEntryPoint).ContainsKey - CommandName = CommandName.ToLower - Return _TEMP_HANDLERS.ContainsKey(CommandName) OrElse Me._InternalDelegateHash.InternalHashDictionary.ContainsKey(CommandName) OrElse Me._InternalImportsEntryPointHash.InternalHashDictionary.ContainsKey(CommandName) - End Function - - ''' - ''' 大å°å†™ä¸æ•感 - ''' - ''' - ''' - ''' - ''' - Default Public ReadOnly Property EntryPoint(key As String) As CommandMethodEntryPoint Implements IReadOnlyDictionary(Of String, CommandMethodEntryPoint).Item - Get - Dim value As CommandMethodEntryPoint = Nothing - Call TryGetValue(key, value) - Return value - End Get - End Property - - ''' - ''' èŽ·å–æ‰€æœ‰å·²ç»å¯¼å…¥è¿›æ¥çš„æ–¹æ³•çš„åç§° - ''' - ''' - ''' - ''' - Public ReadOnly Property ImportsMethods As IEnumerable(Of String) Implements IReadOnlyDictionary(Of String, CommandMethodEntryPoint).Keys - Get - Return Me._InternalImportsEntryPointHash.InternalKeys.Values - End Get - End Property - - ''' - ''' 大å°å†™ä¸æ•感,所以无需在进行ToLowerçš„é¢å¤–处ç†ï¼Œä¸´æ—¶è„šæœ¬å‘½ä»¤ä¼šä¼˜å…ˆäºŽå†…éƒ¨å‘½ä»¤è¢«è°ƒç”¨ - ''' - ''' - ''' - ''' - ''' - Public Function TryGetValue(key As String, ByRef value As CommandMethodEntryPoint) As Boolean Implements IReadOnlyDictionary(Of String, CommandMethodEntryPoint).TryGetValue - key = key.ToLower - value = _InternalImportsEntryPointHash(key) - Return True - End Function - - Private Function __getTempShellCommand(Command As CommandLine.CommandLine) - Dim tmp_command = Me._TEMP_HANDLERS(Command.Name.ToLower) '获å–临时的脚本路径 - Dim tmp_tokens As String() = {New String() {"source", tmp_command}, Command.Parameters}.MatrixToVector - Command = Microsoft.VisualBasic.CommandLine.CommandLine.Join(tmp_tokens) - Return Function() Me.ScriptEngine.Interpreter.InternalCommands.Source(Command) - End Function - - Public ReadOnly Property Values As IEnumerable(Of CommandMethodEntryPoint) Implements IReadOnlyDictionary(Of String, CommandMethodEntryPoint).Values - Get - Return _InternalImportsEntryPointHash.InternalHashDictionary.Values - End Get - End Property -#End Region - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/EntryPointHandlers/InternalEntryPointLoader.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/EntryPointHandlers/InternalEntryPointLoader.vb deleted file mode 100644 index 37a9f6560..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/EntryPointHandlers/InternalEntryPointLoader.vb +++ /dev/null @@ -1,54 +0,0 @@ -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports System.Collections.ObjectModel - -Namespace DelegateHandlers.EntryPointHandlers - - Partial Class ImportsEntryPointManager - - Dim _InternalEntryPointLoader As InternalEntryPointLoader - - Public ReadOnly Property MethodLoader As InternalEntryPointLoader - Get - Return _InternalEntryPointLoader - End Get - End Property - - Public Class InternalEntryPointLoader : Inherits ShoalShell.Runtime.Objects.ObjectModels.IScriptEngineComponent - - Dim InternalManager As ImportsEntryPointManager - - Sub New(ImportsEntryPointManager As ImportsEntryPointManager) - Call MyBase.New(ImportsEntryPointManager.ScriptEngine) - InternalManager = ImportsEntryPointManager - End Sub - - ''' - ''' - ''' - ''' - ''' - ''' - Public Function GetCommand(Command As CommandLine.CommandLine) As Func(Of Object) - Dim EntryName As String = Command.Name.ToLower - - If Me.ScriptEngine._InternalEntryPointManager._TEMP_HANDLERS.ContainsKey(EntryName) Then '临时脚本命令是具有最高的优先级的 - Return Function() Me._RuntimeEnvironment.InternalSourceScript( - ShellScript:=FileIO.FileSystem.ReadAllText(InternalManager._TEMP_HANDLERS(EntryName)), - parameters:=(From p In Command.ToArray Select New KeyValuePair(Of String, Object)(p.Key, InternalManager.ScriptEngine.ScriptEngineMemoryDevice.TryGetValue(p.Value))).ToArray) - End If - - If InternalManager._InternalDelegateHash.InternalHashDictionary.ContainsKey(EntryName) Then '其次是在脚本之中创建的Delegate函数指针 - Return Function() Me._RuntimeEnvironment.Interpreter._InternalMethodInvoker.CallMethod(EntryPoint:=InternalManager._InternalDelegateHash.InternalHashDictionary(EntryName), argvs:=Command, MemoryDevice:=_RuntimeEnvironment._EngineMemoryDevice, TypeSignature:="") - End If - - If InternalManager._InternalImportsEntryPointHash.InternalHashDictionary.ContainsKey(EntryName) Then 'æœ€åŽæ‰ä»Žå¤–部程åºåŒ…之中调用命令 - Dim Method As ShoalShell.DelegateHandlers.EntryPointHandlers.CommandMethodEntryPoint = - InternalManager._InternalImportsEntryPointHash.InternalHashDictionary(EntryName) - Return Function() Me._RuntimeEnvironment._Interpreter._InternalMethodInvoker.CallMethod(EntryPoint:=Method, argvs:=Command, MemoryDevice:=_RuntimeEnvironment._EngineMemoryDevice, TypeSignature:="") - Else - Throw New ShoalShell.Runtime.Objects.ObjectModels.Exceptions.MethodNotFoundException(Command.Name, "") - End If - End Function - End Class - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/EntryPointHandlers/MethodDelegateCaller.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/EntryPointHandlers/MethodDelegateCaller.vb deleted file mode 100644 index 3b44400e1..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/EntryPointHandlers/MethodDelegateCaller.vb +++ /dev/null @@ -1,380 +0,0 @@ -Imports System.Text.RegularExpressions -Imports System.Text - -Namespace DelegateHandlers.EntryPointHandlers - - ''' - ''' å¯¹äºŽç¬¬ä¸€ä¸ªå‚æ•°ä¸ºè„šæœ¬å¼•æ“Žçš„ç±»åž‹ï¼Œåˆ™å¯ä»¥åœ¨è°ƒç”¨çš„æ—¶å€™ç›´æŽ¥å¿½ç•¥ç¬¬ä¸€ä¸ªå‚æ•° - ''' - ''' - Public Class MethodDelegateCaller : Inherits ShoalShell.Runtime.Objects.ObjectModels.IScriptEngineComponent - - ''' - ''' This method required the host memory, when this attribute was applied on a method, - ''' then the host memory object will be append to the last of the parameter value list. - ''' - ''' - - Public Class RequiredHostMemory : Inherits Attribute - - Public Overrides Function ToString() As String - Return "This method required the host memory." - End Function - End Class - - Private ReadOnly CommandLineTypeName As String = GetType(Microsoft.VisualBasic.CommandLine.CommandLine).FullName - Protected Shared ReadOnly StringTYPE As System.Type = GetType(String) - - Sub New(ScriptEngine As ShoalShell.Runtime.Objects.ShellScript) - Call MyBase.New(ScriptEngine:=ScriptEngine) - End Sub - - ''' - ''' - ''' - ''' 傿•°åï¼Œå‚æ•°ç±»åž‹ - ''' - Public Function GetParameters([Delegate] As System.Reflection.MethodInfo) As KeyValuePair(Of Microsoft.VisualBasic.Scripting.EntryPointMetaData.ParameterAlias, System.Type)() - Dim Parameters As System.Reflection.ParameterInfo() = [Delegate].GetParameters - Dim LQuery = (From pInfo As System.Reflection.ParameterInfo - In Parameters - Let ap = Microsoft.VisualBasic.Scripting.EntryPointMetaData.ParameterAlias.GetParameterNameAlias(pInfo, [Default]:=Nothing) - Select New KeyValuePair(Of Microsoft.VisualBasic.Scripting.EntryPointMetaData.ParameterAlias, System.Type)(ap, pInfo.ParameterType)).ToArray ' ç”±äºŽæ‹“å±•æ–¹æ³•ä¼ é€’å‚æ•°çš„需è¦ï¼Œè¯·ä¸è¦æŽ’åºè€Œå°†åŽŸå§‹é¡ºåºç»™æ‰“ä¹± - Return LQuery - End Function - - Const EXCEPTION_METHOD_MISSING_REQUIRED_PARAMETER As String = "MISSING_PARAMETER:: Could not found the required parameter ""{0}""!" - - Private Shared Function InternalCallCommandLine(Parameter As System.Reflection.ParameterInfo, - _Delegate As Microsoft.VisualBasic.CommandLine.Reflection.EntryPoints.CommandEntryPointInfo, - argvs As CommandLine.CommandLine, - MemoryBlocks As Runtime.Objects.I_MemoryManagementDevice) As Object - If argvs.Parameters.IsNullOrEmpty Then - - If Parameter.IsOptional Then - Return InternalDelegateInvoke(_Delegate, New Object() {Parameter.DefaultValue}, MemoryBlocks.ScriptEngine) - Else - Dim ExMessage As String = String.Format(EXCEPTION_METHOD_MISSING_REQUIRED_PARAMETER, Parameter.Name) - Throw New ShoalShell.Runtime.Objects.ObjectModels.Exceptions.ScriptRunTimeException(ExMessage, MemoryBlocks) - End If - End If - - If argvs.Parameters.First.First = "$" Then 'å‘½ä»¤è¡Œå¯¹è±¡çš„å‚æ•°ä¹‹ä¸­åªæœ‰æœ€åŸºæœ¬çš„æ•°æ®ç±»åž‹ - Dim strValue = MemoryBlocks.Item(Mid(argvs.Parameters.First, 2)).ToString - argvs = CommandLine.CommandLine.TryParse("call " & strValue) - ElseIf argvs.Parameters.First.First = "&" Then - Dim strValue = MemoryBlocks.GetConstant(Mid(argvs.Parameters.First, 2)).ToString - argvs = CommandLine.CommandLine.TryParse("call " & strValue) - End If - - Return InternalDelegateInvoke(_Delegate, New Object() {argvs}, MemoryBlocks.ScriptEngine) - End Function - - Private Shared Function InternalCallOnlyOneParameterMethod(Parameter As System.Reflection.ParameterInfo, - _Delegate As Microsoft.VisualBasic.CommandLine.Reflection.EntryPoints.CommandEntryPointInfo, - argvs As CommandLine.CommandLine, - MemoryDevice As Runtime.Objects.I_MemoryManagementDevice) As Object - If argvs.Parameters.IsNullOrEmpty Then - If Parameter.IsOptional Then - Return InternalDelegateInvoke(_Delegate, New Object() {Parameter.DefaultValue}, MemoryDevice.ScriptEngine) - ElseIf Parameter.ParameterType = GetType(ShoalShell.Runtime.Objects.ShellScript) Then - Return InternalDelegateInvoke(_Delegate, New Object() {MemoryDevice.ScriptEngine}, MemoryDevice.ScriptEngine) - Else - Throw New ShoalShell.Runtime.Objects.ObjectModels.Exceptions.ScriptRunTimeException(String.Format(EXCEPTION_METHOD_MISSING_REQUIRED_PARAMETER, Parameter.Name), MemoryDevice) - End If - End If - - Dim argvsValue As String = argvs.Parameters.First 'åªæœ‰ä¸€ä¸ªå‚数则å¯ä»¥ç›´æŽ¥å¿½ç•¥å‚æ•°åï¼Œè¿™é‡Œå¾—åˆ°çš„æ˜¯å‚æ•°å€¼çš„表达å¼ï¼Œå¯¹äºŽæ‹“展方法,这里需è¦é¢å¤–çš„å¤„ç† - If String.Equals(argvsValue, Parameter.Name, StringComparison.OrdinalIgnoreCase) Then - 'å½“ç¬¬ä¸€ä¸ªå‚æ•°å’Œç›®æ ‡å‡½æ•°çš„傿•°åä¸€è‡´çš„æ—¶å€™ï¼Œåˆ™è®¤ä¸ºç¬¬äºŒä¸ªå‚æ•°æ‰æ˜¯çœŸæ­£æƒ³è¦çš„傿•°ï¼Œå¯¹äºŽå…¶ä»–çš„ä»»æ„æƒ…况,任然维æŒåŽŸæ¥çš„å½¢å¼ - If argvs.Parameters.Count > 1 Then - argvsValue = argvs.Parameters(1) - End If - End If - - If String.Equals(ShoalShell.Interpreter.Interpreter.EXTENSION_OPERATOR, argvsValue) Then - argvsValue = argvs.Parameters(1) 'å¯¹äºŽæ‹“å±•æ–¹æ³•ï¼Œåˆ—è¡¨ä¹‹ä¸­çš„ç¬¬äºŒä¸ªå…ƒç´ æ‰æ˜¯æƒ³è¦çš„傿•°ä¿¡æ¯ - End If - - Dim paraValue As Object = InternalGetVariable(Parameter, argvsValue, MemoryDevice) - - Return InternalDelegateInvoke(_Delegate, New Object() {paraValue}, MemoryDevice.ScriptEngine) - End Function - - Private Shared Function InternalGetVariable(p As System.Reflection.ParameterInfo, refValue As String, MemoryDevice As ShoalShell.Runtime.Objects.I_MemoryManagementDevice) As Object - Dim pType As Type = p.ParameterType - - If pType = StringTYPE Then - refValue = MemoryDevice.FormatString(refValue) - Return refValue - End If - - If refValue.First = "$"c Then - refValue = Mid(refValue, 2) - Dim paraValue = MemoryDevice.Item(refValue) - If InternalCreateBasicValue.ContainsKey(pType) Then - paraValue = InternalCreateBasicValue(pType)(paraValue) - End If - Return paraValue - ElseIf refValue.First = "&"c Then - Return MemoryDevice.GetConstant(Mid(refValue, 2)) - ElseIf refValue.First = "*"c Then - Return MemoryDevice.ScriptEngine.InternalEntryPointManager.MethodLoader.GetCommand(Mid(refValue, 2)) - ElseIf String.Equals(refValue, "%") Then - Return MemoryDevice - Else - If InternalCreateBasicValue.ContainsKey(pType) Then - Dim objValue = InternalCreateBasicValue(pType)(refValue) - - Return objValue - Else - Return refValue - End If - End If - End Function - - Private Shared Function InternalCallMultipleParametersMethod(Parameters As KeyValuePair(Of Microsoft.VisualBasic.Scripting.EntryPointMetaData.ParameterAlias, Type)(), - _Delegate As Microsoft.VisualBasic.CommandLine.Reflection.EntryPoints.CommandEntryPointInfo, - argvs As CommandLine.CommandLine, - MemoryDevice As Runtime.Objects.I_MemoryManagementDevice) As Object - - Dim paraList As List(Of Object) = New System.Collections.Generic.List(Of Object) '在这里生æˆä¸ŽParameters中的元素的顺åºä¸€è‡´çš„傿•°åˆ—表 - - If argvs.ContainsParameter(Interpreter.Interpreter.EXTENSION_OPERATOR) Then - If Parameters.First.Value = GetType(ShoalShell.Runtime.Objects.ShellScript) Then - Call argvs.Add(Parameters(1).Key.Alias, argvs(Interpreter.Interpreter.EXTENSION_OPERATOR)) - Else - Call argvs.Add(Parameters.First.Key.Alias, argvs(Interpreter.Interpreter.EXTENSION_OPERATOR)) - End If - End If - - If Parameters.First.Value = GetType(ShoalShell.Runtime.Objects.ShellScript) Then - Call paraList.Add(MemoryDevice.ScriptEngine) - Parameters = Parameters.Skip(1).ToArray - End If - - For Each p As KeyValuePair(Of Microsoft.VisualBasic.Scripting.EntryPointMetaData.ParameterAlias, Type) In Parameters - Dim valueRef As String = argvs.Item(p.Key.Alias) - - If String.IsNullOrEmpty(valueRef) Then - If p.Key.AssociatedParameterInfo.IsOptional Then - Call paraList.Add(p.Key.AssociatedParameterInfo.DefaultValue) - Continue For - End If - - '说明在用户传递进æ¥çš„傿•°åˆ—表中找ä¸åˆ°å‡½æ•°è°ƒç”¨è¯´éœ€è¦çš„ä¸€ä¸ªå‚æ•°ï¼Œåˆ™æŠ›å‡ºé”™è¯¯ - Throw New ShoalShell.Runtime.Objects.ObjectModels.Exceptions.ScriptRunTimeException(String.Format(EXCEPTION_METHOD_MISSING_REQUIRED_PARAMETER, p.Key), MemoryDevice) - End If - - Call paraList.Add(InternalGetVariable(p.Key.AssociatedParameterInfo, valueRef, MemoryDevice)) - Next - - Return InternalDelegateInvoke(_Delegate, paraList.ToArray, MemoryDevice.ScriptEngine) - End Function - - ''' - ''' 这个函数处ç†å…±äº«æ–¹æ³•和实例方法的调用 - ''' - ''' - ''' - ''' - ''' - ''' - Public Function CallMethod([Delegate] As Microsoft.VisualBasic.CommandLine.Reflection.EntryPoints.CommandEntryPointInfo, - argvs As CommandLine.CommandLine, - MemoryDevice As Runtime.Objects.I_MemoryManagementDevice) As Object - - Dim Parameters = GetParameters([Delegate].MethodEntryPoint) 'é¦–å…ˆå¾—åˆ°æ–¹æ³•çš„å‚æ•°åˆ—表 - - If Parameters.IsNullOrEmpty Then '这个方法是ä¸éœ€è¦ä»»ä½•傿•°çš„ - Return InternalDelegateInvoke([Delegate], New Object() {}, Me.ScriptEngine) - ElseIf Parameters.Count = 1 AndAlso String.Equals(Parameters.First.Value.FullName, CommandLineTypeName) Then 'è¿™ä¸ªæ–¹æ³•ä»…åŒ…å«æœ‰ä¸€ä¸ªå‚数,并且为命令行格å¼ï¼Œåˆ™ç›´æŽ¥ä¼ é€’傿•° - Return InternalCallCommandLine(Parameters.First.Key.AssociatedParameterInfo, [Delegate], argvs, MemoryDevice) - ElseIf Parameters.Count = 1 Then 'è¯¥æ–¹æ³•ä»…åŒ…å«æœ‰ä¸€ä¸ªå‚数,则直接从内存中查找出å˜é‡ç„¶åŽèµ‹å€¼ - Return InternalCallOnlyOneParameterMethod(Parameters.First.Key.AssociatedParameterInfo, [Delegate], argvs, MemoryDevice) - Else - Return InternalCallMultipleParametersMethod(Parameters, [Delegate], argvs, MemoryDevice) - End If - End Function - - ''' - ''' 这个方法处ç†å…±äº«æ–¹æ³•的调用 - ''' - ''' - ''' - ''' - ''' - ''' - Public Function CallMethod([Delegate] As System.Reflection.MethodInfo, argvs As CommandLine.CommandLine, MemoryDevice As Runtime.Objects.I_MemoryManagementDevice) As Object - Dim EntryInfo As New Microsoft.VisualBasic.CommandLine.Reflection.EntryPoints.CommandEntryPointInfo(New CommandLine.Reflection.CommandAttribute("VB$AnonymousSharedMethod"), Invoke:=[Delegate]) - Return CallMethod(EntryInfo, argvs, MemoryDevice) - End Function - - ''' - ''' - ''' - ''' - ''' - ''' - ''' 函数会根æ®è¿™ä¸ªå€¼æ¥å†³å®šé‡è½½å‡½æ•°çš„调用,å¯ä»¥ä¸ºç©ºå­—符串 - ''' - ''' - Public Function CallMethod(EntryPoint As ShoalShell.DelegateHandlers.EntryPointHandlers.CommandMethodEntryPoint, - argvs As CommandLine.CommandLine, - MemoryDevice As Runtime.Objects.I_MemoryManagementDevice, - TypeSignature As String) As Object - - If Not EntryPoint.IsOverloaded Then 'ç›®æ ‡å‡½æ•°ä¸æ˜¯ä¸€ä¸ªé‡è½½å‡½æ•°ï¼Œåˆ™ç›´æŽ¥è°ƒç”¨ - Return CallMethod(EntryPoint.NonOverloadsMethod, argvs, MemoryDevice) - Else - Return InternalCallOverloadsMethod(EntryPoint, argvs, MemoryDevice, TypeSignature) - End If - End Function - - Private Function InternalCallOverloadsMethod(EntryPoint As ShoalShell.DelegateHandlers.EntryPointHandlers.CommandMethodEntryPoint, - argvs As CommandLine.CommandLine, - MemoryDevice As Runtime.Objects.I_MemoryManagementDevice, - TypeSignature As String) As Object - - Dim paraList As Dictionary(Of String, Object) = Nothing - - If argvs.Parameters.Count = 1 Then - paraList = New Dictionary(Of String, Object) - paraList.Add(Interpreter.Interpreter.EXTENSION_OPERATOR, MemoryDevice.TryGetValue(argvs.Parameters.First)) '函数å¯èƒ½åªæœ‰ä¸€ä¸ªå‚æ•° - Else - paraList = InternalGetVariable(argvs, MemoryDevice) - End If - - Dim CalledMethodEntryPoint = FindOverloadsMethod(EntryPoint, paraList, MemoryDevice, TypeSignature) - Return CallMethod(CalledMethodEntryPoint, argvs, MemoryDevice) - End Function - - Public Function FindOverloadsMethod(EntryPoint As ShoalShell.DelegateHandlers.EntryPointHandlers.CommandMethodEntryPoint, - argvs As Dictionary(Of String, Object), - MemoryDevice As Runtime.Objects.I_MemoryManagementDevice, - TypeSignature As String) As CommandLine.Reflection.EntryPoints.CommandEntryPointInfo - Dim ParameterTypeSignature = (From item As KeyValuePair(Of String, Object) In argvs - Select KEY = item.Key.ToLower, - TYPE = item.Value.GetType).ToArray.ToDictionary(keySelector:=Function(item) item.KEY, elementSelector:=Function(item) item.TYPE) - Dim CalledMethodEntryPoint = EntryPoint.getMethodInfo(ParameterTypeSignature, TypeSignature) - Return CalledMethodEntryPoint - End Function - - ''' - ''' æ‹“å±•æ–¹æ³•çš„å‡½æ•°è‚¯å®šä¼šæœ‰ä¸€ä¸ªå‚æ•°ï¼Œå¹¶ä¸”è¯¥å‡½æ•°çš„ç¬¬ä¸€ä¸ªå‚æ•°ä¸ºæ‹“å±•æ–¹æ³•çš„ç›®æ ‡å‚æ•°å¯¹è±¡ - ''' - ''' - ''' - ''' - ''' - Private Shared Function InternalGetVariable(argvs As CommandLine.CommandLine, MemoryDevice As Runtime.Objects.I_MemoryManagementDevice) As Dictionary(Of String, Object) - Dim paraDict As Dictionary(Of String, Object) = New Dictionary(Of String, Object) - Dim ExtTemp As String = "" - - If argvs.ContainsParameter(Interpreter.Interpreter.EXTENSION_OPERATOR) Then - Dim ref As String = argvs(Interpreter.Interpreter.EXTENSION_OPERATOR) - Call paraDict.Add(Interpreter.Interpreter.EXTENSION_OPERATOR, MemoryDevice.TryGetValue(ref)) - Call argvs.Remove(Interpreter.Interpreter.EXTENSION_OPERATOR) - ExtTemp = ref - - For Each p In argvs.ToArray - Dim value As Object = MemoryDevice.TryGetValue(p.Value) '获å–傿•°å¼•ç”¨è¡¨è¾¾å¼æ‰€å¼•ç”¨çš„åœ¨å†…å­˜è®¾å¤‡ä¹‹ä¸­çš„æ˜ å°„æ•°æ® - Call paraDict.Add(p.Key, value) - Next - - Call argvs.Add(Interpreter.Interpreter.EXTENSION_OPERATOR, ExtTemp) - Else - For Each p In argvs.ToArray - Dim value As Object = MemoryDevice.TryGetValue(p.Value) '获å–傿•°å¼•ç”¨è¡¨è¾¾å¼æ‰€å¼•ç”¨çš„åœ¨å†…å­˜è®¾å¤‡ä¹‹ä¸­çš„æ˜ å°„æ•°æ® - Call paraDict.Add(p.Key, value) - Next - End If - - Return paraDict - End Function - - Private Shared Function InternalDelegateInvoke(EntryPointHandle As Microsoft.VisualBasic.CommandLine.Reflection.EntryPoints.CommandEntryPointInfo, argvs As Object(), ScriptEngine As ShoalShell.Runtime.Objects.ShellScript) As Object - If EntryPointHandle.MethodEntryPoint.IsStatic Then Return EntryPointHandle.Invoke(argvs, Nothing) - - Dim Entry As System.Type = EntryPointHandle.MethodEntryPoint.DeclaringType - Dim Target As Object = If(Entry = GetType(ShoalShell.Interpreter.InternalCommands), ScriptEngine._Interpreter._InternalCommands, EntryPointHandle.InvokeOnObject) - - Return EntryPointHandle.Invoke(argvs, Target) - End Function - - ''' - ''' 基本数æ®ç±»åž‹çš„è½¬æ¢æ“作 - ''' - ''' - Friend Shared ReadOnly InternalCreateBasicValue As Dictionary(Of System.Type, Func(Of Object, Object)) = - New Dictionary(Of Type, Func(Of Object, Object)) From { - _ - {GetType(Long), Function(Value As Object) CLng(Val(Value.ToString))}, - {GetType(Single), Function(value As Object) CSng(Val(value.ToString))}, - {GetType(Double), Function(value As Object) Val(value.ToString)}, - {GetType(Date), Function(value As Object) CDate(value.ToString)}, - {GetType(String), Function(value As Object) value.ToString}, - {GetType(Integer), Function(value As Object) CInt(Val(value.ToString))}, - {GetType(Boolean), Function(value As Object) CBool(value.ToString)}, - {GetType(Microsoft.VisualBasic.CommandLine.CommandLine), Function(value As Object) CommandLine.CommandLine.TryParse(value.ToString)}} - - ''' - ''' Get the help information description for the target command method.(获å–一个方法的详细帮助信æ¯) - ''' - ''' - ''' - ''' - Public Function GetDescription(MethodInfo As System.Reflection.MethodInfo, Optional ParameterSignature As String = "") As String - Dim EntryInfo = DirectCast(MethodInfo.GetCustomAttributes(CommandLine.Reflection.CommandAttribute.TypeInfo, True).First, CommandLine.Reflection.CommandAttribute) - Dim ParameterInfo = MethodInfo.GetParameters - Dim sBuilder As StringBuilder = New StringBuilder(1024) - - Call sBuilder.AppendLine(String.Format(" (*IntPtr) ", MethodInfo.MethodHandle.GetFunctionPointer)) - Call sBuilder.AppendLine() - Call sBuilder.AppendLine(String.Format("Description Summary for command ""{0}""", EntryInfo.Name)) - Call sBuilder.AppendLine(String.Format("Description: {0}", If(String.IsNullOrEmpty(EntryInfo.Info), "No descript data", EntryInfo.Info))) - Call sBuilder.AppendLine(String.Format("Return: {0}", MethodInfo.ReturnType.FullName)) - - If ParameterInfo.IsNullOrEmpty Then - Call sBuilder.AppendLine(vbCrLf & "This command does not required of any parameters.") - Else - Call InternalGetParametersDescription(sBuilder:=sBuilder, - ParameterInfo:=(From pInfo As System.Reflection.ParameterInfo - In ParameterInfo - Select Microsoft.VisualBasic.Scripting.EntryPointMetaData.ParameterAlias.GetParameterNameAlias(pInfo, [Default]:=Nothing)).ToArray, - MethodEntryPoint:=MethodInfo, - ParameterSignature:=ParameterSignature) - End If - - Return sBuilder.ToString - End Function - - Private Shared Sub InternalGetParametersDescription(ByRef sBuilder As StringBuilder, ParameterInfo As Microsoft.VisualBasic.Scripting.EntryPointMetaData.ParameterAlias(), MethodEntryPoint As System.Reflection.MethodInfo, ParameterSignature As String) - Dim MaxLength As Integer = (From p In ParameterInfo Select Len(p.Alias)).ToArray.Max - Dim MaxTypeLength As Integer = (From p In ParameterInfo Select Len(p.AssociatedParameterInfo.ParameterType.FullName)).ToArray.Max - - Call sBuilder.AppendLine(vbCrLf & String.Format(" {0} Parameter(s)", ParameterInfo.Count) & If(String.IsNullOrEmpty(ParameterSignature), "", vbTab & ParameterSignature) & vbCrLf) - Call sBuilder.AppendLine(String.Format("+-ParameterName{0}-+-ParameterType-------------------------------------------------------------------------------------", - New String("-"c, If(MaxLength > Len("parametername"), MaxLength - Len("ParameterName") + 4, MaxLength)))) - For Each pEntry As Microsoft.VisualBasic.Scripting.EntryPointMetaData.ParameterAlias In ParameterInfo - Dim p = pEntry.AssociatedParameterInfo - Call sBuilder.AppendLine(String.Format(" {0}{1} {2}{3} {4}{5}", If(p.IsOptional, String.Format("[{0}]", pEntry.Alias), pEntry.Alias), - New String(" "c, MaxLength - Len(pEntry.Alias) + 10), - p.ParameterType.FullName, - New String(" ", MaxTypeLength - Len(p.ParameterType.FullName)), - If(p.IsOptional, If(p.DefaultValue Is Nothing, "= NULL", "= " & p.DefaultValue.ToString), ""), - If(String.IsNullOrEmpty(pEntry.Description), "", " // " & pEntry.Description))) - Next - - Dim ParameterDescriptions As Object() = MethodEntryPoint.GetCustomAttributes(attributeType:=GetType(Microsoft.VisualBasic.CommandLine.Reflection.ParameterDescription), inherit:=True) - - If Not ParameterDescriptions.IsNullOrEmpty Then - Call sBuilder.AppendLine(vbCrLf & vbCrLf & "Parameter detail information:" & vbCrLf) - - For Each desc As Microsoft.VisualBasic.CommandLine.Reflection.ParameterDescription In (From item In ParameterDescriptions Select DirectCast(item, Microsoft.VisualBasic.CommandLine.Reflection.ParameterDescription)) - Call sBuilder.AppendLine(desc.ToString) - Next - End If - End Sub - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/TypeLibraryRegistry/DelegateRegistry.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/TypeLibraryRegistry/DelegateRegistry.vb deleted file mode 100644 index e38a07fef..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/TypeLibraryRegistry/DelegateRegistry.vb +++ /dev/null @@ -1,485 +0,0 @@ -Imports System.Text -Imports Microsoft.VisualBasic.Scripting.ShoalShell.DelegateHandlers.TypeLibraryRegistry.RegistryNodes - -Namespace DelegateHandlers.TypeLibraryRegistry - - Public Class LoadedModulesManager - - Protected _LoadedModules As Dictionary(Of String, [Module]) = New Dictionary(Of String, [Module]) - - Public Sub Add(ns As CommandLine.Reflection.Namespace, [module] As Type) - Dim Nspace = get_LoadedModule(ns.Namespace) - If Nspace Is Nothing Then - Nspace = New [Module](ns, [module]) - Call _LoadedModules.Add(ns.Namespace.ToLower, Nspace) - Else - Call Nspace.MergeNamespace(ns, [module]) - End If - End Sub - - Public Function ModuleIsLoaded(ns As String) As Boolean - Return Not get_LoadedModule(ns) Is Nothing - End Function - - Public Function get_LoadedModule(ns As String) As [Module] - Dim LQuery = (From item In _LoadedModules Where String.Equals(ns, item.Key, StringComparison.OrdinalIgnoreCase) Select item.Value).ToArray - Return LQuery.FirstOrDefault - End Function - End Class - - ''' - ''' The type registry of the external plugin module assembly, the assembly file should be a standard.NET DLL or exe which was written by VisualBasic or C#. - ''' (外部命令必须通过这个类型注册表æ‰å¯ä»¥è¢«ç”¨æˆ·è°ƒç”¨) - ''' - ''' - - Public Class DelegateRegistry : Implements System.IDisposable - - Protected Friend _RegisteredModuleLoader As RegistryModuleLoader - Protected Friend _FilePath As String - Protected Friend _InnerList As List(Of RegistryNodes.Namespace) = New Generic.List(Of [Namespace]) - ''' - ''' 这个挂载点列表是全部被一次性加载的 - ''' - ''' - Protected Friend _HybridsScriptingEntrypoints As List(Of RegistryNodes.HybridScriptingModuleLoadEntry) = New Generic.List(Of RegistryNodes.HybridScriptingModuleLoadEntry) - Protected Friend ReadOnly _LoadedModules As LoadedModulesManager = New LoadedModulesManager - - Public Property CurrentRegister As String - - Public ReadOnly Property LoadedModules As LoadedModulesManager - Get - Return _LoadedModules - End Get - End Property - - Sub New() - CurrentRegister = My.Computer.Name - End Sub - - ''' - ''' This property list all of the module which was registered in the shoal shell. - ''' - ''' - ''' - ''' - Public Property RegisteredModules As RegistryNodes.Namespace() - Get - If _InnerList.IsNullOrEmpty Then - _InnerList = New Generic.List(Of [Namespace]) - End If - Return _InnerList.ToArray - End Get - Set(value As RegistryNodes.Namespace()) - _InnerList = value.ToList - End Set - End Property - - ''' - ''' 与外部脚本环境进行交互所需è¦çš„æŒ‚载点的注册表 - ''' - ''' - ''' - ''' - Public Property HybridsScriptingEntrypoints As RegistryNodes.HybridScriptingModuleLoadEntry() - Get - Return _HybridsScriptingEntrypoints.ToArray - End Get - Set(value As RegistryNodes.HybridScriptingModuleLoadEntry()) - If value.IsNullOrEmpty Then - _HybridsScriptingEntrypoints = New Generic.List(Of HybridScriptingModuleLoadEntry) - Else - _HybridsScriptingEntrypoints = value.ToList - End If - End Set - End Property - - Public ReadOnly Property IsEmpty As Boolean - Get - Return Me.HybridsScriptingEntrypoints.IsNullOrEmpty AndAlso Me.RegisteredModules.IsNullOrEmpty - End Get - End Property - - Public Function GetMethod(assemblyName As String, cmdName As String, hostMemoryDevice As Runtime.Objects.I_MemoryManagementDevice) As System.Reflection.MethodInfo() - Dim [Module] = TryGetModule(assemblyName.ToLower, hostMemoryDevice) - Dim Method = [Module].Item(cmdName) - Return Method - End Function - - ''' - ''' 返回错误的æ’件模å—的数目 - ''' - ''' - ''' - Public Function CheckForLibraryConsists(showMessage As Boolean) As Integer - If showMessage Then - Call Console.WriteLine("Checking for the missing plugins....") - End If - - Dim LQuery = (From nsEntry As RegistryNodes.Namespace - In Me.RegisteredModules - Let modPathList As String() = (From mldEntry As DelegateHandlers.TypeLibraryRegistry.RegistryNodes.ModuleLoadEntry - In nsEntry.Entries - Let path As String = Internal_getFullPath(mldEntry.AssemblyPath) - Where Not FileIO.FileSystem.FileExists(path) - Select path).ToArray - Where Not modPathList.IsNullOrEmpty - Select nsID = nsEntry.ModuleName, modPathList).ToList - Call LQuery.AddRange((From hyLdEntry As DelegateHandlers.TypeLibraryRegistry.RegistryNodes.HybridScriptingModuleLoadEntry - In Me.HybridsScriptingEntrypoints - Let path As String = Internal_getFullPath(hyLdEntry.AssemblyPath) - Where Not FileIO.FileSystem.FileExists(path) - Select nsID = hyLdEntry.EntryId, modPathList = New String() {path}).ToArray) - - If LQuery.IsNullOrEmpty Then - If showMessage Then - Call Console.WriteLine("None missing plugins, all good to go!") - End If - - Return 0 - End If - - If Not showMessage Then - Return LQuery.Count - End If - - Dim sBuilder As StringBuilder = New StringBuilder(2048) - - For Each Entry In LQuery - For Each path In Entry.modPathList - Call sBuilder.AppendLine($"[DEBUG] Plugin module is missing ({Entry.nsID}) {path.ToFileURL}!!!") - Next - Next - - Call Console.WriteLine(sBuilder.ToString) - Call Console.WriteLine($"There are {LQuery.Count } plugin modules was missing, if you have move the location of the plugins module show upon, please registered again...") - Return LQuery.Count - End Function - - Const TYPE_ACCESS_EXCEPTION As String = "ASSEMBLY_MODULE_LOAD_FAILURE:: Could not load any module from a path {0}, the assembly module file maybe deleted or not a standard .NET Class library!" - - ''' - ''' æŒ‚è½½ä¸€ä¸ªæ¨¡å— - ''' - ''' - ''' - Public Sub LoadLibrary(assemblyPath As String, hostMemoryDevice As Runtime.Objects.I_MemoryManagementDevice) - Dim [Modules] = _RegisteredModuleLoader.get_ModuleFromAssembly(AssemblyPath:=FileIO.FileSystem.GetFileInfo(assemblyPath).FullName) - -EXCEPTION_HANDLER: - If [Modules].IsNullOrEmpty Then - Throw New TypeAccessException(String.Format(TYPE_ACCESS_EXCEPTION, assemblyPath)) - Else - For Each [Module] In Modules - - If Not String.IsNullOrEmpty([Module].Key.Namespace) Then - Call Console.WriteLine("Load registered plugin module '{0}'; @""{1}""", [Module].Key.Namespace, assemblyPath) - Call _LoadedModules.Add([Module].Key, [Module].Value) 'åŠ¨æ€æŒ‚è½½æ¨¡å— - Call hostMemoryDevice.ImportsConstant([Module].Value) '导入模å—之中所定义的常数 - End If - Next - End If - End Sub - - Public Function TryGetModule(assemblyName As String, hostMemoryDevice As Runtime.Objects.I_MemoryManagementDevice) As [Module] - If _LoadedModules.ModuleIsLoaded(assemblyName) Then Return _LoadedModules.get_LoadedModule(assemblyName) - - Dim AssemblyPathList As String() = GetAssemblyPaths(assemblyName) - Dim [Modules] = (From path As String In AssemblyPathList Select _RegisteredModuleLoader.get_ModuleFromAssembly(path)).ToArray.MatrixToVector - -EXCEPTION_HANDLER: - If [Modules].IsNullOrEmpty Then - Throw New TypeAccessException(String.Format("ASSEMBLY_MODULE_LOAD_FAILURE:: Could not load one of the namespace module ""{0}""!" & vbCrLf & - " Path List:" & vbCrLf & - " {1}", assemblyName, String.Join(";" & vbCrLf & " ", AssemblyPathList))) - End If - - For Each [Module] In Modules - If Not String.IsNullOrEmpty([Module].Key.Namespace) Then - Call Console.WriteLine("Load registered plugin module '{0}'; @""{1}""", [Module].Value.FullName, [Module].Value.Assembly.Location) - Call _LoadedModules.Add([Module].Key, [Module].Value) 'åŠ¨æ€æŒ‚è½½æ¨¡å— - Call hostMemoryDevice.ImportsConstant([Module].Value) '导入模å—之中所定义的常数 - End If - Next - - Dim LoadModule = LoadedModules.get_LoadedModule(assemblyName) - If LoadModule.IsNullOrEmpty Then - Modules = Nothing - GoTo EXCEPTION_HANDLER - Else - Return LoadModule - End If - End Function - - Protected Friend Function GetAssemblyPaths(AssemblyName As String) As String() - Dim [Module] As RegistryNodes.Namespace = GetNamespaceModule(AssemblyName) - Dim pathList As String() = (From Entry As RegistryNodes.ModuleLoadEntry In [Module].Entries Select Internal_getFullPath(Entry.AssemblyPath) Distinct).ToArray - Return pathList - End Function - - ''' - ''' 获å–目标路径的全路径,这个函数è¦å¤„ç†ç›¸å¯¹è·¯å¾„和全路径 - ''' - ''' - ''' - ''' - Friend Shared Function Internal_getFullPath(path As String) As String - Dim FullPath As String = FileIO.FileSystem.GetFileInfo(path).FullName - - If Not FileIO.FileSystem.FileExists(FullPath) Then - FullPath = My.Application.Info.DirectoryPath & "/" & path 'å¯èƒ½ä¸ºç›¸å¯¹è·¯å¾„ - - If Not FileIO.FileSystem.FileExists(FullPath) Then - Return path - Else - Return FullPath - End If - Else - Return FullPath - End If - End Function - - Public Sub Save() - Dim Xml As String = Me.GetXml - Call Xml.SaveTo(_FilePath) - End Sub - - Const MISSING_ASSEMBLY_TYPE As String = "MISSING_ASSEMBLY_TYPE:: Assembly module {0} is not found in the registry!" - - Public Function GetNamespaceModule(assemblyName As String) As RegistryNodes.Namespace - Dim [Modules] As RegistryNodes.Namespace() = (From nsEntry As RegistryNodes.Namespace - In RegisteredModules - Where String.Equals(assemblyName, nsEntry.ModuleName, StringComparison.OrdinalIgnoreCase) - Select nsEntry).ToArray - If Modules.IsNullOrEmpty Then - Dim ex_Msg As String = String.Format(MISSING_ASSEMBLY_TYPE, assemblyName) - Throw New MissingPrimaryKeyException(ex_Msg) - Else - Return Modules.First - End If - End Function - - Private Shared Sub InsertOrUpdateItem(Of EntryType As RegistryNodes.ModuleLoadEntry)(RegistryItem As EntryType, ByRef Registry As List(Of EntryType)) - Dim Items = (From item As EntryType In Registry Where item.Equals(Of EntryType)(RegistryItem) Select item).ToArray - - If Items.IsNullOrEmpty Then - Call Console.WriteLine("Register new assembly module: {0} ""{1}"" " & vbCrLf & - " @{0}", RegistryItem.TypeId, RegistryItem.Guid, RegistryItem.AssemblyPath) - Call Registry.Add(RegistryItem) 'INSERT - Else - Dim Entry = Items.First - Call Entry.CopyFrom(RegistryItem) 'UPDATE - Call Console.WriteLine("Update assembly module registry entry: {0} ""{1}""" & vbCrLf & - " @{0}", RegistryItem.AssemblyPath, RegistryItem.TypeId) - End If - End Sub - - Private Shared Function RegistryInternalInsertOrUpdateRegistryEntryValue(nsName As String, Registry As List(Of RegistryNodes.Namespace), RegistryItem As ModuleLoadEntry) As RegistryNodes.Namespace - Dim NamespaceEntries As RegistryNodes.Namespace() = (From nsEntry In Registry Where String.Equals(nsName, nsEntry.ModuleName, StringComparison.OrdinalIgnoreCase) Select nsEntry).ToArray - Dim RegistryEntry As RegistryNodes.Namespace - - If NamespaceEntries.IsNullOrEmpty Then - RegistryEntry = New RegistryNodes.Namespace With {.ModuleName = nsName, .Entries = New List(Of RegistryNodes.ModuleLoadEntry)} - - Call Console.WriteLine("Register new module namespace: {0}", nsName) - Call Registry.Add(RegistryEntry) 'INSERT - Call InsertOrUpdateItem(Of RegistryNodes.ModuleLoadEntry)(RegistryItem, RegistryEntry.Entries) - Else - RegistryEntry = NamespaceEntries.First 'UPDATE - - Call Console.WriteLine("Update assembly module registry entry: {0} @{1}", nsName, RegistryItem.AssemblyPath) - Call InsertOrUpdateItem(Of RegistryNodes.ModuleLoadEntry)(RegistryItem, RegistryEntry.Entries) - End If - - Return RegistryEntry - End Function - - ''' - ''' Register the external assembly module entry points for dynamic load.(注册动æ€è°ƒç”¨çš„外部模å—) - ''' - ''' - ''' 一个Dll文件之内å¯èƒ½ä¼šå®šä¹‰å¤šä¸ªæ¨¡å—,当仅定义一个模å—çš„æ—¶å€™ï¼Œåˆ™æœ¬å‚æ•°ä¼šè¦†ç›–掉模å—内的å称定义,当定义有多个模å—çš„æ—¶å€™ï¼Œåˆ™æœ¬å‚æ•°ä¸ä¼šèµ·ä»»ä½•作用,å‡è‹¥ç•™ç©ºï¼Œåˆ™ä½¿ç”¨æ¨¡å—之中的默认值 - ''' - ''' - Public Function RegisterAssemblyModule(AssemblyPath As String, AssemblyName As String) As Boolean - Dim FileInfo = FileIO.FileSystem.GetFileInfo(AssemblyPath) - Dim Modules = Me._RegisteredModuleLoader.get_ModuleFromAssembly(FileInfo.FullName) - - If Modules.IsNullOrEmpty Then - Return False - End If - - Dim EntryPoints = InternalGetExternalInteropEntryPoints(AssemblyPath) - Dim c = Modules.First.Value.Assembly.CustomAttributes - Dim Company As String = (From item In c Where item.AttributeType = GetType(System.Reflection.AssemblyCompanyAttribute) Let value = item.ConstructorArguments.First.Value.ToString Select value).First - Dim Version As String = (From item In c Where item.AttributeType = GetType(System.Reflection.AssemblyFileVersionAttribute) Let value = item.ConstructorArguments.First.Value.ToString Select value).First - Dim FrameworkVersion As String = (From item In c Where item.AttributeType = GetType(System.Runtime.Versioning.TargetFrameworkAttribute) Let value = item.ToString Select value).First - Dim Updates As Long = FileInfo.LastWriteTime.ToBinary - - If Not EntryPoints.IsNullOrEmpty Then '注册脚本的交互挂载点 - - For Each Line In EntryPoints - Dim RegistryItem = New RegistryNodes.HybridScriptingModuleLoadEntry With - { - .Namespace = Line.Key.ScriptName, - .TypeId = Line.Value.FullName, - .EntryId = Line.Key.ScriptName, - .AssemblyPath = Internal_getRelativePath(AssemblyPath), - .Guid = Line.Value.GUID.ToString, - .Company = Company, - .Version = Version, - .FrameworkVersion = FrameworkVersion, - .UpdateTime = Updates} - Call InsertOrUpdateItem(RegistryItem, Registry:=Me._HybridsScriptingEntrypoints) - Next - End If - - If Modules.IsNullOrEmpty Then - Return False - End If - - Dim UpdateOrRegisterModule = Sub(ModuleToRegister As KeyValuePair(Of Microsoft.VisualBasic.CommandLine.Reflection.Namespace, Type)) - Dim ModuleName = If(String.IsNullOrEmpty(AssemblyName), ModuleToRegister.Key.Namespace, AssemblyName) - Dim RegistryItem As ModuleLoadEntry = New ModuleLoadEntry With - { - .Namespace = ModuleToRegister.Key.Namespace, - .TypeId = ModuleToRegister.Value.FullName, - .AssemblyPath = Internal_getRelativePath(AssemblyPath), - .Guid = ModuleToRegister.Value.GUID.ToString, - .Company = Company, - .Version = Version, - .FrameworkVersion = FrameworkVersion, - .Description = ModuleToRegister.Key.Description, - .UpdateTime = Updates} - RegistryItem.CommandHandles = (From item As CommandLine.Reflection.EntryPoints.CommandEntryPointInfo - In CommandLine.Interpreter.GetAllCommands(ModuleToRegister.Value) - Select New ShoalShell.DelegateHandlers.TypeLibraryRegistry.RegistryNodes.MethodMeta With - { - .Name = item.Name, .Description = item.Info, - .ReturnedType = item.MethodEntryPoint.ReturnType.FullName, - .Parameters = (From p - In item.MethodEntryPoint.GetParameters - Select New Microsoft.VisualBasic.ComponentModel.KeyValuePair With - { - .Key = p.Name, .Value = p.ParameterType.FullName}).ToArray}).ToArray - - Call RegistryInternalInsertOrUpdateRegistryEntryValue(ModuleName, _InnerList, RegistryItem) - End Sub - - If Modules.Count = 1 Then - Dim ModuleToRegister = Modules.First - Call UpdateOrRegisterModule(ModuleToRegister) - Else - For Each [Module] In Modules - Call UpdateOrRegisterModule([Module]) - Next - End If - - Return True - End Function - - ''' - ''' å‡è‹¥ç›®æ ‡æ¨¡å—æ–‡ä»¶åœ¨ä¸Žç¨‹åºæ¨¡å—是åŒä¸€ä¸ªæ–‡ä»¶å¤¹ä¹‹ä¸‹çš„,则会返回相对路径,å‡è‹¥ä¸ºä¸åŒæ–‡ä»¶å¤¹ä¹‹ä¸‹çš„,则会返回全路径 - ''' - ''' - ''' - ''' - Private Shared Function Internal_getRelativePath(path As String) As String - Dim s1 As String = FileIO.FileSystem.GetParentPath(path) - Dim s2 As String = My.Application.Info.DirectoryPath - - If String.Equals(s1, s2) Then - Return "./" & FileIO.FileSystem.GetFileInfo(path).Name - Else - Return path - End If - End Function - - ''' - ''' è§£æžæ··åˆç¼–程的脚本环境的环境入å£ç‚¹ - ''' - ''' æ¨¡å—æ–‡ä»¶çš„æ–‡ä»¶è·¯å¾„ - ''' - ''' - Private Function InternalGetExternalInteropEntryPoints(AssemblyPath As String) As KeyValuePair(Of ShoalShell.HybridsScripting.ScriptEntryPoint, System.Type)() - Dim Assembly = System.Reflection.Assembly.LoadFrom(AssemblyPath) - Dim Types = (From Type In Assembly.DefinedTypes - Let attrs As Object() = Type.GetCustomAttributes(attributeType:=ShoalShell.HybridsScripting.ScriptEntryPoint.TypeInfo, inherit:=True) - Where Not attrs.IsNullOrEmpty - Let EntryInfo = DirectCast(attrs.First, ShoalShell.HybridsScripting.ScriptEntryPoint) - Select New KeyValuePair(Of ShoalShell.HybridsScripting.ScriptEntryPoint, System.Type)(EntryInfo, Type)).ToArray - Return Types - End Function - - ''' - ''' 默认的注册表é…置文件,该文件是在与本程åºåŒä¸€ä¸ªæ–‡ä»¶å¤¹ä¹‹ä¸‹çš„以程åºå开始的XML文件.åœ¨è¯¥æ–‡ä»¶ä¹‹ä¸­åŒ…å«æœ‰æ‰€æœ‰çš„ç±»åž‹æ³¨å†Œä¿¡æ¯ - ''' - ''' - Protected Shared ReadOnly _DefaultFile As String = String.Format("{0}/B0DC054A-A16E-4249-8C3B-E3AB1123F13C.REG".ToLower, My.Application.Info.DirectoryPath) - - ''' - ''' 默认的注册表é…置文件,该文件是在与本程åºåŒä¸€ä¸ªæ–‡ä»¶å¤¹ä¹‹ä¸‹çš„以程åºå开始的XML文件.åœ¨è¯¥æ–‡ä»¶ä¹‹ä¸­åŒ…å«æœ‰æ‰€æœ‰çš„ç±»åž‹æ³¨å†Œä¿¡æ¯ - ''' - ''' - Public Shared ReadOnly Property DefaultFile As String - Get - Return _DefaultFile - End Get - End Property - - ''' - ''' Load the registry file from a default registry file.(从默认的é…置文件加载注册表) - ''' - ''' - ''' - Public Shared Function CreateDefault() As DelegateRegistry - Return New RegistryModuleLoader(_DefaultFile, New String() {})._RegistryFile - End Function - - ''' - ''' 请使用本方法或者方法进行创建,å¦åˆ™éƒ½å°†ä¼šåˆ›å»ºå¤±è´¥ - ''' - ''' - ''' - ''' - Public Shared Function CreateFromFile(XmlFile As String) As DelegateRegistry - Return New RegistryModuleLoader(XmlFile, New String() {})._RegistryFile - End Function - - Public Overrides Function ToString() As String - Return _FilePath - End Function - -#Region "IDisposable Support" - Private disposedValue As Boolean ' To detect redundant calls - - ' IDisposable - Protected Overridable Sub Dispose(disposing As Boolean) - If Not Me.disposedValue Then - If disposing Then - ' TODO: dispose managed state (managed objects). - Call Me.GetXml.SaveTo(_FilePath) - End If - - ' TODO: free unmanaged resources (unmanaged objects) and override Finalize() below. - ' TODO: set large fields to null. - End If - Me.disposedValue = True - End Sub - - ' TODO: override Finalize() only if Dispose(ByVal disposing As Boolean) above has code to free unmanaged resources. - 'Protected Overrides Sub Finalize() - ' ' Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above. - ' Dispose(False) - ' MyBase.Finalize() - 'End Sub - - ' This code added by Visual Basic to correctly implement the disposable pattern. - Public Sub Dispose() Implements IDisposable.Dispose - ' Do not change this code. Put cleanup code in Dispose(disposing As Boolean) above. - Dispose(True) - GC.SuppressFinalize(Me) - End Sub -#End Region - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/TypeLibraryRegistry/RegistryModuleLoader.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/TypeLibraryRegistry/RegistryModuleLoader.vb deleted file mode 100644 index 7b9b72c86..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/TypeLibraryRegistry/RegistryModuleLoader.vb +++ /dev/null @@ -1,111 +0,0 @@ -Imports System.Text -Imports Microsoft.VisualBasic.Scripting.ShoalShell.DelegateHandlers.TypeLibraryRegistry.RegistryNodes - -Namespace DelegateHandlers.TypeLibraryRegistry - - Public Class RegistryModuleLoader - - Protected Friend _RegistryFile As DelegateRegistry - - ''' - ''' - ''' - ''' 注册表的文件路径 - ''' 预加载的模å—åç§° - ''' - Public Sub New(RegistryFile As String, PreLoadAssembly As String()) - If FileIO.FileSystem.FileExists(RegistryFile) Then - _RegistryFile = FileIO.FileSystem.ReadAllText(RegistryFile).CreateObjectFromXml(Of DelegateRegistry)(ThrowEx:=False) - If _RegistryFile Is Nothing Then _RegistryFile = InternalCreateDefaultRegistry(RegistryFile) - Else - _RegistryFile = InternalCreateDefaultRegistry(RegistryFile) - End If - - _RegistryFile._RegisteredModuleLoader = Me - _RegistryFile._FilePath = RegistryFile - - If _RegistryFile.IsEmpty Then - '安装Shoal的核心模å—的内建的命å空间以åŠå¤–部空间 - _RegistryFile.RegisterAssemblyModule(GetType(ShoalShell.Runtime.Objects.ShellScript).Assembly.Location, "") - _RegistryFile.RegisterAssemblyModule(My.Application.Info.DirectoryPath & "/" & My.Application.Info.AssemblyName & ".exe", "") - End If - - For Each AssemblyName As String In PreLoadAssembly - Dim AssemblyPaths As String() = _RegistryFile.GetAssemblyPaths(AssemblyName) - Dim Modules = (From path As String In AssemblyPaths Select Me.get_ModuleFromAssembly(path)).ToArray.MatrixToVector - - For Each ModuleItem In Modules - Call _RegistryFile._LoadedModules.Add(ModuleItem.Key, ModuleItem.Value) - Next - Next - - Call LoadSystemModules() - End Sub - - Private Sub LoadSystemModules() - Dim AssemblyPath As String = String.Format("{0}/{1}.exe", My.Application.Info.DirectoryPath, My.Application.Info.AssemblyName) - Dim Modules = get_ModuleFromAssembly(AssemblyPath) - For Each ModuleItem In Modules - Call _RegistryFile._LoadedModules.Add(ModuleItem.Key, ModuleItem.Value) - Next - End Sub - - Private Shared Function InternalCreateDefaultRegistry(RegistryFile As String) As DelegateRegistry - Dim _RegistryFile = New DelegateRegistry With {.RegisteredModules = New [Namespace]() {}} - _RegistryFile._FilePath = RegistryFile - - Call _RegistryFile.Save() - Return _RegistryFile - End Function - - ''' - ''' 空的Namespace属性值的Namespace对象将会被忽略 - ''' - ''' - ''' - ''' - Public Function get_ModuleFromAssembly(AssemblyPath As String) As KeyValuePair(Of Microsoft.VisualBasic.CommandLine.Reflection.[Namespace], System.Type)() - Dim Assembly = System.Reflection.Assembly.LoadFrom(AssemblyPath) - Dim Types = (From Type As System.Reflection.TypeInfo In Assembly.DefinedTypes - Let attrs As Object() = Type.GetCustomAttributes(attributeType:=Microsoft.VisualBasic.CommandLine.Reflection.[Namespace].TypeInfo, inherit:=True) - Where Not attrs.IsNullOrEmpty - Let EntryInfo = DirectCast(attrs.First, Microsoft.VisualBasic.CommandLine.Reflection.[Namespace]) - Select New KeyValuePair(Of Microsoft.VisualBasic.CommandLine.Reflection.[Namespace], System.Type)(EntryInfo, Type)).ToArray - Dim LQuery = (From item In Types Where Not String.IsNullOrEmpty(item.Key.Namespace) Select item).ToArray - Return LQuery - End Function - - Public Shared Function GetModule(Type As Type) As KeyValuePair(Of Type, Microsoft.VisualBasic.CommandLine.Reflection.[Namespace])() - Dim attrs As Object() = Type.GetCustomAttributes(attributeType:=Microsoft.VisualBasic.CommandLine.Reflection.[Namespace].TypeInfo, inherit:=True) - - If attrs.IsNullOrEmpty Then - Return Nothing - End If - - Dim EntryInfo = DirectCast(attrs.First, Microsoft.VisualBasic.CommandLine.Reflection.[Namespace]) - Dim [Module] = New KeyValuePair(Of Type, Microsoft.VisualBasic.CommandLine.Reflection.[Namespace])(Type, EntryInfo) - - If String.IsNullOrEmpty([Module].Key.Namespace) Then - Return Nothing - Else - Return New KeyValuePair(Of Type, Microsoft.VisualBasic.CommandLine.Reflection.[Namespace])() {[Module]} - End If - End Function - - ' ''' - ' ''' - ' ''' - ' ''' 必须是完整的路径字符串 - ' ''' - ' ''' - 'Public Function LoadModules(AssemblyPath As String) As Microsoft.VisualBasic.ComponentModel.Collection.Generic.KeyValuePairObject(Of CommandLine.Reflection.Namespace, Type)() - ' Dim Types = get_ModuleFromAssembly(AssemblyPath) - ' Dim LQuery = (From item As KeyValuePair(Of Microsoft.VisualBasic.CommandLine.Reflection.[Namespace], System.Type) - ' In Types - ' Select New Microsoft.VisualBasic.ComponentModel.Collection.Generic.KeyValuePairObject(Of String, [Module]) With { - ' .Key = item.Key.Namespace, - ' .Value = New [Module](item.Key, item.Value)}).ToArray - ' Return LQuery - 'End Function - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/TypeLibraryRegistry/RegistryNodes/AssemblyModule.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/TypeLibraryRegistry/RegistryNodes/AssemblyModule.vb deleted file mode 100644 index 10ba0b343..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/TypeLibraryRegistry/RegistryNodes/AssemblyModule.vb +++ /dev/null @@ -1,283 +0,0 @@ -Imports System.Text - -Namespace DelegateHandlers.TypeLibraryRegistry.RegistryNodes - - ''' - ''' ä¸€ä¸ªæ–¹æ³•çš„å…ƒæ•°æ® - ''' - ''' - Public Class MethodMeta : Implements I_Wiki_Handler - - Public Property Name As String - Public Property Description As String - Public Property Parameters As Microsoft.VisualBasic.ComponentModel.KeyValuePair() - Public Property ReturnedType As String - - Public Overrides Function ToString() As String - If String.IsNullOrEmpty(Description) Then - Return Name - Else - Return Name & ": " & Description - End If - End Function - - Public Function Match(keyword As String) As String Implements I_Wiki_Handler.Match - Dim Head As String = String.Format("[{0}]", keyword) - - If InStr(Name, keyword, CompareMethod.Text) > 0 Then - Head = "Function Entry: " & Name.ToLower.Replace(keyword.ToLower, Head) - ElseIf InStr(Description, keyword, CompareMethod.Text) > 0 Then - Head = Description.ToLower.Replace(keyword.ToLower, Head) - ElseIf InStr(ReturnedType, keyword, CompareMethod.Text) > 0 Then - Head = "Function Return Type: " & ReturnedType.ToLower.Replace(keyword.ToLower, Head) - Else - Dim n = MatchParameters(keyword) - - If n.IsNullOrEmpty Then - Return "" '没有匹é…ä¸Šä»»ä½•æ•°æ® - Else - Head = String.Join(vbCrLf, (From item In n Select String.Format("{0} {1}", item.Key, item.Value).ToLower.Replace(keyword.ToLower, Head))) - End If - End If - - Return ">>>> " & Head & vbCrLf & vbCrLf & GenerateDescription() - End Function - - Public Function MatchParameters(keyword As String) As Microsoft.VisualBasic.ComponentModel.KeyValuePair() - If Parameters.IsNullOrEmpty Then - Return Nothing - End If - - Dim LQuery = (From item In Parameters - Where InStr(item.Key, keyword, CompareMethod.Text) > 0 OrElse InStr(item.Value, keyword, CompareMethod.Text) > 0 - Select item).ToArray - Return LQuery - End Function - - Public Function GenerateDescription() As String Implements I_Wiki_Handler.GenerateDescription - Dim sBuilder As StringBuilder = New StringBuilder(1024) - Call sBuilder.AppendLine("Name: " & Name) - Call sBuilder.AppendLine("Description: " & If(String.IsNullOrEmpty(Description), "This function have no description data defined.", Description)) - Call sBuilder.AppendLine("Return: " & ReturnedType) - - If Not Parameters.IsNullOrEmpty Then - Dim Max As Integer = (From item In Parameters Select Len(item.Key)).ToArray.Max - - Call sBuilder.AppendLine(vbCrLf & String.Format("Function have {0} parameters:", Parameters.Count)) - Call sBuilder.AppendLine(String.Format("-Name-{0}------Type--------------", New String("-"c, Max))) - - For Each p In Parameters - Call sBuilder.AppendLine(String.Format(" {0} {1} {2}", p.Key, New String(" "c, 6 + Max - Len(p.Key)), p.Value)) - Next - Else - Call sBuilder.AppendLine("This function doesn't required of the parameters.") - End If - - Return sBuilder.ToString - End Function - End Class - - ''' - ''' 一个命å空间对象 - ''' - ''' - - Public Class ModuleLoadEntry : Implements I_Wiki_Handler - - Public Property [Namespace] As String - Public Property Version As String - Public Property UpdateTime As Long - - Public Property AssemblyPath As String - Public Property Company As String - Public Property Guid As String - Public Property FrameworkVersion As String - Public Property TypeId As String - Public Property Description As String - - ''' - ''' 本命å空间之下的所有的å¯ä»¥ä½¿ç”¨çš„函数命令的简å•ä»‹ç» - ''' - ''' - ''' - ''' - Public Property CommandHandles As MethodMeta() - - Public Function GenerateDescription() As String Implements I_Wiki_Handler.GenerateDescription - If CommandHandles.IsNullOrEmpty Then - Return String.Format("Namespace ""{0}"" have no command entry...", [Namespace]) - End If - - Dim sBuilder As StringBuilder = New StringBuilder(1024) - Dim MaxLength As Integer = (From strKey In CommandHandles Select Len(strKey.Name)).ToArray.Max - Call sBuilder.AppendLine() - - Call sBuilder.AppendLine("Assembly path: " & AssemblyPath) - Call sBuilder.AppendLine("Assembly Lib: " & TypeId) - Call sBuilder.AppendLine("Module Description: " & Description) - Call sBuilder.AppendLine() - Call sBuilder.AppendLine(vbCrLf & String.Format(" {0} Command(s)", CommandHandles.Count)) - Call sBuilder.AppendLine() - Call sBuilder.AppendLine(String.Format(" MethodEntry{0}Return Type", New String(" "c, MaxLength))) - Call sBuilder.AppendLine(String.Format("+---{0}+----------------------------------------------------", New String("-"c, 1.5 * MaxLength))) - For Each MethodEntry In CommandHandles - Call sBuilder.AppendLine(String.Format(" {0}{1} {2}", MethodEntry.Name, New String(" "c, 2 * MaxLength - Len(MethodEntry.Name)), MethodEntry.ReturnedType)) - Next - - Return sBuilder.ToString - End Function - - ''' - ''' æ ¹æ®çš„å€¼æ¥æŸ¥æ‰¾ç›®æ ‡ï¼Œç„¶åŽæ¯”较修改时间æ¥åˆ¤æ–­æ—¶å€™å·²è¢«æ›´æ–° - ''' - ''' - ''' - Public Function IsUpdateToDate() As Boolean - Dim File = FileIO.FileSystem.GetFileInfo(AssemblyPath) - Dim ModifyTime As Long = File.LastWriteTime.ToBinary - Return ModifyTime > UpdateTime - End Function - - Public Function IsAvaliable() As Boolean - Return FileIO.FileSystem.FileExists(AssemblyPath) - End Function - - Public Overloads Function Equals(Of T As ModuleLoadEntry)(item As T) As Boolean - If Me.IsEmpty OrElse item.IsEmpty Then - Return False '无法进行比较 - End If - Return String.Equals(item.Namespace, [Namespace]) AndAlso String.Equals(item.TypeId, TypeId) - End Function - - Private ReadOnly Property IsEmpty As Boolean - Get - Return String.IsNullOrEmpty([Namespace]) OrElse String.IsNullOrEmpty(TypeId) - End Get - End Property - - Public Overrides Function ToString() As String - Return String.Format("<(""{0}"")> <== {1}", Guid, AssemblyPath) - End Function - - Public Sub CopyFrom(Of T As ModuleLoadEntry)(obj As T) - Me.Namespace = obj.[Namespace] - Me.AssemblyPath = obj.AssemblyPath - Me.Company = obj.Company - Me.FrameworkVersion = obj.FrameworkVersion - Me.Guid = obj.Guid - Me.TypeId = obj.TypeId - Me.UpdateTime = obj.UpdateTime - Me.Version = obj.Version - Me.CommandHandles = obj.CommandHandles - End Sub - - Public Function Match(keyword As String) As String Implements I_Wiki_Handler.Match - Dim Head As String = String.Format("[{0}]", keyword) - - If InStr(Company, keyword, CompareMethod.Text) > 0 Then - Head = "Company: " & Company.ToLower.Replace(keyword.ToLower, Head) - ElseIf InStr(TypeId, keyword, CompareMethod.Text) > 0 Then - Head = "TypeId: " & TypeId.ToLower.Replace(keyword.ToLower, Head) - ElseIf InStr(Description, keyword, CompareMethod.Text) > 0 Then - Head = Description.ToLower.Replace(keyword.ToLower, Head) - Else - Dim Commands As String() = MatchCommandsHandles(keyword) - - If Commands.IsNullOrEmpty Then - Return "" - Else - Head = String.Join(vbCrLf & vbCrLf, Commands) & vbCrLf & vbCrLf - Head = String.Format("Namespace ""{0}"" have {1} matche(s)...{2}{3}", [Namespace], Commands.Count, vbCrLf & vbCrLf, Head) - Return Head - End If - End If - - Return ">>>> " & Head & vbCrLf & vbCrLf & GenerateDescription() - End Function - - Public Function MatchCommandsHandles(keyword As String) As String() - Dim LQuery = (From MetaData As MethodMeta - In CommandHandles - Let result As String = MetaData.Match(keyword) - Where Not String.IsNullOrEmpty(result) - Select result).ToArray - Return LQuery - End Function - End Class - - Public Class HybridScriptingModuleLoadEntry : Inherits ModuleLoadEntry - Public Property EntryId As String - - Public Overrides Function ToString() As String - Return EntryId - End Function - End Class - - ''' - ''' The namespace is the module which contains some functional related methods. - ''' - ''' - Public Class [Namespace] : Implements I_Wiki_Handler - - Public Property ModuleName As String - ''' - ''' 这些模å—都具有相åŒçš„命å空间,则在加载进入内存的时候就会被åˆå¹¶åœ¨ä¸€ä¸ªæ¨¡å—之中 - ''' - ''' - ''' - ''' - Public Property Entries As List(Of ModuleLoadEntry) - - Public Overrides Function ToString() As String - Return ModuleName - End Function - - Public Function Match(keyword As String) As String Implements I_Wiki_Handler.Match - Dim Head As String = String.Format("[{0}]", keyword) - - If InStr(ModuleName, keyword, CompareMethod.Text) > 0 Then - Head = "Namespace: " & ModuleName.ToLower.Replace(keyword.ToLower, Head) - Else - Dim Entries As String() = MatchEntries(keyword) - - If Entries.IsNullOrEmpty Then - Return "" - Else - Return String.Join(vbCrLf & vbCrLf, Entries) - End If - End If - - Return ">>>> " & Head & vbCrLf & vbCrLf & GenerateDescriptions() - End Function - - Public Function MatchEntries(keyword As String) As String() - Dim LQuery = (From item In Entries Let result As String = item.Match(keyword) Where Not String.IsNullOrEmpty(result) Select result).ToArray - Return LQuery - End Function - - Public Function GenerateDescriptions() As String Implements I_Wiki_Handler.GenerateDescription - Dim sBuilder As StringBuilder = New StringBuilder(String.Format("Entry.Namespace: {0}", ModuleName)) - For Each Entry As RegistryNodes.ModuleLoadEntry In Entries - Call sBuilder.AppendLine(Entry.GenerateDescription) - Next - - Return sBuilder.ToString - End Function - End Class - - ''' - ''' Internal wiki system queriable object.(这个对象是å¯ä»¥æŽ¥å—wiki查询æ“作的) - ''' - ''' - Public Interface I_Wiki_Handler - - Function GenerateDescription() As String - ''' - ''' 模糊匹é…并返回匹é…结果,当返回空字符串的时候,则说明没有被匹é…上 - ''' - ''' - ''' - ''' - Function Match(keyword As String) As String - End Interface -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/TypeLibraryRegistry/RegistryNodes/Module.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/TypeLibraryRegistry/RegistryNodes/Module.vb deleted file mode 100644 index 848cca1de..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/TypeLibraryRegistry/RegistryNodes/Module.vb +++ /dev/null @@ -1,126 +0,0 @@ -Imports System.Text - -Namespace DelegateHandlers.TypeLibraryRegistry.RegistryNodes - - ''' - ''' Namespace object for the imports operations - ''' - ''' - Public Class [Module] : Inherits Microsoft.VisualBasic.CommandLine.Reflection.Namespace - Implements IReadOnlyDictionary(Of String, System.Reflection.MethodInfo()) - - Dim _InternalHashList As Dictionary(Of String, Microsoft.VisualBasic.CommandLine.Reflection.EntryPoints.CommandEntryPointInfo()) = - New Dictionary(Of String, Microsoft.VisualBasic.CommandLine.Reflection.EntryPoints.CommandEntryPointInfo()) - Protected Friend _InternalOriginalAssemblys As Dictionary(Of System.Type, CommandLine.Reflection.Namespace) - - Public Sub New(EntryInfo As Microsoft.VisualBasic.CommandLine.Reflection.[Namespace], Type As System.Type) - Call MyBase.New(EntryInfo.Namespace) - - Dim InternalGroupedCommands = (From cmdl As Microsoft.VisualBasic.CommandLine.Reflection.EntryPoints.CommandEntryPointInfo - In Microsoft.VisualBasic.CommandLine.Interpreter.GetAllCommands(Type) - Select cmdl - Group By cmdl.Name.ToLower Into Group).ToArray - For Each CommandInfo In InternalGroupedCommands - Call _InternalHashList.Add(CommandInfo.ToLower, CommandInfo.Group.ToArray) - Next - - _InternalOriginalAssemblys = New Dictionary(Of Type, CommandLine.Reflection.Namespace) From {{Type, EntryInfo}} - Description = EntryInfo.Description - End Sub - - Public ReadOnly Property OriginalAssemblys() As KeyValuePair(Of System.Type, String)() - Get - Return (From item In _InternalOriginalAssemblys Select New KeyValuePair(Of System.Type, String)(item.Key, item.Value.Description)).ToArray - End Get - End Property - - Public Function MergeNamespace(EntryInfo As Microsoft.VisualBasic.CommandLine.Reflection.[Namespace], Type As System.Type) As [Module] - Dim groupedCommands = (From cmdl In Microsoft.VisualBasic.CommandLine.Interpreter.GetAllCommands(Type) Select cmdl Group By cmdl.Name Into Group).ToArray - For Each CommandInfo In groupedCommands - Dim Name As String = CommandInfo.Name.ToLower - Dim TempBuffer = CommandInfo.Group.ToArray - - If _InternalHashList.ContainsKey(Name) Then - TempBuffer = {TempBuffer, _InternalHashList(Name)}.MatrixToVector - Call _InternalHashList.Remove(Name) - End If - Call _InternalHashList.Add(CommandInfo.Name.ToLower, TempBuffer) - Next - - Call _InternalOriginalAssemblys.Add(Type, EntryInfo) - Description &= vbCrLf & vbCrLf & EntryInfo.Description - - Return Me - End Function - - Public Overrides Function ToString() As String - Dim sBuilder As StringBuilder = New StringBuilder(1024) - For Each Item As String In _InternalHashList.Keys - Call sBuilder.AppendFormat("{0}; ", Item) - Next - Return String.Format("[{0}] {1}", [Namespace], sBuilder.ToString) - End Function - - Public Iterator Function GetEnumerator() As IEnumerator(Of KeyValuePair(Of String, System.Reflection.MethodInfo())) Implements IEnumerable(Of KeyValuePair(Of String, System.Reflection.MethodInfo())).GetEnumerator - For Each Key As String In _InternalHashList.Keys - Dim EntryPoints = (From entry In _InternalHashList(Key) Select entry.MethodEntryPoint).ToArray - Yield New KeyValuePair(Of String, System.Reflection.MethodInfo())(Key, EntryPoints) - Next - End Function - - Public ReadOnly Property Count As Integer Implements IReadOnlyCollection(Of KeyValuePair(Of String, System.Reflection.MethodInfo())).Count - Get - Return _InternalHashList.Count - End Get - End Property - - Public Function ContainsKey(key As String) As Boolean Implements IReadOnlyDictionary(Of String, System.Reflection.MethodInfo()).ContainsKey - Return _InternalHashList.ContainsKey(key.ToLower) - End Function - - ''' - ''' Gets a command entry point from the registry table using its name property. - ''' - ''' - ''' - ''' - ''' - Default Public ReadOnly Property Item(key As String) As System.Reflection.MethodInfo() Implements IReadOnlyDictionary(Of String, System.Reflection.MethodInfo()).Item - Get - Dim keyName As String = key.ToLower - - If Not _InternalHashList.ContainsKey(keyName) Then - Throw New ShoalShell.Runtime.Objects.ObjectModels.Exceptions.MethodNotFoundException(key, "") - End If - - Return (From entry As CommandLine.Reflection.EntryPoints.CommandEntryPointInfo - In _InternalHashList(keyName) - Select entry.MethodEntryPoint).ToArray - End Get - End Property - - Public ReadOnly Property Keys As IEnumerable(Of String) Implements IReadOnlyDictionary(Of String, System.Reflection.MethodInfo()).Keys - Get - Return _InternalHashList.Keys - End Get - End Property - - Public Function TryGetValue(key As String, ByRef value As System.Reflection.MethodInfo()) As Boolean Implements IReadOnlyDictionary(Of String, System.Reflection.MethodInfo()).TryGetValue - Dim CommandInfo As Microsoft.VisualBasic.CommandLine.Reflection.EntryPoints.CommandEntryPointInfo() = Nothing - Dim f As Boolean = _InternalHashList.TryGetValue(key, CommandInfo) - value = (From entry In CommandInfo Select entry.MethodEntryPoint).ToArray - - Return f - End Function - - Public ReadOnly Property Values As IEnumerable(Of System.Reflection.MethodInfo()) Implements IReadOnlyDictionary(Of String, System.Reflection.MethodInfo()).Values - Get - Return (From item In _InternalHashList.Values Select (From entry In item Select entry.MethodEntryPoint).ToArray).ToArray - End Get - End Property - - Public Iterator Function GetEnumerator1() As IEnumerator Implements IEnumerable.GetEnumerator - Yield GetEnumerator() - End Function - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/TypeLibraryRegistry/WebServiceDelegateRegistry.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/TypeLibraryRegistry/WebServiceDelegateRegistry.vb deleted file mode 100644 index c84fc3182..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/DelegateHandlers/TypeLibraryRegistry/WebServiceDelegateRegistry.vb +++ /dev/null @@ -1,6 +0,0 @@ -Namespace DelegateHandlers.TypeLibraryRegistry - - Public Class WebService_DelegateRegistry : Inherits DelegateRegistry - - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/Delegate.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/Delegate.vb deleted file mode 100644 index a0f81d1b4..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/Delegate.vb +++ /dev/null @@ -1,233 +0,0 @@ -Imports System.Text.RegularExpressions -Imports System.Text - -Namespace Interpreter.Reflection - - Public Class Parameter : Inherits System.Reflection.ParameterInfo - - Dim _Name As String, _Type As Type - - Sub New(pInfo As KeyValuePair(Of String, Type)) - _Name = pInfo.Key - _Type = pInfo.Value - End Sub - - Public Overrides ReadOnly Property ParameterType As Type - Get - Return _Type - End Get - End Property - - Public Overrides ReadOnly Property Name As String - Get - Return _Name - End Get - End Property - - Public Overrides Function ToString() As String - Return String.Format("{0} As {1}", Name, ParameterType.FullName) - End Function - End Class - - Public Class [Delegate] : Inherits System.Reflection.MethodInfo - - Dim _Name As String - ''' - ''' 傿•°çš„类型都默认为Object类型 - ''' - ''' - Dim _Paramaters As Parameter() - Dim _ReturnType As Type - Dim Source As ShoalShell.Interpreter.InternalCommands.ScriptSourceHandle - Dim MemoryDevice As ShoalShell.Runtime.Objects.I_MemoryManagementDevice - Dim InternalScript As String - - Protected Sub New() - End Sub - - Public Overrides Function ToString() As String - Dim [Function] As StringBuilder = New StringBuilder(1024) - - If _Paramaters.IsNullOrEmpty Then - Call [Function].AppendLine(String.Format("Private Shared Function VB$AnonymousDelegateEntryPoint_{0}() As {1}", Name, ReturnType.FullName)) - Else - Call [Function].AppendLine(String.Format("Private Shared Function VB$AnonymousDelegateEntryPoint_{0}({1}) As {2}", Name, String.Join(", ", (From p In _Paramaters Let s As String = p.ToString Select s).ToArray), ReturnType.FullName)) - End If - - Call [Function].AppendLine(InternalScript) - Call [Function].AppendLine("End Function") - - Return [Function].ToString - End Function - - ''' - ''' '<string> example(obj as text, obj2 as csv, obj3 as fasta) <- * - ''' - ''' Delegate的头部 - ''' è§£æžçš„过程之中抛出异常所需è¦ä½¿ç”¨çš„ - ''' - ''' - Public Shared Function InternalCreateObject(strDefinitionData As String, - InternalScript As String, - [Handles] As Microsoft.VisualBasic.Scripting.EntryPointMetaData.OverloadsSignatureHandle(), - Memory As ShoalShell.Runtime.Objects.I_MemoryManagementDevice, sourceHandle As ShoalShell.Interpreter.InternalCommands.ScriptSourceHandle) As [Delegate] - - Dim TypeDeclaration As String = Regex.Match(strDefinitionData, "<.+?>").Value - Dim ReturnType As Type - Dim ParameterDeclared As String = "" - Dim FunctionName As String = "" - - If String.IsNullOrEmpty(TypeDeclaration) Then '没有申明类型则默认为Object类型的返回值 - ReturnType = GetType(Object) - Call InternalParseNameAndParameters(strDefinitionData, ParameterDeclared, FunctionName) - Else - strDefinitionData = Mid(strDefinitionData, Len(TypeDeclaration) + 1).Trim - Call InternalParseNameAndParameters(strDefinitionData, ParameterDeclared, FunctionName) - TypeDeclaration = Mid(TypeDeclaration, 2, Len(TypeDeclaration) - 2) - ReturnType = InternalGetType(TypeDeclaration, [Handles]) - - If ReturnType Is Nothing Then - Dim ExMessage As String = String.Format("TYPE_NOT_FOUND:: could not solve the return type declaration <{0}> for the delegate function ""{1}""!", TypeDeclaration, strDefinitionData) - Throw New ShoalShell.Runtime.Objects.ObjectModels.Exceptions.ScriptRunTimeException(ExMessage, Memory) '抛出类型异常 - End If - End If - - Dim Parameters As KeyValuePair(Of String, Type)() = Nothing - - If Not String.IsNullOrEmpty(ParameterDeclared) Then - ParameterDeclared = Mid(ParameterDeclared, 2, Len(ParameterDeclared) - 2) - - Dim LQuery = (From s As String In ParameterDeclared.Split(CChar(",")) - Let Tokens As String() = Regex.Split(s, "as", RegexOptions.IgnoreCase) - Let Type = If(Tokens.Count = 1, GetType(Object), InternalGetType(Tokens.Last, [Handles])) - Select New KeyValuePair(Of String, Type)(Tokens.First, Type)).ToArray - Parameters = LQuery - LQuery = (From item In LQuery Where item.Value Is Nothing Select item).ToArray 'å‡è‹¥å­˜åœ¨æŸ¥æ‰¾ä¸åˆ°çš„类型,则LQuery会ä¸ä¸ºç©º - - If Not LQuery.IsNullOrEmpty Then - Dim TypeMissingParameters As String = String.Join(", ", (From item In LQuery Select item.Key).ToArray) - Dim ExMessage As String = String.Format("TYPE_NOT_FOUND:: could not solve the parameter type declaration for the delegate function ""{0}""! (Parameters ""{1}"")", strDefinitionData, TypeMissingParameters) - Throw New ShoalShell.Runtime.Objects.ObjectModels.Exceptions.ScriptRunTimeException(ExMessage, Memory) '抛出类型异常 - End If - End If - - Return New [Delegate] With {._Name = FunctionName, .Source = sourceHandle, .InternalScript = InternalScript, ._Paramaters = InternalCreateParameters(Parameters), ._ReturnType = ReturnType, .MemoryDevice = Memory} - End Function - - ''' - ''' 当找ä¸åˆ°ç±»åž‹çš„æ—¶å€™ä¼šè¿”回Nothing - ''' - ''' - ''' - ''' - ''' - Private Shared Function InternalGetType(typeName As String, [Handles] As Microsoft.VisualBasic.Scripting.EntryPointMetaData.OverloadsSignatureHandle()) As Type - If [Handles].IsNullOrEmpty Then - Return System.Type.GetType(typeName) - End If - - Dim TypeInfo As Type = (From item In [Handles] Where String.Equals(item.TypeIDBrief, typeName, StringComparison.OrdinalIgnoreCase) Select item.FullName).ToArray.FirstOrDefault - - If TypeInfo Is Nothing Then - Try '没有找到所申明的类型,则å°è¯•å°†å…¶ä½œä¸ºå…¨ç§°æ¥æž„建新的类型 - TypeInfo = System.Type.GetType(typeName) - Catch ex As Exception - End Try - End If - - Return TypeInfo - End Function - - Private Shared Sub InternalParseNameAndParameters(ByRef strDefinitionData As String, ByRef ParameterDeclared As String, ByRef FunctionName As String) - ParameterDeclared = Regex.Match(strDefinitionData, "\(.+?\)").Value - If Not String.IsNullOrEmpty(ParameterDeclared) Then - strDefinitionData = strDefinitionData.Replace(ParameterDeclared, "") - strDefinitionData = Regex.Replace(strDefinitionData, "<-\s+\*", "") '最åŽåˆ°è¿™é‡Œåªæœ‰å‡½æ•°å了 - End If - FunctionName = strDefinitionData - End Sub - - Private Shared Function InternalCreateParameters(Parameters As KeyValuePair(Of String, Type)()) As System.Reflection.ParameterInfo() - If Parameters.IsNullOrEmpty Then - Return New System.Reflection.ParameterInfo() {} - End If - Dim LQuery = (From pInfo In Parameters Select New Parameter(pInfo)).ToArray - Return LQuery - End Function - - Public Overrides ReadOnly Property ReturnType As Type - Get - Return _ReturnType - End Get - End Property - - Public Overrides ReadOnly Property Attributes As System.Reflection.MethodAttributes - Get - Return System.Reflection.MethodAttributes.Static - End Get - End Property - - Public Overrides ReadOnly Property DeclaringType As Type - Get - Return GetType(DelegateDeclaration) - End Get - End Property - - Public Overrides Function GetBaseDefinition() As System.Reflection.MethodInfo - Return Me - End Function - - Public Overloads Overrides Function GetCustomAttributes(inherit As Boolean) As Object() - Return New Object() {} - End Function - - Public Overloads Overrides Function GetCustomAttributes(attributeType As Type, inherit As Boolean) As Object() - Return New Object() {} - End Function - - Public Overrides Function GetMethodImplementationFlags() As System.Reflection.MethodImplAttributes - Return System.Reflection.MethodImplAttributes.InternalCall - End Function - - Public Overrides Function GetParameters() As System.Reflection.ParameterInfo() - Return Me._Paramaters - End Function - - Public Overloads Overrides Function Invoke(obj As Object, invokeAttr As System.Reflection.BindingFlags, binder As System.Reflection.Binder, parameters() As Object, culture As Globalization.CultureInfo) As Object - If _Paramaters.IsNullOrEmpty Then - Return Source(InternalScript, parameters:=Nothing) - Else - Dim pInfo = (From i As Integer In Me._Paramaters.Sequence Select New KeyValuePair(Of String, Object)(Me._Paramaters(i).Name, parameters(i))).ToArray - Return Source(InternalScript, parameters:=pInfo) - End If - End Function - - Public Overrides Function IsDefined(attributeType As Type, inherit As Boolean) As Boolean - Return False - End Function - - Public Overrides ReadOnly Property MethodHandle As RuntimeMethodHandle - Get - Return Nothing - End Get - End Property - - Public Overrides ReadOnly Property Name As String - Get - Return _Name - End Get - End Property - - Public Overrides ReadOnly Property ReflectedType As Type - Get - Return GetType(DelegateDeclaration) - End Get - End Property - - Public Overrides ReadOnly Property ReturnTypeCustomAttributes As System.Reflection.ICustomAttributeProvider - Get - Return Nothing - End Get - End Property - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/DelegateDeclaration.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/DelegateDeclaration.vb deleted file mode 100644 index a90c07473..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/DelegateDeclaration.vb +++ /dev/null @@ -1,145 +0,0 @@ -Imports System.Text.RegularExpressions -Imports System.Text - -Namespace Interpreter - - ''' - ''' - ''' - ''' - Public Module DelegateDeclaration - - ''' - ''' 在è¿è¡Œæ—¶é€šè¿‡API命令获å–一个.NET函数的函数指针作为Delegate的语法: - ''' - ''' Function <- * command - ''' - ''' 函数会自动解æžå‡ºå‚æ•°ä¿¡æ¯ï¼Œå¹¶ä¸”使用等å¼å·¦ç«¯çš„å˜é‡å作为函数å - ''' - ''' - ''' - ''' - ''' - Public Function InternalCreateEntryPoint(obj As Object, MemoryDevice As ShoalShell.Runtime.Objects.I_MemoryManagementDevice) As ShoalShell.DelegateHandlers.EntryPointHandlers.SignatureSignedFunctionEntryPoint - Dim EntryPoint = GetDelegateInvokeEntryPoint(obj) '共享方法 - - If EntryPoint Is Nothing Then - Throw New ShoalShell.Runtime.Objects.ObjectModels.Exceptions.ScriptRunTimeException(String.Format("Target object ""{0}"" is not a function entry pointer!", obj.GetType.FullName), MemoryDevice) 'ç›®æ ‡å¯¹è±¡ä¸æ˜¯ä¸€ä¸ªDelegate函数指针,则抛出错误 - Else - Return ShoalShell.DelegateHandlers.EntryPointHandlers.SignatureSignedFunctionEntryPoint.CreateObject(EntryPoint, Nothing) - End If - End Function - - Const DELEGATE_REGEX As String = "^.+ <- \*$" - Const HYBRID_SCRIPTING As String = "^.+ << \*$" - - '当调用外部脚本的时候的使用语法: - 'var << !script_environment_name $script_name [par1 $parvalue1 par2 $parvalue2] - - 'Delegate语法 - 'delegate_name(parameterList) <- * - '{ - '} - 'å‡è‹¥ä¸éœ€æ±‚傿•°ï¼Œåˆ™å¯ä»¥ä¸æ·»åŠ æ‹¬å· - 'å‡è‹¥éœ€æ±‚傿•°ï¼Œåˆ™å¿…é¡»è¦ä½¿ç”¨æ‹¬å·ï¼Œå¹¶ä¸”括å·å†…çš„å‚æ•°å之间使用逗å·åˆ†éš”å¼€ - - ' example(obj as text, obj2 as csv, obj3 as fasta) <- * - - ''' - ''' å°†Delegateè§£æžå‡ºæ¥åŽï¼Œæ›¿æ¢æŽ‰Delegate的申明字符串为空字符串,脚本行在这里已ç»è¿‡Trim处ç†ï¼Œå¹¶ä¸”移除了注释行 - ''' - ''' - ''' - Public Function TryParse(ShellScript As String, EntryPointHandler As ShoalShell.DelegateHandlers.EntryPointHandlers.ImportsEntryPointManager) As String() - Dim Tokens As List(Of String) = (From Token As String In Strings.Split(ShellScript.Replace(vbCr, ""), vbLf) Let s As String = Token.Trim Where Not String.IsNullOrEmpty(s) AndAlso s.First <> "#"c Select s).ToList '将脚本行进行分解 - Dim Declarations = (From Line As String In Tokens Where Regex.Match(Line, DELEGATE_REGEX, RegexOptions.Multiline).Success Select Line).ToArray - - If Declarations.IsNullOrEmpty Then - Return Tokens.ToArray - End If - - Dim Delegates As KeyValuePair(Of String, String)() = TryParseFunctionBody(Source:=Tokens, Declarations:=Declarations) - - For Each DeclaredDelegate As KeyValuePair(Of String, String) In Delegates - Dim DelegateName As String = DeclaredDelegate.Key - Dim [Delegate] As Reflection.Delegate = Reflection.Delegate.InternalCreateObject(DelegateName, DeclaredDelegate.Value, Nothing, Nothing, AddressOf EntryPointHandler.ScriptEngine.InternalSourceScript) - - Call EntryPointHandler.DeclaresDelegate([Delegate]) - Next - - Return TryParseHybridScript(Tokens, EntryPointHandler) - End Function - - ''' - ''' è§£æžæ··åˆç¼–ç¨‹çš„è„šæœ¬å— - ''' - ''' - ''' - ''' - Private Function TryParseHybridScript(ByRef Source As List(Of String), EntryPointHandler As ShoalShell.DelegateHandlers.EntryPointHandlers.ImportsEntryPointManager) As String() - Dim Declarations = (From Line As String In Source Where Regex.Match(Line, HYBRID_SCRIPTING, RegexOptions.Multiline).Success Select Line).ToArray - - If Declarations.IsNullOrEmpty Then - Return Source.ToArray - End If - - Dim HybridScriptBodies As KeyValuePair(Of String, String)() = TryParseFunctionBody(Source:=Source, Declarations:=Declarations) - - For Each DeclaredScript As KeyValuePair(Of String, String) In HybridScriptBodies - Call EntryPointHandler.DeclaresHybridScripting(DeclaredScript.Key, DeclaredScript.Value) - Next - - Return Source.ToArray - End Function - - ''' - ''' 返回{对象å, 对象脚本文本} - ''' - ''' - ''' - Private Function TryParseFunctionBody(ByRef Source As List(Of String), Declarations As String()) As KeyValuePair(Of String, String)() - Dim sBuilder As StringBuilder = New StringBuilder(1024) - Dim ChunkBuffer As List(Of KeyValuePair(Of String, String)) = New Generic.List(Of KeyValuePair(Of String, String)) - - For Each DeclaredHead As String In Declarations - Dim p As Integer = Source.IndexOf(DeclaredHead) - Dim strLine As String = Source(p + 1) - - If Not String.Equals(strLine, "{") Then - Throw New SyntaxErrorException(String.Format("Syntax error at declare delegate ""{0}""", DeclaredHead)) - End If - - Call Source.Remove(DeclaredHead) - Call p.MoveNext() - - Dim TempTokensList As List(Of String) = New List(Of String) - - Do While Not String.Equals(strLine, "}") - If p = Source.Count Then - Dim Err As String = String.Format("Syntax error at declare delegate ""{0}"":" & vbCrLf & "Delegate bracket is not closed!", DeclaredHead) - Throw New ShoalShell.Runtime.Objects.ObjectModels.Exceptions.SyntaxErrorException(Err) - End If - strLine = Source(p.MoveNext) - Call TempTokensList.Add(strLine) - Loop - - Call Source.RemoveAt(p - TempTokensList.Count - 1) - For Each strLine In TempTokensList - Call Source.Remove(strLine) - Next - Call TempTokensList.Remove("}") - - Dim DelegateBuilder As StringBuilder = New StringBuilder(1024) - For Each strLine In TempTokensList - Call DelegateBuilder.AppendLine(strLine) - Next - - Dim DelegateName As String = Regex.Replace(DeclaredHead, "<-\s+\*", "").Trim - - Call ChunkBuffer.Add(New KeyValuePair(Of String, String)(DelegateName, DelegateBuilder.ToString)) - Next - - Return ChunkBuffer.ToArray - End Function - End Module -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/HybridScripting/HybridScriptingInterface.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/HybridScripting/HybridScriptingInterface.vb deleted file mode 100644 index e16666661..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/HybridScripting/HybridScriptingInterface.vb +++ /dev/null @@ -1,131 +0,0 @@ -Imports System.Reflection - -Namespace HybridsScripting - - ''' - ''' 与ShellScript进行混åˆç¼–程的脚本语言,必须è¦åœ¨API的命å空间之中实现这个自定义属性 - ''' - ''' æ¯ä¸€æ¬¡åˆ‡æ¢è„šæœ¬è¯­å¥çŽ¯å¢ƒä¹‹å‰å…ˆä½¿ç”¨!EntryNameæ¥è¿›è¡Œï¼Œä¹‹åŽç›´æŽ¥å¯ä»¥åªç”¨å·¦ç§»è¿ç®—符尽心计算求值 - ''' - - Public Class ScriptEntryPoint : Inherits Attribute - - Public ReadOnly Property ScriptName As String - Get - Return _Name - End Get - End Property - - Dim _Name As String - - Sub New(ScriptName As String) - _Name = ScriptName - End Sub - - Private Shared ReadOnly _TypeInfo As System.Type = GetType(ScriptEntryPoint) - - Public Shared ReadOnly Property TypeInfo As System.Type - Get - Return _TypeInfo - End Get - End Property - End Class - - ''' - ''' å¿…é¡»è¦å…·å¤‡ä¸¤ç§ç±»åž‹çš„æŽ¥å£ï¼Œç›®æ ‡è„šæœ¬æ‰§è¡ŒçŽ¯å¢ƒæ‰ä¼šè¢«æˆåŠŸæŒ‚è½½ - ''' - ''' - - Public Class ScriptEntryInterface : Inherits Attribute - - ''' - ''' æ··åˆç¼–程的接å£ç±»åž‹ - ''' - ''' - Public Enum InterfaceTypes - - ''' - ''' 有些简å•类型å¯èƒ½å¹¶ä¸éœ€è¦åˆå§‹åŒ–过程,所以这一个接å£çŽ°åœ¨æ˜¯å¯é€‰çš„ - ''' - ''' - EntryPointInit - ''' - ''' 接å£ç±»åž‹ï¼šPublic Function Evaluate(script As String) As Object - ''' - ''' - Evaluate - ''' - ''' Public Function SetValue(variableName As String, value As Object) As Boolean - ''' - ''' - SetValue - DataConvertor - End Enum - - Dim _InterfaceType As InterfaceTypes - - Public ReadOnly Property InterfaceType As InterfaceTypes - Get - Return _InterfaceType - End Get - End Property - - Sub New(Type As InterfaceTypes) - _InterfaceType = Type - End Sub - - Public Overrides Function ToString() As String - Return _InterfaceType.ToString - End Function - - Private Shared ReadOnly _TypeInfo As System.Type = GetType(ScriptEntryInterface) - - Public Shared ReadOnly Property TypeInfo As System.Type - Get - Return _TypeInfo - End Get - End Property - End Class - - - Public Class DataConvert : Inherits ScriptEntryInterface - - Dim _TypeChar As Char, _ConservedString As Boolean - - Public ReadOnly Property TypeChar As Char - Get - Return _TypeChar - End Get - End Property - - Public ReadOnly Property ConservedStringConvertor As Boolean - Get - Return _ConservedString - End Get - End Property - - ''' - ''' - ''' - ''' - ''' æ•°æ®ç±»åž‹çš„åŽç¼€ï¼ŒæŽ¨è: - ''' $ - ''' & - ''' % - ''' ? - ''' ! - ''' @ - ''' - ''' åœ¨è„šæœ¬çŽ¯å¢ƒä¹‹ä¸­å¿…é¡»è¦æœ‰ä¸€ä¸ªä¿ç•™çš„å­—ç¬¦ä¸²è½¬æ¢æ–¹æ³• - ''' - Sub New(type As Char, Optional ConservedString As Boolean = False) - Call MyBase.New(InterfaceTypes.DataConvertor) - _TypeChar = type - _ConservedString = ConservedString - End Sub - - Public Overrides Function ToString() As String - Return _TypeChar.ToString - End Function - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/HybridScripting/HybridScriptingInteropHandler.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/HybridScripting/HybridScriptingInteropHandler.vb deleted file mode 100644 index 9c2a51f1e..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/HybridScripting/HybridScriptingInteropHandler.vb +++ /dev/null @@ -1,267 +0,0 @@ -Imports System.Reflection - -Namespace HybridsScripting - - Public Class HybridScriptingInteropHandler : Inherits ShoalShell.Runtime.Objects.ObjectModels.IScriptEngineComponent - - Implements System.IDisposable - - Public Structure EntryPoint - - ''' - ''' Script name.(æ··åˆç¼–程的脚本åç§°) - ''' - ''' - Dim Name As String - Dim Init, Evaluate, SetValue As System.Reflection.MethodInfo - ''' - ''' Basic type data convert interface.(基本数æ®ç±»åž‹çš„è½¬æ¢æŽ¥å£) - ''' - ''' - Dim DataConvertors As KeyValuePair(Of Char, System.Reflection.MethodInfo)() - ''' - ''' When the handlers can not found the data type - ''' convert method for the basically type then it will try this system preserved string type convert - ''' method to convert the data as string as default. - ''' (å½“ä¹‹ä¸­æ²¡æœ‰æŸ¥æ‰¾åˆ°ç›®æ ‡ç±»åž‹çš„è½¬æ¢æ“作接å£çš„æ—¶å€™ï¼Œåˆ™é»˜è®¤ä½¿ç”¨æœ¬æ–¹æ³•è½¬æ¢ - ''' 为字符串的格å¼ï¼Œä¿ç•™çš„字符串类型的转æ¢å‡½æ•°) - ''' - ''' - Dim ConservedString As System.Reflection.MethodInfo - Dim TypeFullName As String - Dim DeclaredAssemblyType As System.Type - - Public Overrides Function ToString() As String - Return Name - End Function - - Public Sub InitInvoke() - If Not Init Is Nothing Then - Call Init.Invoke(Nothing, Nothing) - End If - End Sub - - ''' - '''This property indicated that the entry data which was parsing from the assembly module is valid or not.(å¯ä»¥ä½¿ç”¨æœ¬å±žæ€§æ¥åˆ¤æ–­ç›®æ ‡è§£æžæ•°æ®æ˜¯å¦å¯ç”¨) - ''' - ''' - ''' - ''' - Public ReadOnly Property IsNull As Boolean - Get - Return String.IsNullOrEmpty(Name) OrElse Evaluate Is Nothing OrElse SetValue Is Nothing - End Get - End Property - End Structure - - Dim _CurrentScriptPoint As Func(Of String, Object) - Dim _CurrentSetValue As Func(Of String, Object, Boolean) - Dim _EntryPoints As Dictionary(Of String, EntryPoint) = New Dictionary(Of String, EntryPoint) - - ''' - ''' Attach the hybrid scripting environment onto the script host. - ''' - ''' - ''' - Public Sub AttachEntryPoint(pointName As String) - Dim EntryPoint = _EntryPoints(pointName.ToLower) - - Call Console.WriteLine("Dynamic load the external ""{0}"" runtime enviroment entry point, this may taks a while...", EntryPoint.Name) - Call EntryPoint.InitInvoke() - _CurrentScriptPoint = Function(script As String) EntryPoint.Evaluate.Invoke(Nothing, {script}) - _CurrentSetValue = Function(variable As String, value As Object) EntryPoint.SetValue.Invoke(Nothing, {variable, value}) - - If EntryPoint.ConservedString Is Nothing Then - Call Console.WriteLine("[WARNING] Empty string type convertor, data convertion maybe failure in the hybrid scripting!") - ConservedStringConvert = Nothing - Else - ConservedStringConvert = Function(value As String) EntryPoint.ConservedString.Invoke(Nothing, {value}) - End If - - Call DataConverters.Clear() - For Each Convertor In EntryPoint.DataConvertors - Call DataConverters.Add(Convertor.Key, Function(value As String) Convertor.Value.Invoke(Nothing, {value})) - Next - - Call Console.WriteLine("Load entry point and connect to the ""{0}"" runtime enviroment successfully!", EntryPoint.Name) - End Sub - - Public Function Evaluate(script As String) As Object - script = ScriptEngine._EngineMemoryDevice.FormatString(script) - Return _CurrentScriptPoint(script) - End Function - - ''' - ''' è¿™ä¸ªå¯¹è±¡æ˜¯ä¸ºæ‰€å‡†å¤‡çš„ï¼Œå½“æ‰€ä¼ é€’çš„å‚æ•°ä¸ºå­—符串的时候,则å¯ä»¥æ ¹æ®å‚æ•°åçš„åŽç¼€æ¥è½¬æ¢ä¸ºç›¸åº”的数æ®ç±»åž‹ - ''' - ''' - ''' - Dim DataConverters As Dictionary(Of Char, Func(Of String, Object)) = New Dictionary(Of Char, Func(Of String, Object)) - Dim ConservedStringConvert As Func(Of String, Object) - - Sub New(ScriptHost As ShoalShell.Runtime.Objects.ShellScript) - Call MyBase.New(ScriptHost) - End Sub - - ''' - ''' - ''' - ''' è¿™ä¸ªå‚æ•°éœ€è¦å·²ç»åŽ»é™¤äº†ç¬¬ä¸€ä¸ª!æ ‡è¯†ç¬¦ï¼Œä¼šä¸´æ—¶åˆ‡æ¢æ··åˆç¼–程的脚本环境 - ''' 脚本对象å[ 傿•°åˆ—表] - ''' - ''' - Public Function Evaluate(environment As String, Cmdl As CommandLine.CommandLine) As Object - Dim ScriptText As String = ScriptEngine.InternalEntryPointManager.GetHybridsScript(Cmdl.Name) - - Using TempEnvironment As HybridScriptingInteropHandler = New HybridScriptingInteropHandler(Me.ScriptEngine) - TempEnvironment._EntryPoints = _EntryPoints - Call TempEnvironment.AttachEntryPoint(environment) - - For Each var In Cmdl 'å…¶ä¸­çš„å‚æ•°çš„值为å˜é‡å¼•用,å‡è‹¥æ‰¾ä¸åˆ°å˜é‡å€¼ï¼Œåˆ™ä¸€å¾‹è½¬æ¢ä¸ºå­—符串 - Dim value As Object = ScriptEngine._Interpreter._InternalCommands.GetValue(var.Value) - - If value.GetType = GetType(String) Then '说明ä¸å­˜åœ¨ç›®æ ‡å˜é‡ï¼Œåˆ™çŽ°åœ¨éœ€è¦ä½¿ç”¨ç±»åž‹è½¬æ¢æ¥è½¬æ¢ç›®æ ‡å­—ç¬¦ä¸²å‚æ•°å€¼ - Dim type As Char = var.Key.Last - - If TempEnvironment.DataConverters.ContainsKey(type) Then - value = TempEnvironment.DataConverters(type)(value.ToString) - Else - value = TempEnvironment.ConservedStringConvert(value.ToString) 'å‡è‹¥æ‰¾ä¸åˆ°è½¬æ¢å™¨ï¼Œåˆ™é»˜è®¤è½¬æ¢ä¸ºå­—符串 - End If - End If - Call TempEnvironment.SetValue(var.Key, value) - Next - - ScriptText = ScriptEngine._EngineMemoryDevice.FormatString(ScriptText) - - Return TempEnvironment.Evaluate(ScriptText) - End Using - End Function - - Public Function SetValue(variableName As String, value As Object) As Boolean - variableName = ScriptEngine._EngineMemoryDevice.FormatString(variableName) - Return _CurrentSetValue(variableName, value) - End Function - - Public Function LoadEntryPoints(AssemblyFile As String) As Integer - If Not FileIO.FileSystem.FileExists(AssemblyFile) Then - Call Console.WriteLine("!!! Missing Module @ {0}.", AssemblyFile) - Return -1 - End If - - Dim EntryPoints = _LoadEntryPoints(System.Reflection.Assembly.LoadFrom(AssemblyFile)) - If EntryPoints.IsNullOrEmpty Then - Return 0 - End If - - For Each EntryPoint In EntryPoints - Dim Name As String = EntryPoint.Name.ToLower - - If _EntryPoints.ContainsKey(Name) Then - Call Console.WriteLine("Script entry point ""{0}"": {1}::{2} is already mount in the shellscript", Name, EntryPoint.TypeFullName, EntryPoint.Init.Name) - Return 0 - End If - - Call _EntryPoints.Add(Name, EntryPoint) - Call ScriptEngine.ImportsDataSource.Imports(EntryPoint.DeclaredAssemblyType) - Next - - Return EntryPoints.Count - End Function - - Private Function _LoadEntryPoints(Assembly As System.Reflection.Assembly) As EntryPoint() - Dim LQuery = (From Type As System.Type - In Assembly.GetTypes - Let EntryPoint As EntryPoint = LoadEntryPoint(Type) - Where Not EntryPoint.IsNull - Select EntryPoint).ToArray - Return LQuery - End Function - - Private Function LoadEntryPoint(Assembly As System.Type) As EntryPoint - Dim attributes As Object() = Assembly.GetCustomAttributes(ShoalShell.HybridsScripting.ScriptEntryPoint.TypeInfo, True) - - If attributes.IsNullOrEmpty Then - Return Nothing - End If - - Dim EntryName As String = DirectCast(attributes(0), ShoalShell.HybridsScripting.ScriptEntryPoint).ScriptName - Dim InitEntry As System.Reflection.MethodInfo = GetEntry(Assembly, ScriptEntryInterface.InterfaceTypes.EntryPointInit) - Dim Evaluate As System.Reflection.MethodInfo = GetEntry(Assembly, ScriptEntryInterface.InterfaceTypes.Evaluate) - Dim SetValue As System.Reflection.MethodInfo = GetEntry(Assembly, ScriptEntryInterface.InterfaceTypes.SetValue) - Dim DataConvertors = GetEntries(Of HybridsScripting.DataConvert)(Assembly) - Dim ConservedString As System.Reflection.MethodInfo = (From cMethod As KeyValuePair(Of HybridsScripting.DataConvert, System.Reflection.MethodInfo) - In DataConvertors - Where cMethod.Key.ConservedStringConvertor = True - Select cMethod.Value).ToArray.FirstOrDefault - If Evaluate Is Nothing Then - Return Nothing - Else - Return New EntryPoint With - { - .DeclaredAssemblyType = Assembly, - .ConservedString = ConservedString, - .Name = EntryName, - .Init = InitEntry, - .Evaluate = Evaluate, - .TypeFullName = Assembly.FullName, - .SetValue = SetValue, - .DataConvertors = (From item In DataConvertors Select New KeyValuePair(Of Char, System.Reflection.MethodInfo)(item.Key.TypeChar, item.Value)).ToArray} - End If - End Function - - Private Function GetEntries(Of TEntryType As ScriptEntryInterface)(TypeInfo As System.Type) As KeyValuePair(Of TEntryType, System.Reflection.MethodInfo)() - Dim EntryType As Type = GetType(TEntryType) - Dim LQuery = (From LoadHandle As System.Reflection.MethodInfo - In TypeInfo.GetMethods(BindingFlags.Public Or BindingFlags.Static) - Let attributes As Object() = LoadHandle.GetCustomAttributes(EntryType, False) - Where Not attributes.IsNullOrEmpty - Select (From attr As Object - In attributes - Let Entry As TEntryType = DirectCast(attr, TEntryType) - Select New KeyValuePair(Of TEntryType, System.Reflection.MethodInfo)(Entry, LoadHandle)).ToArray).ToArray - Return LQuery.MatrixToVector - End Function - - Private Function GetEntry(TypeInfo As System.Type, EntryType As ScriptEntryInterface.InterfaceTypes) As System.Reflection.MethodInfo - Dim LQuery = (From LoadHandle As System.Reflection.MethodInfo - In TypeInfo.GetMethods(BindingFlags.Public Or BindingFlags.Static) - Let attributes As Object() = LoadHandle.GetCustomAttributes(ShoalShell.HybridsScripting.ScriptEntryInterface.TypeInfo, False) - Where Not attributes.IsNullOrEmpty AndAlso DirectCast(attributes(0), ShoalShell.HybridsScripting.ScriptEntryInterface).InterfaceType = EntryType - Select LoadHandle).ToArray - Return LQuery.FirstOrDefault - End Function - -#Region "IDisposable Support" - Private disposedValue As Boolean ' To detect redundant calls - - ' IDisposable - Protected Overridable Sub Dispose(disposing As Boolean) - If Not Me.disposedValue Then - If disposing Then - ' TODO: dispose managed state (managed objects). - End If - - ' TODO: free unmanaged resources (unmanaged objects) and override Finalize() below. - ' TODO: set large fields to null. - End If - Me.disposedValue = True - End Sub - - ' TODO: override Finalize() only if Dispose(ByVal disposing As Boolean) above has code to free unmanaged resources. - 'Protected Overrides Sub Finalize() - ' ' Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above. - ' Dispose(False) - ' MyBase.Finalize() - 'End Sub - - ' This code added by Visual Basic to correctly implement the disposable pattern. - Public Sub Dispose() Implements IDisposable.Dispose - ' Do not change this code. Put cleanup code in Dispose(disposing As Boolean) above. - Dispose(True) - GC.SuppressFinalize(Me) - End Sub -#End Region - - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/InternalCommands.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/InternalCommands.vb deleted file mode 100644 index 56d76971b..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/InternalCommands.vb +++ /dev/null @@ -1,572 +0,0 @@ -Imports System.Text -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports System.Reflection -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects -Imports System.Runtime.CompilerServices -Imports Microsoft.VisualBasic.ComponentModel -Imports System.Drawing -Imports Microsoft.VisualBasic.Scripting.ShoalShell.DelegateHandlers.TypeLibraryRegistry -Imports Microsoft.VisualBasic.Scripting.EntryPointMetaData - -Namespace Interpreter - - ''' - ''' 一个脚本程åºä¸­ä»…å…许有一个内建命令的实例 - ''' - ''' - Public Class InternalCommands : Inherits ShoalShell.Runtime.Objects.ObjectModels.IScriptEngineComponent - - Public _InternalVariableName_ForEach As String - Public _InternalVariableName_DoWhile As String - - ''' - ''' 脚本的执行入å£ç‚¹çš„定义 - ''' - ''' 脚本中的内容 - ''' 如果为Nothing,则说明目标脚本的执行ä¸éœ€æ±‚傿•° - ''' - ''' - Public Delegate Function ScriptSourceHandle(Script As String, parameters As KeyValuePair(Of String, Object)()) As Object - - - Public Function basename(path As String) As String - If FileIO.FileSystem.DirectoryExists(path) Then - Return FileIO.FileSystem.GetDirectoryInfo(path).Name - Else - Return IO.Path.GetFileNameWithoutExtension(path) - End If - End Function - - - - Public Function CreateArray(argvs As String) As Object() - - If String.IsNullOrEmpty(argvs) Then - Return New Object() {} - End If - - If argvs.First = """"c AndAlso argvs.Last = """"c Then - argvs = Mid(argvs, 2, Len(argvs) - 2) - End If - - If InStr(argvs, ",") = 0 AndAlso argvs.First = "$"c Then - Return CreateArray(ScriptEngine._EngineMemoryDevice.Item(Mid(argvs, 2).ToLower)) - ElseIf InStr(argvs, ",") = 0 AndAlso argvs.First = "&"c Then - Return CreateArray(ScriptEngine._EngineMemoryDevice.GetConstant(Mid(argvs, 2))) - End If - - Dim variables = ShoalShell.BuildInModules.System.Array.ParseVector(argvs) - Dim paraList As List(Of Object) = New List(Of Object) - - For Each var As String In variables - If var.First = "$"c Then - Call paraList.Add(ScriptEngine._EngineMemoryDevice.Item(Mid(var, 2).ToLower)) - ElseIf var.First = "&"c Then - Call paraList.Add(ScriptEngine._EngineMemoryDevice.GetConstant(Mid(var, 2))) - Else - Call paraList.Add(var) - End If - Next - - Return paraList.ToArray - End Function - - - Public Function Version() As Version - Call Cowsay(String.Format("The version of Shoal is {0}", My.Application.Info.Version.ToString)) - Return My.Application.Info.Version - End Function - - - Public Function Wiki( Optional keyword As String = "") As String - Dim url As String = If(String.IsNullOrEmpty(keyword), "https://sourceforge.net/p/shoal/wiki/", "https://sourceforge.net/p/shoal/wiki/search/?q=" & keyword.Replace(" ", "%20")) - Call Process.Start(url) - Return url - End Function - - - Public Function License() As String - Dim sBuilder As StringBuilder = New StringBuilder(1024) - Call sBuilder.AppendLine(My.Resources.license) - Call sBuilder.AppendLine() - Call sBuilder.AppendLine() - Call sBuilder.AppendLine("Using gpl() command to see the whole GPL3 license.") - - Call Console.WriteLine(sBuilder.ToString) - - Return sBuilder.ToString - End Function - - - Public Function GPL() As String - Call Console.WriteLine(My.Resources.gpl) - Return My.Resources.gpl - End Function - - - Public Function Echo( Message As String) As String - Call Console.WriteLine(Message) - Return Message - End Function - - Sub New(ScriptEngineHost As Runtime.Objects.ShellScript, disp_inits_message As Boolean, preferIndexedManual As Boolean) - Call MyBase.New(ScriptEngineHost) - - Me.ScriptEngine._InternalHelpSystem = New Wiki.InternalHelpSearch(ScriptEngineHost, preferIndexedManual) - Me.ScriptEngine.InternalEntryPointManager.ImportsInstanceNamespace(Me) - End Sub - - ''' - ''' å°è¯•获å–脚本宿主内存之中的å˜é‡çš„值 - ''' - ''' - ''' - ''' - Public Function GetValue(name As String) As Object - Return _RuntimeEnvironment._EngineMemoryDevice.TryGetValue(name) - End Function - - - Public Function Cowsay(Optional msg As String = "", Optional argvs As Microsoft.VisualBasic.CommandLine.CommandLine = Nothing) As String - 'If String.IsNullOrEmpty(msg) Then - ' Return CowsayTricks.Cowsay("Moo. Hi!", "") - 'End If - - 'If argvs Is Nothing Then - ' Return CowsayTricks.Cowsay(msg, "") - 'End If - - 'Dim Tokens = argvs.Tokens.Skip(2).ToArray - 'Dim pList As List(Of KeyValuePair(Of String, String)) = New Generic.List(Of KeyValuePair(Of String, String)) - 'For i As Integer = 0 To Tokens.Count - 2 - ' Call pList.Add(New KeyValuePair(Of String, String)(Tokens(i), Tokens(i + 1))) - 'Next - - 'Return CowsayTricks.Cowsay(argvs.Tokens(1), CommandLine.CommandLine.CreateObject("cowsay.argvs", pList.ToArray)) - End Function - - - Public Function ReturnStack() As Boolean - Return True - End Function - - Public Function TryGetArrayValue(obj As Object) As Object() - Dim Type As Type = obj.GetType - If Array.IndexOf(Type.GetInterfaces, GetType(IEnumerable)) > -1 Then - Return GetArray(en:=DirectCast(obj, IEnumerable)) - Else - Throw New DataException("Target object is not a collection type!") - End If - End Function - - Private Function GetArray(en As IEnumerable) As Object() - Dim LQuery = (From obj In en Select CType(obj, Object)).ToArray - Return LQuery - End Function - - - Public Function DoWhile(test As Object, [call] As String) As Object() - Dim ReturnedValue As List(Of Object) = New List(Of Object) - Dim argvs As CommandLine.CommandLine = CommandLine.CommandLine.TryParse([call]) - Dim ScriptFile As String = argvs.Name - Dim sourceArgv As String() = argvs.Parameters - ' Dim CallerStack = _ScriptEngine - Dim IsSourceFile As Boolean = False - Dim SourceDir As String = "" - - If FileIO.FileSystem.FileExists(ScriptFile) Then - SourceDir = FileIO.FileSystem.GetParentPath(ScriptFile) - ScriptFile = FileIO.FileSystem.ReadAllText(ScriptFile) - IsSourceFile = True - Else - ScriptFile = [call] - End If - - Do While _RuntimeEnvironment._EngineMemoryDevice.TryGetValue(_InternalVariableName_DoWhile).ToString.getBoolean - Using Script As Runtime.Objects.ShellScript = New Runtime.Objects.ShellScript '由于在新构造ShellScript对象的时候,会将本模å—之中的_scriptHost进行替æ¢ï¼Œæ‰€ä»¥ä¸‹é¢çš„语å¥ç›´æŽ¥æ“作_scriptHost对象就A相当于æ“作所被调用的脚本的宿主程åºäº† - - If Not sourceArgv.IsNullOrEmpty Then - For Each item In CommandLine.CommandLine.CreateParameterValues(sourceArgv, True) - Call _RuntimeEnvironment._EngineMemoryDevice.InsertOrUpdate(item.Key, ScriptEngine._EngineMemoryDevice.TryGetValue(item.Value)) - Next - End If - - Dim currentWork As String = My.Computer.FileSystem.CurrentDirectory - If IsSourceFile Then My.Computer.FileSystem.CurrentDirectory = SourceDir - Call Script.EXEC(ScriptFile) - If IsSourceFile Then My.Computer.FileSystem.CurrentDirectory = currentWork - Call ReturnedValue.Add(Script.GetStackValue) - Dim Memory = Script._EngineMemoryDevice - Call ScriptEngine._EngineMemoryDevice.SetValue(New KeyValuePair(Of String, Object)("$", Memory)) - ' CommandsEntryHandler._ShellScriptHost = CallerStack - End Using - Loop - - Return ReturnedValue.ToArray - End Function - - ''' - ''' - ''' - ''' - ''' è„šæœ¬å‘½ä»¤æˆ–è€…è„šæœ¬æ–‡ä»¶ä¸Žå‚æ•°åˆ—表 - ''' - ''' - - Public Function ForEach([in] As Object, [call] As String) As Object() - Dim argvs As CommandLine.CommandLine = CommandLine.CommandLine.TryParse([call]) - Dim ScriptFile As String = argvs.Name - Dim sourceArgv As String() = argvs.Parameters - ' Dim CallerStack = _ShellScriptHost - Dim arrayData As Generic.IEnumerable(Of Object) = TryGetArrayValue([in]) - Dim IsSourceFile As Boolean = False - Dim SourceDir As String = "" - Dim ReturnedValue As List(Of Object) = New List(Of Object) - - If FileIO.FileSystem.FileExists(ScriptFile) Then - SourceDir = FileIO.FileSystem.GetParentPath(ScriptFile) - ScriptFile = FileIO.FileSystem.ReadAllText(ScriptFile) - IsSourceFile = True - Else - ScriptFile = [call] - End If - - For Each obj In arrayData - Using Script As Runtime.Objects.ShellScript = New Runtime.Objects.ShellScript '由于在新构造ShellScript对象的时候,会将本模å—之中的_scriptHost进行替æ¢ï¼Œæ‰€ä»¥ä¸‹é¢çš„语å¥ç›´æŽ¥æ“作_scriptHost对象就A相当于æ“作所被调用的脚本的宿主程åºäº† - - If Not sourceArgv.IsNullOrEmpty Then - For Each item In CommandLine.CommandLine.CreateParameterValues(sourceArgv, True) - Call _RuntimeEnvironment._EngineMemoryDevice.InsertOrUpdate(item.Key, ScriptEngine._EngineMemoryDevice.TryGetValue(item.Value)) - Next - End If - - Call _RuntimeEnvironment._EngineMemoryDevice.InsertOrUpdate(_InternalVariableName_ForEach, obj) - - Dim currentWork As String = My.Computer.FileSystem.CurrentDirectory - If IsSourceFile Then My.Computer.FileSystem.CurrentDirectory = SourceDir - Call Script.EXEC(ScriptFile) - If IsSourceFile Then My.Computer.FileSystem.CurrentDirectory = currentWork - Call ReturnedValue.Add(Script.GetStackValue) - ' CommandsEntryHandler._ShellScriptHost = CallerStack - End Using - Next - - Return ReturnedValue.ToArray - End Function - - - Public Function [If](test As Object, [call] As String) As Object - Dim strValue As String = test.ToString - - _RuntimeEnvironment._EngineMemoryDevice._LastIf_Flag = strValue.getBoolean - - If _RuntimeEnvironment._EngineMemoryDevice._LastIf_Flag Then - Call _RuntimeEnvironment.EXEC([call]) - Return _RuntimeEnvironment._EngineMemoryDevice.TryGetValue("$") - Else - Return -1 - End If - End Function - - - Public Function [Else](Command As String) As Object - If Not _RuntimeEnvironment._EngineMemoryDevice._LastIf_Flag Then - Call _RuntimeEnvironment.EXEC(Command) - End If - - Return _RuntimeEnvironment._EngineMemoryDevice.TryGetValue("$") - End Function - - - Public Function [ElseIf](test As Object, [call] As String) As Object - If Not _RuntimeEnvironment._EngineMemoryDevice._LastIf_Flag Then - Return [If](test, [call]) - End If - - Return _RuntimeEnvironment._EngineMemoryDevice.TryGetValue("$") - End Function - - - Public Function ReturnValue(variable As Object) As Object - Call _RuntimeEnvironment.PushStack(variable) - Return _RuntimeEnvironment.GetStackValue - End Function - - - Public Function Free(variableName) As Boolean - Dim Variable = (From item In _RuntimeEnvironment._EngineMemoryDevice Where String.Equals(item.Key, variableName, StringComparison.OrdinalIgnoreCase) Select item).First - Call _RuntimeEnvironment._EngineMemoryDevice.Remove(Variable) - Call FlushMemory() - Return True - End Function - - ''' - ''' include <filepath> - ''' - ''' - ''' - ''' - declaration line by the target script file. so please consider the order of the include statements in your script.")> - Public Function FileInclude(path As String) As String - Return FileIO.FileSystem.ReadAllText(path) - End Function - - ''' - ''' 使用本方法导入外部命令,这样å­å°±å¯ä»¥ç›´æŽ¥è°ƒç”¨æ–¹æ³•而ä¸éœ€è¦æ¯ä¸€ä¸ªå‘½ä»¤è¡Œéƒ½æ·»åŠ æ¨¡å—å称了 - ''' - ''' - ''' - ''' - - Public Function ImportsNamespace([Namespace] As String) As Integer - Return ScriptEngine.InternalEntryPointManager.ImportsNamespace([Namespace]) - End Function - - ''' - ''' åŠ¨æ€æ³¨å†Œä¸€ä¸ªé“¾æŽ¥åº“,在进行挂载 - ''' - ''' - ''' - ''' - ''' - - Public Function Library( assemblyPath As String) As Integer - Call _RuntimeEnvironment._Interpreter._DelegateRegistry.RegisterAssemblyModule(assemblyPath, "") - Call _RuntimeEnvironment._Interpreter._DelegateRegistry.Save() - Call _RuntimeEnvironment._Interpreter._DelegateRegistry.LoadLibrary(assemblyPath, _RuntimeEnvironment._EngineMemoryDevice) - Call _RuntimeEnvironment.ReloadEntryPoints() - - Return 0 - End Function - - - Public Function Cat(path As String) As String - Dim s As String = FileIO.FileSystem.ReadAllText(path) - Call Console.WriteLine(s) - Return s - End Function - - - Public Function Install( assemblyPath As String) As Integer - Return Library(assemblyPath) - End Function - - ''' - ''' åˆ—ä¸¾å‡ºæ‰€æœ‰å·²ç»æ³¨å†Œçš„动æ€é“¾æŽ¥åº“ - ''' - ''' - ''' - ''' - - Public Function Libraries() As Integer - If _RuntimeEnvironment._Interpreter._DelegateRegistry._InnerList.IsNullOrEmpty Then - Call Console.WriteLine("Shoal didn't install any plugin module yet...") - Return 0 - End If - - Dim MaxLength = (From item In _RuntimeEnvironment._Interpreter._DelegateRegistry._InnerList Select Len(item.ModuleName)).ToArray.Max - Dim sBuilder As StringBuilder = New StringBuilder(1024) - - Call sBuilder.AppendLine(String.Format(" Namespaces{0} assembly library", New String(" "c, MaxLength - Len("namespaces") + 4))) - Call sBuilder.AppendLine(String.Format("+----------{0}+-------------------------------------------------------------------------+", New String("-"c, MaxLength - Len("namespaces") + 4))) - - For Each item In (From itemobject In _RuntimeEnvironment._Interpreter._DelegateRegistry._InnerList Select itemobject Order By itemobject.ModuleName).ToArray - Call sBuilder.AppendLine(" " & item.ModuleName) - - For Each Partition As DelegateHandlers.TypeLibraryRegistry.RegistryNodes.ModuleLoadEntry In item.Entries - Call sBuilder.AppendLine(String.Format(" {0} @{1}", New String(" "c, MaxLength), Partition.AssemblyPath)) - Next - Next - Call Console.WriteLine(sBuilder.ToString) - Return _RuntimeEnvironment._Interpreter._DelegateRegistry._InnerList.Count - End Function - - - - Public Function DisplayHelp( Optional ObjectName As String = "") As String - Dim str As String = Me._RuntimeEnvironment._InternalHelpSystem.GetHelpInfo(ObjectName, True) - - If String.IsNullOrEmpty(str) Then - Call Console.WriteLine("Sorry, Shoal could not find any thing for the query keyword ""{0}""... :-(", ObjectName) - End If - - Return str - End Function - - - Public Function Clear() As Integer - Call Console.Clear() - Return 0 - End Function - - - Public Function Pwd() As String - Call Console.WriteLine(My.Computer.FileSystem.CurrentDirectory) - Return My.Computer.FileSystem.CurrentDirectory - End Function - - - Public Function Memories() As String() - Dim sBuilder As StringBuilder = New StringBuilder - Dim maxLength As Integer - Dim LQuery As String() = Nothing - Dim Constants = _RuntimeEnvironment._EngineMemoryDevice.GetConstants - - If _RuntimeEnvironment._EngineMemoryDevice.IsNullOrEmpty AndAlso Constants.IsNullOrEmpty Then - Const NO_VALUE = "Currently no variables exists in the script host memory!" - Call Console.WriteLine(NO_VALUE) - Return New String() {NO_VALUE} - End If - - If Not _RuntimeEnvironment._EngineMemoryDevice.IsNullOrEmpty Then - Call sBuilder.AppendLine() - Call sBuilder.AppendLine(String.Format(" {0} VARIABLES", _RuntimeEnvironment._EngineMemoryDevice.Count)) - Call sBuilder.AppendLine() - - maxLength = (From item In _RuntimeEnvironment._EngineMemoryDevice Select Len(item.Key)).ToArray.Max - LQuery = (From item In _RuntimeEnvironment._EngineMemoryDevice Select String.Format("{0} {1}--> {2} //{3}", item.Key, New String(" "c, maxLength - Len(item.Key) + 2), item.Value.ToString, item.Value.GetType.FullName)).ToArray - - For Each Line As String In LQuery - Call sBuilder.AppendLine(Line) - Next - End If - - If Not Constants.IsNullOrEmpty Then - maxLength = (From item In Constants Select Len(item.Key)).ToArray.Max - LQuery = (From item In Constants Select String.Format("{0} {1}--> {2} //{3}", item.Key, New String(" "c, maxLength - Len(item.Key) + 2), item.Value.ToString, item.Value.GetType.FullName)).ToArray - Call sBuilder.AppendLine() - Call sBuilder.AppendLine(String.Format(" {0} CONSTANTS", Constants.Count)) - - For Each line In LQuery - Call sBuilder.AppendLine(line) - Next - End If - - Call Console.WriteLine(sBuilder.ToString) - Return LQuery - End Function - - ''' - ''' 切æ¢ShoalShell的当å‰å·¥ä½œç›®å½• - ''' - ''' - ''' - ''' - - Public Function Cd([to] As String) As String - If String.Equals([to], "~") Then - [to] = My.Application.Info.DirectoryPath - End If - - My.Computer.FileSystem.CurrentDirectory = [to] - Call ScriptEngine.InternalEntryPointManager.InternalScanTempShell(dir:=My.Computer.FileSystem.CurrentDirectory, disp_inits_message:=True) - Return [to] - End Function - - ''' - ''' 当指定了文件拓展å之åŽï¼Œå‡½æ•°åªä¼šè¿”回文件å列表,其他的情况会返回文件å列表和文件夹列表 - ''' - ''' - ''' - - Public Function List(Optional argv As CommandLine.CommandLine = Nothing) As String() - Dim ext As String = If(argv Is Nothing OrElse argv.IsNullOrEmpty OrElse String.IsNullOrEmpty(argv("-ext")), "", argv("-ext")) - Dim TargetDir As String = If(argv Is Nothing OrElse argv.IsNullOrEmpty OrElse Not FileIO.FileSystem.DirectoryExists(argv.Parameters.First), "", argv.Parameters.First) - - If String.IsNullOrEmpty(TargetDir) Then - TargetDir = If(argv Is Nothing OrElse argv.IsNullOrEmpty OrElse String.IsNullOrEmpty(argv("-d")), My.Computer.FileSystem.CurrentDirectory, argv("-d")) - End If - - If String.IsNullOrEmpty(ext) Then - If argv Is Nothing OrElse argv.Parameters.IsNullOrEmpty Then - ext = "*.*" - Else - ext = If(FileIO.FileSystem.DirectoryExists(argv.Parameters.First), "*.*", argv.Parameters.First) - End If - End If - - Dim Dirs = FileIO.FileSystem.GetDirectories(TargetDir, FileIO.SearchOption.SearchTopLevelOnly) - Dim Files = FileIO.FileSystem.GetFiles(TargetDir, FileIO.SearchOption.SearchTopLevelOnly, ext) - Dim DriveInfo = FileIO.FileSystem.GetDriveInfo(TargetDir) - Dim sBuilder As StringBuilder = New StringBuilder(1024) - - Call sBuilder.AppendLine(String.Format(" Volume in drive {0} is {1}", DriveInfo.RootDirectory, DriveInfo.VolumeLabel)) - Call sBuilder.AppendLine(String.Format(" Volume drive Format is {0}" & vbCrLf, DriveInfo.DriveFormat)) - Call sBuilder.AppendLine(String.Format(" Directory of {0}" & vbCrLf, TargetDir)) - If Not Dirs.IsNullOrEmpty Then Call sBuilder.AppendLine(String.Format(" {0} Directories", Dirs.Count)) - If Not Files.IsNullOrEmpty Then Call sBuilder.AppendLine(String.Format(" {0} Files", Files.Count)) - Call sBuilder.AppendLine() - - For Each Dir As String In Dirs - Dim dirInfo = FileIO.FileSystem.GetDirectoryInfo(Dir) - Call sBuilder.AppendLine(String.Format("{0} {1}", dirInfo.LastWriteTimeUtc.ToStringEx, dirInfo.Name)) - Next - Call sBuilder.AppendLine() - For Each File As String In Files - Dim fileInfo = FileIO.FileSystem.GetFileInfo(File) - - If String.Equals(fileInfo.Extension, ".shl") Then - Call sBuilder.AppendLine(String.Format("{0} {1}", fileInfo.LastWriteTimeUtc.ToStringEx, fileInfo.Name)) - Else - Call sBuilder.AppendLine(String.Format("{0} {1}", fileInfo.LastWriteTimeUtc.ToStringEx, fileInfo.Name)) - End If - Next - Call Console.WriteLine(sBuilder.ToString) - - If String.Equals(ext, "*.*") Then - '返回所有 - Dim ChunkBuffer = Dirs.ToArray.Join(Files) - Return ChunkBuffer.ToArray - Else - Return Files.ToArray - End If - End Function - - - Public Function ProcessStart(argv As CommandLine.CommandLine) As Process - Dim file As String = FileIO.FileSystem.GetFileInfo(argv("-file")).FullName, arguments As String = argv("-argv") - Dim Process As Process = New Process() - Process.StartInfo = New System.Diagnostics.ProcessStartInfo(file) - If Not String.IsNullOrEmpty(arguments) Then - Process.StartInfo.Arguments = arguments - End If - Call Process.Start() - Return Process - End Function - - ''' - ''' è„šæœ¬ä¸Žè„šæœ¬ä¹‹é—´çš„å‚æ•°ä¼ é€’是通过共享内存å˜é‡æ¥å®žçŽ°çš„ - ''' - ''' - ''' 返回目标脚本执行过åŽçš„Memory对象 - ''' - - Public Function Source(argv As CommandLine.CommandLine) As Runtime.Objects.I_MemoryManagementDevice - ' Dim CallerStack = _ShellScriptHost - - Dim ScriptFile As String = FileIO.FileSystem.GetFileInfo(argv.Parameters.First).FullName - Dim sourceArgv As String() = argv.Parameters.Skip(1).ToArray - - If Not sourceArgv.IsNullOrEmpty Then - For Each item In CommandLine.CommandLine.CreateParameterValues(sourceArgv, True) - Call ScriptEngine._EngineMemoryDevice.InsertOrUpdate(item.Key, ScriptEngine._EngineMemoryDevice.TryGetValue(item.Value)) - Next - End If - - Dim currentWork As String = My.Computer.FileSystem.CurrentDirectory - My.Computer.FileSystem.CurrentDirectory = FileIO.FileSystem.GetParentPath(ScriptFile) - Call ScriptEngine.EXEC(FileIO.FileSystem.ReadAllText(ScriptFile)) - My.Computer.FileSystem.CurrentDirectory = currentWork - ' CommandsEntryHandler._ShellScriptHost = CallerStack - - Return Me._RuntimeEnvironment._EngineMemoryDevice - End Function - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/InternalTextEngine.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/InternalTextEngine.vb deleted file mode 100644 index 9a47d52b7..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/InternalTextEngine.vb +++ /dev/null @@ -1,46 +0,0 @@ -Imports System.Text.RegularExpressions - -Namespace Interpreter - - ''' - ''' 内建的文本处ç†å¼•擎 - ''' - ''' - Public Module InternalTextEngine - - '使用正则表达å¼è¿›è¡Œæ–‡æœ¬æ“作 - 'var <- regex expression <= variable - 'var <- "\d\s{5}" <= $text - - 'ä½¿ç”¨æ–‡æœ¬å¼•æ“Žè¿›è¡ŒåŸºæœ¬çš„å¤„ç† - 'var <- "'tokens | first','mid 3 2'" <= $text - - Public Function SyntaxParser(Command As Microsoft.VisualBasic.CommandLine.CommandLine, MemoryDevice As ShoalShell.Runtime.Objects.I_MemoryManagementDevice) As ShoalShell.Runtime.Objects.ObjectModels.ScriptCodeLine - - If Command.Tokens.Count < 5 Then - Return Nothing - End If - - If Not (String.Equals(Command.Tokens(1), "<-") AndAlso String.Equals(Command.Tokens(3), "<=")) Then '䏿˜¯æ–‡æœ¬å¤„ç†å‘½ä»¤ - Return Nothing - End If - - Dim Script As String = Command.Tokens(2) - Dim ScriptObject = Microsoft.VisualBasic.TextGrepScriptEngine.Compile(Script) - Dim ScriptLine As ShoalShell.Runtime.Objects.ObjectModels.ScriptCodeLine = - New Runtime.Objects.ObjectModels.ScriptCodeLine With - { - .OrignialScriptLine = Command.CLICommandArgvs, .ReturnType = GetType(String).FullName, .VariableAssigned = Command.Tokens.First} - Dim TextSource As String = Command.Tokens(4) - - If ScriptObject Is Nothing Then '正则表达å¼å¯èƒ½ä¸å¯ç”¨è¢«è„šæœ¬å¼•æ“Žæ‰€æ­£ç¡®çš„ç¼–è¯‘ï¼Œåˆ™ç›®æ ‡æ“ä½œä¸ºæ­£åˆ™è¡¨è¾¾å¼ - ScriptLine.InvokeMethod = Function() Regex.Match(input:=MemoryDevice.FormatString(TextSource), pattern:=Script).Value - Else - 'ä½¿ç”¨å†…å»ºçš„è„šæœ¬å¼•æ“Žè¿›è¡Œæ–‡æœ¬å¤„ç† - ScriptLine.InvokeMethod = Function() ScriptObject.Grep(MemoryDevice.FormatString(TextSource)) - End If - - Return ScriptLine - End Function - End Module -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/Interpreter.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/Interpreter.vb deleted file mode 100644 index 002e5ae70..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/Interpreter.vb +++ /dev/null @@ -1,621 +0,0 @@ -Imports System.Text.RegularExpressions -Imports System.Reflection - -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ObjectModels.Exceptions -Imports Microsoft.VisualBasic.Scripting.ShoalShell.DeviceDriver -Imports Microsoft.VisualBasic.Scripting.ShoalShell.DelegateHandlers.TypeLibraryRegistry -Imports Microsoft.VisualBasic.Scripting.ShoalShell.DelegateHandlers.EntryPointHandlers - -Namespace Interpreter - - 'REM <- ns function ${ns er df ${dse sd sds $adds}} - - ''' - ''' - ''' - ''' - Public Class Interpreter : Inherits ShoalShell.Runtime.Objects.ObjectModels.IScriptEngineComponent - - Protected Friend _DelegateRegistry As DelegateRegistry - Dim _IOSupport As IODeviceDriver - Dim _OutputSupport As OutputDeviceDriver - Dim _InputSupport As InputDeviceDriver - - Protected Friend _InternalMethodInvoker As ShoalShell.DelegateHandlers.EntryPointHandlers.MethodDelegateCaller - Protected Friend _InternalCommands As InternalCommands - - Public Const VARIABLE_NAME As String = "[^$^&^ ]\S*" - Public Const VARIABLE_ASSIGNMENT As String = VARIABLE_NAME & "\s+(<-|<<|>>|[~]|>|<=|<)\s+" - - Public ReadOnly Property InternalCommands As InternalCommands - Get - Return _InternalCommands - End Get - End Property - - ''' - ''' - ''' - ''' - ''' 注册表文件的文件路径 - ''' - Sub New(ScriptHost As Runtime.Objects.ShellScript, LibraryRegistry As String, Optional ShowInitializeMessage As Boolean = False, Optional preferIndexedManual As Boolean = True) - Call MyBase.New(ScriptHost) - Call InternalInitialize(ScriptHost, LibraryRegistry.LoadXml(Of ShoalShell.DelegateHandlers.TypeLibraryRegistry.DelegateRegistry), ShowInitializeMessage, preferIndexedManual) - End Sub - - Sub New(ScriptHost As Runtime.Objects.ShellScript, LibraryRegistry As ShoalShell.DelegateHandlers.TypeLibraryRegistry.DelegateRegistry, Optional ShowInitializeMessage As Boolean = False, Optional preferIndexedManual As Boolean = True) - Call MyBase.New(ScriptHost) - Call InternalInitialize(ScriptHost, LibraryRegistry, ShowInitializeMessage, preferIndexedManual) - End Sub - - Private Sub InternalInitialize(ScriptHost As Runtime.Objects.ShellScript, LibraryRegistry As ShoalShell.DelegateHandlers.TypeLibraryRegistry.DelegateRegistry, ShowInitializeMessage As Boolean, preferIndexedManual As Boolean) - If ShowInitializeMessage Then Call Console.WriteLine("[Start to Initialize...]") - - Call LibraryRegistry.CheckForLibraryConsists(ShowInitializeMessage) - - _DelegateRegistry = LibraryRegistry - ScriptEngine._InternalEntryPointManager = New DelegateHandlers.EntryPointHandlers.ImportsEntryPointManager(ScriptEngine, My.Computer.FileSystem.CurrentDirectory, disp_inits_message:=ShowInitializeMessage) - _InternalCommands = New InternalCommands(ScriptHost, ShowInitializeMessage, preferIndexedManual) - _InternalMethodInvoker = New MethodDelegateCaller(ScriptHost) - - '加载外部脚本的注册表 - If Not _DelegateRegistry.HybridsScriptingEntrypoints.IsNullOrEmpty Then - If ShowInitializeMessage Then Call Console.WriteLine("Loading hybrid scripting entries....") - - For Each EntryPoint As RegistryNodes.HybridScriptingModuleLoadEntry In _DelegateRegistry.HybridsScriptingEntrypoints - Call _RuntimeEnvironment._HybridScriptingInteropEntryPointHandler.LoadEntryPoints(AssemblyFile:=DelegateHandlers.TypeLibraryRegistry.DelegateRegistry.Internal_getFullPath(EntryPoint.AssemblyPath)) - Next - End If - - If ShowInitializeMessage Then Call Console.WriteLine("Initialize the Output device...") - _IOSupport = New IODeviceDriver(ScriptHost._EngineMemoryDevice) - _OutputSupport = New OutputDeviceDriver(ScriptHost._EngineMemoryDevice) - _InputSupport = New InputDeviceDriver(ScriptHost._EngineMemoryDevice) - ScriptHost._IOSupport = _IOSupport - ScriptHost._OutputSupport = _OutputSupport - ScriptHost._InputSupport = _InputSupport - - If ShowInitializeMessage Then - Call Console.WriteLine("IO device mounted, you can using command ""? mount"" to view the mounted device in shoal shell.") - Call Console.WriteLine() - Call Console.WriteLine("[Done!]" & vbCrLf) - End If - End Sub - - ''' - ''' Parsing the script text into the script objectmodel and then return for execute. - ''' - ''' - ''' - ''' - ''' #为注释符,解æžå™¨ä¼šè‡ªåŠ¨å¿½ç•¥æ”¹è¡Œ - ''' - Public Function CreateScriptObject(ShellScript As String) As Runtime.Objects.ObjectModels.ShellScript - Dim Commands As List(Of String) = ShoalShell.Interpreter.DelegateDeclaration.TryParse(ShellScript.Replace(":=", " "), ScriptEngine.InternalEntryPointManager).ToList - Dim CommandList = ProcessIncludes(Commands, New List(Of String)) - - Dim LQuery = (From i As Integer In CommandList.Sequence - Let CmdlToken = CommandList(i) - Select InternalTryParse(Command:=CmdlToken, LineNumber:=i)).ToArray '当脚本之中有libraryå’Œimports命令的时候,会被tryparse函数首先执行 - - Dim ResumrFlag As Integer() = (From i As Integer In CommandList.Sequence - Let strToken = CommandList(i) - Where strToken.CLICommandArgvs.First = "#"c AndAlso InStr(strToken.CLICommandArgvs.Replace("#", "").Trim, "on error resume next", CompareMethod.Text) = 1 - Select i).ToArray - - If Not ResumrFlag.IsNullOrEmpty Then - Dim i = ResumrFlag.First + 1 - - If Not i > CommandList.Count - 2 Then - Dim strTemp = CommandList(ResumrFlag.First + 1) - Dim XQuery = (From item In LQuery Where String.Equals(strTemp.CLICommandArgvs, item.OrignialScriptLine) Select item).First - XQuery.OnErrorResumeNext = True - End If - End If - - Return New Runtime.Objects.ObjectModels.ShellScript(LQuery, Me.ScriptEngine) - End Function - - ''' - ''' includeçš„ä½œç”¨å°±æ˜¯å°†å¤šä¸ªè„šæœ¬æºæ–‡ä»¶åˆå¹¶åœ¨ä¸€èµ·è¿›è¡Œæ‰§è¡Œï¼Œæœ¬å‡½æ•°ä¼šå°†include申明的所在行替æ¢ä¸ºç›®æ ‡è„šæœ¬çš„å†…å®¹ - ''' - ''' - ''' - ''' - Private Function ProcessIncludes(source As List(Of String), ByRef IncludeList As List(Of String)) As List(Of CommandLine.CommandLine) -#Const DEBUG = 1 - -#If DEBUG Then - Dim LQuery = (From i As Integer In source.Sequence - Let strItemLine As String = source(i) - Let Tokens = CommandLine.CommandLine.TryParse(strItemLine.Trim, DuplicatedAllowed:=True) - Where String.Equals(Tokens.Name, "include", StringComparison.OrdinalIgnoreCase) - Let sourceFile As String = Tokens.Tokens(1) - Select LineNumber = i, sourceLine = strItemLine, sourceFile - Order By LineNumber Ascending).ToArray -#Else - Dim LQuery = (From i As Integer In source.Sequence.AsParallel - Let strItemLine As String = source(i) - Let Tokens = CommandLine.CommandLine.TryParse(strItemLine.Trim) - Where String.Equals(Tokens.Name, "include", StringComparison.OrdinalIgnoreCase) - Let sourceFile As String = Tokens.Tokens(1) - Select LineNumber = i, sourceLine = strItemLine, sourceFile - Order By LineNumber Ascending).ToArray -#End If - Dim sourceList = (From strLine As String In source Select CommandLine.CommandLine.TryParse(strLine, True)).ToList - - If LQuery.IsNullOrEmpty Then - Return sourceList - End If - - Call IncludeList.AddRange((From item In LQuery Select item.sourceFile).ToArray) - - If CheckCycleReference(IncludeList) = True Then - Throw New Runtime.Objects.ObjectModels.Exceptions.CircularReferencesException With {.IncludeList = IncludeList.ToArray} - End If - - For Each Line In LQuery - Call sourceList.RemoveAt(Line.LineNumber) - Call sourceList.InsertRange(Line.LineNumber, InternalProcessIncludes(path:=Line.sourceFile, IncludedList:=IncludeList)) - Next - - Return sourceList - End Function - - ''' - ''' 当函数返回TRUE的时候,表示有循环引用,则抛出错误 - ''' - ''' - ''' - ''' - Private Shared Function CheckCycleReference(includeList As Generic.IEnumerable(Of String)) As Boolean - Dim LQuery = (From s As String In includeList.AsParallel Select FileIO.FileSystem.GetFileInfo(s).FullName Group By FullName Into Group).ToArray - Dim Check = (From item In LQuery Where item.Group.Count > 1 Select 1).ToArray - Return Not Check.IsNullOrEmpty - End Function - - ''' - ''' tokens 0 -> include - ''' tokens 1 - ''' - ''' - ''' - ''' - Private Function InternalProcessIncludes(path As String, IncludedList As List(Of String)) As List(Of CommandLine.CommandLine) - Dim Commands As List(Of String) = ShoalShell.Interpreter.DelegateDeclaration.TryParse(FileIO.FileSystem.ReadAllText(path), ScriptEngine.InternalEntryPointManager).ToList - Dim source = ProcessIncludes(Commands, IncludedList) - Return source - End Function - - Private Function TypeSpecificVector(argvs As String, typeid As String) As Object - Dim array = Me._InternalCommands.CreateArray(argvs) - Dim castMethod = BuildInModules.System.Array.CastedTypes(typeid.ToLower) - Dim LQuery = castMethod(array) - Return LQuery - End Function - - Private Function InternalDelayGetValue(ref As String) As Object - Dim ScriptRef = Me.CreateScriptObject(ref) - Dim value = ScriptRef.Execute - Return value - End Function - - ''' - ''' 返回å˜é‡åå’Œå˜é‡çš„赋值方法;对于方法调用,总是将得到的值赋值给一个ä¿ç•™çš„系统å˜é‡ - ''' - ''' - ''' è¿™ä¸ªå‚æ•°æ˜¯ç”±å‡½æ•°æ‰€ä¼ é€’è¿›æ¥çš„ - ''' - ''' - Private Function InternalTryParse(Command As CommandLine.CommandLine, LineNumber As Integer, Optional ExtensionMethodVariable As String = "") As Runtime.Objects.ObjectModels.ScriptCodeLine - Dim ExtMethod As Runtime.Objects.ObjectModels.ScriptCodeLine - Dim VariableName As String = Regex.Match(Command.CLICommandArgvs, VARIABLE_ASSIGNMENT, RegexOptions.IgnoreCase).Value - Dim GetValue As Func(Of Object) = Function() -1 - Dim OriginalCommand As String = Command.CLICommandArgvs - Dim ReturnType As String - - '请ä¸è¦å†ä¿®æ”¹æœ¬å‡½æ•°ä¹‹ä¸­çš„语法对象的解æžé¡ºåºäº†ï¼Œå½“å‰çš„è§£æžé¡ºåºå·²ç»å¾ˆå¥½çš„æ»¡è¶³äº†è¯­æ³•ç‰¹æ€§å’Œè§£æžæ•ˆçŽ‡çš„éœ€æ±‚äº† - - Dim InternalTextProceeding As ShoalShell.Runtime.Objects.ObjectModels.ScriptCodeLine = ShoalShell.Interpreter.InternalTextEngine.SyntaxParser(Command, Me.ScriptEngine._EngineMemoryDevice) - - If Not InternalTextProceeding Is Nothing Then - InternalTextProceeding.LineNumber = LineNumber - InternalTextProceeding.LineFlag = LineNumber - - Return InternalTextProceeding - End If - - If InStr(OriginalCommand, " > ") > 0 Then - Dim Test As String = "$" & VariableName - If InStr(OriginalCommand, Test) >= 1 Then - VariableName = Test - End If - Dim SavePath As String = OriginalCommand.Replace(VariableName, "").Trim - SavePath = SavePath.GetString(wrapper:="""") - VariableName = VariableName.Replace(" > ", "").Trim - GetValue = Function() _IOSupport.WriteData(VariableName, SavePath) - Return New Runtime.Objects.ObjectModels.ScriptCodeLine With - { - .LineNumber = LineNumber, - .LineFlag = LineNumber, - .VariableAssigned = "$", - .OrignialScriptLine = OriginalCommand, - .InvokeMethod = GetValue} - End If - - If InStr(OriginalCommand, " < ") > 0 Then - Dim Right As String = OriginalCommand.Replace(VariableName, "").Trim - Dim typeid As String = Regex.Match(Right, "\(.+\)").Value - Right = Right.Replace(typeid, "").Trim - Right = Right.GetString(wrapper:="""") - VariableName = VariableName.Replace(" < ", "").Trim - typeid = Mid(typeid, 2) - typeid = Mid(typeid, 1, Len(typeid) - 1) - - GetValue = Function() As Object - Dim source As Object = Me.ScriptEngine._EngineMemoryDevice.TryGetValue(Right) - Dim value = _InputSupport.TypeCasting(source, typeid) - Return value - End Function - - Return New Runtime.Objects.ObjectModels.ScriptCodeLine With - { - .LineNumber = LineNumber, - .LineFlag = LineNumber, - .VariableAssigned = VariableName, - .OrignialScriptLine = OriginalCommand, - .InvokeMethod = GetValue} - End If - - If InStr(OriginalCommand, " <= ") > 0 Then '进行集åˆç›¸å…³çš„æ“ä½œ - - Dim ArrayGetItem As String = OriginalCommand.Replace(VariableName, "").Trim - - ' [$collection] <= element 'å‘集åˆçš„尾部添加一个元素 - Dim testTemp As String = Regex.Match(VariableName, "\[\$.+?\]").Value - If Not String.IsNullOrEmpty(testTemp) Then - VariableName = Mid(testTemp, 2, Len(testTemp) - 2) '集åˆåç§° - VariableName = Mid(VariableName, 2) - Dim value = Function() InternalDelayGetValue(ArrayGetItem) - GetValue = Function() BuildInModules.System.Array.AppendCollection(Me._RuntimeEnvironment._EngineMemoryDevice.TryGetValue(VariableName), element:=value()) - - GoTo COLLECTION_LINE - Else - - - - End If - - VariableName = VariableName.Replace(" <= ", "").Trim - - Const SPECIFIC_TYPE_VECTOR As String = "\((integer|double|boolean|string|long)\)\s+("".+""|\S+)" - - Dim tmp As String = Regex.Match(ArrayGetItem, pattern:=SPECIFIC_TYPE_VECTOR, options:=RegexOptions.IgnoreCase).Value - If Not String.IsNullOrEmpty(tmp) Then - Dim type As String = Regex.Match(tmp, "\(.+?\)").Value - Dim typeId = Mid(type, 2) - typeId = Mid(typeId, 1, Len(typeId) - 1) - tmp = tmp.Replace(type, "").Trim - GetValue = Function() TypeSpecificVector(argvs:=tmp, typeid:=typeId) - Else - GetValue = Function() BuildInModules.System.Array.get_Item(ArrayGetItem, Memory:=Me._RuntimeEnvironment._EngineMemoryDevice) - End If - -COLLECTION_LINE: Return New Runtime.Objects.ObjectModels.ScriptCodeLine With { - .LineNumber = LineNumber, .LineFlag = LineNumber, - .VariableAssigned = VariableName, - .OrignialScriptLine = OriginalCommand, - .InvokeMethod = GetValue, - .ReturnType = GetType(Object).FullName} - End If - - If InStr(OriginalCommand, " => ") > 0 Then - Dim var As String = Mid(OriginalCommand, InStr(OriginalCommand, " => ")) - Dim Expression As String = OriginalCommand.Replace(var, "").Trim - VariableName = var.Replace(" => ", "").Trim - GetValue = Function() BuildInModules.System.Array.set_Item(expression:=Expression, [object]:=VariableName, memory:=Me._RuntimeEnvironment._EngineMemoryDevice) - Return New Runtime.Objects.ObjectModels.ScriptCodeLine With { - .LineNumber = LineNumber, .LineFlag = LineNumber, - .VariableAssigned = VariableName, - .OrignialScriptLine = OriginalCommand, - .InvokeMethod = GetValue} - End If - - ' Pushing the .NET variable into the hybirds scripting environment - If InStr(OriginalCommand, " >> ") > 0 Then - Dim Test As String = "$" & VariableName - If InStr(OriginalCommand, Test) >= 1 Then - VariableName = Test - End If - Dim ExternalScriptVariable As String = OriginalCommand.Replace(VariableName, "").Trim - VariableName = VariableName.Replace(" >> ", "").Trim - GetValue = Function() _RuntimeEnvironment.ExternalScriptInteropSetValue(ExternalScriptVariable, Me._RuntimeEnvironment._EngineMemoryDevice.TryGetValue(VariableName)) - Return New Runtime.Objects.ObjectModels.ScriptCodeLine With { - .LineNumber = LineNumber, - .LineFlag = LineNumber, - .VariableAssigned = VariableName, - .OrignialScriptLine = OriginalCommand, - .InvokeMethod = GetValue} - End If - - 'invoke the external hybrid programming script statement and get the return value.(调用外部的脚本并返回计算结果) - If InStr(OriginalCommand, " << ") > 0 Then - Dim ExternalScript As String = OriginalCommand.Replace(VariableName, "").Trim - VariableName = VariableName.Replace(" << ", "").Trim - - If ExternalScript.First = "!"c Then 'å¼•ç”¨äº†ä¹‹å‰æ‰€è§£æžå¥½çš„è„šæœ¬å— - Dim Environment As String = Regex.Match(ExternalScript, "!\S+").Value - Dim Cmdl As CommandLine.CommandLine = CommandLine.CommandLine.TryParse(ExternalScript.Replace(Environment, "").Trim) - - Environment = Mid(Environment, 2) - GetValue = Function() _RuntimeEnvironment._HybridScriptingInteropEntryPointHandler.Evaluate(Environment, Cmdl) - Else - GetValue = Function() _RuntimeEnvironment.ExternalScriptInteropEvaluate(ExternalScript) - End If - - Return New Runtime.Objects.ObjectModels.ScriptCodeLine With { - .LineNumber = LineNumber, .LineFlag = LineNumber, - .VariableAssigned = VariableName, - .OrignialScriptLine = OriginalCommand, - .InvokeMethod = GetValue} - End If - - 'self type cast - 'equals to the statement: var <- $var -> ctype - If InStr(OriginalCommand, " ~ ") > 0 Then - Dim NewToken As String = VariableName.Replace(" ~ ", " -> ") - Command = OriginalCommand.Replace(VariableName, NewToken) - Dim Code = InternalTryParse(Command, LineNumber) - Code.VariableAssigned = VariableName.Split.First - Return Code - End If - - If OriginalCommand.First = "$"c Then 'å‡è‹¥å¼€å¤´ä¸º$符å·ï¼Œåˆ™æ„å‘³ç€æœ¬è¡Œå‘½ä»¤å¯èƒ½æ˜¯å†…存中的å˜é‡çš„引用,也å¯èƒ½ä¸ºæ‹“展函数 - ExtMethod = TryParseExtensionMethodSyntax(OriginalCommand, LineNumber) - If Not ExtMethod Is Nothing Then - ExtMethod.OrignialScriptLine = OriginalCommand - Return ExtMethod - End If - - Return New Runtime.Objects.ObjectModels.ScriptCodeLine With { - .LineNumber = LineNumber, .LineFlag = LineNumber, .OrignialScriptLine = Command.CLICommandArgvs, - .VariableAssigned = "$", - .InvokeMethod = Function() _OutputSupport.HandleOutput(variable:=Command.CLICommandArgvs)} - End If - If OriginalCommand.First = "&" Then 'å‡è‹¥å¼€å¤´ä¸º&符å·ï¼Œåˆ™æ„å‘³ç€æœ¬è¡Œå‘½ä»¤å¯èƒ½æ˜¯å¼•用内存中的常数 - Return New Runtime.Objects.ObjectModels.ScriptCodeLine With { - .LineNumber = LineNumber, .LineFlag = LineNumber, .OrignialScriptLine = Command.CLICommandArgvs, - .VariableAssigned = "$", - .InvokeMethod = Function() _RuntimeEnvironment.PrintConstant(Command.CLICommandArgvs)} - End If - - If OriginalCommand.First = "!" Then 'Mount the hybrid programming entry point.(挂载混åˆç¼–程的脚本环境的执行载入点) - Dim Name As String = Mid(OriginalCommand, 2).Trim - Return New Runtime.Objects.ObjectModels.ScriptCodeLine With { - .LineNumber = LineNumber, .LineFlag = LineNumber, .OrignialScriptLine = Command.CLICommandArgvs, - .VariableAssigned = "$", - .InvokeMethod = Function() _RuntimeEnvironment.AttachesEntryPoint(Name)} - End If - - Dim ExeType As ShoalShell.Runtime.Objects.ObjectModels.ScriptCodeLine.PreExecuteTypes - - If String.IsNullOrEmpty(VariableName) Then '本命令å¯èƒ½æ˜¯å¯¹ç³»ç»Ÿå†…éƒ¨å‘½ä»¤è¿›è¡Œè°ƒç”¨ï¼Œä»¥åŠæ²¡æœ‰Call的命令调用 - If InStr(OriginalCommand, "call ", CompareMethod.Text) = 1 Then - Command = Mid(OriginalCommand, 6).Trim - End If - - ExtMethod = TryParseExtensionMethodSyntax(Command.CLICommandArgvs, LineNumber) - If Not ExtMethod Is Nothing Then - ExtMethod.OrignialScriptLine = OriginalCommand - Return ExtMethod - End If - - VariableName = Runtime.Objects.I_MemoryManagementDevice.CONSERVED_SYSTEM_VARIABLE - Dim Handle = TryParseCommand(Command, ExtensionMethodVariable, ExeType) - GetValue = Handle.Value - ReturnType = Handle.Key.FullName - Else - If InStr(OriginalCommand, VariableName) = 1 Then '本å¥è„šæœ¬å‘½ä»¤è°ƒç”¨äº†ä¸€ä¸ªæ–¹æ³•ï¼Œç„¶åŽå°†å¾—到的值返回给一个å˜é‡ - Dim strCommand = Mid(OriginalCommand.Trim, Len(VariableName) + 1) - VariableName = VariableName.Split.First - - ExtMethod = TryParseExtensionMethodSyntax(strCommand, LineNumber) - If Not ExtMethod Is Nothing Then - ExtMethod.VariableAssigned = VariableName - ExtMethod.OrignialScriptLine = OriginalCommand - Return ExtMethod '拓展方法通过本路径返回,对于其他方法调用,则在函数的最åŽè¿›è¡Œå¤„ç† - End If - - Dim Handle = TryParseCommand(strCommand, ExtensionMethodVariable, ExeType) - GetValue = Handle.Value - ReturnType = Handle.Key.FullName - Else '语法错误 - Throw New SyntaxErrorException("") With {.ScriptLine = Command.CLICommandArgvs, .LineNumber = LineNumber} - End If - End If - - Return New Runtime.Objects.ObjectModels.ScriptCodeLine With - { - .PreExecuteType = ExeType, - .ReturnType = ReturnType, - .LineNumber = LineNumber, .LineFlag = LineNumber, - .VariableAssigned = VariableName, - .OrignialScriptLine = OriginalCommand, - .InvokeMethod = GetValue - } - End Function - - Private Function TryParseExtensionMethodSyntax(Command As String, LineNumber As Integer) As Runtime.Objects.ObjectModels.ScriptCodeLine - Dim p As Integer = InStr(Command, " -> ") - - If Not p > 0 Then Return Nothing '为拓展函数语法 - - Dim ExtVariable As String = Mid(Command, 1, p - 1).Trim - - If ExtVariable.First = """"c AndAlso ExtVariable.Last = """"c Then - ExtVariable = Mid(ExtVariable, 2, Len(ExtVariable) - 2) '在这里ä¸éœ€è¦TRIMæ“作了,因为是å–目标åŒå¼•å·ä¹‹ä¸­çš„字符串 - End If - - Dim CodeLine = InternalTryParse(Mid(Command, p + 3).Trim, LineNumber, ExtVariable) - If InStr(ExtVariable, "call ") Then - ExtVariable = Mid(ExtVariable, 6).Trim - End If - - CodeLine.ExtensionMethodVariable = ExtVariable - - Return CodeLine - End Function - - Public Const EXTENSION_OPERATOR As String = "[extension$operator]" - - Private Shared Function ReGenerateExtensionCommand(Command As CommandLine.CommandLine, ExtendedVariable As String) As CommandLine.CommandLine - Dim Tokens = Command.Tokens.ToList - Call Tokens.AddRange(New String() {EXTENSION_OPERATOR, ExtendedVariable}) - Return CommandLine.CommandLine.TryParse(CommandLine.CommandLine.Join(Tokens), DuplicatedAllowed:=True) - End Function - - ''' - ''' 这里是处ç†å·²ç»å¯¼å…¥çš„命令 - ''' - ''' - ''' - ''' - Public Function InternalGetImportsCommandEntryPoint(cmdInfo As CommandLine.CommandLine, ByRef ExeType As ShoalShell.Runtime.Objects.ObjectModels.ScriptCodeLine.PreExecuteTypes) As KeyValuePair(Of Type, Func(Of Object)) - Dim cmd = Me._RuntimeEnvironment.InternalEntryPointManager.MethodLoader.GetCommand(cmdInfo) - - ExeType = Runtime.Objects.ObjectModels.ScriptCodeLine.PreExecuteTypes.Normal - - If String.Equals(cmdInfo.Name, "imports", StringComparison.OrdinalIgnoreCase) OrElse String.Equals(cmdInfo.Name, "library", StringComparison.OrdinalIgnoreCase) Then - Call cmd() - If String.Equals(cmdInfo.Name, "imports", StringComparison.OrdinalIgnoreCase) Then - ExeType = Runtime.Objects.ObjectModels.ScriptCodeLine.PreExecuteTypes.Imports - Else - ExeType = Runtime.Objects.ObjectModels.ScriptCodeLine.PreExecuteTypes.Library - End If - Return New KeyValuePair(Of Type, Func(Of Object))(GetType(String), Function() cmdInfo.CLICommandArgvs) - ElseIf String.Equals(cmdInfo.Name, "for.each", StringComparison.OrdinalIgnoreCase) Then - Me._InternalCommands._InternalVariableName_ForEach = cmdInfo("in") - If Me._InternalCommands._InternalVariableName_ForEach.First = "$"c OrElse Me._InternalCommands._InternalVariableName_ForEach.First = "&"c Then - If Len(Me._InternalCommands._InternalVariableName_ForEach) > 1 Then - Me._InternalCommands._InternalVariableName_ForEach = Mid(Me._InternalCommands._InternalVariableName_ForEach, 2) - End If - End If - Return New KeyValuePair(Of Type, Func(Of Object))(GetType(Object), cmd) - ElseIf String.Equals(cmdInfo.Name, "dowhile", StringComparison.OrdinalIgnoreCase) Then - Me._InternalCommands._InternalVariableName_DoWhile = cmdInfo("test") - If Me._InternalCommands._InternalVariableName_DoWhile.First = "$"c OrElse Me._InternalCommands._InternalVariableName_DoWhile.First = "&"c Then - If Len(Me._InternalCommands._InternalVariableName_DoWhile) > 1 Then - Me._InternalCommands._InternalVariableName_DoWhile = Mid(Me._InternalCommands._InternalVariableName_DoWhile, 2) - End If - End If - Return New KeyValuePair(Of Type, Func(Of Object))(GetType(Object), cmd) - Else - Return New KeyValuePair(Of Type, Func(Of Object))(GetType(Object), cmd) - End If - End Function - - ''' - ''' - ''' - ''' å…¶å®žå‡½æ•°è¿”å›žçš„ä¹Ÿæ˜¯ä¸€ä¸ªé›†åˆ - ''' - ''' - Private Function CastValue(castMethod As Func(Of Object(), Object), value As String) As Object - - Dim val As Object = Me.ScriptEngine.GetValue(value) - val = castMethod({value}) - - Dim IList = DirectCast(val, IEnumerable) - Dim OnlyFirstValue = IList(0) - Return OnlyFirstValue - - End Function - - ''' - ''' å¯¹äºŽæ‹“å±•æ–¹æ³•è€Œè¨€ï¼Œæ‰€è°ƒç”¨çš„ç›®æ ‡æ‹“å±•æ–¹æ³•ä¹‹ä¸­çš„ç¬¬ä¸€ä¸ªå‚æ•°ä¸ºè°ƒç”¨ç›®æ ‡æ‹“展方法的对象 - ''' - ''' - ''' - ''' - Private Function TryParseCommand(cmdInfo As CommandLine.CommandLine, ExtendedVariable As String, ByRef ExeType As ShoalShell.Runtime.Objects.ObjectModels.ScriptCodeLine.PreExecuteTypes) As KeyValuePair(Of Type, Func(Of Object)) - If Not String.IsNullOrEmpty(ExtendedVariable) Then 'å‡è‹¥ç›®æ ‡ä¸ºæ‹“å±•æ–¹æ³•ï¼Œåˆ™ä¼šåœ¨è¿™é‡Œé‡æ–°ç”Ÿæˆå‘½ä»¤è¡Œ,添加一个-operatorçš„å‚æ•° - cmdInfo = ReGenerateExtensionCommand(cmdInfo, ExtendedVariable) - End If - - If Me._RuntimeEnvironment.InternalEntryPointManager.ExistsCommand(cmdInfo.Tokens.First) Then '这里是处ç†å·²ç»å¯¼å…¥çš„命令 - Return InternalGetImportsCommandEntryPoint(cmdInfo, ExeType) - End If - - If cmdInfo.Tokens.Count = 1 Then 'ä»…è§£æžå‡ºä¸€ä¸ªè¯å…ƒçš„æ—¶å€™ï¼Œå‡è‹¥è®¤ä¸ºç›®æ ‡å¯¹è±¡ä¸ºAssemblyName但是找ä¸åˆ°æ–¹æ³•,所以认为其应该是一个赋值用的å˜é‡ - Dim GetValue As Func(Of Object) = Function() As Object - Dim var As String = cmdInfo.Tokens.First() - Dim obj As Object = If(_RuntimeEnvironment._EngineMemoryDevice.ExistsVariable(var), - _RuntimeEnvironment._EngineMemoryDevice.TryGetValue(var), - _RuntimeEnvironment._EngineMemoryDevice.FormatString(var)) - Call Console.WriteLine(" = [0] {0}", obj.ToString) - Return obj - End Function - Return New KeyValuePair(Of Type, Func(Of Object))(GetType(String), GetValue) - End If - - If Regex.Match(cmdInfo.Tokens(0), "\(.+?\)").Success Then - - ' è¿›è¡Œå¼ºåˆ¶ç±»åž‹è½¬æ¢ - Dim TypeRef As String = Mid(cmdInfo.Tokens(0), 2, Len(cmdInfo.Tokens(0)) - 2) - Dim value As String = cmdInfo.Tokens(1) - - Dim castMethod As Func(Of Object(), Object) = BuildInModules.System.Array.CastedTypes(TypeRef.ToLower) - Return New KeyValuePair(Of Type, Func(Of Object))(GetType(Object), Function() CastValue(castMethod, value)) - - End If - - Dim AssemblyName As String = cmdInfo.Tokens.First - Dim Command As String = Mid(cmdInfo.CLICommandArgvs, 1 + Len(AssemblyName)).Trim - Dim cmdName As String = cmdInfo.Tokens(1) - - If InStr(AssemblyName, "::") > 0 Then - Dim Tokens As String() = Strings.Split(AssemblyName, "::") - AssemblyName = Tokens.First - cmdName = Tokens.Last - Command = "system->invoke() " & Command - End If - - '下é¢çš„ä»£ç æ˜¯å¤„ç†æ²¡æœ‰å¯¼å…¥çš„æ–¹æ³•,所有的通过命å空间导入的方法都是共享方法 - - Dim MethodInfo As System.Reflection.MethodInfo() = _DelegateRegistry.GetMethod(AssemblyName, cmdName, _RuntimeEnvironment._EngineMemoryDevice) - Dim Invoke As Func(Of Object) - Dim ReturnType As Type - - If MethodInfo.Count = 1 Then - Dim EntryPoint = MethodInfo.First - Invoke = Function() Me._InternalMethodInvoker.CallMethod(EntryPoint, Command, _RuntimeEnvironment._EngineMemoryDevice) - ReturnType = EntryPoint.ReturnType - Else - Dim CallEntry = New ShoalShell.DelegateHandlers.EntryPointHandlers.CommandMethodEntryPoint("VB$AnonymousDirectlyNamespace.Invoke", MethodInfo) - Invoke = Function() Me._InternalMethodInvoker.CallMethod(EntryPoint:=CallEntry, argvs:=Command, MemoryDevice:=_RuntimeEnvironment._EngineMemoryDevice, TypeSignature:="") - ReturnType = GetType(System.Object) - End If - - Return New KeyValuePair(Of Type, Func(Of Object))(ReturnType, Invoke) - End Function - - Public Function TryGetCommand(Command As String) As DelegateHandlers.EntryPointHandlers.CommandMethodEntryPoint - Dim cmdInfo = CommandLine.CommandLine.TryParse(Command) - - If Me._RuntimeEnvironment.InternalEntryPointManager.ExistsCommand(cmdInfo.Tokens.First) Then - Return Me.ScriptEngine.InternalEntryPointManager(cmdInfo.Tokens.First) - End If - - If cmdInfo.Tokens.Count = 1 Then 'ä»…è§£æžå‡ºä¸€ä¸ªè¯å…ƒçš„æ—¶å€™ï¼Œå‡è‹¥è®¤ä¸ºç›®æ ‡å¯¹è±¡ä¸ºAssemblyName但是找ä¸åˆ°æ–¹æ³•,抛出错误 - Throw New SyntaxErrorException("Command name was not specific!") With {.ScriptLine = Command} - End If - - Dim AssemblyName As String = cmdInfo.Tokens.First : Command = Mid(Command, 1 + Len(AssemblyName)).Trim - Dim cmdName As String = cmdInfo.Tokens(1) - Dim MethodInfo As System.Reflection.MethodInfo() = _DelegateRegistry.GetMethod(AssemblyName, cmdName, _RuntimeEnvironment._EngineMemoryDevice) - - Return DelegateHandlers.EntryPointHandlers.CommandMethodEntryPoint.NamespaceDirectlyCalled(MethodInfo) - End Function - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/ObjectModels/Expressions/Expression.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/ObjectModels/Expressions/Expression.vb deleted file mode 100644 index 0db19370e..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/ObjectModels/Expressions/Expression.vb +++ /dev/null @@ -1,297 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.ObjectModels.Tokens - -Namespace Interpreter.ObjectModels.Statements - - Public MustInherit Class Statement - - Public MustOverride ReadOnly Property TypeID As Statement.Types - ''' - ''' 本å¥ä»£ç åœ¨è„šæœ¬ä¹‹ä¸­çš„åŽŸå§‹çš„è¡Œæ•° - ''' - ''' - Public Property OriginalLineNumber As Integer - ''' - ''' 语å¥åŽé¢æ‰€å‡ºçŽ°çš„æ³¨é‡Šä¿¡æ¯ - ''' - ''' - Public Property Comments As String '语å¥åŽé¢æ‰€å‡ºçŽ°çš„æ³¨é‡Šä¿¡æ¯ - - Protected _originalExpression As String - - ''' - ''' 原始的表达å¼å­—符串 - ''' - ''' - Public ReadOnly Property Expression As String - Get - Return _originalExpression - End Get - End Property - - Sub New(Expression As String) - _originalExpression = Expression - End Sub - - Public Overrides Function ToString() As String - Return _originalExpression - End Function - - Public Enum Types - Comment - BlankCode - - Expression - [GoTo] - GotoTag - [Imports] - SyntaxError - OutputRef - MethodCalling - OnErrorResumeNext - Library - Include - - VariableDeclaration - End Enum - End Class - - ''' - ''' Dynamics install a external module in the runtime. - ''' - Public Class Library : Inherits Statement - - Public Overrides ReadOnly Property TypeID As Types - Get - Return Types.Library - End Get - End Property - - Public Property Assembly As String - - Sub New(Expression As String) - Call MyBase.New(Expression) - End Sub - End Class - - Public Class Include : Inherits Statement - - Public Overrides ReadOnly Property TypeID As Types - Get - Return Types.Include - End Get - End Property - - ''' - ''' The file path of the external script - ''' - ''' - Public Property ExternalScript As String - - Sub New(Expression As String) - Call MyBase.New(Expression) - End Sub - End Class - - Public Class SyntaxError : Inherits Statement - - Public Overrides ReadOnly Property TypeID As Types - Get - Return Types.SyntaxError - End Get - End Property - - Dim _Ex As String - -#Region "If any one of the property in this region is true, that means the line of this code is not a True syntax error, it just can't be parsing as any statement expression in the shoal language." - - ''' - ''' 对于空白行,是无法被解æžå‡ºæ¥çš„ï¼Œä½†æ˜¯ç©ºç™½è¡Œä¸æ˜¯è¯­æ³•错误 - ''' - ''' - Public ReadOnly Property IsBlankLineSyntax As Boolean - Get - Return String.IsNullOrEmpty(MyBase._originalExpression.TrimA) - End Get - End Property - - Public ReadOnly Property IsCommentsSyntax As Boolean - Get - If IsBlankLineSyntax Then - Return False - End If - - Return Trim(_originalExpression).First = "#"c - End Get - End Property -#End Region - - Public ReadOnly Property IsSyntaxError As Boolean - Get - Return Not (IsBlankLineSyntax OrElse IsCommentsSyntax) - End Get - End Property - - Sub New(ex As String, Expression As String) - Call MyBase.New(Expression) - _Ex = If(IsBlankLineSyntax OrElse IsCommentsSyntax, Expression, ex) - End Sub - - Public Overrides Function ToString() As String - Return _Ex & " at line: " & Me.OriginalLineNumber - End Function - End Class - - ''' - ''' è§£æžå‡ºæ¥çš„表达å¼ä¹‹ä¸­åªå«æœ‰ä¸€ä¸ªè¯å…ƒï¼Œå¹¶ä¸”䏿˜¯æ³¨é‡Šï¼Œåˆ™é»˜è®¤è®¤ä¸ºæ˜¯å˜é‡æŸ¥çœ‹æ“作,值默认赋值给系统å˜é‡$ - ''' - Public Class OutputRef : Inherits Statement - - Public Overrides ReadOnly Property TypeID As Types - Get - Return Types.OutputRef - End Get - End Property - - Public ReadOnly Property InnerExpression As Tokens.InternalExpression - - Sub New(Expression As String) - Call MyBase.New(Expression) - _InnerExpression = New InternalExpression(Expression) - End Sub - End Class - - Public Class VariableDeclaration : Inherits Statement - - Public Overrides ReadOnly Property TypeID As Types - Get - Return Types.VariableDeclaration - End Get - End Property - - Public Property Variable As String - ''' - ''' å˜é‡çš„ç±»åž‹çº¦æŸ - ''' - ''' - Public Property Type As String - Public Property InterExpression As InternalExpression - - Sub New(Expression As String) - Call MyBase.New(Expression) - End Sub - End Class - - ''' - ''' Gotoè¯­å¥ - ''' - Public Class [GOTO] : Inherits Statement - - 'GOTO When - 'GOTO 33 When {$boolean} - - Public Property BooleanExpression As Tokens.InternalExpression - Public Property GotoFlag As Tokens.InternalExpression - - Public Overrides ReadOnly Property TypeID As Types - Get - Return Types.GoTo - End Get - End Property - - Sub New(Expression As String) - Call MyBase.New(Expression) - End Sub - - Public Overrides Function ToString() As String - Return $"GOTO {GotoFlag} When {BooleanExpression.ToString}" - End Function - - End Class - - ''' - ''' Goto的标签 - ''' - Public Class GotoTag : Inherits Statement - - Public Overrides ReadOnly Property TypeID As Types - Get - Return Types.GotoTag - End Get - End Property - - Public Property TagData As String - - Sub New(Expression As String) - Call MyBase.New(Expression) - End Sub - End Class - - ''' - ''' - ''' - Public Class [Imports] : Inherits Statement - - ''' - ''' å­—ç¬¦ä¸²å¸¸é‡æˆ–è€…å†…éƒ¨è¡¨è¾¾å¼ - ''' - ''' - Public Property [Namespace] As String - - Sub New(Expression As String) - Call MyBase.New(Expression) - End Sub - - Public Overrides ReadOnly Property TypeID As Types - Get - Return Types.Imports - End Get - End Property - - Public ReadOnly Property IsNamespaceInternalExpression As Boolean - Get - Return [Namespace].First = "{"c AndAlso [Namespace].Last = "}"c - End Get - End Property - - Public Function Execute(ScriptEngine As ShoalShell.Runtime.Objects.ShellScript) As Boolean - - Dim nsValue As String = [Namespace] - - If IsNamespaceInternalExpression Then - nsValue = New InternalExpression(nsValue).GetValue(ScriptEngine) - End If - - Return ScriptEngine.InternalEntryPointManager.ImportsNamespace(nsValue) > 0 - End Function - End Class - - Public Class OnErrorResumeNext : Inherits Statement - - Public Overrides ReadOnly Property TypeID As Types - Get - Return Types.OnErrorResumeNext - End Get - End Property - - Sub New(Expression As String) - Call MyBase.New(Expression) - End Sub - - Public Shared Function IsOnErrorResumeNext(Tokens As Tokens.Token()) As Boolean - - If Tokens.Count <> 4 Then - Return False - End If - - Dim Flag As String() = {"On", "Error", "Resume", "Next"} - - For p As Integer = 0 To Flag.Count - 1 - If Not String.Equals(Tokens(p).GetTokenValue, Flag(p), StringComparison.OrdinalIgnoreCase) Then - Return False - End If - Next - - Return True - End Function - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/ObjectModels/Expressions/MethodCalling.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/ObjectModels/Expressions/MethodCalling.vb deleted file mode 100644 index 5ed38e6c3..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/ObjectModels/Expressions/MethodCalling.vb +++ /dev/null @@ -1,187 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.ObjectModels.Tokens - -Namespace Interpreter.ObjectModels.Statements - - ''' - ''' åªæ˜¯è°ƒç”¨æ–¹æ³•,函数的返回值直接返回给系统å˜é‡$ - ''' - Public Class MethodCalling : Inherits Statement - - Public Overrides ReadOnly Property TypeID As Types - Get - Return Types.MethodCalling - End Get - End Property - - ''' - ''' 对于类型而言,其ä¸ä»…仅调用一个方法,而且还将方法的返回值赋值给一个指定的左端å˜é‡ï¼Œ - ''' 由于å˜é‡ä¹‹é—´èµ‹å€¼ä¼ é€’的情况也å¯èƒ½å­˜åœ¨ï¼Œæ•…而这个属性也å¯èƒ½æ˜¯å¼•用一个内存地å€ï¼Œå½“找ä¸åˆ°æ–¹æ³•çš„æ—¶å€™ï¼Œå°±ä¼šé€šè¿‡è¿™ä¸ªå‚æ•°æ¥æŸ¥æ‰¾å†…å­˜å˜é‡ - ''' - ''' - Public Property EntryPoint As EntryPoint - - ''' - ''' è§£æžå¾—到的顺åºåº”è¯¥å’ŒåŽŸå§‹çš„è„šæœ¬è¯­å¥æ˜¯ä¸€è‡´çš„ - ''' - ''' - Public Property Parameters As Dictionary(Of ParameterName, InternalExpression) - Public Property BooleanSwitches As String() - - Sub New(Expression As String) - Call MyBase.New(Expression) - End Sub - - Public Overridable Function Execute(ScriptEngine As ShoalShell.Runtime.Objects.ShellScript) As Object - Return MethodCalling.Execute(EntryPoint, Parameters, ScriptEngine) - End Function - - ''' - ''' ç”±äºŽæ‰€æœ‰çš„å¯¹è±¡éƒ½è¦æ˜¯åŠ¨æ€æŒ‡é’ˆæ¥ä»£æ›¿çš„,所以在这里需è¦è®¡ç®—傿•°å以åŠå‚数值的实际的ä½ç½® - ''' - ''' - ''' - ''' - ''' - Public Shared Function Execute(EntryPoint As EntryPoint, Parameters As Dictionary(Of ParameterName, InternalExpression), ScriptEngine As ShoalShell.Runtime.Objects.ShellScript) As Object - Dim ParameterValue As Dictionary(Of String, Object) = New Dictionary(Of String, Object) 'è®¡ç®—è¿‡åŽæ‰€å¾—åˆ°çš„å‚æ•°åå’Œå‚æ•°å€¼ - For Each Parameter In Parameters - Dim Name As String - If Parameter.Key.Type <> ParameterName.ParameterType.Normal Then - Name = Parameter.Key.Type.ToString - Else - Name = Parameter.Key.GetValue(ScriptEngine) - End If - - Dim value As Object = Parameter.Value.GetValue(ScriptEngine) - Call ParameterValue.Add(Name, value) - Next - - Dim [Function] = EntryPoint.TryGetEntryPoint(ScriptEngine) - Dim Handle = ScriptEngine._Interpreter._InternalMethodInvoker.FindOverloadsMethod([Function], ParameterValue, ScriptEngine._EngineMemoryDevice, "") - Dim params = GenerateParameters(ParameterValue, Handle.MethodEntryPoint) - Dim Result = Handle.Invoke(params, Handle.InvokeOnObject, True) - Return Result - End Function - - ''' - ''' 生æˆå¯é€‰å‚数以åŠå¼€å…³å‚æ•° - ''' - ''' - Private Shared Function GenerateParameters(ParameterValue As Dictionary(Of String, Object), Method As System.Reflection.MethodInfo) As Object() - Dim List As New List(Of Object) - Dim offset As Integer = 1 - - If ParameterValue.ContainsKey(ShoalShell.Interpreter.ObjectModels.Tokens.ParameterName.s_ExtensionMethodCaller) Then - Call List.Add(ParameterValue(ShoalShell.Interpreter.ObjectModels.Tokens.ParameterName.s_ExtensionMethodCaller)) - Call ParameterValue.Remove(ShoalShell.Interpreter.ObjectModels.Tokens.ParameterName.s_ExtensionMethodCaller) - - If ParameterValue.ContainsKey(ShoalShell.Interpreter.ObjectModels.Tokens.ParameterName.s_EXtensionSingleParameter) Then - Call List.Add(ParameterValue(ShoalShell.Interpreter.ObjectModels.Tokens.ParameterName.s_EXtensionSingleParameter)) - Call ParameterValue.Remove(ShoalShell.Interpreter.ObjectModels.Tokens.ParameterName.s_EXtensionSingleParameter) - - offset = 2 - End If - - Else - If ParameterValue.ContainsKey(ShoalShell.Interpreter.ObjectModels.Tokens.ParameterName.s_SingleParameter) Then - Call List.Add(ParameterValue(ShoalShell.Interpreter.ObjectModels.Tokens.ParameterName.s_SingleParameter)) - Call ParameterValue.Remove(ShoalShell.Interpreter.ObjectModels.Tokens.ParameterName.s_SingleParameter) - End If - End If - - For Each parameter In Method.GetParameters.Skip(offset) - If ParameterValue.ContainsKey(parameter.Name) Then - Call List.Add(ParameterValue(parameter.Name)) - Call ParameterValue.Remove(parameter.Name) - Else - - '但是为å¯é€‰å‚数或者为逻辑值 - If parameter.IsOptional Then - Call List.Add(parameter.DefaultValue) - ElseIf parameter.ParameterType.Equals(GetType(Boolean)) - Call List.Add(False) '开关傿•°é»˜è®¤ä¸ºFalse - Else - - '语法错误 - Throw New ShoalShell.Runtime.Objects.ObjectModels.Exceptions.SyntaxErrorException($"Could not found the parameter value for ""{parameter.Name} As {parameter.ParameterType.FullName}""!") - - End If - End If - Next - - Return List.ToArray - End Function - End Class - - ' a <- $b - ' a = $b - ' a = $b -> method - ' call $a -> method - - - ''' - ''' 本表达å¼å¯¹è±¡ä»…ä»…è§£æžå‡ºè¯å…ƒå¯¹è±¡ - ''' - Public Class Expression : Inherits MethodCalling - - Public Property LeftAssignedVariable As LeftAssignedVariable - Public Property [Operator] As [Operator] - Public Property ExtensionVariable As LeftAssignedVariable - - Sub New(Expression As String) - Call MyBase.New(Expression) - End Sub - - ''' - ''' åªæœ‰å·¦ç«¯å¼•用表达å¼ä¸ä¸ºç©ºï¼Œå…¶ä»–的元素都为空 - ''' - ''' - Public ReadOnly Property IsVariable As Boolean - Get - If Not [Operator] Is Nothing Then - Return False - End If - If Not EntryPoint Is Nothing Then - Return False - End If - If Not Parameters.IsNullOrEmpty Then - Return False - End If - - Return Not LeftAssignedVariable Is Nothing - End Get - End Property - - Public Overrides ReadOnly Property TypeID As Types - Get - Return Types.Expression - End Get - End Property - - Public Overrides Function Execute(ScriptEngine As ShoalShell.Runtime.Objects.ShellScript) As Object - - If IsVariable Then - Return LeftAssignedVariable.GetValue(ScriptEngine.ScriptEngineMemoryDevice) - End If - - Dim hash = MyBase.Parameters.CopyTypeDef - If Not ExtensionVariable Is Nothing Then - Call hash.Add(New ParameterName(ParameterName.ParameterType.ExtensionMethodCaller, ""), New InternalExpression(ExtensionVariable.GetTokenValue)) - End If - - - Call hash.AddRange(MyBase.Parameters) - - Dim value = MethodCalling.Execute(EntryPoint, hash, ScriptEngine) '得到计算值,然åŽéœ€è¦è¿›è¡Œèµ‹å€¼ - - ''åœ¨è¿™é‡Œéœ€è¦æ ¹æ®è¿ç®—符的ä¸åŒæ¥é€‰æ‹©ä¸åŒçš„å¤„ç†æ–¹æ³• - 'If [Operator].Type = [Operator].Operators.ValueAssign OrElse [Operator].Type = [Operator].Operators.HybridsScript OrElse [Operator].Type = [Operator].Operators.SelfCast Then - ' Call LeftAssignedVariable.WriteMemory(value, ScriptEngine.ScriptEngineMemoryDevice) - 'End If - - Return value - End Function - - End Class - -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/ObjectModels/ScriptModel.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/ObjectModels/ScriptModel.vb deleted file mode 100644 index 4c8a975b1..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/ObjectModels/ScriptModel.vb +++ /dev/null @@ -1,94 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.ObjectModels.Statements -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.ObjectModels.Tokens - -Namespace Interpreter.ObjectModels - - ''' - ''' åªæœ‰è§£æžå‡ºæ¥çš„è¯å…ƒæ¨¡åž‹ï¼Œï¼Œæ²¡æœ‰åŒ…嫿œ‰å‡½æ•°æŒ‡é’ˆçš„奿Ÿ„ä¿¡æ¯ï¼Œè¿˜ä¸èƒ½å¤Ÿç›´æŽ¥è¿è¡Œ - ''' - Public Class ScriptModel - - Public Property Expressions As Statement() - ''' - ''' Value是指å‘列表之中的元素的ä½ç½®ä¸‹è¡¨ - ''' - ''' - Public Property GotoFlags As Dictionary(Of String, Integer) - Public Property File As String - - ''' - ''' 脚本文件的文件路径 - ''' - ''' - ''' - ''' - Public Shared Function ScriptParser(ScriptText As String, File As String) As ScriptModel - Dim s_Data As String() = ScriptText.Replace(vbLf, "").Split(CChar(vbCr)) - Dim LQuery = (From i As Integer In s_Data.Sequence'.AsParallel - Let Expr = SyntaxParser.Parsing(s_Data(i))?.InvokeSet(Of Integer)(NameOf(Statement.OriginalLineNumber), i) - Where Not Expr Is Nothing - Select i, Expr - Order By i Ascending).ToList - - 'æ£€æŸ¥æ˜¯å¦æœ‰è¯­æ³•错误 - Dim GetSyntaxError = (From Token In LQuery.AsParallel - Where Token.Expr.TypeID = Statement.Types.SyntaxError - Select Token.Expr.As(Of Statements.SyntaxError)).ToArray - Dim SyntaxErrorChecks = (From Token In GetSyntaxError - Where Token.IsSyntaxError - Select Token).ToArray - - If Not SyntaxErrorChecks.IsNullOrEmpty Then Call ThrowSyntaxException(SyntaxErrorChecks, File) '有语法错误,则抛出错误 - - Dim GotoTags As Dictionary(Of String, Integer) = ' GotoTag的下一行就是目标起始点 - New Dictionary(Of String, Integer) - Dim p As Integer = -1 - - Do While p.MoveNext < LQuery.Count - 1 - - Dim Line = LQuery(p) - - If Line.Expr.TypeID = Statement.Types.GotoTag Then - - 'ç§»é™¤è¿™ä¸€è¡Œï¼ŒåŒæ—¶æ ‡è®°ä¸‹ä¸€è¡Œçš„行å·ï¼Œç”±äºŽç§»é™¤äº†è¿™ä¸€è¡Œï¼Œåˆ™ä¸‹ä¸€è¡Œä¼šä¸Šç§»ä¸€è¡Œï¼Œåˆ™è¡Œå·å°±æ˜¯è¿™ä¸ªi的值 - Call LQuery.RemoveAt(p) - Call GotoTags.Add(DirectCast(Line.Expr, GotoTag).TagData, p) - End If - Loop - - Return New ScriptModel With { - .Expressions = (From Line In LQuery Select Line.Expr).ToArray, - .GotoFlags = GotoTags, - .File = File - } - End Function - - Public Shared Function LoadFile(path As String) As ScriptModel - Dim Script As String = FileIO.FileSystem.ReadAllText(path) - Return ScriptModel.ScriptParser(Script, path) - End Function - - ''' - ''' at Shoal.Testing.Debugger.Main() in G:\Shoal\Shoal.Testing\Debugger.vb:line 21 - ''' - ''' - ''' - Private Shared Sub ThrowSyntaxException(Tokens As Statements.SyntaxError(), File As String) - If Not String.IsNullOrEmpty(File) Then - File = $" {File}" - Else - File = " " - End If - - Dim Details As String = String.Join(vbCrLf, (From Token As Statements.SyntaxError - In Tokens - Select str = $" at {Token.Expression} in{File}:line {Token.OriginalLineNumber}").ToArray) - Details = "The syntax in these statements is currently not support yet:" & vbCrLf & vbCrLf & - Details -#If DEBUG Then - Call Console.WriteLine(Details) -#End If - Throw New SyntaxErrorException(Details) - End Sub - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/ObjectModels/SyntaxParser.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/ObjectModels/SyntaxParser.vb deleted file mode 100644 index 382d2984e..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/ObjectModels/SyntaxParser.vb +++ /dev/null @@ -1,406 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.ObjectModels.Statements -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.ObjectModels.Tokens - -Namespace Interpreter.ObjectModels - - ''' - ''' 语法解æžå™¨ - ''' - Public Module SyntaxParser - - ''' - ''' 从这里开始解æžè¡¨è¾¾å¼ - ''' - ''' - ''' - Public Function Parsing(Expression As String) As ShoalShell.Interpreter.ObjectModels.Statements.Statement - - Dim Parser As New ShoalShell.Interpreter.ObjectModels.Tokenliser(Expression) - Dim Tokens As Tokens.Token() = Parser.Tokens - Dim Expr As Statement = Nothing - - If Not TryParseVariableAssign(Expression, Tokens).ShadowCopy(Expr) Is Nothing Then - Return Expr.InvokeSet(Of String)(NameOf(Statement.Comments), value:=Parser.Comments) - - ElseIf Not TryParseCollectionOpr(Expression, Tokens).ShadowCopy(Expr) Is Nothing Then - Return Expr.InvokeSet(Of String)(NameOf(Statement.Comments), value:=Parser.Comments) - - ElseIf Not TryParseExtCall(Expression, Tokens).ShadowCopy(Expr) Is Nothing Then - Return Expr.InvokeSet(Of String)(NameOf(Statement.Comments), value:=Parser.Comments) - - ElseIf Not TryParseVariableDeclaration(Expression, Tokens).ShadowCopy(Expr) Is Nothing - Return Expr.InvokeSet(Of String)(NameOf(Statement.Comments), value:=Parser.Comments) - - ElseIf Not TryParseHybirdsScriptPush(Expression, Tokens).ShadowCopy(Expr) Is Nothing Then - Return Expr.InvokeSet(Of String)(NameOf(Statement.Comments), value:=Parser.Comments) - - ElseIf Not TryParseHybridsScript(Expression, Tokens).ShadowCopy(Expr) Is Nothing Then - Return Expr.InvokeSet(Of String)(NameOf(Statement.Comments), value:=Parser.Comments) - - ElseIf Not TryParseSelfCast(Expression, Tokens).ShadowCopy(Expr) Is Nothing Then - Return Expr.InvokeSet(Of String)(NameOf(Statement.Comments), value:=Parser.Comments) - - End If - - If Not TryParseGotoTag(Expression, Tokens).ShadowCopy(Expr) Is Nothing Then - Return Expr.InvokeSet(Of String)(NameOf(Statement.Comments), value:=Parser.Comments) - - ElseIf Not TryParseOutputHandle(Expression, Tokens).ShadowCopy(Expr) Is Nothing Then - Return Expr.InvokeSet(Of String)(NameOf(Statement.Comments), value:=Parser.Comments) - - ElseIf Not TryParseImports(Expression, Tokens).ShadowCopy(Expr) Is Nothing Then - Return Expr.InvokeSet(Of String)(NameOf(Statement.Comments), value:=Parser.Comments) - - ElseIf Not TryParseInclude(Expression, Tokens).ShadowCopy(Expr) Is Nothing - Return Expr.InvokeSet(Of String)(NameOf(Statement.Comments), value:=Parser.Comments) - - ElseIf Not TryParseLibrary(Expression, Tokens).ShadowCopy(Expr) Is Nothing - Return Expr.InvokeSet(Of String)(NameOf(Statement.Comments), value:=Parser.Comments) - - ElseIf Not TryParseMethodCalling(Expression, Tokens).ShadowCopy(Expr) Is Nothing Then - Return Expr.InvokeSet(Of String)(NameOf(Statement.Comments), value:=Parser.Comments) - - ElseIf Not TryParseGoto(Expression, Tokens).ShadowCopy(Expr) Is Nothing - Return Expr.InvokeSet(Of String)(NameOf(Statement.Comments), value:=Parser.Comments) - - End If - - Return New SyntaxError("The syntax is currently not support yet! ===> " & Expression, Expression) - End Function - - Public Function TryParseLibrary(expression As String, Tokens As Tokens.Token()) As ShoalShell.Interpreter.ObjectModels.Statements.Library - If Tokens.Count <> 2 Then - Return Nothing - End If - - If Not String.Equals(Tokens(0).GetTokenValue, "library", StringComparison.OrdinalIgnoreCase) Then - Return Nothing - End If - - Return New Library(expression) With {.Assembly = Tokens(1)} - End Function - - Public Function TryParseInclude(expression As String, Tokens As Tokens.Token()) As ShoalShell.Interpreter.ObjectModels.Statements.Include - If Tokens.Count <> 2 Then - Return Nothing - End If - - If Not String.Equals(Tokens(0).GetTokenValue, "include", StringComparison.OrdinalIgnoreCase) Then - Return Nothing - End If - - Return New Include(expression) With {.ExternalScript = Tokens(1)} - End Function - - Public Function TryParseGoto(expression As String, Tokens As Tokens.Token()) As ShoalShell.Interpreter.ObjectModels.Statements.GOTO - If Tokens.Count <> 4 Then - Return Nothing - End If - - If Not (String.Equals(Tokens(0).GetTokenValue, "goto", StringComparison.OrdinalIgnoreCase) AndAlso String.Equals(Tokens(2).GetTokenValue, "when", StringComparison.OrdinalIgnoreCase)) Then - Return Nothing - End If - - Return New [GOTO](expression) With {.GotoFlag = New ObjectModels.Tokens.InternalExpression(Tokens(1)), .BooleanExpression = New ObjectModels.Tokens.InternalExpression(Tokens(3))} - End Function - - Public Function TryParseGotoTag(expression As String, Tokens As Tokens.Token()) As ShoalShell.Interpreter.ObjectModels.Statements.GotoTag - If Tokens.Count <> 1 Then - Return Nothing - End If - - Dim Tag As String = Tokens(0).GetTokenValue.Trim - If Tag.Last <> ":"c Then - Return Nothing - Else - Tag = Mid(Tag, 1, Len(Tag) - 1) - End If - - Return New GotoTag(expression) With {.TagData = Tag} - End Function - - Public Function TryParseVariableDeclaration(expression As String, Tokens As Tokens.Token()) As ShoalShell.Interpreter.ObjectModels.Statements.VariableDeclaration - If Not (Tokens.Count = 4 OrElse Tokens.Count = 6) Then - Return Nothing - End If - - If Not String.Equals(Tokens(Scan0).GetTokenValue, "Dim", StringComparison.OrdinalIgnoreCase) OrElse - String.Equals(Tokens(Scan0).GetTokenValue, "var", StringComparison.OrdinalIgnoreCase) Then - Return Nothing - End If - - If ShoalShell.Interpreter.ObjectModels.Tokens.Operator.GetOperator(Tokens(2).GetTokenValue) <> [Operator].Operators.ValueAssign Then - Return Nothing - End If - - Dim Type As String - - If Tokens.Count > 4 Then - If Not String.Equals(Tokens(4).GetTokenValue, "As", StringComparison.OrdinalIgnoreCase) Then - Return Nothing - Else - Type = Tokens(5).GetTokenValue - End If - Else - Type = "Object" - End If - - Return New VariableDeclaration(expression) With {.InterExpression = New InternalExpression(Tokens(3)), .Variable = Tokens(1).GetTokenValue, .Type = Type} - End Function - - Public Function TryParseMethodCalling(expression As String, Tokens As Tokens.Token()) As ShoalShell.Interpreter.ObjectModels.Statements.MethodCalling - Dim Parameters As Dictionary(Of Tokens.ParameterName, Tokens.InternalExpression) - Try - If Tokens.IsNullOrEmpty Then - Return Nothing - End If - - Parameters = __createParameters(Tokens, 1) - Catch ex As Exception - Return Nothing - End Try - - Return New Statements.MethodCalling(expression) With {.EntryPoint = New ObjectModels.Tokens.EntryPoint(Tokens(0).GetTokenValue), .Parameters = Parameters} - End Function - - ''' - ''' - ''' - ''' åªæ˜¯ç”¨äºŽæ˜¾ç¤ºçš„原始脚本行 - ''' 使用这个已ç»è§£æžå¥½çš„è¯å…ƒè¿›è¡Œå¯¹è±¡çš„ç”Ÿæˆ - ''' - Public Function TryParseOutputHandle(expression As String, Tokens As Tokens.Token()) As ShoalShell.Interpreter.ObjectModels.Statements.OutputRef - If Not Tokens.Count = 1 Then - Return Nothing - End If - - Return New OutputRef(Tokens(0).GetTokenValue) - End Function - - ''' - ''' - ''' - ''' åªæ˜¯ç”¨äºŽæ˜¾ç¤ºçš„原始脚本行 - ''' 使用这个已ç»è§£æžå¥½çš„è¯å…ƒè¿›è¡Œå¯¹è±¡çš„ç”Ÿæˆ - ''' - Public Function TryParseImports(expression As String, Tokens As Tokens.Token()) As ShoalShell.Interpreter.ObjectModels.Statements.Imports - If Tokens.Count <> 2 Then 'åªæœ‰ä¸¤ä¸ªå•è¯ï¼š Imports - Return Nothing - End If - - If Not String.Equals(Tokens(0).GetTokenValue, "Imports", StringComparison.OrdinalIgnoreCase) Then - Return Nothing - End If - - Return New [Imports](expression) With {.Namespace = Tokens(1).GetTokenValue} - End Function - - ''' - ''' - ''' - ''' åªæ˜¯ç”¨äºŽæ˜¾ç¤ºçš„原始脚本行 - ''' 使用这个已ç»è§£æžå¥½çš„è¯å…ƒè¿›è¡Œå¯¹è±¡çš„ç”Ÿæˆ - ''' - Public Function TryParseVariableAssign(expression As String, Tokens As Tokens.Token()) As Expression - - If GetOperator(Tokens) <> ObjectModels.Tokens.Operator.Operators.ValueAssign Then - Return Nothing - End If - - Dim Expr As Expression = New Expression(expression) With - { - .Operator = New ObjectModels.Tokens.Operator("<-"), - .LeftAssignedVariable = New ObjectModels.Tokens.LeftAssignedVariable(Tokens(0).GetTokenValue)} - - '第二个元素å¯èƒ½æ˜¯å˜é‡ä¹Ÿå¯èƒ½æ˜¯å‡½æ•°å - 'å‡è‹¥å­˜åœ¨ç¬¬ä¸‰ä¸ªå…ƒç´ ï¼Œå¹¶ä¸”是拓展函数调用方法 -> çš„è¯ï¼Œåˆ™ç¬¬äºŒä¸ªå…ƒç´ ä¸ºå˜é‡å - - Dim idx As Integer - - If Tokens.Count > 4 AndAlso String.Equals(Tokens(3).GetTokenValue, "->") Then - ' 2 3 4 .... - '拓展方法调用: 拓展å˜é‡ -> 函数å 傿•°åˆ—表 - - idx = 5 - Expr.ExtensionVariable = New Tokens.LeftAssignedVariable(Tokens(2).GetTokenValue) - Expr.EntryPoint = New Tokens.EntryPoint(Tokens(4).GetTokenValue) - - Else - - ' 0 1 2 3 - '普通的方法调用: å˜é‡ <- 函数åç§° 傿•°åˆ—表 - idx = 3 - Expr.EntryPoint = New Tokens.EntryPoint(Tokens(2).GetTokenValue) - End If - - Try - Expr.Parameters = __createParameters(Tokens, Index:=idx) - Catch ex As Exception - '当å¯ç”¨çš„傿•°çš„æ•°ç›®ä¸æ˜¯å¶æ•°çš„æ—¶å€™ï¼Œè¯´æ˜Žè¯­æ³•错了 - Return Nothing - End Try - - Return Expr - End Function - - Private Function __createParameters(Tokens As Tokens.Token(), Index As Integer) As Dictionary(Of Tokens.ParameterName, Tokens.InternalExpression) - Dim hash = New Dictionary(Of Tokens.ParameterName, Tokens.InternalExpression) - - If Index = Tokens.Count - 1 Then '函数å¯èƒ½åªæœ‰ä¸€ä¸ªå‚æ•°ï¼Œåˆ™å‚æ•°å被çœç•¥äº† - Call hash.Add(New Tokens.ParameterName(ObjectModels.Tokens.ParameterName.ParameterType.SingleParameter, ""), - New Tokens.InternalExpression(Tokens.Last)) - Return hash - End If - - Dim LQuery = (From obj In Tokens Where obj.GetTokenValue.Last = ","c Select 1).ToArray - - If LQuery.Count = Tokens.Count - Index - 1 Then - - ' ä½¿ç”¨é€—å·æ¥åˆ†éš”ï¼Œå‚æ•°æ˜¯æŒ‰ç…§å‡½æ•°çš„å®šä¹‰é¡ºåºæ¥æŽ’列的 - Do While Index < Tokens.Count - 1 - - Dim pName = New Tokens.ParameterName(ObjectModels.Tokens.ParameterName.ParameterType.OrderReference, "") - Dim pValue = New Tokens.InternalExpression(Tokens(Index.MoveNext).GetTokenValue) - - pValue.Expression = Mid(pValue.Expression, 1, Len(pValue.Expression) - 1) - - Call hash.Add(pName, pValue) - Loop - - Call hash.Add(New Tokens.ParameterName(ObjectModels.Tokens.ParameterName.ParameterType.OrderReference, ""), New Tokens.InternalExpression(Tokens.Last)) - Else - - Dim valueTokens As String() = (From Token In Tokens.Skip(Index) Select Token.GetTokenValue).ToArray - Dim CommandLine = Microsoft.VisualBasic.CommandLine.CommandLine.CreateParameterValues(valueTokens, True) - - For Each obj In CommandLine - Dim pName As Tokens.ParameterName - - If Microsoft.VisualBasic.CommandLine.CommandLine.IsPossibleBooleanSwitch(obj.Key) Then - pName = New ParameterName(ParameterName.ParameterType.BooleanSwitch, Microsoft.VisualBasic.CommandLine.CommandLine.TrimBooleanSwitchPrefix(obj.Key)) - Else - pName = New Tokens.ParameterName(ObjectModels.Tokens.ParameterName.ParameterType.Normal, obj.Key) - End If - - Dim pValue = New Tokens.InternalExpression(obj.Value) - - Call hash.Add(pName, pValue) - Next - End If - - Return hash - End Function - - Private Function GetOperator(Tokens As Tokens.Token()) As Tokens.Operator.Operators - If Tokens.Count <= 2 Then - Return ObjectModels.Tokens.Operator.Operators.NULL - End If - - Dim Temp = Tokens(1) - Dim [operator] = ShoalShell.Interpreter.ObjectModels.Tokens.Operator.GetOperator(Temp.GetTokenValue) - Return [operator] - End Function - - ''' - ''' - ''' - ''' åªæ˜¯ç”¨äºŽæ˜¾ç¤ºçš„原始脚本行 - ''' 使用这个已ç»è§£æžå¥½çš„è¯å…ƒè¿›è¡Œå¯¹è±¡çš„ç”Ÿæˆ - ''' - Public Function TryParseExtCall(expression As String, Tokens As Tokens.Token()) As Expression - - If GetOperator(Tokens) <> ObjectModels.Tokens.Operator.Operators.ExtCall Then - Return Nothing - End If - - Dim Expr As Expression = New Expression(expression) With {.Operator = New ObjectModels.Tokens.Operator("->"), - .EntryPoint = New ObjectModels.Tokens.EntryPoint(Tokens(2)), - .ExtensionVariable = New ObjectModels.Tokens.LeftAssignedVariable(Tokens(0)), - .LeftAssignedVariable = New ObjectModels.Tokens.LeftAssignedVariable("$")} - - Call TryGetParameters(Tokens.Skip(3).ToArray, Expr.Parameters, Expr.BooleanSwitches) - - Return Expr - - End Function - - Private Sub TryGetParameters(Tokens As Token(), ByRef parameters As Dictionary(Of ParameterName, InternalExpression), ByRef BooleanSwitches As String()) - Dim Temp As String() = (From obj In Tokens Select obj.GetTokenValue).ToArray - Dim SingleParameter As String = "" - Dim Parser = Microsoft.VisualBasic.CommandLine.CommandLine.GetPossibleSwitches(Temp, SingleParameter) - Dim params = Microsoft.VisualBasic.CommandLine.CommandLine.CreateParameterValues(Temp, True) - - parameters = New Dictionary(Of ParameterName, InternalExpression) - - If Not String.IsNullOrEmpty(SingleParameter) Then - Call parameters.Add(New ParameterName(ParameterName.ParameterType.SingleParameter, ""), New InternalExpression(SingleParameter)) - End If - - parameters.AddRange((From obj In params - Select Name = New ParameterName(ParameterName.ParameterType.Normal, obj.Key), - value = New InternalExpression(obj.Value)).ToArray.ToDictionary(Function(obj) obj.Name, elementSelector:=Function(obj) obj.value)) - BooleanSwitches = (From s As String In Parser Select CommandLine.CommandLine.TrimBooleanSwitchPrefix(s)).ToArray - End Sub - - ''' - ''' - ''' - ''' åªæ˜¯ç”¨äºŽæ˜¾ç¤ºçš„原始脚本行 - ''' 使用这个已ç»è§£æžå¥½çš„è¯å…ƒè¿›è¡Œå¯¹è±¡çš„ç”Ÿæˆ - ''' - Public Function TryParseCollectionOpr(expression As String, Tokens As Tokens.Token()) As Expression - If GetOperator(Tokens) <> ObjectModels.Tokens.Operator.Operators.CollectionOpr Then - Return Nothing - End If - - Dim Expr As Expression = New Expression(expression) With {.Operator = New ObjectModels.Tokens.Operator("<=")} - Return Expr - End Function - - ''' - ''' - ''' - ''' åªæ˜¯ç”¨äºŽæ˜¾ç¤ºçš„原始脚本行 - ''' 使用这个已ç»è§£æžå¥½çš„è¯å…ƒè¿›è¡Œå¯¹è±¡çš„ç”Ÿæˆ - ''' - Public Function TryParseSelfCast(expression As String, Tokens As Tokens.Token()) As Expression - If GetOperator(Tokens) <> ObjectModels.Tokens.Operator.Operators.SelfCast Then - Return Nothing - End If - - Dim Expr As Expression = New Expression(expression) With {.Operator = New ObjectModels.Tokens.Operator("=")} - Return Expr - End Function - - ''' - ''' - ''' - ''' åªæ˜¯ç”¨äºŽæ˜¾ç¤ºçš„原始脚本行 - ''' 使用这个已ç»è§£æžå¥½çš„è¯å…ƒè¿›è¡Œå¯¹è±¡çš„ç”Ÿæˆ - ''' - Public Function TryParseHybridsScript(expression As String, Tokens As Tokens.Token()) As Expression - If GetOperator(Tokens) <> ObjectModels.Tokens.Operator.Operators.HybridsScript Then - Return Nothing - End If - - Dim Expr As Expression = New Expression(expression) With {.Operator = New ObjectModels.Tokens.Operator("<<")} - Return Expr - End Function - - ''' - ''' - ''' - ''' åªæ˜¯ç”¨äºŽæ˜¾ç¤ºçš„原始脚本行 - ''' 使用这个已ç»è§£æžå¥½çš„è¯å…ƒè¿›è¡Œå¯¹è±¡çš„ç”Ÿæˆ - ''' - Public Function TryParseHybirdsScriptPush(expression As String, Tokens As Tokens.Token()) As Expression - If GetOperator(Tokens) <> ObjectModels.Tokens.Operator.Operators.HybirdsScriptPush Then - Return Nothing - End If - - Dim Expr As Expression = New Expression(expression) With {.Operator = New ObjectModels.Tokens.Operator(">>")} - Return Expr - End Function - - End Module -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/ObjectModels/Tokenlisers/FullTokenliser.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/ObjectModels/Tokenlisers/FullTokenliser.vb deleted file mode 100644 index ede64fb40..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/ObjectModels/Tokenlisers/FullTokenliser.vb +++ /dev/null @@ -1,267 +0,0 @@ -Namespace Interpreter.ObjectModels - - ''' - ''' 将表达å¼ä¹‹ä¸­çš„æ‰€æœ‰è¯å…ƒè¿›è¡Œå®Œå…¨å±•å¼€ - ''' - Public Class FullTokenliser - - Protected ReadOnly Tokens As Tokens.Token() - - Public Function GetNormalizedTokens() As Tokens.Token()()() - - Dim Normalized As New List(Of Tokens.Token()) - Dim SetLeft As Boolean = False - Dim SetOperator As Boolean = False - Dim SetFunction As Boolean = False - Dim IsParameter As Boolean = True - Dim PreDepth As Integer = Tokens.First.DepthLevel - - Dim TempCluster As New List(Of Tokens.Token) - - For Each Token In Tokens - - If Token.DepthLevel <> PreDepth Then - - '堆栈的深度å‘生了å˜åŒ–,则新起一行 - Call Normalized.Add(TempCluster.ToArray) - Call TempCluster.Clear() - - PreDepth = Token.DepthLevel - - End If - - Call TempCluster.Add(Token) - Next - - Call Normalized.Add(TempCluster.ToArray) - - '将第一集调用的都进行分组 - - Dim RootNormalized As New List(Of Tokens.Token()()) - Dim TempChunk As New List(Of Tokens.Token()) - - For i As Integer = 0 To Normalized.Count - 1 - - Dim Token = Normalized(i) - - If Token.First.DepthLevel <> 0 Then - - Call TempChunk.Add(Token) - - Do While Token.First.DepthLevel <> 0 AndAlso i < Normalized.Count - 1 - - i += 1 - Token = Normalized(i) - - If Token.First.DepthLevel <> 0 Then - - Call TempChunk.Add(Token) - - Else - - Exit Do - End If - - Loop - - Call RootNormalized.Add(TempChunk.ToArray) - Call TempChunk.Clear() - End If - - Token = Normalized(i) - - If i = Normalized.Count - 1 AndAlso Token.First.DepthLevel <> 0 Then - Continue For - End If - - For Each RootToken In Token - - Call RootNormalized.Add(New Tokens.Token()() {New Tokens.Token() {RootToken}}) - - Next - - Next - - Return RootNormalized.ToArray - - End Function - - Private Shared Sub NewLine(OprTag As Char, ByRef TempToken As List(Of Char), ByRef Stack As Stack(Of Char), ByRef TokenList As List(Of Tokens.Token)) - If TempToken.IsNullOrEmpty Then - Return - End If - - Dim s_Token As String = New String(TempToken.ToArray) - - Call TokenList.Add(New Tokens.Token(Stack.Count, s_Token) With {.OprTag = OprTag}) - Call TempToken.Clear() - End Sub - - ''' - ''' 将表达å¼è§£æžä¸ºè¯å…ƒï¼Œæ¯ä¸€ä¸ªè¯å…ƒéƒ½ä¸å«æœ‰å‰å¯¼æˆ–者åŽç½®çš„ç©ºç™½ç¬¦å· - ''' æ–­è¯å…ƒçš„æ¡ä»¶æ˜¯Stack必须为空 - ''' - ''' - Sub New(Expression As String) - - Dim Stack As Stack(Of Char) = New Stack(Of Char) '{ [ " - Dim TokenList As List(Of Tokens.Token) = New List(Of Tokens.Token) - Dim TempToken As List(Of Char) = New List(Of Char) - Dim Prebkt As Char - - For Each ch As Char In Expression - - Call Debug.Write(ch) - Call Trace.Write(ch) -#If DEBUG Then - Call Console.Write(ch) -#End If - - If BRACKETS.Contains(ch) Then - - 'å‡è‹¥æ ˆç©ºé—´ä¹‹ä¸­çš„æœ€åŽä¸€ä¸ªå…ƒç´ ä¸ºåŒå¼•å·ï¼Œåˆ™è¯´æ˜ŽçŽ°åœ¨åœ¨è¯»å–字符串,则这个符å·ä¸ä¼šä½œä¸ºåˆ†éš”符æ¥å †æ ˆ - If Not Stack.IsNullOrEmpty Then - Prebkt = Stack.Peek - If Prebkt = """"c Then - '字符串的值,则ä¸å¯ä»¥è¿›è¡Œå †æ ˆ - Call TempToken.Add(ch) - Continue For - End If - End If - - Call Stack.Push(ch) '断行 - '进行堆栈调用 - Call NewLine(ch, TempToken, Stack, TokenList) - - Continue For - End If - - If PAIRED_BRACKETS.Contains(ch) Then - - If ch = """"c Then - - If Stack.IsNullOrEmpty Then - '新的字符串的起始标识符 - Call Stack.Push(ch) - Continue For - End If - - Prebkt = Stack.Peek - - If IsPaired(Prebkt, ch) Then - - '得到了一个字符串,字符串是和å‰é¢çš„è¯å…ƒæ˜¯åŒç­‰çº§çš„ï¼Œåªæœ‰å½“å‡ºçŽ°æ–°çš„åˆ†éš”ç¬¦ä¹‹åŽæ‰ä¼šå¢žåŠ å †æ ˆæ·±åº¦ - Call Stack.Pop() - Call NewLine(ch, TempToken, Stack, TokenList) - Continue For - - Else - - 'å¯èƒ½æ˜¯æ–°çš„字符串的开始ä½ç½® - Call Stack.Push(ch) - Continue For - - End If - - End If - - If Stack.IsNullOrEmpty Then - 'é‡åˆ°äº†ç»“æŸç¬¦å·ä½†æ˜¯æ ˆæ˜¯ç©ºçš„,则是语法错误 - Throw New SyntaxErrorException(Expression) - Else - Prebkt = Stack.Peek - End If - - If IsPaired(Prebkt, ch) Then '得到了一个匹é…的括å·ï¼Œåˆ™è¿˜éœ€è¦åˆ†æƒ…况æ¥è¿›è¡Œè®¨è®ºï¼Œä¸»è¦åŽŸå› æ˜¯å­—ç¬¦ä¸²ä¹‹ä¸­ä¹Ÿä¼šåŒ…å«æœ‰è¿™äº›ç¬¦å· - - '字符串的åŒå¼•å·åœ¨æ ˆç©ºé—´ä¹‹ä¸­åªæœ‰ä¸€ä¸ª - Call NewLine(Prebkt, TempToken, Stack, TokenList) - Call Stack.Pop() - Continue For - - End If - - End If - - - - '空格也会隔断è¯å…ƒ - If ch = " "c Then - - If Stack.IsNullOrEmpty Then - '肯定是新的分隔符 - Call NewLine(" "c, TempToken, Stack, TokenList) - Continue For - - 'Else - - ' 'å‰é¢çš„æ ˆç©ºé—´ä¸ä¸ºç©ºï¼Œåˆ™è¯´æ˜Žè¿™ä¸ªç©ºæ ¼å¯èƒ½æ˜¯å†…部表达å¼ä¹‹ä¸­çš„一部分 - ' Call TempToken.Add(ch) - ' Continue For - - End If - - '但是å‡è®¾å‰é¢æ²¡æœ‰åŒå¼•å· - Prebkt = Stack.Peek - - If Prebkt = """"c Then - - '这个空格是字符串值之中的一部分,则ä¸å¯ä»¥ç”¨ä½œåˆ†éš”符 - Call TempToken.Add(ch) - - Else - - 'è¿™ä¸ªç©ºæ ¼ä¸æ˜¯å­—符串值之中的一部分,则用作为分隔符 - Call NewLine(" "c, TempToken, Stack, TokenList) - - End If - - Else - - Call TempToken.Add(ch) - - End If - - Next - - 'å‡è‹¥è§£æžå®Œæ¯•之åŽä»»ç„¶æœ‰æ•°æ®ï¼Œåˆ™å¾ˆæ˜Žæ˜¾è¯­æ³•错误 - If Not Stack.IsNullOrEmpty Then - Throw New SyntaxErrorException($"Syntax error at parsing: {Expression} - - {NameOf(Stack)}: { String.Join(" -> ", (From ch In Stack Select CStr(ch)).ToArray)} - {NameOf(TempToken)}: {New String(TempToken.ToArray)}") - End If - - Call NewLine(" "c, TempToken, Stack, TokenList) '当连续为根栈的时候,最åŽä¸€ä¸ªå…ƒç´ ä¼šè¢«ç•™ä¸‹æ¥ï¼Œè¿™ä¸ªæ—¶å€™éœ€è¦æ·»åŠ  - -#If DEBUG Then - Call Console.WriteLine() - Call Console.WriteLine() - Call Console.WriteLine() - - For Each Token In TokenList - Call Console.WriteLine(Token.ToString) - Next -#End If - Tokens = TokenList.ToArray - End Sub - - Public Const BRACKETS As String = "{[" - Public Const PAIRED_BRACKETS As String = "}]""" - - Public Shared Function IsPaired(Left As Char, Right As Char) As Boolean - - Select Case Left - Case "{"c : Return Right = "}"c - Case "["c : Return Right = "]"c - Case """"c : Return Right = """"c - - Case Else - - Throw New SyntaxErrorException($"The bracket is not paired! {NameOf(Left)} = { Left }, { NameOf(Right)} = { Right }") - - End Select - - End Function - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/ObjectModels/Tokenlisers/Tokenliser.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/ObjectModels/Tokenlisers/Tokenliser.vb deleted file mode 100644 index 922e05974..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/ObjectModels/Tokenlisers/Tokenliser.vb +++ /dev/null @@ -1,212 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.ObjectModels.FullTokenliser - -Namespace Interpreter.ObjectModels - - ''' - ''' ä¿ç•™æœ‰å†…部表达å¼ï¼Œåªå±•å¼€ä¸€çº§è¡¨è¾¾å¼ - ''' - Public Class Tokenliser - - Public ReadOnly Property Tokens As Tokens.Token() - Public ReadOnly Property Comments As String - - Public ReadOnly Property IsCommentLine As Boolean - Get - Return Tokens.IsNullOrEmpty AndAlso Not String.IsNullOrEmpty(Comments) - End Get - End Property - - Private Shared Sub NewLine(OprTag As Char, ByRef TempToken As List(Of Char), ByRef Stack As Stack(Of Char), ByRef TokenList As List(Of Tokens.Token)) - If TempToken.IsNullOrEmpty Then - If Not OprTag = Nothing Then Call TempToken.Add(OprTag) - Return - End If - - If Not Stack.IsNullOrEmpty Then - If Not OprTag = Nothing Then Call TempToken.Add(OprTag) - Return - End If - - Dim s_Token As String = New String(TempToken.ToArray) - - Call TokenList.Add(New Tokens.Token(Stack.Count, s_Token) With {.OprTag = OprTag}) - Call TempToken.Clear() - End Sub - - ''' - ''' 将表达å¼è§£æžä¸ºè¯å…ƒï¼Œæ¯ä¸€ä¸ªè¯å…ƒéƒ½ä¸å«æœ‰å‰å¯¼æˆ–者åŽç½®çš„ç©ºç™½ç¬¦å· - ''' æ–­è¯å…ƒçš„æ¡ä»¶æ˜¯Stack必须为空 - ''' - ''' - Sub New(Expression As String) - - Expression = Trim(Expression) - If InStr(Expression, "Call ", CompareMethod.Text) = 1 Then - Expression = Mid(Expression, 6).Trim - ElseIf Len(Expression) > 0 AndAlso Expression.First = "#"c - '这一行是注释行 - Tokens = New Tokens.Token() {} - Comments = Expression - - Return - End If - - Dim Stack As Stack(Of Char) = New Stack(Of Char) '{ [ " - Dim TokenList As List(Of Tokens.Token) = New List(Of Tokens.Token) - Dim TempToken As List(Of Char) = New List(Of Char) '空白或者å³è¾¹çš„åˆ†éš”ç¬¦ä¹‹åŽæ‰€å‡ºçŽ°çš„#都是注释的开始的标志 - Dim Prebkt As Char - - For p_i As Integer = 0 To Len(Expression) - 1 - - Dim ch As Char = Expression(p_i) - - Call Debug.Write(ch) - Call Trace.Write(ch) -#If DEBUG Then - Call Console.Write(ch) -#End If - - If BRACKETS.Contains(ch) Then - - 'å‡è‹¥æ ˆç©ºé—´ä¹‹ä¸­çš„æœ€åŽä¸€ä¸ªå…ƒç´ ä¸ºåŒå¼•å·ï¼Œåˆ™è¯´æ˜ŽçŽ°åœ¨åœ¨è¯»å–字符串,则这个符å·ä¸ä¼šä½œä¸ºåˆ†éš”符æ¥å †æ ˆ - If Not Stack.IsNullOrEmpty Then - Prebkt = Stack.Peek - If Prebkt = """"c Then - '字符串的值,则ä¸å¯ä»¥è¿›è¡Œå †æ ˆ - Call TempToken.Add(ch) - Continue For - End If - End If - - '进行堆栈调用 - Call NewLine(ch, TempToken, Stack, TokenList) - Call Stack.Push(ch) '断行 - - Continue For - End If - - If PAIRED_BRACKETS.Contains(ch) Then - - If ch = """"c Then - - If Stack.IsNullOrEmpty Then - '新的字符串的起始标识符 - Call Stack.Push(ch) - Continue For - End If - - Prebkt = Stack.Peek - - If IsPaired(Prebkt, ch) Then - - '得到了一个字符串,字符串是和å‰é¢çš„è¯å…ƒæ˜¯åŒç­‰çº§çš„ï¼Œåªæœ‰å½“å‡ºçŽ°æ–°çš„åˆ†éš”ç¬¦ä¹‹åŽæ‰ä¼šå¢žåŠ å †æ ˆæ·±åº¦ - Call Stack.Pop() - Call NewLine(ch, TempToken, Stack, TokenList) - Continue For - - Else - - 'å¯èƒ½æ˜¯æ–°çš„字符串的开始ä½ç½® - Call Stack.Push(ch) - Continue For - - End If - - End If - - If Stack.IsNullOrEmpty Then - 'é‡åˆ°äº†ç»“æŸç¬¦å·ä½†æ˜¯æ ˆæ˜¯ç©ºçš„,则是语法错误 - Throw New SyntaxErrorException(Expression) - Else - Prebkt = Stack.Peek - End If - - If IsPaired(Prebkt, ch) Then '得到了一个匹é…的括å·ï¼Œåˆ™è¿˜éœ€è¦åˆ†æƒ…况æ¥è¿›è¡Œè®¨è®ºï¼Œä¸»è¦åŽŸå› æ˜¯å­—ç¬¦ä¸²ä¹‹ä¸­ä¹Ÿä¼šåŒ…å«æœ‰è¿™äº›ç¬¦å· - - '字符串的åŒå¼•å·åœ¨æ ˆç©ºé—´ä¹‹ä¸­åªæœ‰ä¸€ä¸ª - Call NewLine(ch, TempToken, Stack, TokenList) - Call Stack.Pop() - Continue For - - End If - - End If - - - - '空格也会隔断è¯å…ƒ - If ch = " "c Then - - If Stack.IsNullOrEmpty Then - '肯定是新的分隔符 - Call NewLine(Nothing, TempToken, Stack, TokenList) - Continue For - - 'Else - - ' 'å‰é¢çš„æ ˆç©ºé—´ä¸ä¸ºç©ºï¼Œåˆ™è¯´æ˜Žè¿™ä¸ªç©ºæ ¼å¯èƒ½æ˜¯å†…部表达å¼ä¹‹ä¸­çš„一部分 - ' Call TempToken.Add(ch) - ' Continue For - - End If - - '但是å‡è®¾å‰é¢æ²¡æœ‰åŒå¼•å· - Prebkt = Stack.Peek - - If Prebkt = """"c Then - - '这个空格是字符串值之中的一部分,则ä¸å¯ä»¥ç”¨ä½œåˆ†éš”符 - Call TempToken.Add(ch) - - Else - - 'è¿™ä¸ªç©ºæ ¼ä¸æ˜¯å­—符串值之中的一部分,则用作为分隔符 - Call NewLine(" "c, TempToken, Stack, TokenList) - - End If - - Continue For - End If - - - If ch = "#"c Then '注释符 1. å‰é¢æ˜¯ç©ºæ ¼ï¼Œå¹¶ä¸”æ²¡æœ‰å‡ºçŽ°åœ¨å­—ç¬¦ä¸²ä¹‹ä¸­ï¼Œå³æ ˆç©ºé—´ä¹‹ä¸­æ²¡æœ‰åŒå¼•å· - ' 2. 栈空间必须为空 - - If Stack.IsNullOrEmpty Then '空的栈空间,则这个符å·å¼€å§‹åŽé¢å…¨éƒ½æ˜¯æ³¨é‡Šä¿¡æ¯ï¼Œåˆ™ä¸è¦äº†ï¼Œåªéœ€è¦å‰é¢çš„å°±å¯ä»¥äº† - Call NewLine("", TempToken, Stack, TokenList) - Comments = Mid(Expression, p_i + 1) - - Exit For - End If - - '栈空间ä¸ä¸ºç©ºï¼Œåˆ™è¿™ä¸ª#å·å¯èƒ½æ˜¯å­—ç¬¦ä¸²ä¹‹ä¸­çš„ç¬¦å· - - End If - - Call TempToken.Add(ch) - Next - - 'å‡è‹¥è§£æžå®Œæ¯•之åŽä»»ç„¶æœ‰æ•°æ®ï¼Œåˆ™å¾ˆæ˜Žæ˜¾è¯­æ³•错误 - If Not Stack.IsNullOrEmpty Then - Throw New SyntaxErrorException($"Syntax error at parsing: {Expression} - - {NameOf(Stack)}: { String.Join(" -> ", (From ch In Stack Select CStr(ch)).ToArray)} - {NameOf(TempToken)}: {New String(TempToken.ToArray)}") - End If - - Call NewLine("", TempToken, Stack, TokenList) '当连续为根栈的时候,最åŽä¸€ä¸ªå…ƒç´ ä¼šè¢«ç•™ä¸‹æ¥ï¼Œè¿™ä¸ªæ—¶å€™éœ€è¦æ·»åŠ  - -#If DEBUG Then - Call Console.WriteLine() - Call Console.WriteLine() - Call Console.WriteLine() - - For Each Token In TokenList - Call Console.WriteLine(Token.ToString) - Next -#End If - Tokens = (From Token In TokenList.ToArray Where Not Token.IsNullOrSpace Select Token).ToArray - End Sub - - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/ObjectModels/Tokens.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/ObjectModels/Tokens.vb deleted file mode 100644 index d24875d33..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Interpreter/ObjectModels/Tokens.vb +++ /dev/null @@ -1,450 +0,0 @@ -Namespace Interpreter.ObjectModels.Tokens - - ''' - ''' 一个表达å¼å¯¹è±¡ä¹‹ä¸­çš„æŸä¸€ä¸ªå•è¯å…ƒç´  - ''' - Public Class Token - - Public Property DepthLevel As Integer - ''' - ''' 产生 - ''' - ''' - Public Property OprTag As Char - - Protected ReadOnly _TokenValue As String - - Public ReadOnly Property IsNullOrSpace As Boolean - Get - Return String.IsNullOrEmpty(_TokenValue) OrElse String.IsNullOrEmpty(Trim(_TokenValue)) - End Get - End Property - - Sub New(Level As Integer, s_Token As String) - DepthLevel = Level - _TokenValue = s_Token - End Sub - - Public Overrides Function ToString() As String - If DepthLevel = 0 Then - - Return "+ " & _TokenValue '最顶层的调用 - - Else - Return $"{New String(vbTab, DepthLevel)} -> {_TokenValue}" - End If - End Function - - ''' - ''' 获å–得到原始的è¯å…ƒæ•°æ® - ''' - ''' - Public Overridable Function GetTokenValue() As String - Return _TokenValue - End Function - - Public Shared Narrowing Operator CType(Token As Token) As String - Return Token.GetTokenValue - End Operator - - End Class - - ''' - ''' è¿™ä¸ªæ˜¯å‚æ•°å¼•用之中的内部表达å¼ï¼Œåªæœ‰å•行的 - ''' - Public Class InternalExpression : Inherits Token - - Public Property Expression As String - - Public ReadOnly Property IsExpr As Boolean - Get - Return Len(Expression) > 2 AndAlso Expression.First = "{"c AndAlso Expression.Last = "}"c - End Get - End Property - - Sub New(Expr As String) - Call MyBase.New(0, Expr) - Expression = Expr - End Sub - - Sub New(Token As Token) - Call Me.New(Token.GetTokenValue) - End Sub - - Public Overrides Function GetTokenValue() As String - Return Expression - End Function - - Public Function GetValue(ScriptEngine As ShoalShell.Runtime.Objects.ShellScript) As Object - - If IsExpr Then '由于规定内部表达å¼åªæœ‰å•行的,则åªéœ€è¦è§£æžå‡ºä¸€ä¸ªè¡¨è¾¾å¼å°±å¯ä»¥äº† - Dim Expr As String = Mid(Expression, 2, Len(Expression) - 2) - Dim ExprObj As Statements.Statement = SyntaxParser.Parsing(Expr) - Dim Value As Object = Runtime.Objects.ObjectModels.ExecuteModel.InternalExecute(ExprObj, "", ScriptEngine) - Return Value - Else - Return Expression - End If - - End Function - - Public Overrides Function ToString() As String - If IsExpr Then - Return $"Inner Expression {NameOf(Expression)}:={ Expression }" - Else - Return Expression - End If - End Function - - End Class - - ''' - ''' åŒ…å«æœ‰å‡½æ•°å¥æŸ„以åŠè°ƒç”¨çš„æŽ¥å£çš„æè¿°ä¿¡æ¯ - ''' - Public Class EntryPoint : Inherits Token - - Public ReadOnly Property Name As InternalExpression - - Sub New(Name As String) - Call MyBase.New(0, Name) - Me.Name = New InternalExpression(Name) - End Sub - - Public Function TryGetEntryPoint(ScriptEngine As ShoalShell.Runtime.Objects.ShellScript) As Scripting.ShoalShell.DelegateHandlers.EntryPointHandlers.CommandMethodEntryPoint - Dim value As Object = Me.Name.GetValue(ScriptEngine) - If value Is Nothing Then - Throw New ShoalShell.Runtime.Objects.ObjectModels.Exceptions.MethodNotFoundException(Me.Name.GetTokenValue, $"""{Me.Name.GetTokenValue}"" reference to null entry point!") - End If - - Dim Name As String = CStr(value) - Return ScriptEngine.InternalEntryPointManager.EntryPoint(Name) - End Function - - Public Overrides Function ToString() As String - Return MyBase.ToString() - End Function - - End Class - - ''' - ''' 开关傿•°ï¼šåªé€‚ç”¨äºŽé€»è¾‘å€¼å‚æ•°ï¼Œæœ‰è¡¨ç¤ºTrue,没有则表示Falseï¼Œå¼€å…³å‚æ•°ä½¿ç”¨-或者--或者\或者/开头 - ''' 例如有如下的函数定义 - ''' Function(a As Object, b as Boolean) - ''' 则调用的时候å¯ä»¥æœ‰ä¸‹é¢çš„å½¢å¼ - ''' Function a $a b T/F/True/False/1/0/yesy/no - ''' æˆ–è€…å¼€å…³å½¢å¼ - ''' Function a $a -b 或者 --b 或者 /b 或者 \b - ''' 当然也å¯ä»¥ - ''' Call $a -> Function True/False/yes/No/1/0/T/F - ''' Call $a -> Function /a 或者 \a 或者 -a 或者 --a - ''' - Public Class ParameterName : Inherits InternalExpression - - ''' - ''' 傿•°åå‡ºäº†æ™®é€šç±»åž‹çš„å‚æ•°å需è¦å¡«å……傿•°åä¹‹å¤–ï¼Œå…¶ä»–ç±»åž‹çš„å‚æ•°å都å¯ä»¥ç•™ç©º - ''' - Public Enum ParameterType - Normal = 0 - ''' - ''' æ‹“å±•å‡½æ•°çš„è°ƒç”¨å‚æ•°ï¼Œå³å‡½æ•°å®šä¹‰ä¹‹ä¸­çš„ç¬¬ä¸€ä¸ªå‚æ•° - ''' - ExtensionMethodCaller - ''' - ''' å½“å‡½æ•°æœ‰ä¸¤ä¸ªå‚æ•°çš„æ—¶å€™ï¼Œä½¿ç”¨æ‹“展函数的形å¼è°ƒç”¨ï¼Œåˆ™ç¬¬äºŒä¸ªå‚数会å¯ä»¥çœ‹ä½œä¸ºä¼ªå•傿•° - ''' - EXtensionSingleParameter - ''' - ''' å‡½æ•°åªæœ‰ä¸€ä¸ªå‚数,则å¯ä»¥å¿½ç•¥å‚æ•°å直接调用 - ''' - SingleParameter - ''' - ''' é€»è¾‘å€¼ç±»åž‹çš„å¼€å…³å‚æ•° - ''' - BooleanSwitch - - ''' - ''' å‡½æ•°çš„å‚æ•°ä¹‹é—´æ˜¯æŒ‰ç…§å‡½æ•°çš„定义顺åºå¼•用的 - ''' - OrderReference - End Enum - -#Region "Reference Type String" - - Friend Shared ReadOnly Property s_Normal As String = NameOf(ParameterType.Normal) - Friend Shared ReadOnly Property s_ExtensionMethodCaller As String = NameOf(ParameterType.ExtensionMethodCaller) - Friend Shared ReadOnly Property s_EXtensionSingleParameter As String = NameOf(ParameterType.EXtensionSingleParameter) - Friend Shared ReadOnly Property s_SingleParameter As String = NameOf(ParameterType.SingleParameter) - Friend Shared ReadOnly Property s_BooleanSwitch As String = NameOf(ParameterType.BooleanSwitch) - -#End Region - - Public ReadOnly Property Type As ParameterName.ParameterType - - ''' - ''' - ''' - ''' 普通类型还是特殊类型 - ''' èŽ·å¾—å‚æ•°å称的一个表达å¼å­—符串 - Sub New(Type As ParameterName.ParameterType, Expression As String) - Call MyBase.New(Expression) - Me.Type = Type - End Sub - - Public Overrides Function ToString() As String - Return If(Type = ParameterType.Normal, Me.Expression, $"({Type.ToString}) {Expression}") - End Function - End Class - - ''' - ''' 该表达å¼ä¹‹ä¸­çš„æ“ä½œç¬¦ - ''' - Public Class [Operator] : Inherits Token - - Public Enum Operators As Integer - - NULL = -1 - - ''' - ''' <- Assign value to variable; - ''' - ValueAssign - ''' - ''' -> Extension method calling; - ''' - ExtCall - ''' - ''' <= Collection and hash table operations; - ''' - CollectionOpr - ''' - ''' = Self type cast; - ''' - SelfCast - ''' - ''' << Hybrids scripting; - ''' - HybridsScript - ''' - ''' >> Setup variable ofhybrids scripting; - ''' - HybirdsScriptPush - ''' - ''' => 函数指针 - ''' - [Delegate] - End Enum - - Public ReadOnly Property Type As [Operator].Operators - - ''' - ''' - ''' - ''' - ''' [<- Assign value to variable;] - ''' - ''' - ''' [-> Extension method calling;] - ''' - ''' - ''' [<= Collection and hash table operations;] - ''' - ''' - ''' [= Self type cast;] - ''' - ''' - ''' [<< Hybrids scripting;] - ''' - ''' - ''' [>> Setup variable of hybrids scripting;] - ''' - ''' - Sub New(opr As String) - Call MyBase.New(0, opr) - Type = GetOperator(opr) - End Sub - - Public Shared Function GetOperator(opr As String) As Operators - - Select Case Trim(opr).ShadowCopy(opr) - - Case "<-", "=" : Return Operators.ValueAssign - Case "->" : Return Operators.ExtCall - Case "<=" : Return Operators.CollectionOpr - ' Case "=" : Return Operators.ValueAssign - Case "<<" : Return Operators.HybridsScript - Case ">>" : Return Operators.HybirdsScriptPush - Case "=>" : Return Operators.Delegate - - Case Else - Return Operators.NULL - ' Throw New NotImplementedException($"The operator {NameOf(opr)}:={opr} is currently not support yet!") - End Select - - End Function - - Public Overrides Function ToString() As String - Return $"( {_TokenValue } ) {Type.GetType.FullName}.{Type.ToString}" - End Function - - End Class - - ''' - ''' å¯èƒ½ä¼šå­˜åœ¨æŒ‡é’ˆå¼•用的情况,这个对象类型的主è¦å®žçŽ°çš„åŠŸèƒ½æ˜¯è®¾ç½®å†…å­˜å˜é‡ - ''' - Public Class LeftAssignedVariable : Inherits Token - - ''' - ''' 该å˜é‡åœ¨å†…å­˜ä¹‹ä¸­çš„å¼•ç”¨åœ°å€ - ''' - ''' - Public ReadOnly Property RefEntry As String - - Public ReadOnly Property IsPointer As Boolean - Get - Return RefEntry.First = "$"c - End Get - End Property - - ''' - ''' æ˜¯å†…éƒ¨è¡¨è¾¾å¼ - ''' - ''' - Public ReadOnly Property IsInnerReference As Boolean - Get - Return Len(RefEntry) > 2 AndAlso RefEntry.First = "{"c AndAlso RefEntry.Last = "}"c - End Get - End Property - - Public ReadOnly Property IsPointerReference As Boolean - Get - Return Len(RefEntry) > 2 AndAlso RefEntry.First = "["c AndAlso RefEntry.Last = "]"c - End Get - End Property - - ''' - ''' - ''' - ''' - ''' 1. Name 普通å˜é‡å¼•用 - ''' 2. $var å˜é‡åœ°å€å¼•用 -> å€¼æ˜¯å®žé™…çš„åœ°å€ - ''' 3. {expr} 内部表达å¼å¼•用 -> å€¼æ˜¯å®žé™…çš„åœ°å€ - ''' 4. [int] ä½ç½®å¼•用 - ''' - Sub New(Ref As String) - Call MyBase.New(0, Ref) - RefEntry = Ref - End Sub - - ''' - ''' 得到内存之中的实际引用ä½ç½® - ''' - ''' - ''' - Public Function GetAddress(MemoryDevice As ShoalShell.Runtime.Objects.I_MemoryManagementDevice) As String - Dim Addr As String = RefEntry - Dim Ref As Object - - If IsPointer Then - Ref = MemoryDevice.TryGetValue(Addr) - Addr = InternalGetAddress(Ref) - Return Addr - End If - - If Len(RefEntry) > 2 Then '表达å¼çš„æŒ‡é’ˆå¼•用形å¼é•¿åº¦è‡³å°‘è¦å¤§äºŽ2 - - If RefEntry.First = "{"c AndAlso RefEntry.Last = "}"c Then 'å†…éƒ¨è¡¨è¾¾å¼æŒ‡é’ˆå¼•用 - Addr = Mid(RefEntry, 2, Len(RefEntry) - 2) 'å¾—åˆ°è¡¨è¾¾å¼ - Call MemoryDevice.ScriptEngine.EXEC(Addr) - Ref = MemoryDevice.TryGetValue("$") - Addr = InternalGetAddress(Ref) - Return Addr - ElseIf RefEntry.First = "["c AndAlso RefEntry.Last = "]"c 'ä½ç½®æŒ‡é’ˆå¼•用 - 'å¯èƒ½ä¹Ÿæ˜¯å†…éƒ¨è¡¨è¾¾å¼ - Addr = Mid(RefEntry, 2, Len(RefEntry) - 2) 'å¾—åˆ°è¡¨è¾¾å¼ - Call MemoryDevice.ScriptEngine.EXEC(Addr) - Ref = MemoryDevice.TryGetValue("$") 'Ref必须是Integer/Long/Byte/UInteger/ULong/SByte/Short/UShort - - Dim p As Long = InternalGetPointer(Ref) - - If p > MemoryDevice.Count - 1 OrElse p < 0 Then - Throw New Exception($"The pointer {NameOf(RefEntry)}:={RefEntry} (*{NameOf(p)}={p}) reference to a null address!") - End If - - Addr = MemoryDevice.TryGetValue(Index:=p).Key - Return Addr - End If - - End If - - Return Addr - End Function - - ''' - ''' 会判断是å¦ä¸ºæœ‰æ•ˆçš„æŒ‡é’ˆ - ''' - ''' - ''' - Private Function InternalGetPointer(Ref As Object) As Long - If Ref Is Nothing Then - Throw New Exception($"The pointer {NameOf(RefEntry)}:={RefEntry} reference to a null address!") - End If - - Dim TypeID As Type = Ref.GetType - If TypeID.Equals(GetType(Integer)) OrElse - TypeID.Equals(GetType(Long)) OrElse - TypeID.Equals(GetType(Byte)) OrElse - TypeID.Equals(GetType(UInteger)) OrElse - TypeID.Equals(GetType(ULong)) OrElse - TypeID.Equals(GetType(SByte)) OrElse - TypeID.Equals(GetType(Short)) OrElse - TypeID.Equals(GetType(UShort)) Then - - Return CType(Ref, Long) - - Else - - Return -100 '无效的指针引用类型 - - End If - End Function - - Private Function InternalGetAddress(Ref As Object) As String - If Ref Is Nothing Then - Throw New Exception($"The pointer {NameOf(RefEntry)}:={RefEntry} reference to a null address!") - Else - Dim Addr As String = CStr(Ref) - Return Addr - End If - End Function - - ''' - ''' 具有$å‰ç¼€è¡¨ç¤ºæ˜¯å†…存地å€çš„引用,其余表示普通引用 - ''' - ''' - ''' - Public Function WriteMemory(value As Object, MemoryDevice As ShoalShell.Runtime.Objects.I_MemoryManagementDevice) As Object - Dim Addr As String = GetAddress(MemoryDevice) - Call MemoryDevice.InsertOrUpdate(Addr, value) - Return value - End Function - - Public Function GetValue(MemoryDevice As ShoalShell.Runtime.Objects.I_MemoryManagementDevice) As Object - Dim Addr As String = GetAddress(MemoryDevice) - Dim value As Object = MemoryDevice.TryGetValue(Addr) - Return value - End Function - - Public Overrides Function ToString() As String - If IsPointer Then - '内存地å€å¼•用 - Return $"Reference AddressOf {RefEntry}" - ElseIf IsInnerReference - Return $"Reference AddressOf Ref <- {RefEntry}" - ElseIf IsPointerReference - Return $"Reference AddressOf *p <- {RefEntry}" - Else - Return RefEntry '普通引用 - End If - End Function - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/My Project/Application.Designer.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/My Project/Application.Designer.vb deleted file mode 100644 index 88dd01c78..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/My Project/Application.Designer.vb +++ /dev/null @@ -1,13 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/My Project/Application.myapp b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/My Project/Application.myapp deleted file mode 100644 index 758895def..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/My Project/Application.myapp +++ /dev/null @@ -1,10 +0,0 @@ - - - false - false - 0 - true - 0 - 1 - true - diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/My Project/AssemblyInfo.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/My Project/AssemblyInfo.vb deleted file mode 100644 index e961866d7..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/My Project/AssemblyInfo.vb +++ /dev/null @@ -1,35 +0,0 @@ -Imports System -Imports System.Reflection -Imports System.Runtime.InteropServices - -' General Information about an assembly is controlled through the following -' set of attributes. Change these attribute values to modify the information -' associated with an assembly. - -' Review the values of the assembly attributes - - - - - - - - - - -'The following GUID is for the ID of the typelib if this project is exposed to COM - - -' Version information for an assembly consists of the following four values: -' -' Major Version -' Minor Version -' Build Number -' Revision -' -' You can specify all the values or you can default the Build and Revision Numbers -' by using the '*' as shown below: -' - - - diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/My Project/Resources.Designer.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/My Project/Resources.Designer.vb deleted file mode 100644 index 09e53d7b1..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/My Project/Resources.Designer.vb +++ /dev/null @@ -1,104 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - -Imports System - -Namespace My.Resources - - 'This class was auto-generated by the StronglyTypedResourceBuilder - 'class via a tool like ResGen or Visual Studio. - 'To add or remove a member, edit your .ResX file then rerun ResGen - 'with the /str option, or rebuild your VS project. - ''' - ''' A strongly-typed resource class, for looking up localized strings, etc. - ''' - _ - Friend Module Resources - - Private resourceMan As Global.System.Resources.ResourceManager - - Private resourceCulture As Global.System.Globalization.CultureInfo - - ''' - ''' Returns the cached ResourceManager instance used by this class. - ''' - _ - Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager - Get - If Object.ReferenceEquals(resourceMan, Nothing) Then - Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("Microsoft.VisualBasic.Scripting.ShoalShell.Resources", GetType(Resources).Assembly) - resourceMan = temp - End If - Return resourceMan - End Get - End Property - - ''' - ''' Overrides the current thread's CurrentUICulture property for all - ''' resource lookups using this strongly typed resource class. - ''' - _ - Friend Property Culture() As Global.System.Globalization.CultureInfo - Get - Return resourceCulture - End Get - Set - resourceCulture = value - End Set - End Property - - ''' - ''' Looks up a localized string similar to GNU GENERAL PUBLIC LICENSE - ''' Version 3, 29 June 2007 - ''' - ''' Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> - ''' Everyone is permitted to copy and distribute verbatim copies - ''' of this license document, but changing it is not allowed. - ''' - ''' Preamble - ''' - ''' The GNU General Public License is a free, copyleft license for - '''software and other kinds of works. - ''' - ''' The licenses for most software and other practical works are designed - '''to take away yo [rest of string was truncated]";. - ''' - Friend ReadOnly Property gpl() As String - Get - Return ResourceManager.GetString("gpl", resourceCulture) - End Get - End Property - - ''' - ''' Looks up a localized string similar to This program is free software: you can redistribute it and/or modify - '''it under the terms of the GNU General Public License as published by - '''the Free Software Foundation, either version 3 of the License, or - '''any later version. - ''' - '''This program is distributed in the hope that it will be useful, - '''but WITHOUT ANY WARRANTY; without even the implied warranty of - '''MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - '''GNU General Public License for more details. - ''' - '''You should have received a copy of the GNU [rest of string was truncated]";. - ''' - Friend ReadOnly Property license() As String - Get - Return ResourceManager.GetString("license", resourceCulture) - End Get - End Property - End Module -End Namespace diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/My Project/Resources.resx b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/My Project/Resources.resx deleted file mode 100644 index 5a97acb37..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/My Project/Resources.resx +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - ..\Resources\gpl.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312 - - - ..\Resources\license.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312 - - \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/My Project/Settings.Designer.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/My Project/Settings.Designer.vb deleted file mode 100644 index 5cc6f8c7d..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/My Project/Settings.Designer.vb +++ /dev/null @@ -1,73 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - - -Namespace My - - _ - Partial Friend NotInheritable Class MySettings - Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) - -#Region "My.Settings Auto-Save Functionality" -#If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean - - Private Shared addedHandlerLockObject As New Object - - _ - Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub -#End If -#End Region - - Public Shared ReadOnly Property [Default]() As MySettings - Get - -#If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If -#End If - Return defaultInstance - End Get - End Property - End Class -End Namespace - -Namespace My - - _ - Friend Module MySettingsProperty - - _ - Friend ReadOnly Property Settings() As Global.Microsoft.VisualBasic.Scripting.ShoalShell.My.MySettings - Get - Return Global.Microsoft.VisualBasic.Scripting.ShoalShell.My.MySettings.Default - End Get - End Property - End Module -End Namespace diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/My Project/Settings.settings b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/My Project/Settings.settings deleted file mode 100644 index 85b890b3c..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/My Project/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Resources/gpl.txt b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Resources/gpl.txt deleted file mode 100644 index 94a9ed024..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Resources/gpl.txt +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Resources/license.txt b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Resources/license.txt deleted file mode 100644 index da76ca0a9..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Resources/license.txt +++ /dev/null @@ -1,12 +0,0 @@ -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Debugging/Debugger.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Debugging/Debugger.vb deleted file mode 100644 index 2fb637871..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Debugging/Debugger.vb +++ /dev/null @@ -1,183 +0,0 @@ -Imports Microsoft.VisualBasic.WrapperClassTools.Net - -Namespace Runtime.Debugging - - ''' - ''' 这个对象是è¿è¡ŒäºŽShoal内部的,用作为调试的客户端的。当IDEå¯åŠ¨çš„æ—¶å€™ï¼Œä¼šæ‰“å¼€è°ƒè¯•æœåŠ¡ï¼ŒæŽ¥ç€é€šè¿‡å‘½ä»¤è¡Œå¯åЍShoal程åºï¼Œå°†ç«¯å£å·ä¼ é€’给本对象,二者之间通过Tcpå议进行通信 - ''' - ''' - Public Class Debugger : Inherits ShoalShell.Runtime.Objects.ShellScript - Implements Microsoft.VisualBasic.ConsoleDevice.STDIO__.I_ConsoleDeviceHandle - - ''' - ''' 主动å‘IDEå‘é€è°ƒè¯•æ¶ˆæ¯ - ''' - ''' - Dim TcpClient As Microsoft.VisualBasic.WrapperClassTools.Net.AsynchronousClient - ''' - ''' ç›‘å¬æ¥è‡ªäºŽIDE的控制命令 - ''' - ''' - Dim ReadListenerServices As Microsoft.VisualBasic.WrapperClassTools.Net.TcpSynchronizationServicesSocket - - Public Class DebuggerMessage - Public Property Message As String - Public Property Pid As Integer - Public Property MessageType As MessageTypes - - Public Enum MessageTypes - ''' - ''' IDEå‘Shoalè°ƒè¯•ç¨‹åºæŽ¨é€è„šæœ¬ - ''' - ''' - CTRL_PUSH_SCRIPT - ''' - ''' IDEå‘é€ç»ˆæ­¢è„šæœ¬è°ƒè¯•çš„ä¿¡å· - ''' - ''' - CTRL_KILL_SCRIPT - ''' - ''' IDE请求Shoalçš„å˜é‡å†…容 - ''' - ''' - CTRL_GETS_MEMORY - ''' - ''' IDE修改Shoal内存之中的å˜é‡çš„内容 - ''' - ''' - CTRL_MODIFY_VALUE - ''' - ''' è°ƒè¯•å®¢æˆ·ç«¯å‘æœåŠ¡å™¨è¿”å›žåˆå§‹åŒ–ä¿¡æ¯ - ''' - ''' - CTRL_DEBUGGER_INIT_INFO - - ''' - ''' Shoalå‘IDEå‘é€ä¸€èˆ¬çš„æ¶ˆæ¯ - ''' - ''' - OUTPUT_MESSAGE - ''' - ''' Shoalå‘IDEå‘é€é”™è¯¯æ¶ˆæ¯ - ''' - ''' - OUTPUT_ERROR - ''' - ''' Shoalå‘IDEå‘é€è­¦å‘Šæ¶ˆæ¯ - ''' - ''' - OUTPUT_WARNING - End Enum - End Class - - 'Dim CurrentConsole As IO.FileStream - 'Dim ConsoleSource As IO.StreamWriter - - Public ReadOnly Property DebuggerExit As Boolean - Get - Return _DebuggerExit - End Get - End Property - - Dim _DebuggerExit As Boolean = False - - ''' - ''' - ''' - ''' IDE调试监å¬å™¨çš„监å¬ç«¯å£å· - ''' - Sub New(LibraryRegistry As String, DebugListenerPort As Integer, Optional ShowInitializeMessage As Boolean = False) - Call MyBase.New(LibraryRegistry:=LibraryRegistry, ShowInitializeMessage:=ShowInitializeMessage) - - TcpClient = New WrapperClassTools.Net.AsynchronousClient("127.0.0.1", DebugListenerPort) - 'CurrentConsole = New IO.FileStream(path:=FileIO.FileSystem.GetTempFileName, mode:=IO.FileMode.OpenOrCreate, access:=IO.FileAccess.ReadWrite) - 'ConsoleSource = New IO.StreamWriter(stream:=CurrentConsole) - 'ConsoleSource.AutoFlush = True - - Call Console.WriteLine("[DEBUG] Shoal debugger listeners at 127.0.0.1:", DebugListenerPort) - 'Call Console.WriteLine("[DEBUG] Shoal debugger listeners at {0} ====> 127.0.0.1:{1}", CurrentConsole.Name, DebugListenerPort) - Call (Sub() Call InternalStartListening()).BeginInvoke(Nothing, Nothing) - Call Threading.Thread.Sleep(100) - Call (Sub() Call TcpClient.SendMessage(New Debugger.DebuggerMessage() With {.Message = ReadListenerServices.LocalPort, .MessageType = DebuggerMessage.MessageTypes.CTRL_DEBUGGER_INIT_INFO}.GetXml)).BeginInvoke(Nothing, Nothing) - 'Console.SetOut(ConsoleSource) - End Sub - - Private Sub InternalStartListening() - ReadListenerServices = New TcpSynchronizationServicesSocket(AddressOf InternalProtocol, GetFirstAvailablePort) - Try -RESTART: ReadListenerServices.Run() - Catch ex As Exception - Call Console.WriteLine(ex.ToString) - GoTo RESTART - End Try - End Sub - - Dim _InternalScriptDebugger As Runtime.Debugging.ShellScriptDebuggerModel - - Protected Overrides Sub InternalExecuteScript(Script As Objects.ObjectModels.ShellScript) - _InternalScriptDebugger = New Runtime.Debugging.ShellScriptDebuggerModel((From CodeLine In Script.ToArray Select CodeLine.Value).ToArray, ScriptEngine:=Me) - _InternalScriptDebugger.Execute() - _InternalScriptDebugger.Free() - End Sub - - Private Function InternalProtocol(strMessage As String, remoteDevice As Net.IPEndPoint) As String - - 'Call Console.WriteLine(strMessage) - - Dim data As DebuggerMessage = strMessage.CreateObjectFromXml(Of DebuggerMessage)(False) - - If data Is Nothing Then - Return ERROR_PROTOCOL - End If - - Dim currentProcess = Process.GetCurrentProcess - - If data.Pid <> currentProcess.Id Then - - End If - - If data.MessageType = DebuggerMessage.MessageTypes.OUTPUT_MESSAGE Then - 'Call Console.WriteLine(data.Message) - Return "" - End If - - If data.MessageType = DebuggerMessage.MessageTypes.CTRL_PUSH_SCRIPT Then - 'Call Console.WriteLine("[DEBUG] Execute pushed script....") - Call (Sub() Call InternalExecutePushedScript(data.Message)).BeginInvoke(Nothing, Nothing) - - If Me._RunningScript Then - Return New Debugger.DebuggerMessage() With {.MessageType = DebuggerMessage.MessageTypes.OUTPUT_MESSAGE, .Message = "Currently running a script, waiting for the script exit..."}.GetXml - Else - Return EXECUTE_OK - End If - End If - - Return ERROR_PROTOCOL - End Function - - Private Sub InternalExecutePushedScript(Script As String) - Do While Me._RunningScript - Threading.Thread.Sleep(100) - Loop - - Call EXEC(Script) - End Sub - - Public Function Read() As Integer Implements ConsoleDevice.STDIO__.I_ConsoleDeviceHandle.Read - Throw New NotImplementedException - End Function - - Public Function ReadLine() As String Implements ConsoleDevice.STDIO__.I_ConsoleDeviceHandle.ReadLine - Throw New NotImplementedException - End Function - - Public Sub WriteLine(s As String) Implements ConsoleDevice.STDIO__.I_ConsoleDeviceHandle.WriteLine - Call TcpClient.SendMessage(New Debugger.DebuggerMessage() With {.Message = s, .MessageType = DebuggerMessage.MessageTypes.OUTPUT_MESSAGE}.GetXml) - End Sub - - Public Sub WriteLine(s As String, ParamArray args() As String) Implements ConsoleDevice.STDIO__.I_ConsoleDeviceHandle.WriteLine - Dim Message As String = String.Format(s, args) - Call TcpClient.SendMessage(New Debugger.DebuggerMessage() With {.Message = Message, .MessageType = DebuggerMessage.MessageTypes.OUTPUT_MESSAGE}.GetXml) - End Sub - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Debugging/DebuggerListener.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Debugging/DebuggerListener.vb deleted file mode 100644 index edad9fdd9..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Debugging/DebuggerListener.vb +++ /dev/null @@ -1,129 +0,0 @@ -Imports Microsoft.VisualBasic.WrapperClassTools.Net - -Namespace Runtime.Debugging - - ''' - ''' 这个对象为æœåŠ¡å™¨å¯¹è±¡ï¼Œè¿è¡Œåœ¨IDE模å—之中 - ''' - ''' - Public Class DebuggerListener : Implements System.IDisposable - - Dim _DebuggerListener As Microsoft.VisualBasic.WrapperClassTools.Net.TcpSynchronizationServicesSocket - Dim _InternalMessageSender As AsynchronousClient - Dim pid As Integer - Dim DebuggerProcess As Microsoft.VisualBasic.CommandLine.IORedirect - Dim LocalPort As Integer = GetFirstAvailablePort() - Dim DebuggerStarted As Boolean = False - - ''' - ''' /debug listener_port <listen_port> [-work <working_Dir>] - ''' - ''' - ''' - ''' - Sub New(Debugger As String, WorkDir As String) - Call (Sub() Call InternalStartListener()).BeginInvoke(Nothing, Nothing) - Call Threading.Thread.Sleep(100) - - Dim DebuggerArgvs As String = "/debug listener_port " & LocalPort - If Not String.IsNullOrEmpty(WorkDir) Then DebuggerArgvs = DebuggerArgvs & " -work """ & WorkDir & """" - Debugger = FileIO.FileSystem.GetFileInfo(Debugger).FullName - DebuggerProcess = New Microsoft.VisualBasic.CommandLine.IORedirect(Debugger, DebuggerArgvs, _disp_debug:=True) - Call DebuggerProcess.Start(_DISP_DEBUG_INFO:=True) - Call InternalWaitForDebuggerStart() - Call (Sub() SendHelloWorld()).BeginInvoke(Nothing, Nothing) - End Sub - - Private Sub InternalStartListener() - Try -RESTART: _DebuggerListener = New TcpSynchronizationServicesSocket(AddressOf InternalProtocol, LocalPort) - Call _DebuggerListener.Run() - Catch ex As Exception - Call Console.WriteLine(ex.ToString) - GoTo RESTART - End Try - End Sub - - Private Sub InternalWaitForDebuggerStart() - Do While Not DebuggerStarted - Call Threading.Thread.Sleep(10) - Loop - End Sub - - Private Function InternalProtocol(str As String, remote As Net.IPEndPoint) As String - Call Console.WriteLine(str) - - Dim Message As Debugger.DebuggerMessage = str.CreateObjectFromXml(Of Debugger.DebuggerMessage)(False) - - If Message Is Nothing Then - Return ERROR_PROTOCOL - End If - - If Message.MessageType = Debugger.DebuggerMessage.MessageTypes.CTRL_DEBUGGER_INIT_INFO AndAlso Not DebuggerStarted Then - DebuggerStarted = True - _InternalMessageSender = New AsynchronousClient("127.0.0.1", Val(Message.Message)) - Return EXECUTE_OK - End If - - Return ERROR_PROTOCOL - End Function - - Private Sub SendHelloWorld() - Call Threading.Thread.Sleep(1500) - pid = DebuggerProcess.ProcessInfo.Id - Dim Message As String = SendMessage("[DEBUGGING] Hello World!") - Call Console.WriteLine(Message) - End Sub - - Public Function PushScript(Script As String) As String - Dim Message = New Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging.Debugger.DebuggerMessage() With - { - .Pid = pid, .MessageType = Debugger.DebuggerMessage.MessageTypes.CTRL_PUSH_SCRIPT, .Message = Script} - Dim s_Message As String = _InternalMessageSender.SendMessage(Message.GetXml) - Call Console.WriteLine(s_Message) - Return s_Message - End Function - - Public Function SendMessage(s As String) As String - Return _InternalMessageSender.SendMessage(New Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Debugging.Debugger.DebuggerMessage() With - { - .Pid = pid, - .Message = s, - .MessageType = Debugger.DebuggerMessage.MessageTypes.OUTPUT_MESSAGE}.GetXml) - End Function - -#Region "IDisposable Support" - Private disposedValue As Boolean ' To detect redundant calls - - ' IDisposable - Protected Overridable Sub Dispose(disposing As Boolean) - If Not Me.disposedValue Then - If disposing Then - ' TODO: dispose managed state (managed objects). - Call DebuggerProcess.ProcessInfo.Kill() - Call DebuggerProcess.Free() - End If - - ' TODO: free unmanaged resources (unmanaged objects) and override Finalize() below. - ' TODO: set large fields to null. - End If - Me.disposedValue = True - End Sub - - ' TODO: override Finalize() only if Dispose(ByVal disposing As Boolean) above has code to free unmanaged resources. - 'Protected Overrides Sub Finalize() - ' ' Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above. - ' Dispose(False) - ' MyBase.Finalize() - 'End Sub - - ' This code added by Visual Basic to correctly implement the disposable pattern. - Public Sub Dispose() Implements IDisposable.Dispose - ' Do not change this code. Put cleanup code in Dispose(disposing As Boolean) above. - Dispose(True) - GC.SuppressFinalize(Me) - End Sub -#End Region - - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Debugging/DebuggerProtocol.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Debugging/DebuggerProtocol.vb deleted file mode 100644 index d1861a449..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Debugging/DebuggerProtocol.vb +++ /dev/null @@ -1,9 +0,0 @@ -Namespace Runtime.Debugging - - Module DebuggerProtocol - - Public Const ERROR_PROTOCOL As String = "ERROR_PROTOCOL" - Public Const EXECUTE_OK As String = "EXECUTE_OK" - - End Module -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Debugging/ShellScriptDebuggerModel.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Debugging/ShellScriptDebuggerModel.vb deleted file mode 100644 index 0047aa678..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Debugging/ShellScriptDebuggerModel.vb +++ /dev/null @@ -1,47 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ObjectModels -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects - -Namespace Runtime.Debugging - - Public Class ShellScriptDebuggerModel : Inherits Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ObjectModels.ShellScript - - Sub New(CodeLines As Generic.IEnumerable(Of ScriptCodeLine), ScriptEngine As ShoalShell.Runtime.Objects.ShellScript) - Call MyBase.New(CodeLines, ScriptEngine) - End Sub - - Protected Overrides Sub InternalExecuteScript(CodeLine As ObjectModels.ScriptCodeLine) - If String.Equals(CodeLine.OrignialScriptLine, FLAG_STATEMENT_RETURN_STACK, StringComparison.OrdinalIgnoreCase) Then - Call _InternalEXEC_Pointer.MoveNext() - Return - ElseIf InternalExecuteGoto(CodeLine) Then - Return - End If - - Dim CurrentExecHandle = CodeLine.InvokeMethod.BeginInvoke(Nothing, Nothing) - - Do While Not CurrentExecHandle.IsCompleted - If _KillScript Then - Call CurrentExecHandle.Free() - Return - End If - - Call Threading.Thread.Sleep(1) - Loop - - Dim Value As Object = CodeLine.InvokeMethod.EndInvoke(CurrentExecHandle) - Dim sys As Objects.I_MemoryManagementDevice = ScriptEngine._EngineMemoryDevice - Call sys.InsertOrUpdate(CodeLine.VariableAssigned, Value) - End Sub - - Dim _KillScript As Boolean = False - - Protected Overrides Function ExitScript() As Boolean - Return _KillScript - End Function - - Public Function KillScript() As Boolean - _KillScript = True - Return True - End Function - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/DeviceDriver/DeviceDriver.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/DeviceDriver/DeviceDriver.vb deleted file mode 100644 index 14fa05866..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/DeviceDriver/DeviceDriver.vb +++ /dev/null @@ -1,97 +0,0 @@ -Imports System.Drawing -Imports System.Reflection -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ObjectModels.Exceptions -Imports Microsoft.VisualBasic.Scripting.ShoalShell.DeviceDriver.DriverHandles - -Namespace DeviceDriver - - ''' - ''' 字典之中的Key属性分别为所需è¦è½¬æ¢çš„ç›®æ ‡ç±»åž‹çš„ç®€ç§°å’Œè¾“å…¥çš„ç¬¬ä¸€ä¸ªå‚æ•°çš„类型,目标方法åªèƒ½å¤Ÿæœ‰ä¸€ä¸ªå‚æ•° - ''' - ''' - Public Class InputDeviceDriver : Inherits TypeHandleEntryPointDriverrModule(Of InputDeviceHandle, Func(Of Object, Object), KeyValuePair(Of String, Type)) - - Sub New(Memory As ShoalShell.Runtime.Objects.I_MemoryManagementDevice) - Call MyBase.New(Memory.ScriptEngine) - MyBase._InternalHandles = New Dictionary(Of KeyValuePair(Of String, Type), Func(Of Object, Object)) _ - From - { - {New KeyValuePair(Of String, Type)("string", GetType(String)), AddressOf InputDeviceDriver.InternalReadTextFile}, - {New KeyValuePair(Of String, Type)("string()", GetType(String)), AddressOf IO.File.ReadAllLines}, - {New KeyValuePair(Of String, Type)("byte()", GetType(String)), AddressOf IO.File.ReadAllBytes}, - {New KeyValuePair(Of String, Type)("int", GetType(String)), AddressOf InputDeviceDriver.InternalGetInteger}, - {New KeyValuePair(Of String, Type)("int32", GetType(String)), AddressOf InputDeviceDriver.InternalGetInteger}, - {New KeyValuePair(Of String, Type)("integer", GetType(String)), AddressOf InputDeviceDriver.InternalGetInteger}} - End Sub - - - - - Private Shared Function InternalGetInteger(value As String) As Integer - Return CInt(Val(value)) - End Function - - - Private Shared Function InternalReadTextFile(path As String) As String - Return FileIO.FileSystem.ReadAllText(path) - End Function - - - Private Shared Function InternalReadTextLines(path As String) As String() - Return IO.File.ReadAllLines(path).ToArray - End Function - - Public Overrides Function ImportsHandler([Module] As Type) As Integer - Dim Entries = GetMethods([Module]) - Dim LQuery = (From item As TypeHandle In Entries - Let n = item.Handle - Let Method = item.MethodInfo - Let p = Method.GetParameters - Where p.Count = 1 - Let objType = p.First.ParameterType - Let DeviceHandle = Function(obj As Object) Method.Invoke(Nothing, {obj}) - Select DriverHandle = DeviceHandle, Entry = New KeyValuePair(Of String, Type)(n.TypeHandleId, objType), Mounts = Method).ToArray - - For Each Line In LQuery - If _InternalHandles.ContainsKey(Line.Entry) Then - Call _InternalHandles.Remove(Line.Entry) - End If - - Call _InternalHandles.Add(Line.Entry, Line.DriverHandle) - Call _InternalRecordHandleTrace(Line.Entry, Line.Mounts) - Next - - Return LQuery.Count - End Function - - ''' - ''' - ''' - ''' ç›®æ ‡å‡½æ•°çš„ç¬¬ä¸€ä¸ªå‚æ•°ï¼Œæœ¬æ–¹æ³•会根æ®è¿™ä¸ªå‚数以åŠå‚数查找最åˆé€‚çš„å¥æŸ„æ¥å¤„ç†æœ¬å‚数的输入 - ''' - ''' - ''' - Public Function TypeCasting(obj As Object, typeId As String) As Object - Dim EntryType As System.Type = obj.GetType - Dim LQuery = (From Hwnd As KeyValuePair(Of KeyValuePair(Of String, Type), Func(Of Object, Object)) - In Me._InternalHandles - Where String.Equals(Hwnd.Key.Key, typeId, StringComparison.OrdinalIgnoreCase) - Select Val = Hwnd.Value).ToArray - - If LQuery.IsNullOrEmpty Then - Dim exMsg As String = String.Format(MISSING_HANDLER, typeId, EntryType.FullName) - Throw New MissingPrimaryKeyException(exMsg) - End If - - Dim DriverHandle As Func(Of Object, Object) = LQuery.First - Dim value As Object = DriverHandle(obj) - Return value - End Function - - Const MISSING_HANDLER As String = "[MISSING_HANDLER {0}, {1}] You should imports a namespace which was contains the handle of this type and then run this program again." - - Protected Overrides Function HandleEntryToString(item As KeyValuePair(Of String, Type)) As String - Return String.Format("[{0}, {1}]", item.Key, item.Value.FullName) - End Function - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/DeviceDriver/DriverHandles.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/DeviceDriver/DriverHandles.vb deleted file mode 100644 index 51e13b6c7..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/DeviceDriver/DriverHandles.vb +++ /dev/null @@ -1,106 +0,0 @@ -Imports System.Drawing -Imports System.Reflection - -Namespace DeviceDriver.DriverHandles - - Public MustInherit Class TypeHandlerEntryPoint : Inherits Attribute - Protected _DataType As Type - - Public ReadOnly Property SupportDatatType As Type - Get - Return _DataType - End Get - End Property - - Sub New(dataType As Type) - _DataType = dataType - End Sub - End Class - - ''' - ''' 将目标å˜é‡åœ¨ç»ˆç«¯è¿›è¡Œè¾“出 - ''' - ''' - - Public Class OutputDeviceHandle : Inherits TypeHandlerEntryPoint - - Sub New(DataType As Type) - Call MyBase.New(DataType) - End Sub - End Class - - ''' - ''' 傿•°æŒ‡çš„æ˜¯ç›®æ ‡å‡½æ•°æ‰€è¿”回的值的类型,驱动程åºä¼šè‡ªåŠ¨æ ¹æ®å‡½æ•°çš„傿•°çš„类型æ¥å†³å®šå‡½æ•°æ–¹æ³•的调用 - ''' - ''' - - Public Class InputDeviceHandle : Inherits TypeHandlerEntryPoint - - Dim _InternalTypeId As String, _Description As String - - Public ReadOnly Property Description As String - Get - Return _Description - End Get - End Property - - Public ReadOnly Property TypeHandleId As String - Get - Return _InternalTypeId - End Get - End Property - - ''' - ''' - ''' - ''' - ''' The brief name of the type information, usage syntax of this input type casting driver in the shoal scripting is: var < (TypeId) $variable - ''' (类型简称,在脚本之中的使用语法为: var < (TypeId) $variable) - ''' - ''' - Sub New(TypeId As String, Optional Description As String = "") - Call MyBase.New(Nothing) - Me._InternalTypeId = TypeId - Me._Description = Description - End Sub - - Public Overrides Function ToString() As String - If String.IsNullOrEmpty(Description) Then - Return String.Format("Input Device handle for type ""{0}""", _InternalTypeId) - Else - Return String.Format("Input Device handle for type ""{0}""; // {1}", _InternalTypeId, _Description) - End If - End Function - End Class - - ''' - ''' Target delegate must compatible with delegate Func(Of T, String, Boolean), the first parameter in the delegate is the - ''' data type and the data to write to the file, the second parameter is the file path of the IO operation and the last bool - ''' return value indicated that the io operation success or not. please notices that, for the considerations of the data - ''' type compatible, the collection data type is recommended implement as generic enumeration interface. - ''' (目标接å£å§”托对象必须è¦ç¬¦åˆä»¥ä¸‹æŽ¥å£ç±»åž‹Func(Of T, String, Boolean),其中第一个将è¦å†™æ–‡ä»¶çš„æ•°æ®ç±»åž‹ï¼Œç¬¬äºŒä¸ªå‚数为 - ''' 文件路径,最åŽä¸€ä¸ªå‚数是文件是å¦å†™å…¥æˆåŠŸï¼Œè¯·æ³¨æ„,对于任æ„的集åˆç±»åž‹æŽ¨è使用泛型集åˆ) - ''' - ''' - - Public Class IO_DeviceHandle : Inherits TypeHandlerEntryPoint - - ''' - ''' - ''' - ''' 目标数æ®ç±»åž‹ï¼Œè„šæœ¬å¼•æ“Žä¼šè‡ªåŠ¨æ ¹æ®å‡½æ•°çš„æ•°æ®ç±»åž‹è‡ªåŠ¨é€‰æ‹©æ–‡ä»¶ç³»ç»Ÿçš„å†™å…¥æ–¹å¼çš„é©±åŠ¨ç¨‹åº - ''' - Sub New(DataType As Type) - Call MyBase.New(DataType) - End Sub - - Sub New(TypeId As String) - Call MyBase.New(System.Type.GetType(TypeId, throwOnError:=True, ignoreCase:=True)) - End Sub - - Public Overrides Function ToString() As String - Return String.Format("IOSupport::{0}", _DataType.FullName) - End Function - End Class - -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/DeviceDriver/IODeviceDriver.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/DeviceDriver/IODeviceDriver.vb deleted file mode 100644 index 72dbebe7e..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/DeviceDriver/IODeviceDriver.vb +++ /dev/null @@ -1,141 +0,0 @@ -Imports System.Drawing -Imports System.Reflection -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ObjectModels.Exceptions -Imports Microsoft.VisualBasic.Scripting.ShoalShell.DeviceDriver.DriverHandles - -Namespace DeviceDriver - - Public Class IODeviceDriver : Inherits TypeHandleEntryPointDriverrModule(Of IO_DeviceHandle, Func(Of Object, String, Boolean), Type) - - Sub New(Memory As Runtime.Objects.I_MemoryManagementDevice) - MyBase.New(Memory.ScriptEngine) - MyBase._InternalHandles = New Dictionary(Of Type, Func(Of Object, String, Boolean)) From { - {GetType(String), AddressOf IODeviceDriver.WriteTextFile}, - {GetType(Char()), AddressOf IODeviceDriver.WriteCharCollectionAsText}, - {GetType(String()), AddressOf IODeviceDriver.WriteTextCollection}, - {GetType(Image), AddressOf IODeviceDriver.WriteImageFile}, - {GetType(Bitmap), AddressOf IODeviceDriver.WriteBitmapFile}, - {GetType(Microsoft.VisualBasic.Logging.LogFile), AddressOf IODeviceDriver.SaveLogFile}} - End Sub - - Private Shared Function SaveLogFile(log As Microsoft.VisualBasic.Logging.LogFile, path As String) As Boolean - Return log.Save(path) - End Function - - ''' - ''' 返回æˆåŠŸå¯¼å…¥çš„IO方法 - ''' - ''' - ''' - ''' - Public Overrides Function ImportsHandler([Module] As System.Type) As Integer - Dim Methods As TypeHandle() = GetMethods([Module]) - - For Each item In Methods - If _InternalHandles.ContainsKey(item.Type) Then - Call Console.WriteLine("[UPDATE] {0} ==> {1}::{2}", item.Type.FullName, [Module].FullName, item.MethodInfo.Name) - Call _InternalHandles.Remove(item.Type) '如果已ç»å­˜åœ¨è¯¥ç±»åž‹çš„写入方法,则进行更新 - End If - Call _InternalHandles.Add(item.Type, value:=Function(data As Object, path As String) As Boolean - Dim rtvl As Object = item.MethodInfo.Invoke(Nothing, New Object() {data, path}) - Return CType(rtvl, Boolean) - End Function) - Call _InternalRecordHandleTrace(item.Type, item.MethodInfo) - Next - - Return Methods.Count - End Function - - Private Shared Function WriteImageFile(data As Image, path As String) As Boolean - Call data.Save(path) - Return True - End Function - - Private Shared Function WriteBitmapFile(data As Bitmap, path As String) As Boolean - Call data.Save(path) - Return True - End Function - - Private Shared Function WriteTextFile(data As Object, path As String) As Boolean - Dim strValue As String = If(data Is Nothing, "", data.ToString) - Call FileIO.FileSystem.WriteAllText(path, strValue, False) - Return True - End Function - - Private Shared Function WriteTextCollection(data As Object, path As String) As Boolean - Dim ChunkBuffer As String() = (From item In DirectCast(data, IEnumerable) Let strValue As String = item.ToString Select strValue).ToArray - Call IO.File.WriteAllLines(path, ChunkBuffer) - Return True - End Function - - Private Shared Function WriteCharCollectionAsText(data As Object, path As String) As Boolean - Dim strValue As String = If(data Is Nothing, "", New String((From c In DirectCast(data, IEnumerable) Let ch As Char = DirectCast(c, Char) Select ch).ToArray)) - Call FileIO.FileSystem.WriteAllText(path, strValue, False) - Return True - End Function - - Const EXCEPTION_MESSAGE_IO_HANDLER_MISSING As String = "IO method is missing for type: {0}, please try using ""imports "" command for imports the io method." - - ''' - ''' This function will trying to save the data in a properly method from the data type: - ''' Function will trying save the string as a text file; - ''' Basic data type collection will be save as a csv data table; - ''' All of the other data type will be saved based on the registry data; - ''' If the method is not found in the registry for the data type, then function will throw a method missing exception! - ''' (函数会å°è¯•æ ¹æ®æ–‡ä»¶çš„类型æ¥é€‰æ‹©åˆé€‚çš„ä¿å­˜æ ¼å¼: - ''' 字符串类型会ä¿å­˜ä¸ºæ–‡æœ¬æ–‡ä»¶ - ''' 数组会ä¿å­˜ä¸ºCsv - ''' å…¶ä»–çš„å¤æ‚类型会å°è¯•æ ¹æ®æ³¨å†Œçš„奿Ÿ„æ¥æ‰§è¡Œç›¸åº”的数æ®ä¿å­˜æ“作) - ''' - ''' - ''' - ''' - ''' - Public Function WriteData(variable As String, path As String) As Boolean - Dim var As Object = _ShoalMemoryDevice.TryGetValue(variable) - Dim type As Type = var.GetType - - path = FileIO.FileSystem.GetFileInfo(_ShoalMemoryDevice.FormatString(path)).FullName - - Call Console.WriteLine("Flush data to handle *""file:///{0}""...", path) - Call FileIO.FileSystem.CreateDirectory(FileIO.FileSystem.GetParentPath(path)) - - If _InternalHandles.ContainsKey(type) Then - - Try - Return _InternalHandles(type)(var, path) - Catch ex As Exception - Throw New ShoalShell.Runtime.Objects.ObjectModels.Exceptions.ScriptRunTimeException( - String.Format("An unexpected exception occurs while trying flush the data to the handle *""{0}""...", path) & vbCrLf & vbCrLf & ex.ToString, _ShoalMemoryDevice) - End Try - Else - Dim GenericCollection As Type = Nothing - - Try - GenericCollection = type.Collection2GenericIEnumerable - Catch ex As Exception - Dim Message As String = String.Format(EXCEPTION_ON_HANDLE_GENERIC_TYPE, type.FullName) & vbCrLf & vbCrLf & ex.ToString - Throw New ShoalShell.Runtime.Objects.ObjectModels.Exceptions.ScriptRunTimeException(Message, _ShoalMemoryDevice) - End Try - - If _InternalHandles.ContainsKey(GenericCollection) Then - - Try - Return _InternalHandles(GenericCollection)(var, path) - Catch ex As Exception - Throw New ShoalShell.Runtime.Objects.ObjectModels.Exceptions.ScriptRunTimeException( - String.Format("An unexpected exception occurs while trying flush the data to the handle *""{0}""...", path) & vbCrLf & vbCrLf & ex.ToString, _ShoalMemoryDevice) - End Try - Else - Throw New MethodNotFoundException(String.Format(EXCEPTION_MESSAGE_IO_HANDLER_MISSING, type.FullName), "") - End If - End If - End Function - - Public Const EXCEPTION_ON_HANDLE_GENERIC_TYPE As String = "Unable to handle the type to generic: ""{0}"". The reason for this error maybe is you haven't imports the io device handler for target type." - - Protected Overrides Function HandleEntryToString(item As Type) As String - Return item.FullName - End Function - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/DeviceDriver/OutputDeviceDriver.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/DeviceDriver/OutputDeviceDriver.vb deleted file mode 100644 index 94523c8ac..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/DeviceDriver/OutputDeviceDriver.vb +++ /dev/null @@ -1,122 +0,0 @@ -Imports System.Drawing -Imports System.Reflection -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ObjectModels.Exceptions -Imports Microsoft.VisualBasic.Scripting.ShoalShell.DeviceDriver.DriverHandles - -Namespace DeviceDriver - - ''' - ''' Output support module for that data type.(å„ç§æ•°æ®ç±»åž‹çš„输出模å—) - ''' - ''' - Public Class OutputDeviceDriver : Inherits TypeHandleEntryPointDriverrModule(Of OutputDeviceHandle, Func(Of Object, Object), Type) - - Sub New(Memory As ShoalShell.Runtime.Objects.I_MemoryManagementDevice) - MyBase.New(Memory.ScriptEngine) - MyBase._InternalHandles = New Dictionary(Of Type, Func(Of Object, Object)) _ - From - { - {GetType(String), AddressOf OutputDeviceDriver.WriteLineText}, - {GetType(Generic.IEnumerable(Of String)), AddressOf OutputDeviceDriver.WriteStringCollection}, - {GetType(Generic.IEnumerable(Of Object)), AddressOf OutputDeviceDriver.WriteObjectCollection}, - {GetType(Double), AddressOf OutputDeviceDriver.WriteLineText}, - {GetType(Integer), AddressOf OutputDeviceDriver.WriteLineText}, - {GetType(UInteger), AddressOf OutputDeviceDriver.WriteLineText}, - {GetType(Short), AddressOf OutputDeviceDriver.WriteLineText}, - {GetType(Long), AddressOf OutputDeviceDriver.WriteLineText}, - {GetType(Date), AddressOf OutputDeviceDriver.WriteLineText}, - {GetType(Boolean), AddressOf OutputDeviceDriver.WriteLineText}, - {GetType(Byte), AddressOf OutputDeviceDriver.WriteLineText}, - {GetType(Object), AddressOf OutputDeviceDriver.WriteLineText}} - End Sub - - Private Shared Function WriteLineText(s As Object) As Object - Call Console.WriteLine(" = [0] " & s.ToString) - Return s - End Function - - Private Shared Function WriteObjectCollection(data As Generic.IEnumerable(Of Object)) As Object() - If data.IsNullOrEmpty Then - Call Console.WriteLine(" = null array") - End If - - Call WriteStringCollection((From item In data Let strValue As String = If(item = Nothing, "", item.ToString) Select strValue).ToArray) - Return data.ToArray - End Function - - Private Shared Function WriteStringCollection(data As Generic.IEnumerable(Of String)) As String() - If data.IsNullOrEmpty Then - Call Console.WriteLine(" = null array") - End If - - Call Console.WriteLine(" =") - For i As Integer = 0 To data.Count - 1 - Call Console.WriteLine(" [{0}] {1}", i, data(i)) - Next - - Return data.ToArray - End Function - - Public Overrides Function ImportsHandler([Module] As Type) As Integer - Dim Methods As TypeHandle() = GetMethods([Module]) - - For Each item As TypeHandle In Methods - - If _InternalHandles.ContainsKey(item.Type) Then - Call Console.WriteLine("[UPDATE] {0} ==> {1}::{2}", item.Type.FullName, [Module].FullName, item.MethodInfo.Name) - Call _InternalHandles.Remove(item.Type) '如果已ç»å­˜åœ¨è¯¥ç±»åž‹çš„写入方法,则进行更新 - End If - - Call _InternalHandles.Add(item.Type, value:=Function(data As Object) item.MethodInfo.Invoke(Nothing, New Object() {data})) - Call _InternalRecordHandleTrace(item.Type, item.MethodInfo) - Next - - Return Methods.Count - End Function - - Const EXCEPTION_MESSAGE_OUTPUT_HANDLER_MISSING As String = "Output handler method is missing for type: {0}, please try using ""imports "" command for imports the io method." - Const NULL As String = "NULL" - - ''' - ''' - ''' - ''' Variable Name.(å˜é‡å) - ''' - ''' - Public Function HandleOutput(variable As String) As Object - Dim var As Object = _ShoalMemoryDevice.TryGetValue(variable) - - If var Is Nothing Then var = NULL 'var是空值,则输出空值所指示的字符串 - - Dim Type As Type = var.GetType - - If _InternalHandles.ContainsKey(Type) Then - Dim DriverHandle = _InternalHandles(Type) - Return DriverHandle(var) - Else - Return InternalProcessCollectionTypeOutput(Type, var) - End If - End Function - - Private Function InternalProcessCollectionTypeOutput(TypeInfo As Type, var As Object) As Object - Dim GenericCollection As Type = TypeInfo.Collection2GenericIEnumerable - - If _InternalHandles.ContainsKey(GenericCollection) Then - Return _InternalHandles(GenericCollection)(var) - Else - Try - Dim cString As String = var.ToString 'å°è¯•将目标对象转æ¢ä¸ºå­—符串进行输出 - Call Console.WriteLine(cString) - Return cString - Catch ex As Exception '但是转æ¢å¤±è´¥äº†ï¼Œæœ€ç»ˆåªèƒ½å¤Ÿè·‘出错误 - Dim Msg As String = String.Format(EXCEPTION_MESSAGE_OUTPUT_HANDLER_MISSING, TypeInfo.FullName) - Throw New MethodNotFoundException(Msg, "") - End Try - End If - End Function - - Protected Overrides Function HandleEntryToString(item As Type) As String - Return item.FullName - End Function - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/DeviceDriver/TypeHandleEntryPointDriverrModule.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/DeviceDriver/TypeHandleEntryPointDriverrModule.vb deleted file mode 100644 index 5bb282abc..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/DeviceDriver/TypeHandleEntryPointDriverrModule.vb +++ /dev/null @@ -1,79 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell.DeviceDriver.DriverHandles -Imports System.Reflection - -Namespace DeviceDriver - - Public MustInherit Class TypeHandleEntryPointDriverrModule(Of HandlerEntry As TypeHandlerEntryPoint, Handler, T_TYPE_ID) : Inherits ShoalShell.Runtime.Objects.ObjectModels.IScriptEngineComponent - - Protected _ShoalMemoryDevice As Runtime.Objects.I_MemoryManagementDevice - Protected _InternalHandles As Dictionary(Of T_TYPE_ID, Handler) - - Dim _HandlesTrace As Dictionary(Of T_TYPE_ID, String) = New Dictionary(Of T_TYPE_ID, String) - - Protected MustOverride Function HandleEntryToString(item As T_TYPE_ID) As String - - Public Function GetMountEntries() As String() - If _HandlesTrace.IsNullOrEmpty Then - Return {"No external device was mount at here yet..." & vbCrLf} - End If - - Dim LQuery = (From item In _HandlesTrace Select String.Format(" ----> [{0}] Mount at ""{1}""" & vbCrLf, HandleEntryToString(item.Key), item.Value)).ToList - Call LQuery.Insert(0, "Device TYPE_ID is " & Me.GetType.FullName & vbCrLf) - Return LQuery.ToArray - End Function - - Protected Sub _InternalRecordHandleTrace(Entry As T_TYPE_ID, MountPoint As MethodInfo) - If _HandlesTrace.ContainsKey(Entry) Then - Call _HandlesTrace.Remove(Entry) - End If - - Dim Assembly = MountPoint.DeclaringType - Dim sPoint As String = String.Format("{0}!{1}::{2}", Assembly.Assembly.Location, Assembly.FullName, MountPoint.ToString) - - Call _HandlesTrace.Add(Entry, sPoint) - End Sub - - Sub New(ScriptEngine As ShoalShell.Runtime.Objects.ShellScript) - Call MyBase.New(ScriptEngine) - _ShoalMemoryDevice = ScriptEngine._EngineMemoryDevice - End Sub - - Public MustOverride Function ImportsHandler([Module] As System.Type) As Integer - - Protected Shared Function GetMethods([Module] As ShoalShell.DelegateHandlers.TypeLibraryRegistry.RegistryNodes.Module) As TypeHandle() - Dim Methods = (From Entry As KeyValuePair(Of System.Type, String) - In [Module].OriginalAssemblys - Select (From MethodInfo As System.Reflection.MethodInfo - In Entry.Key.GetMethods(System.Reflection.BindingFlags.Public Or System.Reflection.BindingFlags.Static) - Let attrs As Object() = MethodInfo.GetCustomAttributes(attributeType:=GetType(HandlerEntry), inherit:=True) - Where Not attrs.IsNullOrEmpty - Let Handle = DirectCast(attrs.First, HandlerEntry) - Select New TypeHandle With - { - .Type = Handle.SupportDatatType, .Handle = Handle, .MethodInfo = MethodInfo}).ToArray).ToArray - Return Methods.MatrixToVector - End Function - - Protected Shared Function GetMethods([Module] As System.Type) As TypeHandle() - Dim Methods = (From MethodInfo As System.Reflection.MethodInfo - In [Module].GetMethods(System.Reflection.BindingFlags.Public Or System.Reflection.BindingFlags.Static) - Let attrs As Object() = MethodInfo.GetCustomAttributes(attributeType:=GetType(HandlerEntry), inherit:=True) - Where Not attrs.IsNullOrEmpty - Let Handle = DirectCast(attrs.First, HandlerEntry) - Select New TypeHandle With - { - .Handle = Handle, .Type = Handle.SupportDatatType, .MethodInfo = MethodInfo}).ToArray - Return Methods - End Function - - Protected Structure TypeHandle - Dim Type As Type - Dim MethodInfo As MethodInfo - Dim Handle As HandlerEntry - - Public Overrides Function ToString() As String - Return Handle.ToString - End Function - End Structure - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Dynamics.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Dynamics.vb deleted file mode 100644 index 5089725c5..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Dynamics.vb +++ /dev/null @@ -1,362 +0,0 @@ -Imports System.Dynamic -Imports System.Text -Imports Microsoft.VisualBasic.CommandLine.Reflection - -Namespace Runtime.Objects - - ''' - ''' Dynamics programming environment. If the environment thorw member not found exception, then you should consider of the - ''' target method namespace may be not registered yet so then you should try using - ''' to initialize the environment. - ''' (Shoal脚本的动æ€ç¼–程环境,注æ„:å‡è‹¥æç¤ºæ‰¾ä¸åˆ°æ–¹æ³•æˆ–è€…ç©ºå¼•ç”¨ï¼Œè¯·ä½¿ç”¨å¸¦å‚æ•°çš„ - ''' 创建方法在扫æå®Œæ’件文件夹之åŽå†æ¥åˆ›å»ºå¯¹è±¡å®žä¾‹) - ''' - ''' 所返回的是Shoal的系统ä¿ç•™å˜é‡çš„值 - ''' - ''' - Public Class Dynamics : Inherits Dynamic.DynamicObject - Implements System.IDisposable - Implements IConvertible - - Dim _ShoalShellScriptEngine As ShoalShell.Runtime.Objects.ShellScript - - ''' - ''' 获å–Shoal之中的系统ä¿ç•™å˜é‡$的值 - ''' - ''' - ''' - ''' - Public ReadOnly Property TopStackValue As Object - Get - Return _ShoalShellScriptEngine._EngineMemoryDevice("") - End Get - End Property - - Sub New(LibraryRegistry As ShoalShell.DelegateHandlers.TypeLibraryRegistry.DelegateRegistry) - _ShoalShellScriptEngine = New ShellScript(LibraryRegistry) - End Sub - - Sub New(ScriptEngine As ShoalShell.Runtime.Objects.ShellScript) - _ShoalShellScriptEngine = ScriptEngine - End Sub - - ''' - ''' - ''' - ''' - ''' - Public Shared Function CreateDefaultEnvironment() As Dynamics - Return New ShoalShell.Runtime.Objects.Dynamics(ShoalShell.DelegateHandlers.TypeLibraryRegistry.DelegateRegistry.CreateDefault) - End Function - - Public Shared Function CreateDefaultEnvironment(scanPlugins As String) As Dynamics - Dim Environment = New ShoalShell.Runtime.Objects.Dynamics(ShoalShell.DelegateHandlers.TypeLibraryRegistry.DelegateRegistry.CreateDefault) - Call Environment.ScanPlugins(scanPlugins) - Call Environment._ShoalShellScriptEngine.ReloadLibraryRegistry() - Return Environment - End Function - - Public Function [Imports]([Namespace] As String) As Integer - Return Me._ShoalShellScriptEngine._Interpreter._InternalCommands.ImportsNamespace([Namespace]) - End Function - - Public Function Install(AssemblyPath As String) As Boolean - Return Me._ShoalShellScriptEngine.InstallModules(AssemblyPath) - End Function - - Public Function Evaluate(script As String) As Object - Call _ShoalShellScriptEngine.EXEC(script) - Return _ShoalShellScriptEngine.GetStackValue - End Function - - Const CMDL_SCAN_PLUG_INS As String = "-scan.plugins -dir ""{0}""" - - - Public Function ScanPlugins(argvs As CommandLine.CommandLine) As Integer - Dim Dir As String = argvs("-dir"), Ext As String = argvs("-ext") - Ext = If(String.IsNullOrEmpty(Ext), "*.*", Ext) - - Dim FilesForScan = FileIO.FileSystem.GetFiles(Dir, FileIO.SearchOption.SearchTopLevelOnly, Ext) - Dim Registry As Microsoft.VisualBasic.Scripting.ShoalShell.DelegateHandlers.TypeLibraryRegistry.DelegateRegistry = Me._ShoalShellScriptEngine.TypeLibraryRegistry - - For Each File As String In FilesForScan - On Error Resume Next - Call Registry.RegisterAssemblyModule(File, "") - Next - - Call Registry.Save() - - Return 0 - End Function - -#Region "Dynamics Support" - - Public Overrides Function GetDynamicMemberNames() As IEnumerable(Of String) - Return (From item In _ShoalShellScriptEngine._EngineMemoryDevice Select item.Key).ToArray - End Function - - Public Overrides Function TryGetMember(ByVal binder As GetMemberBinder, ByRef result As Object) As Boolean - If _ShoalShellScriptEngine._EngineMemoryDevice.ExistsVariable(binder.Name) Then - result = _ShoalShellScriptEngine._EngineMemoryDevice.TryGetValue(binder.Name) - Else - result = Nothing - End If - - Return True - End Function - - Public Overrides Function TrySetMember(binder As SetMemberBinder, value As Object) As Boolean - If _ShoalShellScriptEngine._EngineMemoryDevice.ExistsVariable(binder.Name) Then - Call _ShoalShellScriptEngine._EngineMemoryDevice.SetValue(binder.Name, value) - Return True - End If - - Return False - End Function - - Dim _InternalVirtualInvokeMethodNamespaceCache As StringBuilder = New StringBuilder(1024) - - ''' - ''' 首先å°è¯•查看里é¢çš„æ•°æ®ï¼Œå‡è‹¥æ²¡æœ‰çš„è¯åœ¨ç›´æŽ¥æŸ¥æ‰¾ï¼Œå‡è‹¥æœ‰æ•°æ®ï¼Œåˆ™æ‰§è¡Œå‘½å空间的连接æ“作之åŽåœ¨æŸ¥æ‰¾æ‰§è¡Œ - ''' - ''' - ''' - ''' - ''' - ''' - Public Overrides Function TryInvokeMember(binder As InvokeMemberBinder, args() As Object, ByRef result As Object) As Boolean - Dim MethodName As String - - If _InternalVirtualInvokeMethodNamespaceCache.Length = 0 Then - MethodName = binder.Name - Else - MethodName = String.Format("{0}.{1}", _InternalVirtualInvokeMethodNamespaceCache.ToString, binder.Name) - End If - - Try - Dim Method = _ShoalShellScriptEngine._Interpreter.TryGetCommand(MethodName) - result = Method.TryInvoke(Nothing, args) - _InternalVirtualInvokeMethodNamespaceCache.Clear() - Catch ex As Exception - If _InternalVirtualInvokeMethodNamespaceCache.Length = 0 Then - _InternalVirtualInvokeMethodNamespaceCache.Append(binder.Name) - Else - Call _InternalVirtualInvokeMethodNamespaceCache.Append("." & binder.Name) - End If - - result = Me - End Try - - Return True - End Function - - Public Overrides Function TryConvert(binder As ConvertBinder, ByRef result As Object) As Boolean - Return MyBase.TryConvert(binder, result) - End Function -#End Region - -#Region "IDisposable Support" - Private disposedValue As Boolean ' To detect redundant calls - - ' IDisposable - Protected Overridable Sub Dispose(disposing As Boolean) - If Not Me.disposedValue Then - If disposing Then - ' TODO: dispose managed state (managed objects). - End If - - ' TODO: free unmanaged resources (unmanaged objects) and override Finalize() below. - ' TODO: set large fields to null. - End If - Me.disposedValue = True - End Sub - - ' TODO: override Finalize() only if Dispose(ByVal disposing As Boolean) above has code to free unmanaged resources. - 'Protected Overrides Sub Finalize() - ' ' Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above. - ' Dispose(False) - ' MyBase.Finalize() - 'End Sub - - ' This code added by Visual Basic to correctly implement the disposable pattern. - Public Sub Dispose() Implements IDisposable.Dispose - ' Do not change this code. Put cleanup code in Dispose(disposing As Boolean) above. - Dispose(True) - GC.SuppressFinalize(Me) - End Sub -#End Region - -#Region "Implements IConvertible" - - Protected ReadOnly _TypeCodes As Dictionary(Of Type, TypeCode) = - New Dictionary(Of Type, TypeCode) From - { - {GetType(Object), TypeCode.Object}, - {GetType(Boolean), TypeCode.Boolean}, - {GetType(Byte), TypeCode.Byte}, - {GetType(Char), TypeCode.Char}, - {GetType(DateTime), TypeCode.DateTime}, - {GetType(DBNull), TypeCode.DBNull}, - {GetType(Decimal), TypeCode.Decimal}, - {GetType(Double), TypeCode.Double}, - {GetType(Int16), TypeCode.Int16}, - {GetType(Int32), TypeCode.Int32}, - {GetType(Int64), TypeCode.Int64}, - {GetType(SByte), TypeCode.SByte}, - {GetType(Single), TypeCode.Single}, - {GetType(String), TypeCode.String}, - {GetType(UInt16), TypeCode.UInt16}, - {GetType(UInt32), TypeCode.UInt32}, - {GetType(UInt64), TypeCode.UInt64}} - - Public Function GetTypeCode() As TypeCode Implements IConvertible.GetTypeCode - Dim value = Me.TopStackValue - - If value Is Nothing Then - Return TypeCode.Object - End If - - Dim valueType As Type = value.GetType - - If _TypeCodes.ContainsKey(valueType) Then - Return _TypeCodes(valueType) - Else - Return TypeCode.Object - End If - End Function - - Public Function ToBoolean(provider As IFormatProvider) As Boolean Implements IConvertible.ToBoolean - Return TopStackValue.ToString.getBoolean - End Function - - Public Function ToByte(provider As IFormatProvider) As Byte Implements IConvertible.ToByte - Return CType(TopStackValue, Byte) - End Function - - Public Function ToChar(provider As IFormatProvider) As Char Implements IConvertible.ToChar - Dim value As Object = TopStackValue - If value Is Nothing Then - Return Chr(0) - Else - Return value.ToString.First - End If - End Function - - Public Function ToDateTime(provider As IFormatProvider) As Date Implements IConvertible.ToDateTime - Dim value As Object = TopStackValue - If value Is Nothing Then - Return Now - Else - Dim d As DateTime = CType(value.ToString, DateTime) - Return d - End If - End Function - - Public Function ToDecimal(provider As IFormatProvider) As Decimal Implements IConvertible.ToDecimal - Dim value As Object = TopStackValue - If value Is Nothing Then - Return 0 - Else - Return CType(value, Decimal) - End If - End Function - - Public Function ToDouble(provider As IFormatProvider) As Double Implements IConvertible.ToDouble - Dim value = TopStackValue - If value Is Nothing Then - Return 0 - Else - Return Val(value.ToString) - End If - End Function - - Public Function ToInt16(provider As IFormatProvider) As Short Implements IConvertible.ToInt16 - Dim value = TopStackValue - If value Is Nothing Then - Return 0 - Else - Return Val(value.ToString) - End If - End Function - - Public Function ToInt32(provider As IFormatProvider) As Integer Implements IConvertible.ToInt32 - Dim value = TopStackValue - If value Is Nothing Then - Return 0 - Else - Return Val(value.ToString) - End If - End Function - - Public Function ToInt64(provider As IFormatProvider) As Long Implements IConvertible.ToInt64 - Dim value = TopStackValue - If value Is Nothing Then - Return 0 - Else - Return Val(value.ToString) - End If - End Function - - Public Function ToSByte(provider As IFormatProvider) As SByte Implements IConvertible.ToSByte - Dim value = TopStackValue - If value Is Nothing Then - Return 0 - Else - Return CType(Val(value.ToString), SByte) - End If - End Function - - Public Function ToSingle(provider As IFormatProvider) As Single Implements IConvertible.ToSingle - Dim value = TopStackValue - If value Is Nothing Then - Return 0 - Else - Return Val(value.ToString) - End If - End Function - - Public Overloads Function ToString(provider As IFormatProvider) As String Implements IConvertible.ToString - Dim value = TopStackValue - If value Is Nothing Then - Return "" - Else - Return value.ToString - End If - End Function - - Public Function ToType(conversionType As Type, provider As IFormatProvider) As Object Implements IConvertible.ToType - Return TopStackValue.GetType - End Function - - Public Function ToUInt16(provider As IFormatProvider) As UShort Implements IConvertible.ToUInt16 - Dim value = TopStackValue - If value Is Nothing Then - Return 0 - Else - Return Val(value.ToString) - End If - End Function - - Public Function ToUInt32(provider As IFormatProvider) As UInteger Implements IConvertible.ToUInt32 - Dim value = TopStackValue - If value Is Nothing Then - Return 0 - Else - Return Val(value.ToString) - End If - End Function - - Public Function ToUInt64(provider As IFormatProvider) As ULong Implements IConvertible.ToUInt64 - Dim value = TopStackValue - If value Is Nothing Then - Return 0 - Else - Return Val(value.ToString) - End If - End Function -#End Region - - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Exceptions/CircularReferencesException.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Exceptions/CircularReferencesException.vb deleted file mode 100644 index c1c853f89..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Exceptions/CircularReferencesException.vb +++ /dev/null @@ -1,47 +0,0 @@ -Imports System.Text - -Namespace Runtime.Objects.ObjectModels.Exceptions - - ''' - ''' One or more circle reference was detected from the include list.(在多个脚本之间使用include语å¥äº§ç”Ÿäº†å¾ªçŽ¯å¼•ç”¨) - ''' - ''' - Public Class CircularReferencesException : Inherits ShoalScriptException - - Public Property IncludeList As String() - - Sub New() - Call MyBase.New("Cycle Reference in the script! One or more circle reference was detected from the include list!") - End Sub - - Public Overrides ReadOnly Property ExceptionType As String - Get - Return GetType(CircularReferencesException).FullName - End Get - End Property - - Public Overrides Function ToString() As String - Dim sBuilder As StringBuilder = New StringBuilder(MyBase.ToString) - Call sBuilder.AppendLine() - Call sBuilder.AppendLine("Include List:") - For Each item In IncludeList - Call sBuilder.AppendLine(item) - Next - - Dim CycleIncluded = (From item In (From strLine As String - In IncludeList - Select FileIO.FileSystem.GetFileInfo(strLine).FullName - Group FullName By FullName Into Group).ToArray - Where item.Group.Count > 1 - Select item).ToArray - - Call sBuilder.AppendLine() - Call sBuilder.AppendLine("Cycle Reference at: ") - For Each Line In CycleIncluded - Call sBuilder.AppendLine(Line.FullName) - Next - - Return sBuilder.ToString - End Function - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Exceptions/InterpreterException.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Exceptions/InterpreterException.vb deleted file mode 100644 index 319be96b2..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Exceptions/InterpreterException.vb +++ /dev/null @@ -1,34 +0,0 @@ -Imports System.Text - -Namespace Runtime.Objects.ObjectModels.Exceptions - - Public Class InterpreterException : Inherits ShoalScriptException - - Sub New(Message As String) - Call MyBase.New(Message) - End Sub - - Public Overrides ReadOnly Property ExceptionType As String - Get - Return GetType(InterpreterException).FullName - End Get - End Property - End Class - - ''' - ''' Syntax error in the shoal shell interpreter script text parsing. - ''' - ''' - Public Class SyntaxErrorException : Inherits InterpreterException - - Sub New(message As String) - Call MyBase.New(message) - End Sub - - Public Overrides ReadOnly Property ExceptionType As String - Get - Return GetType(SyntaxErrorException).FullName - End Get - End Property - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Exceptions/MethodNotFoundException.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Exceptions/MethodNotFoundException.vb deleted file mode 100644 index 470a19310..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Exceptions/MethodNotFoundException.vb +++ /dev/null @@ -1,28 +0,0 @@ -Imports System.Text - -Namespace Runtime.Objects.ObjectModels.Exceptions - - ''' - ''' Could not found the method entry point in the registry. - ''' - ''' - Public Class MethodNotFoundException : Inherits ShoalShell.Runtime.Objects.ObjectModels.Exceptions.ShoalScriptException - - Const METHOD_NOT_FOUND As String = "Could not found the method entry point for ""{0}""!" - - Public Property MethodName As String - Public Property Info As String - - Sub New(MethodName As String, Details As String) - Call MyBase.New(String.Format(METHOD_NOT_FOUND, MethodName)) - Me.Info = Details - Me.MethodName = MethodName - End Sub - - Public Overrides ReadOnly Property ExceptionType As String - Get - Return NameOf(MethodNotFoundException) - End Get - End Property - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Exceptions/RunTimeException.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Exceptions/RunTimeException.vb deleted file mode 100644 index cebdb0684..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Exceptions/RunTimeException.vb +++ /dev/null @@ -1,33 +0,0 @@ -Imports System.Text - -Namespace Runtime.Objects.ObjectModels.Exceptions - - Public Class ScriptRunTimeException : Inherits ShoalScriptException - - Public Property InnerExceptionValue As String - Dim MemoryDump As Runtime.Objects.I_MemoryManagementDevice - - Sub New(message As String, MemoryDump As Runtime.Objects.I_MemoryManagementDevice) - MyBase.New(message) - Me.InnerExceptionValue = message - Me.MemoryDump = MemoryDump - End Sub - - Public Overrides Function ToString() As String - Dim sBuilder As StringBuilder = New StringBuilder(1024) - Call sBuilder.AppendLine(String.Format("[ERROR_LINE]" & vbCrLf & " ----> {0} ............................. line: {1}", ScriptLine, LineNumber) & vbCrLf) - Call sBuilder.AppendLine(New String("-", 30) & vbCrLf) - Call sBuilder.AppendLine("[ShellScript Memory Dump Details]" & vbCrLf) - Call sBuilder.AppendLine(" " & MemoryDump.ExportMemoryDetails) - Call sBuilder.AppendLine(vbCrLf & "[Internal System.Exception Caller Stack Details Information]" & vbCrLf & vbCrLf & " " & InnerExceptionValue) - - Return sBuilder.ToString - End Function - - Public Overrides ReadOnly Property ExceptionType As String - Get - Return GetType(ScriptRunTimeException).FullName - End Get - End Property - End Class -End Namespace diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Exceptions/ShoalScriptException.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Exceptions/ShoalScriptException.vb deleted file mode 100644 index e742054a2..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/Exceptions/ShoalScriptException.vb +++ /dev/null @@ -1,25 +0,0 @@ -Imports System.Text - -Namespace Runtime.Objects.ObjectModels.Exceptions - - Public MustInherit Class ShoalScriptException : Inherits Exception - - Public Property LineNumber As Integer - Public Property ScriptLine As String - - Public MustOverride ReadOnly Property ExceptionType As String - - Dim InnerExceptionMessage As String - - Public ReadOnly Property ExceptionInformation As String - Get - Return InnerExceptionMessage - End Get - End Property - - Sub New(Message As String) - MyBase.New(Message) - InnerExceptionMessage = Message - End Sub - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/IScriptEngineComponent.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/IScriptEngineComponent.vb deleted file mode 100644 index b1f415932..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/IScriptEngineComponent.vb +++ /dev/null @@ -1,31 +0,0 @@ -Namespace Runtime.Objects.ObjectModels - - ''' - ''' This type of the class object consist of the shoal shell scripting engine. - ''' - ''' - Public MustInherit Class IScriptEngineComponent - - Protected _RuntimeEnvironment As ShoalShell.Runtime.Objects.ShellScript - - ''' - ''' Script host entry. - ''' - ''' - ''' - ''' - Public ReadOnly Property ScriptEngine As ShoalShell.Runtime.Objects.ShellScript - Get - Return _RuntimeEnvironment - End Get - End Property - - Sub New(ScriptEngine As ShoalShell.Runtime.Objects.ShellScript) - _RuntimeEnvironment = ScriptEngine - End Sub - - Public Overrides Function ToString() As String - Return _RuntimeEnvironment.ToString - End Function - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/MemoryManagement.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/MemoryManagement.vb deleted file mode 100644 index 95e9a8d0b..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/MemoryManagement.vb +++ /dev/null @@ -1,475 +0,0 @@ -Imports System.Text -Imports System.Text.RegularExpressions - -Imports Variable = System.Collections.Generic.KeyValuePair(Of String, Object) -Imports Variables = System.Collections.Generic.IEnumerable(Of System.Collections.Generic.KeyValuePair(Of String, Object)) - -Namespace Runtime.Objects - - ''' - ''' This class manage the memory of the shellscript, it mainly consist of two parts: - ''' List(Of KeyValuePair(Of String, Object)) was manage for the variables that created by the script executation; - ''' while the SortedDictionary(Of String, Object) was manage for the constants that was imports by the user using the Imports command - ''' (è„šæœ¬å¯¹è±¡çš„å†…å­˜ç®¡ç†æ¨¡å—) - ''' - ''' - Public Class I_MemoryManagementDevice : Inherits ShoalShell.Runtime.Objects.ObjectModels.IScriptEngineComponent - Implements IDictionary(Of String, Object) - - Dim _InternalCallerStackValue As Object - ''' - ''' å˜é‡é›†åˆ - ''' - ''' - Dim _InnerListHash As List(Of KeyValuePair(Of String, Object)) = New List(Of KeyValuePair(Of String, Object)) - ''' - ''' 从外部æ’件模å—之中所导入的常é‡çš„列表 - ''' - ''' - Dim _InternalImportsConstantsHash As SortedDictionary(Of String, Object) = New SortedDictionary(Of String, Object) - ''' - ''' 会优先于本对象被调用 - ''' - ''' - Friend _InternalImportsDataSource As ShoalShell.Runtime.Objects.ObjectModels.DataSourceMapping.DataSourceMappingHandler - - Protected Shared ReadOnly MemoryType As String = GetType(I_MemoryManagementDevice).FullName - Protected Friend _LastIf_Flag As Boolean - - Public Const CONSERVED_SYSTEM_VARIABLE As String = "$" - - Sub New(ScriptEngine As ShellScript) - Call MyBase.New(ScriptEngine) - Call _InternalImportsConstantsHash.Add("Null", Nothing) - Call _InternalImportsConstantsHash.Add("HOME", My.Application.Info.DirectoryPath) - Call _InternalImportsConstantsHash.Add("Bin", FileIO.FileSystem.GetFileInfo(String.Format("{0}/{1}.exe", My.Application.Info.DirectoryPath, My.Application.Info.AssemblyName)).FullName) - Call _InternalImportsConstantsHash.Add("TEMP", My.Computer.FileSystem.SpecialDirectories.Temp) - Call _InternalImportsConstantsHash.Add("Desktop", My.Computer.FileSystem.SpecialDirectories.Desktop) - Call _InternalImportsConstantsHash.Add("My_Documents", My.Computer.FileSystem.SpecialDirectories.MyDocuments) - Call _InternalImportsConstantsHash.Add("APP_DATA", My.Computer.FileSystem.SpecialDirectories.CurrentUserApplicationData) - Call _InternalImportsConstantsHash.Add("PID", Process.GetCurrentProcess.Id) - - _InternalImportsDataSource = New ObjectModels.DataSourceMapping.DataSourceMappingHandler(ScriptEngine) - End Sub - - Public Sub PushStack(value As Object) - _InternalCallerStackValue = value - End Sub - - Public Function GetStackValue() As Object - Return _InternalCallerStackValue - End Function - - Public Function ExportMemoryDetails() As String - Dim sBuilder As StringBuilder = New StringBuilder(1024) - - If Not _InternalImportsConstantsHash.IsNullOrEmpty Then - Call sBuilder.AppendLine("Imports Constants:" & vbCrLf) - Call sBuilder.AppendLine(ExportList(_InternalImportsConstantsHash) & vbCrLf & vbCrLf) - End If - If Not _InnerListHash.IsNullOrEmpty Then - Call sBuilder.AppendLine(" Variables:" & vbCrLf) - Call sBuilder.AppendLine(ExportList(_InnerListHash) & vbCrLf & vbCrLf) - End If - If Not _InternalImportsDataSource.IsEmpty Then - Call sBuilder.AppendLine(" Imports DataSource Handle:" & vbCrLf) - Call sBuilder.AppendLine(ExportList(_InternalImportsDataSource.ToMemorySource)) - End If - - Return sBuilder.ToString - End Function - - Private Shared Function ExportList(Data As Generic.IEnumerable(Of Variable)) As String - Dim MaxLength As Integer = (From item In Data Select Len(item.Key)).ToArray.Max - Dim ChunkBuffer As String() = (From item As Variable - In Data - Let GeneratedLine As String = String.Format(" {0}{1} = {2}", item.Key, New String(" "c, MaxLength - Len(item.Key)), If(item.Value Is Nothing, "NULL", item.Value.ToString)) - Select GeneratedLine).ToArray - Return String.Join(vbCrLf, ChunkBuffer) - End Function - - ''' - ''' 请使用å˜é‡å¼•ç”¨è¡¨è¾¾å¼ - ''' - ''' - ''' - ''' - ''' 普通å˜é‡ï¼š - ''' var <- expression - ''' - ''' 指针å˜é‡ - ''' $p <- expression - ''' å‡è‹¥$på˜é‡çš„值为varï¼Œå³ - ''' $p - ''' = [0] var - ''' - ''' 则 - ''' 上述表达å¼ç­‰åŒäºŽ - ''' var <- expression - ''' - Public Function TryGetValue(variable As String) As Object - If variable.First = "$"c Then - If Len(variable) = 1 Then - Return Item("$") - Else - Return TryGetValue(Mid(variable, 2)) 'å˜é‡æŒ‡é’ˆ - End If - ElseIf variable.First = "&"c Then - variable = Mid(variable, 2) - Dim LQuery = (From item In _InternalImportsConstantsHash Where String.Equals(variable, item.Key, StringComparison.OrdinalIgnoreCase) Select item.Value).ToArray - Return LQuery.FirstOrDefault - Else - If ExistsVariable(variable) Then - Return Me(variable) - Else - Return variable - End If - End If - End Function - - Public Function TryGetValue(Index As Long) As Variable - Dim value = Me._InnerListHash(Index) - Return value - End Function - - Public Shared Function GetArrayValue(DataSource As IEnumerable) As Object() - Dim LQuery = (From obj In DataSource Select CType(obj, Object)).ToArray - Return LQuery - End Function - - ''' - ''' æŸ¥çœ‹ç›®æ ‡å¸¸é‡æ˜¯å¦å­˜åœ¨äºŽè„šæœ¬å¼•æ“Žçš„å†…å­˜ä¹‹ä¸­ - ''' - ''' - ''' - ''' - Public Function ExistsConstant(Name As String) As Boolean - Return _InternalImportsConstantsHash.ContainsKey(Name) - End Function - - ''' - ''' 从å˜é‡å†…å­˜ç®¡ç†æ¨¡å—之中获å–一个常é‡çš„å€¼ï¼Œéœ€è¦æ³¨æ„的是,在Shoal之中,脚本引擎对å˜é‡çš„å称的大å°å†™ä¸æ•感,但是对于常é‡çš„大å°å†™å´æ˜¯æ•感的 - ''' - ''' - ''' - ''' - Public Function GetConstant(Name As String) As Object - Return _InternalImportsConstantsHash(Name) - End Function - - Public Function GetConstants() As KeyValuePair(Of String, String)() - Dim LQuery = (From hashEntry As Variable In _InternalImportsConstantsHash - Let ItemValue As String = If(hashEntry.Value Is Nothing, "NULL", hashEntry.Value.ToString) - Select New KeyValuePair(Of String, String)(hashEntry.Key, ItemValue)).ToArray - Return LQuery - End Function - - ''' - ''' 导入所定义常数 - ''' - ''' - ''' 返回导入æˆåŠŸçš„å¸¸æ•°æ•°ç›® - ''' - Public Function ImportsConstant(Assembly As System.Type) As Integer - Dim ModuleFields As System.Reflection.FieldInfo() = Assembly.GetFields - Dim LQuery = (From Field As System.Reflection.FieldInfo In ModuleFields - Let Name As String = GetName(Field) - Where Not String.IsNullOrEmpty(Name) - Select Name, Value = Field.GetValue(Nothing)).ToArray - Dim i As Integer - - For Each Imported In LQuery - Dim Name = Imported.Name - If Not _InternalImportsConstantsHash.ContainsKey(Name) Then - Call _InternalImportsConstantsHash.Add(Name, Imported.Value) - i += 1 - End If - Next - - i += Me._InternalImportsDataSource.Imports(Assembly) - - Return i - End Function - - ''' - ''' - ''' - ''' - ''' - ''' - Private Shared Function GetName(field As System.Reflection.FieldInfo) As String - Dim attrs As Object() = field.GetCustomAttributes(Microsoft.VisualBasic.Scripting.EntryPointMetaData.ImportsConstant.TypeInfo, True) - If attrs.IsNullOrEmpty Then - Return "" - End If - - Dim Name As String = DirectCast(attrs.First, Microsoft.VisualBasic.Scripting.EntryPointMetaData.ImportsConstant).Name - If String.IsNullOrEmpty(Name) Then - Name = field.Name - End If - Return Name - End Function - - Public Sub SetValue(key As String, value As Object) - Call SetValue(New KeyValuePair(Of String, Object)(key, value)) - End Sub - - Public Sub SetValue(DataEntry As Variable) Implements ICollection(Of Variable).Add - Dim Entry As ShoalShell.Runtime.Objects.ObjectModels.DataSourceMapping.DataSourceModel = - _InternalImportsDataSource.GetDataEntry(DataEntry.Key) - - If Not (Entry Is Nothing OrElse DataEntry.Value Is Nothing) Then - Dim varType As Type = DataEntry.Value.GetType - - If Entry.Convertable(varType) Then 'å‡è‹¥æ•°æ®æºä¹‹ä¸­ä¹Ÿå­˜åœ¨ç›¸åŒçš„å˜é‡çš„è¯ï¼Œåˆ™ä¼šä¸¤ä¸ªéƒ½åŒæ—¶è®¾ç½® - Dim var As Object = DataEntry.Value - ' Dim TypeCast As ComponentModel.DataSourceModel.DataFramework.CTypeDynamics = Scripting.InputHandler.CasterStri(varType) - - ' var = TypeCast(var, Entry.ReflectionType) - - Call Entry.SetValue(var) - End If - End If - - Dim LQuery = (From obj In _InnerListHash.AsParallel Where String.Equals(obj.Key, DataEntry.Key, StringComparison.OrdinalIgnoreCase) Select obj).ToArray - If Not LQuery.IsNullOrEmpty Then - Call _InnerListHash.Remove(LQuery.First) - End If - - LQuery = (From obj In _InnerListHash.AsParallel Where String.Equals(obj.Key, "$") Select obj).ToArray - If Not LQuery.IsNullOrEmpty Then - Call _InnerListHash.Remove(LQuery.First) - Call _InnerListHash.Add(New KeyValuePair(Of String, Object)("$", DataEntry.Value)) - End If - - ' Dim value = item.Value - ' If Not value Is Nothing Then - 'Dim valueType As String = value.GetType.FullName - 'If String.Equals(valueType, MemoryType) Then 'é€šè¿‡å…±äº«å†…å­˜ï¼Œè„šæœ¬ä¹‹é—´çš„è°ƒç”¨å¾—ä»¥è¿›è¡Œå‚æ•°çš„传递 - ' Dim SharedMemory = DirectCast(value, Microsoft.VisualBasic.ShoalShell.Runtime.Objects.MemoryManagement) - ' For Each item In SharedMemory - ' Call InsertOrUpdate(item.Key, item.Value) - ' Next - 'Else - ' Call _InnerList.Add(item) - ' End If - ' Else - Call _InnerListHash.Add(DataEntry) - End Sub - - Public Sub Clear() Implements ICollection(Of KeyValuePair(Of String, Object)).Clear - Call _InnerListHash.Clear() - End Sub - - Public Function Contains(item As KeyValuePair(Of String, Object)) As Boolean Implements ICollection(Of KeyValuePair(Of String, Object)).Contains - Dim LQuery = (From var As Variable In _InnerListHash.AsParallel - Where String.Equals(var.Key, item.Key, StringComparison.OrdinalIgnoreCase) AndAlso var.Value = item.Value - Select var).ToArray - Return Not LQuery.IsNullOrEmpty - End Function - - Public Sub CopyTo(array() As KeyValuePair(Of String, Object), arrayIndex As Integer) Implements ICollection(Of KeyValuePair(Of String, Object)).CopyTo - Call _InnerListHash.CopyTo(array, arrayIndex) - End Sub - - Public ReadOnly Property Count As Integer Implements ICollection(Of KeyValuePair(Of String, Object)).Count - Get - Return _InnerListHash.Count - End Get - End Property - - Public ReadOnly Property IsReadOnly As Boolean Implements ICollection(Of KeyValuePair(Of String, Object)).IsReadOnly - Get - Return False - End Get - End Property - - ''' - ''' 删除一个å˜é‡å¯¹è±¡ - ''' - ''' - ''' - ''' - Public Function Remove(item As KeyValuePair(Of String, Object)) As Boolean Implements ICollection(Of KeyValuePair(Of String, Object)).Remove - Dim LQuery = (From obj In _InnerListHash.AsParallel Where String.Equals(obj.Key, item.Key, StringComparison.OrdinalIgnoreCase) Select obj).ToArray - If Not LQuery.IsNullOrEmpty Then - Call _InnerListHash.Remove(LQuery.First) - Return True - Else - Return False - End If - End Function - - ''' - ''' 添加新的å˜é‡å¯¹è±¡æˆ–者更新目标å˜é‡å¯¹è±¡çš„值 - ''' - ''' - ''' - ''' - Public Sub InsertOrUpdate(key As String, value As Object) Implements IDictionary(Of String, Object).Add - Call SetValue(New KeyValuePair(Of String, Object)(key, value)) - End Sub - - ''' - ''' Indicated that the variable which was specific by is exists in the scripting host memory or not. - ''' (使用本方法æ¥åˆ¤æ–­ç›®æ ‡è¡¨è¾¾å¼çš„æ‰€æŒ‡å‘çš„å˜é‡æ˜¯å¦åœ¨è„šæœ¬å®¿ä¸»å¼•æ“Žä¹‹ä¸­å­˜åœ¨) - ''' - ''' å˜é‡åç§° - ''' - ''' - Public Function ExistsVariable(var As String) As Boolean Implements IDictionary(Of String, Object).ContainsKey - If String.IsNullOrEmpty(var) Then - Return False - End If - - If var.First = "$"c Then - var = Mid(var, 2) - End If - Dim LQuery = (From VariableItem As KeyValuePair(Of String, Object) In _InnerListHash.AsParallel Where String.Equals(VariableItem.Key, var, StringComparison.OrdinalIgnoreCase) Select 1).ToArray - Return Not LQuery.IsNullOrEmpty - End Function - - ''' - ''' 获å–内存之中的å˜é‡å€¼ - ''' - ''' å˜é‡å,ä¸éœ€è¦æ·»åŠ ä½¿ç”¨å¼•ç”¨ç¬¦$,å‡è‹¥éœ€è¦è¿”回系统ä¿ç•™å˜é‡$的值,请使用空字符串 - ''' - ''' - ''' - Default Public Property Item(key As String) As Object Implements IDictionary(Of String, Object).Item - Get - If String.IsNullOrEmpty(key) OrElse String.Equals("$", key) Then - key = "$" - End If - - Dim LQuery = (From obj In _InnerListHash.AsParallel Where String.Equals(obj.Key, key, StringComparison.OrdinalIgnoreCase) Select obj).ToArray - If Not LQuery.IsNullOrEmpty Then - Return LQuery.First.Value - Else - 'æŸ¥æ‰¾å¯¼å…¥çš„æ•°æ®æº - Return _InternalImportsDataSource.GetValue(key) - End If - End Get - Set(value As Object) - Call InsertOrUpdate(key, value) - End Set - End Property - - Public ReadOnly Property Keys As ICollection(Of String) Implements IDictionary(Of String, Object).Keys - Get - Dim LQuery = (From item In _InnerListHash Select item.Key).ToArray - Return LQuery - End Get - End Property - - ''' - ''' 从内存之中删除一个å˜é‡å¯¹è±¡ - ''' - ''' - ''' - ''' - Public Function Delete(VariableName As String) As Boolean Implements IDictionary(Of String, Object).Remove - Dim LQuery = (From obj In _InnerListHash.AsParallel Where String.Equals(obj.Key, VariableName, StringComparison.OrdinalIgnoreCase) Select obj).ToArray - If Not LQuery.IsNullOrEmpty Then - Return _InnerListHash.Remove(LQuery.First) - Else - Return False - End If - End Function - - Public Function TryGetValue(key As String, ByRef value As Object) As Boolean Implements IDictionary(Of String, Object).TryGetValue - Dim LQuery = (From var As Variable In _InnerListHash.AsParallel - Where String.Equals(var.Key, key, StringComparison.OrdinalIgnoreCase) - Select var).ToArray - If Not LQuery.IsNullOrEmpty Then - value = LQuery.First.Value - Return True - Else - Return False - End If - End Function - - ''' - ''' 实际上返回其自身内部的å˜é‡åˆ—表 - ''' - ''' - ''' - ''' - Public ReadOnly Property Values As ICollection(Of Object) Implements IDictionary(Of String, Object).Values - Get - Return Me.ToArray - End Get - End Property - - Public Iterator Function GetEnumerator() As IEnumerator(Of KeyValuePair(Of String, Object)) Implements IEnumerable(Of KeyValuePair(Of String, Object)).GetEnumerator - For Each Item As KeyValuePair(Of String, Object) In _InnerListHash - Yield Item - Next - End Function - - Public Iterator Function GetEnumerator1() As IEnumerator Implements IEnumerable.GetEnumerator - Yield GetEnumerator() - End Function - - ''' - ''' å°†ä¼šæ›¿æ¢æŽ‰æ‰€æœ‰åœ¨å‚æ•°ä¹‹ä¸­å‡ºçŽ°çš„å˜é‡å为内存之中的å˜é‡çš„ToString()方法所得到的值 - ''' 对于想è¦è¾“出$variableNameè¿™ç§ç±»åž‹çš„å­—ç¬¦ä¸²ï¼Œè€Œä¸æ˜¯è¾“出值,则请使用\进行å义æ“作 - ''' - ''' - ''' - ''' - Public Function FormatString(expression As String) As String - Dim Matches = (From m As Match In Regex.Matches(expression, "(^|\\)?\$[^$]+", RegexOptions.Multiline) Select m.Value).ToArray - - For Each Item As KeyValuePair(Of String, Object) In (From inn In Me._InternalImportsConstantsHash Select inn Order By Len(inn.Key) Descending).ToArray - expression = Replace(expression, "&" & Item.Key, If(Item.Value Is Nothing, "", Item.Value.ToString), Compare:=CompareMethod.Text) - Next - - If Matches.IsNullOrEmpty Then '没有任何匹é…ï¼Œè¯´æ˜Žä»…ä»…æ˜¯ä¸€ä¸ªå­—ç¬¦ä¸²å¸¸é‡ - Return expression - End If - - Dim ExpressionValueBuilder As StringBuilder = New StringBuilder(expression) - - Dim OriginalTokens = (From i As Integer In Matches.Sequence - Let strValue As String = Matches(i) - Where strValue.First = "\"c - Select i, strValue).ToArray - Dim EscapeTokens As List(Of KeyValuePair(Of String, String)) = New Generic.List(Of KeyValuePair(Of String, String)) - - For Each OriginalToken In OriginalTokens '先处ç†éœ€è¦è¢«è½¬ä¹‰çš„部分 - Dim ESC As String = OriginalToken.i & "____ESCAPE_FOR_VARIABLES" - Call EscapeTokens.Add(New KeyValuePair(Of String, String)(ESC, OriginalToken.strValue)) - Call ExpressionValueBuilder.Replace(OriginalToken.strValue, ESC) - Next - - Dim ReplacedTokens = (From m As String In Matches Where m.First <> "\"c Select Mid(m, 2)).ToArray - - For Each Token As String In ReplacedTokens - Call InternalReplaceValue(Token, ExpressionValueBuilder) - Next - - '替æ¢å›žè½¬ä¹‰å­—符 - For Each ESC In EscapeTokens - Call ExpressionValueBuilder.Replace(ESC.Key, Mid(ESC.Value, 2)) - Next - - Return ExpressionValueBuilder.ToString - End Function - - Private Sub InternalReplaceValue(Token As String, ByRef ExpressionValueBuilder As StringBuilder) - Dim Variable As Variables = (From varEntry As Variable In Me._InnerListHash - Where InStr(Token, varEntry.Key, CompareMethod.Text) = 1 - Select varEntry - Order By Len(varEntry.Key) Descending).ToArray - - If Variable.IsNullOrEmpty Then Return - - Dim var = Variable.First - Dim objVal As Object = var.Value - Dim ReplacedValue As String = If(objVal Is Nothing, "", objVal.ToString) - Token = "$" & Mid(Token, 1, Len(var.Key)) - Call ExpressionValueBuilder.Replace(Token, ReplacedValue) - End Sub - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/ObjectModels/DataSource.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/ObjectModels/DataSource.vb deleted file mode 100644 index ed486ce01..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/ObjectModels/DataSource.vb +++ /dev/null @@ -1,215 +0,0 @@ -Namespace Runtime.Objects.ObjectModels.DataSourceMapping - - ''' - ''' ç”±äºŽæ•°æ®æºçš„ä½œç”¨ä¸»è¦æ˜¯è®¾ç½®å…±äº«å˜é‡æˆ–è€…çŽ¯å¢ƒå‚æ•°ï¼Œæ•…而在获å–傿•°å˜é‡çš„æ—¶å€™ï¼Œç³»ç»Ÿçš„è‡ªç”±å‚æ•°ä¼šè¢«ä¼˜å…ˆè¯»å– - ''' - ''' - Public Class DataSourceMappingHandler : Inherits ShoalShell.Runtime.Objects.ObjectModels.IScriptEngineComponent - - Dim _InternalImportsDataSource As Microsoft.VisualBasic.ComponentModel.Collection.Generic.HashDictionary(Of DataSourceModel) - - Public ReadOnly Property IsEmpty As Boolean - Get - Return _InternalImportsDataSource.IsNullOrEmpty - End Get - End Property - - Sub New(ScriptEngine As ShoalShell.Runtime.Objects.ShellScript) - Call MyBase.New(ScriptEngine) - _InternalImportsDataSource = New ComponentModel.Collection.Generic.HashDictionary(Of DataSourceModel)(Nothing) - End Sub - - ''' - ''' - ''' - ''' 请去除$å‰ç¼€ç¬¦å· - ''' - ''' - Public Function ExistsVariable(Name As String) As Boolean - Return _InternalImportsDataSource.ContainsKey(Name) - End Function - - ''' - ''' 目标对象ä¸å­˜åœ¨åˆ™ä¼šè¿”回空值 - ''' - ''' - ''' - ''' - Public Function GetValue(Name As String) As Object - Dim Entry = _InternalImportsDataSource(Name) - If Entry Is Nothing Then - Return Nothing - Else - Return Entry.GetValue - End If - End Function - - Public Function GetDataEntry(Name As String) As DataSourceModel - Dim Entry = _InternalImportsDataSource(Name) - Return Entry - End Function - - Public Function SetValue(Variable As String, value As Object) As Boolean - Dim Entry = _InternalImportsDataSource(Variable) - Call Entry.SetValue(value) - Return True - End Function - - Public Function [Imports]([Module] As System.Reflection.TypeInfo) As Integer - Dim DataSource = DataSourceModel.Imports([Module], False) - For Each Entry As DataSourceModel In DataSource - _InternalImportsDataSource(Entry.Name) = Entry - Next - - Return DataSource.Count - End Function - - Public Function ToMemorySource() As KeyValuePair(Of String, Object)() - Dim LQuery = (From Handle As KeyValuePair(Of String, DataSourceModel) - In Me._InternalImportsDataSource - Select New KeyValuePair(Of String, Object)(Handle.Value.Name, Handle.Value.GetValue)).ToArray - Return LQuery - End Function - End Class - - Public MustInherit Class DataSourceModel - - Protected _Name As String - - Public ReadOnly Property Name As String - Get - Return _Name - End Get - End Property - - Public MustOverride ReadOnly Property ReflectionType As Type - -#Region "Public Property" - - Public MustOverride Sub SetValue(value As Object) - Public MustOverride Function GetValue() As Object -#End Region - - Public Overrides Function ToString() As String - Dim o As Object = GetValue() - Dim value As String = If(o Is Nothing, "&NULL", o.ToString) - Return String.Format("{0} = {1}", Name, value) - End Function - - ''' - ''' åªä¼šç»‘定éžå®žä¾‹çš„属性或者域 - ''' - ''' - ''' - ''' - Public Shared Function [Imports](Assembly As System.Reflection.TypeInfo, Explicit As Boolean) As DataSourceModel() - Dim Fields As Field() - Dim MappingEntry = GetType(Microsoft.VisualBasic.ComponentModel.DataSourceModel.DataFrameColumnAttribute) - - If Explicit Then '严格的 - Fields = (From p In Assembly.GetFields(System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.Public Or System.Reflection.BindingFlags.Static) - Let attrs As Object() = p.GetCustomAttributes(MappingEntry, inherit:=True) - Where Not attrs.IsNullOrEmpty - Let datEntry = DirectCast(attrs.First, Microsoft.VisualBasic.ComponentModel.DataSourceModel.DataFrameColumnAttribute) - Let Name = If(String.IsNullOrEmpty(datEntry.Name), p.Name, datEntry.Name) - Select New Field(p, Name)).ToArray - Else - Fields = (From p In Assembly.GetFields(System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.Public Or System.Reflection.BindingFlags.Static) - Let attrs As Object() = p.GetCustomAttributes(MappingEntry, inherit:=True) - Let Name As String = Function() As String - If attrs.IsNullOrEmpty Then - Return p.Name - Else - Dim datEntry = DirectCast(attrs.First, Microsoft.VisualBasic.ComponentModel.DataSourceModel.DataFrameColumnAttribute) - Dim Name = If(String.IsNullOrEmpty(datEntry.Name), p.Name, datEntry.Name) - Return Name - End If - End Function() Select New Field(p, Name)).ToArray - End If - - Dim [Property] As [Property]() - - If Explicit Then '严格的 - [Property] = (From p In Assembly.GetProperties(System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.Public Or System.Reflection.BindingFlags.Static) - Let attrs As Object() = p.GetCustomAttributes(MappingEntry, inherit:=True) - Where Not attrs.IsNullOrEmpty - Let datEntry = DirectCast(attrs.First, Microsoft.VisualBasic.ComponentModel.DataSourceModel.DataFrameColumnAttribute) - Let Name = If(String.IsNullOrEmpty(datEntry.Name), p.Name, datEntry.Name) - Select New [Property](p, Name)) - Else - [Property] = (From p In Assembly.GetProperties(System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.Public Or System.Reflection.BindingFlags.Static) - Let attrs As Object() = p.GetCustomAttributes(MappingEntry, inherit:=True) - Let Name As String = Function() As String - If attrs.IsNullOrEmpty Then - Return p.Name - Else - Dim datEntry = DirectCast(attrs.First, Microsoft.VisualBasic.ComponentModel.DataSourceModel.DataFrameColumnAttribute) - Dim Name = If(String.IsNullOrEmpty(datEntry.Name), p.Name, datEntry.Name) - Return Name - End If - End Function() Select New [Property](p, Name)).ToArray - End If - - Dim DataSource As New List(Of DataSourceModel) - Call DataSource.AddRange(Fields) - Call DataSource.AddRange([Property]) - - Return DataSource.ToArray - End Function - - Public Function Convertable(SourceType As Type) As Boolean - Dim ConvertType = Me.ReflectionType - Dim YON As Boolean = Microsoft.VisualBasic.ComponentModel.DataSourceModel.DataFramework.BasicTypesFlushs.ContainsKey(ConvertType) AndAlso - Microsoft.VisualBasic.ComponentModel.DataSourceModel.DataFramework.BasicTypesFlushs.ContainsKey(SourceType) - Return YON - End Function - End Class - - Public Class Field : Inherits DataSourceModel - - Dim BindingField As System.Reflection.FieldInfo - - Sub New(Target As System.Reflection.FieldInfo, Name As String) - BindingField = Target - _Name = Name - End Sub - - Public Overrides Function GetValue() As Object - Return BindingField.GetValue(Nothing) - End Function - - Public Overrides Sub SetValue(value As Object) - Call BindingField.SetValue(Nothing, value) - End Sub - - Public Overrides ReadOnly Property ReflectionType As Type - Get - Return BindingField.FieldType - End Get - End Property - End Class - - Public Class [Property] : Inherits DataSourceModel - - Dim BindingProperty As System.Reflection.PropertyInfo - - Sub New(Target As System.Reflection.PropertyInfo, Name As String) - BindingProperty = Target - _Name = Name - End Sub - - Public Overrides Function GetValue() As Object - Return BindingProperty.GetValue(Nothing) - End Function - - Public Overrides Sub SetValue(value As Object) - Call BindingProperty.SetValue(Nothing, value) - End Sub - - Public Overrides ReadOnly Property ReflectionType As Type - Get - Return BindingProperty.PropertyType - End Get - End Property - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/ObjectModels/ExecuteModel.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/ObjectModels/ExecuteModel.vb deleted file mode 100644 index 9945e82d7..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/ObjectModels/ExecuteModel.vb +++ /dev/null @@ -1,162 +0,0 @@ -Imports System.Text -Imports Microsoft.VisualBasic.Scripting.ShoalShell -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Interpreter.ObjectModels.Statements - -Namespace Runtime.Objects.ObjectModels - - Public Class ExecuteModel : Inherits ShoalShell.Runtime.Objects.ObjectModels.IScriptEngineComponent - - ''' - ''' Value是指å‘列表之中的元素的ä½ç½®ä¸‹è¡¨ - ''' - Dim GotoFlags As Dictionary(Of String, Integer) - Dim _InternalScriptCodeLineHash As IReadOnlyDictionary(Of Integer, ShoalShell.Interpreter.ObjectModels.Statements.Statement) - Protected _InternalEXEC_Pointer As Integer = 0 - - Sub New(ScriptModel As ShoalShell.Interpreter.ObjectModels.ScriptModel, ScriptEngine As ShoalShell.Runtime.Objects.ShellScript) - Call MyBase.New(ScriptEngine) - _InternalScriptCodeLineHash = (From i As Integer In ScriptModel.Expressions.Sequence Select i, Expr = ScriptModel.Expressions(i)).ToArray.ToDictionary(Function(obj) obj.i, elementSelector:=Function(obj) obj.Expr) - GotoFlags = ScriptModel.GotoFlags - End Sub - - Public ReadOnly Property ImportsNewNamespace As Boolean - Get - Return ScriptEngine._ImportsNewNamespace - End Get - End Property - - Private ReadOnly Property HasImportsNamespaceStatements As Boolean - Get - Dim LQuery = (From item In Me._InternalScriptCodeLineHash Where item.Value.TypeID = Interpreter.ObjectModels.Statements.Statement.Types.Imports Select item).ToArray - Return Not LQuery.IsNullOrEmpty - End Get - End Property - - Protected Const EXCEPTION_GOTO_FLAG_MISSING As String = "GOTO_FLAG_MISSING:: Could not found the goto flag ""{0}"": {1}; Line: {2}" - Protected Const FLAG_STATEMENT_RETURN_STACK As String = "Return.Stack" - - Protected Function InternalExecuteGoto(CodeLine As ShoalShell.Interpreter.ObjectModels.Statements.Statement) As Boolean - If Not CodeLine.TypeID = Statement.Types.GoTo Then Return False - - Dim GotoCodeLine = DirectCast(CodeLine, ShoalShell.Interpreter.ObjectModels.Statements.GOTO) - - If Not CBool(GotoCodeLine.BooleanExpression.GetValue(ScriptEngine)) = True Then Return False - - Dim Flag As String = CStr(GotoCodeLine.GotoFlag.GetValue(ScriptEngine)) - - If Me.GotoFlags.ContainsKey(Flag) Then - _InternalEXEC_Pointer = GotoFlags(Flag) - 1 - Else '没有找到相应的跳转标签,则抛出错误 - Dim ex As String = String.Format(EXCEPTION_GOTO_FLAG_MISSING, - Flag, - GotoCodeLine.Expression, - GotoCodeLine.OriginalLineNumber) - Throw New ArgumentException(ex) - End If - - Return True - End Function - - Protected Overridable Sub InternalExecuteScript(CodeLine As ShoalShell.Interpreter.ObjectModels.Statements.Statement) - 'If String.Equals(CodeLine.OrignialScriptLine, FLAG_STATEMENT_RETURN_STACK, StringComparison.OrdinalIgnoreCase) Then - ' Call _InternalEXEC_Pointer.MoveNext() - ' Return - 'Else - If InternalExecuteGoto(CodeLine) Then - Return - End If - - Dim var As String = "" - Dim Value As Object = InternalExecute(CodeLine, var, ScriptEngine) - Dim sys As Objects.I_MemoryManagementDevice = ScriptEngine._EngineMemoryDevice - Call sys.InsertOrUpdate(var, Value) - End Sub - - Public Shared Function InternalExecute(CodeLine As ShoalShell.Interpreter.ObjectModels.Statements.Statement, ByRef LeftAssignedVariable As String, ScriptEngine As Runtime.Objects.ShellScript) As Object - - Select Case CodeLine.TypeID - - Case Statement.Types.Expression - Dim Expr = DirectCast(CodeLine, Expression) '赋值的å˜é‡åœ°å€æ˜¯æœ€åŽæ‰è¢«è®¡ç®—çš„ - Dim value As Object = Expr.Execute(ScriptEngine) - LeftAssignedVariable = Expr.LeftAssignedVariable.GetAddress(ScriptEngine.ScriptEngineMemoryDevice) - Return value - - Case Statement.Types.MethodCalling - LeftAssignedVariable = "$" - Return DirectCast(CodeLine, Interpreter.ObjectModels.Statements.MethodCalling).Execute(ScriptEngine) - - Case Statement.Types.OutputRef - LeftAssignedVariable = "$" - Return DirectCast(CodeLine, OutputRef).InnerExpression.GetValue(ScriptEngine) - - Case Statement.Types.Imports - Dim ExprObj = DirectCast(CodeLine, [Imports]) - Return ExprObj.Execute(ScriptEngine) - - Case Statement.Types.SyntaxError - Dim ExprObj = DirectCast(CodeLine, SyntaxError) - If ExprObj.IsSyntaxError Then - Throw New SyntaxErrorException(ExprObj.Expression) - Else - Return "" - End If - - Case Statement.Types.Library - Dim ExprObj = DirectCast(CodeLine, Library) - - - - Case Else - Throw New NotImplementedException - - End Select - End Function - - Private Sub InternalExecuteScript(CodeLines As ShoalShell.Interpreter.ObjectModels.Statements.Statement()) - Do While _InternalEXEC_Pointer < _InternalScriptCodeLineHash.Count - - Dim CodeLine As Statement = CodeLines(_InternalEXEC_Pointer) - Dim ConsoleTitle As String = String.Format("ShoalShell: @""{0}""", CodeLine.Expression) - - Call Console.Title.InvokeSet(ConsoleTitle) - Call Debug.Print(CodeLine.ToString) - -#If RELEASE Then - Try -#End If - Call InternalExecuteScript(CodeLine) - If ExitScript() Then - Return - End If -#If RELEASE Then - Catch ex As Exception - If Not _Flag_OnErrorResumeNext Then - Throw New Exceptions.ScriptRunTimeException("", ScriptEngine._EngineMemoryDevice) With - { - .LineNumber = CodeLine.LineNumber, - .ScriptLine = CodeLine.OrignialScriptLine, - .InnerExceptionValue = ex.ToString - } - End If - End Try -#End If - Call _InternalEXEC_Pointer.MoveNext() - Loop - End Sub - - Protected Overridable Function ExitScript() As Boolean - Return False - End Function - - ''' - ''' 执行脚本对象然åŽè¿”回脚本的è¿è¡Œç»“æžœ - ''' - ''' - Public Function Execute() As Object - Call InternalExecuteScript(CodeLines:=_InternalScriptCodeLineHash.Values.ToArray) - Call Console.Title.InvokeSet("Shoal Shell") - Return ScriptEngine._EngineMemoryDevice("$") - End Function - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/ObjectModels/ObjectModels.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/ObjectModels/ObjectModels.vb deleted file mode 100644 index 98805ed25..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/ObjectModels/ObjectModels.vb +++ /dev/null @@ -1,189 +0,0 @@ -Imports System.Text -Imports Microsoft.VisualBasic.Scripting.ShoalShell - -Namespace Runtime.Objects.ObjectModels - - ''' - ''' The parsed object model result for the target input script text.(对脚本进行解æžä¹‹åŽï¼Œå°†ä¼šåˆ›å»ºå‡ºä¸€ä¸ªè„šæœ¬çš„å¯¹è±¡æ¨¡åž‹) - ''' - ''' - Public Class ShellScript : Inherits ShoalShell.Runtime.Objects.ObjectModels.IScriptEngineComponent - - Implements IReadOnlyDictionary(Of String, ObjectModels.ScriptCodeLine) - - Dim _InternalScriptCodeLineHash As IReadOnlyDictionary(Of String, ScriptCodeLine) - Protected _InternalEXEC_Pointer As Integer = 0 - - ''' - ''' This flag variable indicated that the "On Error Resume Next" option is setup or not, - ''' if TRUE then when an exception occurs, the shoal shell will record the exception - ''' information and then trying to ignored the error and continute running the script. - ''' - ''' - Dim _Flag_OnErrorResumeNext As Boolean - Dim _ImportsNewNamespace As Boolean = False - -#Region "ReadOnly Property" - - Public ReadOnly Property ImportsNewNamespace As Boolean - Get - Return ScriptEngine._ImportsNewNamespace - End Get - End Property - - Private ReadOnly Property HasImportsNamespaceStatements As Boolean - Get - Dim LQuery = (From item In Me._InternalScriptCodeLineHash Where item.Value.PreExecuteType = ScriptCodeLine.PreExecuteTypes.Imports Select item).ToArray - Return Not LQuery.IsNullOrEmpty - End Get - End Property - - Public ReadOnly Property Values As IEnumerable(Of ScriptCodeLine) Implements IReadOnlyDictionary(Of String, ScriptCodeLine).Values - Get - Return Me._InternalScriptCodeLineHash.Values - End Get - End Property - - Default Public ReadOnly Property Item(key As String) As ScriptCodeLine Implements IReadOnlyDictionary(Of String, ScriptCodeLine).Item - Get - If Me._InternalScriptCodeLineHash.ContainsKey(key) Then - Return Me._InternalScriptCodeLineHash(key) - Else - Return Nothing - End If - End Get - End Property - - Public ReadOnly Property Keys As IEnumerable(Of String) Implements IReadOnlyDictionary(Of String, ScriptCodeLine).Keys - Get - Return Me._InternalScriptCodeLineHash.Keys - End Get - End Property - - Public ReadOnly Property Count As Integer Implements IReadOnlyCollection(Of KeyValuePair(Of String, ScriptCodeLine)).Count - Get - Return Me._InternalScriptCodeLineHash.Count - End Get - End Property -#End Region - - Sub New(CodeLines As Generic.IEnumerable(Of ScriptCodeLine), ScriptEngine As ShoalShell.Runtime.Objects.ShellScript) - Call MyBase.New(ScriptEngine) - Me._InternalScriptCodeLineHash = CodeLines.ToDictionary(Function(Line) Line.LineFlag) - End Sub - -#Const RELEASE = True - - Protected Const EXCEPTION_GOTO_FLAG_MISSING As String = "GOTO_FLAG_MISSING:: Could not found the goto flag ""{0}"": {1}; Line: {2}" - Protected Const FLAG_STATEMENT_RETURN_STACK As String = "Return.Stack" - - Public Function GetVariableType(key As String) As String - Dim LQuery = (From item In Me.Values Where String.Equals(item.VariableAssigned, key, StringComparison.OrdinalIgnoreCase) Select item Order By item.LineNumber Descending).ToArray - - If LQuery.IsNullOrEmpty Then - Return "" - Else - Return LQuery.First.ReturnType - End If - End Function - - Protected Function InternalExecuteGoto(CodeLine As ObjectModels.ScriptCodeLine) As Boolean - If Not CodeLine.IsGotoStatement Then Return False - If Not CodeLine.GotoCondition() = True Then Return False - - If _InternalScriptCodeLineHash.ContainsKey(CodeLine.GotoLineFlag) Then - _InternalEXEC_Pointer = _InternalScriptCodeLineHash(CodeLine.GotoLineFlag).LineNumber - 1 - Else '没有找到相应的跳转标签,则抛出错误 - Dim ex As String = String.Format(EXCEPTION_GOTO_FLAG_MISSING, - CodeLine.GotoLineFlag, - CodeLine.OrignialScriptLine, - CodeLine.LineNumber) - Throw New ArgumentException(ex) - End If - - Return True - End Function - - Protected Overridable Sub InternalExecuteScript(CodeLine As ObjectModels.ScriptCodeLine) - If String.Equals(CodeLine.OrignialScriptLine, FLAG_STATEMENT_RETURN_STACK, StringComparison.OrdinalIgnoreCase) Then - Call _InternalEXEC_Pointer.MoveNext() - Return - ElseIf InternalExecuteGoto(CodeLine) Then - Return - End If - - Dim Value As Object = CodeLine.InvokeMethod() - Dim sys As Objects.I_MemoryManagementDevice = ScriptEngine._EngineMemoryDevice - Call sys.InsertOrUpdate(CodeLine.VariableAssigned, Value) - End Sub - - Private Sub InternalExecuteScript(CodeLines As ObjectModels.ScriptCodeLine()) - Do While _InternalEXEC_Pointer < _InternalScriptCodeLineHash.Count - - Dim CodeLine As ScriptCodeLine = CodeLines(_InternalEXEC_Pointer) - Dim ConsoleTitle As String = String.Format("ShoalShell: @""{0}""", CodeLine.OrignialScriptLine) - - Call _Flag_OnErrorResumeNext.InvokeSet(If(_Flag_OnErrorResumeNext, True, CodeLine.OnErrorResumeNext)) - Call Console.Title.InvokeSet(ConsoleTitle) - Call Debug.Print(CodeLine.ToString) - -#If RELEASE Then - Try -#End If - Call InternalExecuteScript(CodeLine) - If ExitScript() Then - Return - End If -#If RELEASE Then - Catch ex As Exception - If Not _Flag_OnErrorResumeNext Then - Throw New Exceptions.ScriptRunTimeException("", ScriptEngine._EngineMemoryDevice) With - { - .LineNumber = CodeLine.LineNumber, - .ScriptLine = CodeLine.OrignialScriptLine, - .InnerExceptionValue = ex.ToString - } - End If - End Try -#End If - Call _InternalEXEC_Pointer.MoveNext() - Loop - End Sub - - Protected Overridable Function ExitScript() As Boolean - Return False - End Function - - ''' - ''' 执行脚本对象然åŽè¿”回脚本的è¿è¡Œç»“æžœ - ''' - ''' - Public Function Execute() As Object - If Me.HasImportsNamespaceStatements Then - Call Console.WriteLine() - End If - - Call InternalExecuteScript(CodeLines:=_InternalScriptCodeLineHash.Values.ToArray) - Call Console.Title.InvokeSet("Shoal Shell") - Return ScriptEngine._EngineMemoryDevice("$") - End Function - - Public Iterator Function GetEnumerator() As IEnumerator(Of KeyValuePair(Of String, ScriptCodeLine)) Implements IEnumerable(Of KeyValuePair(Of String, ScriptCodeLine)).GetEnumerator - For Each Item As KeyValuePair(Of String, ScriptCodeLine) In Me._InternalScriptCodeLineHash - Yield Item - Next - End Function - - Public Function ContainsKey(key As String) As Boolean Implements IReadOnlyDictionary(Of String, ScriptCodeLine).ContainsKey - Return Me._InternalScriptCodeLineHash.ContainsKey(key) - End Function - - Public Function TryGetValue(key As String, ByRef value As ScriptCodeLine) As Boolean Implements IReadOnlyDictionary(Of String, ScriptCodeLine).TryGetValue - Return Me._InternalScriptCodeLineHash.TryGetValue(key, value) - End Function - - Public Iterator Function GetEnumerator1() As IEnumerator Implements IEnumerable.GetEnumerator - Yield GetEnumerator() - End Function - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/ObjectModels/ScriptCodeLine.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/ObjectModels/ScriptCodeLine.vb deleted file mode 100644 index fb58b737d..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/ObjectModels/ScriptCodeLine.vb +++ /dev/null @@ -1,92 +0,0 @@ -Namespace Runtime.Objects.ObjectModels - - ''' - ''' The is the basically element of the shoal script.(è„šæœ¬å‘½ä»¤è¡Œçš„æ•°æ®æ¨¡åž‹) - ''' - ''' - Public Class ScriptCodeLine : Implements Microsoft.VisualBasic.ComponentModel.Collection.Generic.IAccessionIdEnumerable - Implements Microsoft.VisualBasic.ComponentModel.IAddrHandle - - ''' - ''' The target varialbe for the value assignment, if this codeline is a method calling then the variable will be set to the system conserved variable $ - ''' - ''' - Public Property VariableAssigned As String - ''' - ''' The Goto flag property can use for identified each script code line uniquely.(æ¯ä¸€è¡Œä»£ç éƒ½ä¼šæœ‰ä¸€ä¸ªGotoæ ‡å·è¿›è¡Œå”¯ä¸€æ ‡è¯†çš„) - ''' - ''' - ''' - ''' - Public Property LineFlag As String Implements ComponentModel.Collection.Generic.IAccessionIdEnumerable.UniqueId - Public Property LineNumber As Long Implements ComponentModel.IAddrHandle.AddrHwnd - Public InvokeMethod As Func(Of Object) - Public Property GotoLineFlag As String - Public GotoCondition As Func(Of Boolean) - Public Property OrignialScriptLine As String - - ''' - ''' If the flag value is TRUE then if the error occur, and the script host is still trying to ignore the error and continute running the script file. - ''' - ''' - Public Property OnErrorResumeNext As Boolean - ''' - ''' å‡è‹¥å½“å‰çš„命令行对象为拓展方法的è¯ï¼Œåˆ™æœ¬å±žæ€§ä¸åº”该为空 - ''' - ''' - Public Property ExtensionMethodVariable As String - Public Property ReturnType As String - - Public ReadOnly Property IsGotoStatement As Boolean - Get - Return Not String.IsNullOrEmpty(GotoLineFlag) - End Get - End Property - - Public Overrides Function ToString() As String - Return String.Format("{0} {1}", LineNumber, OrignialScriptLine) - End Function - - Public Const INTERNAL_EXPRESSION_REGEX As String = "$(.+?)" - - Public Property PreExecuteType As PreExecuteTypes = PreExecuteTypes.Normal - - Public Enum PreExecuteTypes - Normal - [Imports] - Library - End Enum - -#Region "IDisposable Support" - Private disposedValue As Boolean ' To detect redundant calls - - ' IDisposable - Protected Overridable Sub Dispose(disposing As Boolean) - If Not Me.disposedValue Then - If disposing Then - ' TODO: dispose managed state (managed objects). - End If - - ' TODO: free unmanaged resources (unmanaged objects) and override Finalize() below. - ' TODO: set large fields to null. - End If - Me.disposedValue = True - End Sub - - ' TODO: override Finalize() only if Dispose(ByVal disposing As Boolean) above has code to free unmanaged resources. - 'Protected Overrides Sub Finalize() - ' ' Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above. - ' Dispose(False) - ' MyBase.Finalize() - 'End Sub - - ' This code added by Visual Basic to correctly implement the disposable pattern. - Public Sub Dispose() Implements IDisposable.Dispose - ' Do not change this code. Put cleanup code in Dispose(disposing As Boolean) above. - Dispose(True) - GC.SuppressFinalize(Me) - End Sub -#End Region - - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/ScriptInfo.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/ScriptInfo.vb deleted file mode 100644 index 4a7c0b6be..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/ScriptInfo.vb +++ /dev/null @@ -1,91 +0,0 @@ -Imports System.Text.RegularExpressions - -Namespace Runtime.Objects.ObjectModels - - ''' - ''' ShellScript information header parser - ''' - ''' - Public Class ScriptInfo - - Public Property Authors As String() - Public Property Description As String - Public Property References As String() - Public Property Version As String - Public Property MissingReferences As String() - Public Property ModuleName As String - Public Property FilePath As String - Public Property Contacts As String - - Public Const Field As String = "#!\s+{0}: .+" - - Public Function DisplayInfo() As Boolean - Throw New NotImplementedException - End Function - - Public Shared Function LoadInfo(path As String, Optional Registry As ShoalShell.DelegateHandlers.TypeLibraryRegistry.DelegateRegistry = Nothing) As ScriptInfo - Dim Script As ScriptInfo = New ScriptInfo With {.FilePath = path} - Dim InfoLines As String() = (From strLine As String In IO.File.ReadAllLines(path) - Let Trimed As String = Trim(strLine) - Where Not String.IsNullOrEmpty(Trimed) AndAlso String.Equals(Mid(Trimed, 1, 2), "#!") - Select Trimed).ToArray - Dim GetValue = Function(Keyword As String) As String() - Return (From strLine As String In InfoLines - Let MatchedHead As String = Regex.Match(strLine, String.Format(Field, Keyword), RegexOptions.IgnoreCase).Value - Where Not String.IsNullOrEmpty(MatchedHead) - Select Trim(strLine.Replace(MatchedHead, ""))).ToArray - End Function - - Dim strTemp As String() - strTemp = GetValue("author") - If Not strTemp.IsNullOrEmpty Then - Script.Authors = Strings.Split(strTemp.First, "; ") - End If - - strTemp = GetValue("description") - If Not strTemp.IsNullOrEmpty Then - Script.Description = strTemp.First - End If - - strTemp = GetValue("version") - If Not strTemp.IsNullOrEmpty Then - Script.Version = strTemp.First - End If - - strTemp = GetValue("module name") - If Not strTemp.IsNullOrEmpty Then - Script.ModuleName = strTemp.First - End If - - strTemp = GetValue("contacts") - If Not strTemp.IsNullOrEmpty Then - Script.Contacts = strTemp.First() - End If - - Dim [Imports] As String() = (From strLine As String In IO.File.ReadAllLines(path) - Let Trimed As String = Trim(strLine) - Where Regex.Match(Trimed, "imports\s+", RegexOptions.IgnoreCase).Success - Select Mid(Trimed, 8).Trim).ToArray - Dim References As List(Of String) = New Generic.List(Of String) - Dim MissingReferences As List(Of String) = New Generic.List(Of String) - - If Registry Is Nothing Then - Registry = ShoalShell.DelegateHandlers.TypeLibraryRegistry.DelegateRegistry.CreateDefault - End If - - For Each Ns In [Imports] - Try - Dim [Module] = Registry.GetAssemblyPaths(Ns) - Call References.AddRange([Module]) - Catch ex As Exception - Call MissingReferences.Add(Ns) - End Try - Next - - Script.References = References.ToArray - Script.MissingReferences = MissingReferences.ToArray - - Return Script - End Function - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/ShellScript.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/ShellScript.vb deleted file mode 100644 index ebc06255d..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/RuntimeObjects/ShellScript.vb +++ /dev/null @@ -1,545 +0,0 @@ -Imports System.Text -Imports Microsoft.VisualBasic.Scripting.ShoalShell.DeviceDriver -Imports Microsoft.VisualBasic.Scripting.ShoalShell.DelegateHandlers.TypeLibraryRegistry - -Namespace Runtime.Objects - - ''' - ''' ShoalShell Scripting Host, shl.(ShoalShell的脚本编程的引擎,嵌入å¼è„šæœ¬å¼•æ“Ž) - ''' - ''' - Public Class ShellScript : Implements System.IDisposable - -#Region "Fileds" - - Protected Friend _EngineMemoryDevice As I_MemoryManagementDevice - Protected Friend _Interpreter As Interpreter.Interpreter - - ''' - ''' 在当å‰çš„脚本环境之中已ç»å¯¼å…¥çš„命å空间 - ''' - ''' - Protected Friend _ImportsNamespace As List(Of String) = New List(Of String) - Protected Friend _HybridScriptingInteropEntryPointHandler As HybridsScripting.HybridScriptingInteropHandler - Protected Friend _IOSupport As IODeviceDriver - Protected Friend _OutputSupport As OutputDeviceDriver - Protected Friend _InputSupport As InputDeviceDriver - - Dim _DEBUG_TAG As String - Dim [_Error] As String - Protected Friend _RunningScript As Boolean - Protected Friend _ImportsNewNamespace As Boolean - - ''' - ''' 从外部所导入的命令以åŠå†…éƒ¨çš„å‘½ä»¤çš„é›†åˆ - ''' - ''' - Protected Friend _InternalEntryPointManager As DelegateHandlers.EntryPointHandlers.ImportsEntryPointManager - Protected Friend _InternalHelpSystem As ShoalShell.Wiki.InternalHelpSearch - -#End Region - -#Region "ReadOnly Property" - - Public ReadOnly Property ImportsDataSource As Runtime.Objects.ObjectModels.DataSourceMapping.DataSourceMappingHandler - Get - Return _EngineMemoryDevice._InternalImportsDataSource - End Get - End Property - - ''' - ''' 脚本引擎的内存管ç†å·¥å…· - ''' - ''' - Public ReadOnly Property ScriptEngineMemoryDevice As I_MemoryManagementDevice - Get - Return Me._EngineMemoryDevice - End Get - End Property - - Public ReadOnly Property Interpreter As Interpreter.Interpreter - Get - Return _Interpreter - End Get - End Property - - ''' - ''' 在当å‰çš„脚本环境之中已ç»å¯¼å…¥çš„命å空间 - ''' - ''' - Public ReadOnly Property ImportsNamespaceList As String() - Get - Return _ImportsNamespace.ToArray - End Get - End Property - - Public ReadOnly Property HybridScriptingInteropEntryPoint As HybridsScripting.HybridScriptingInteropHandler - Get - Return _HybridScriptingInteropEntryPointHandler - End Get - End Property - - Public ReadOnly Property IODeviceManager As IODeviceDriver - Get - Return Me._IOSupport - End Get - End Property - - Public ReadOnly Property OutputDeviceManager As OutputDeviceDriver - Get - Return Me._OutputSupport - End Get - End Property - - Public ReadOnly Property InputDeviceDriver As InputDeviceDriver - Get - Return Me._InputSupport - End Get - End Property - - Public ReadOnly Property InternalEntryPointManager As DelegateHandlers.EntryPointHandlers.ImportsEntryPointManager - Get - Return Me._InternalEntryPointManager - End Get - End Property - - Public ReadOnly Property TypeLibraryRegistry As DelegateRegistry - Get - Return _Interpreter._DelegateRegistry - End Get - End Property -#End Region - - ''' - ''' 这个是为IDE的开å‘而准备的 - ''' - ''' - Public Event ImportsNamespace() - - ''' - ''' 当编译器导入了新的命å空间的时候,就会调用这个方法,将消æ¯ä¼ é€’ç»™IDE,更新IDEçš„ç•Œé¢ - ''' - ''' - Protected Friend Sub ImportsNewNamespace() - _ImportsNewNamespace = True - RaiseEvent ImportsNamespace() - End Sub - - Public ReadOnly Property ErrorMessage As String - Get - Return _Error - End Get - End Property - - Public Shared ReadOnly Property Keywords As String() - Get - Return New String() {"Imports", "Return", "echo", "Library", "Libraries", "Call"} - End Get - End Property - - ''' - ''' Get the imports method from a specific namespace in the shoal shell script engine.(获å–在脚本引擎之中已ç»è¢«å¯¼å…¥çš„命å空间之中的方法) - ''' - ''' - ''' - ''' - Public ReadOnly Property ImportsMethods As String() - Get - Return _InternalEntryPointManager.ImportsMethods.ToArray - End Get - End Property - - ''' - ''' Gets the help information using a specific keyword for invoke the searching.(ä½¿ç”¨æŒ‡å®šçš„å…³é”®è¯æ¥æœç´¢å¸®åŠ©ä¿¡æ¯) - ''' - ''' - ''' 在Http帮助æœåŠ¡å™¨ä¹‹ä¸Šè¯·è®¾å®šè¿™ä¸ªå‚æ•°ä¸ºFalse - ''' - ''' - Public Function GetHelpInfo(key As String, ShowManual As Boolean) As String - Return _InternalHelpSystem.GetHelpInfo(key, ShowManual) - End Function - - ''' - ''' å‘脚本引擎之中导入命å空间 - ''' - ''' - ''' - ''' - ''' - Public Function [Imports](Of [T_Object] As Class)(obj As T_Object) As Boolean - Return _InternalEntryPointManager.ImportsInstanceNamespace(obj) > 0 - End Function - - ''' - ''' Imports module.(导入模å—之中的命令) - ''' - ''' - ''' - ''' - Public Function [Imports](TypeInfo As System.Type) As Boolean - Return _InternalEntryPointManager.ImportsModule(TypeInfo) > 0 - End Function - - ''' - ''' Interpreter对象之中的IOSupport对象的åˆå§‹åŒ–需è¦Memory对象实例,所以请ä¸è¦è½»æ˜“修改这里的对象的åˆå§‹åŒ–é¡ºåº - ''' - ''' - Sub New(Optional ShowInitializeMessage As Boolean = False) - Call InternalInitialize(ShoalShell.DelegateHandlers.TypeLibraryRegistry.DelegateRegistry.CreateDefault, ShowInitializeMessage) - End Sub - - Sub New(LibraryRegistry As ShoalShell.DelegateHandlers.TypeLibraryRegistry.DelegateRegistry, Optional ShowInitializeMessage As Boolean = False) - Call InternalInitialize(LibraryRegistry, ShowInitializeMessage) - End Sub - - ''' - ''' - ''' - ''' - ''' - ''' - Sub New(LibraryRegistry As String, Optional ShowInitializeMessage As Boolean = False) - Dim Registry = ShoalShell.DelegateHandlers.TypeLibraryRegistry.DelegateRegistry.CreateFromFile(LibraryRegistry) - Call InternalInitialize(Registry, ShowInitializeMessage) - End Sub - - ''' - ''' 脚本引擎内部åˆå§‹åŒ–脚本编程环境 - ''' - ''' - ''' - ''' - Private Sub InternalInitialize(LibraryRegistry As ShoalShell.DelegateHandlers.TypeLibraryRegistry.DelegateRegistry, ShowInitializeMessage As Boolean) - _EngineMemoryDevice = New I_MemoryManagementDevice(Me) - _DEBUG_TAG = Now.ToString - _HybridScriptingInteropEntryPointHandler = New HybridsScripting.HybridScriptingInteropHandler(Me) - _Interpreter = New Interpreter.Interpreter(Me, LibraryRegistry, ShowInitializeMessage) - - On Error Resume Next - Console.Title = "Shoal Shell" - End Sub - - Public Function ImportsIOSupports([Module] As Type) As Integer - Dim i = _IOSupport.ImportsHandler([Module]) - i += _InputSupport.ImportsHandler([Module]) - Return i - End Function - - Public Function ImportsOutputHandlers([Module] As ShoalShell.DelegateHandlers.TypeLibraryRegistry.RegistryNodes.Module) As Integer - For Each item In [Module].OriginalAssemblys - Call _OutputSupport.ImportsHandler(item.Key) - Next - - Return 0 - End Function - - ''' - ''' 安装æ’ä»¶æ¨¡å— - ''' - ''' å‘Shoal脚本安装æ’件模å—çš„dll或者exe文件 - ''' - ''' - Public Function InstallModules(assembly As String) As Boolean - Return Me._Interpreter._DelegateRegistry.RegisterAssemblyModule(assembly, "") - End Function - - Public Sub ReloadEntryPoints() - If Not _Interpreter._DelegateRegistry._HybridsScriptingEntrypoints.IsNullOrEmpty Then - For Each Entry In _Interpreter._DelegateRegistry._HybridsScriptingEntrypoints - Call _HybridScriptingInteropEntryPointHandler.LoadEntryPoints(DelegateHandlers.TypeLibraryRegistry.DelegateRegistry.Internal_getFullPath(Entry.AssemblyPath)) - Next - End If - End Sub - - Public Sub ReloadLibraryRegistry() - _Interpreter._DelegateRegistry = ShoalShell.DelegateHandlers.TypeLibraryRegistry.DelegateRegistry.CreateDefault - End Sub - - ''' - ''' 使用外部的脚本环境进行è¿ç®— - ''' - ''' - ''' - ''' - Public Function ExternalScriptInteropEvaluate(ScriptText As String) As Object - Return _HybridScriptingInteropEntryPointHandler.Evaluate(ScriptText) - End Function - - Public Function ExternalScriptInteropSetValue(variable As String, value As Object) As Boolean - Return _HybridScriptingInteropEntryPointHandler.SetValue(variable, value) - End Function - - ''' - ''' 载入外部脚本的挂载点 - ''' - ''' - ''' - ''' - Public Function AttachesEntryPoint(name As String) As Boolean - Try - Call _HybridScriptingInteropEntryPointHandler.AttachEntryPoint(name) - Return True - Catch ex As Exception - Return False - End Try - End Function - - Public Sub PushStack(value As Object) - Call _EngineMemoryDevice.PushStack(value) - End Sub - - Public Function GetStackValue() As Object - Return _EngineMemoryDevice.GetStackValue - End Function - - ''' - ''' å˜é‡ä¸å­˜åœ¨çš„è¯åˆ™ä¼šè¿”回字符串自身 - ''' - ''' 请使用å˜é‡å¼•ç”¨è¡¨è¾¾å¼ - ''' - ''' - Public Function GetValue(variableName As String) As Object - Dim value = _EngineMemoryDevice.TryGetValue(variableName) - Return value - End Function - - Public Sub SetValue(varName As String, value As Object) - Call _EngineMemoryDevice.SetValue(New KeyValuePair(Of String, Object)(varName, value)) - End Sub - - ''' - ''' 日志文件路径,当å‘生错误的时候,å‡è‹¥æœ¬å±žæ€§ä¸ä¸ºç©ºï¼Œåˆ™ä¼šå°†é”™è¯¯çš„ä¿¡æ¯åŒæ—¶å†™å…¥åœ¨è¿™é‡Œï¼Œå¦åˆ™ä»…将错误信æ¯å†™å…¥ä¸»æ—¥å¿—文件之中 - ''' - ''' - ''' - ''' - Public Property ExceptionHandleRedirect As String - - Public Function Compile(script As String) As Runtime.Objects.ObjectModels.ShellScript - Return _Interpreter.CreateScriptObject(script) - End Function - - ''' - ''' Execute a shellscript file. - ''' (执行一个脚本文件中的脚本文本内容,请注æ„,函数仅返回脚本的执行状æ€ï¼Œ0使‰§è¡ŒæˆåŠŸï¼Œå…¶ä»–éž0æ•°å­—å¯èƒ½è¡¨ç¤ºæ‰§è¡Œå¤±è´¥ï¼Œ - ''' å‡è‹¥ç›®æ ‡è„šæœ¬æœ‰return关键è¯è¿”回执行结果,需è¦å¾—到脚本的具体返回数æ®ï¼Œè¯·ä½¿ç”¨æ–¹æ³•获å–。) - ''' - ''' - ''' This script data should be a line of the script code that of which is user type input from the console terminal - ''' or a text file content from the return value of - ''' - ''' - ''' - Public Function EXEC(ShellScript As String) As Integer - If String.IsNullOrEmpty(ShellScript.Replace(vbCrLf, "").Trim) Then - Return -1 - Else - -#Const RELEASE = True - -#If RELEASE Then - Try -#End If - Dim ObjectModel = _Interpreter.CreateScriptObject(ShellScript) - - _RunningScript = True - _Error = "" - - Call InternalExecuteScript(ObjectModel) - - _ImportsNewNamespace = False - _RunningScript = False -#If RELEASE Then - Catch ex As Exception - _RunningScript = False - Return HandleException(ex, ShellScript) - End Try -#End If - Return 0 - End If - End Function - - Protected Overridable Sub InternalExecuteScript(Script As ShoalShell.Runtime.Objects.ObjectModels.ShellScript) - Call Script.Execute() - End Sub - - Protected Friend Function HandleException(ex As Exception, ShellScript As String) As Integer - Dim ExceptionObject As String = "" - - If Not TypeOf ex Is Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ObjectModels.Exceptions.ScriptRunTimeException Then - GoTo WRITE_LOG - End If - - Dim Exception = DirectCast(ex, Runtime.Objects.ObjectModels.Exceptions.ScriptRunTimeException) - Call Console.WriteLine("[!ERROR] @ ""{0}""", Exception.ScriptLine) - ExceptionObject = Exception.ExceptionType - -WRITE_LOG: Using Logging As Logging.LogFile = New Logging.LogFile(String.Format("{0}/ShellScript_ERROR.log", My.Application.Info.DirectoryPath)) - Dim Err As String = - vbCrLf & - "--------------------------------------------------------------------------------------------------------------------------------------------------------" & vbCrLf & - "[Shoal shell script text details]" & vbCrLf & vbCrLf & - String.Join(vbCrLf, (From str In Strings.Split(ShellScript, vbCrLf) Select " " & str).ToArray) & vbCrLf & - "--------------------------------------------------------------------------------------------------------------------------------------------------------" & vbCrLf & vbCrLf & vbCrLf & - ex.ToString & vbCrLf - - Call Console.WriteLine(vbCrLf & ex.ToString & vbCrLf) - Call Logging.WriteLine(Err, [Object]:=ExceptionObject, Type:=VisualBasic.Logging.MSG_TYPES.ERR, WriteToScreen:=False) - - _Error = Err - - If Not String.IsNullOrEmpty(ExceptionHandleRedirect) Then - - Using Redirect = New Logging.LogFile(ExceptionHandleRedirect) - Call Redirect.WriteLine(Err, ExceptionObject, Type:=VisualBasic.Logging.MSG_TYPES.ERR, WriteToScreen:=False) - End Using - End If - - Return -1 - End Using - End Function - - Public Function Source(path As String) As Integer - Dim currentWork As String = My.Computer.FileSystem.CurrentDirectory - My.Computer.FileSystem.CurrentDirectory = FileIO.FileSystem.GetParentPath(path) - Dim i As Integer = EXEC(FileIO.FileSystem.ReadAllText(path)) - My.Computer.FileSystem.CurrentDirectory = currentWork - - Return i - End Function - - ''' - ''' - ''' - ''' è¿™ä¸ªå‚æ•°æ˜¯è„šæœ¬æ–‡ä»¶çš„æ–‡æœ¬å†…å®¹ï¼Œè€Œéžè„šæœ¬æ–‡ä»¶çš„è·¯å¾„ - ''' - ''' - ''' - Public Function InternalSourceScript(ShellScript As String, parameters As KeyValuePair(Of String, Object)()) As Object - For Each pInfo In parameters - Call Me._EngineMemoryDevice.InsertOrUpdate(pInfo.Key, pInfo.Value) - Next - - Call EXEC(ShellScript) - - Dim StackValue = GetStackValue() - - If StackValue Is Nothing Then - StackValue = _EngineMemoryDevice - End If - - Return StackValue - End Function - - ''' - ''' 系统有一个默认的ä¿ç•™å˜é‡$ - ''' - ''' - ''' - ''' - Protected Friend Function PrintVariable(VariableName As String) As Integer - If Not String.Equals(VariableName, "$") Then - VariableName = Mid(VariableName, 2) '去除开头的$引用字符 - End If - - Dim value = _EngineMemoryDevice.Item(VariableName) - Dim Tokens As String() = GetPrintValue(value) - If Tokens.IsNullOrEmpty Then - Call Console.WriteLine(" = EMPTY_ARRAY") - End If - - Dim sBuilder As StringBuilder = New StringBuilder(1024) - Call sBuilder.AppendLine(" = [0] " & Tokens.First) - For i As Integer = 1 To Tokens.Count - 1 - Call sBuilder.AppendLine(String.Format(" [{0}] {1}", i, Tokens(i))) - Next - Call Console.WriteLine(sBuilder.ToString) - Return -1 - End Function - - ''' - ''' 系统有一个默认的ä¿ç•™å˜é‡$ - ''' - ''' - ''' - ''' - Protected Friend Function PrintConstant(VariableName As String) As Integer - If Not String.Equals(VariableName, "&") Then - VariableName = Mid(VariableName, 2) '去除开头的$引用字符 - End If - - Dim value = _EngineMemoryDevice.GetConstant(VariableName) - Dim Tokens As String() = GetPrintValue(value) - If Tokens.IsNullOrEmpty Then - Call Console.WriteLine(" = EMPTY_ARRAY") - End If - - Dim sBuilder As StringBuilder = New StringBuilder(1024) - Call sBuilder.AppendLine(" = [0] " & Tokens.First) - For i As Integer = 1 To Tokens.Count - 1 - Call sBuilder.AppendLine(String.Format(" [{0}] {1}", i, Tokens(i))) - Next - Call Console.WriteLine(sBuilder.ToString) - Return -1 - End Function - - Public Overrides Function ToString() As String - Return _DEBUG_TAG - End Function - -#Region "IDisposable Support" - Private disposedValue As Boolean ' To detect redundant calls - - ' IDisposable - Protected Overridable Sub Dispose(disposing As Boolean) - If Not Me.disposedValue Then - If disposing Then - ' TODO: dispose managed state (managed objects). - End If - - ' TODO: free unmanaged resources (unmanaged objects) and override Finalize() below. - ' TODO: set large fields to null. - End If - Me.disposedValue = True - End Sub - - ' TODO: override Finalize() only if Dispose(ByVal disposing As Boolean) above has code to free unmanaged resources. - 'Protected Overrides Sub Finalize() - ' ' Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above. - ' Dispose(False) - ' MyBase.Finalize() - 'End Sub - - ' This code added by Visual Basic to correctly implement the disposable pattern. - Public Sub Dispose() Implements IDisposable.Dispose - ' Do not change this code. Put cleanup code in Dispose(disposing As Boolean) above. - Dispose(True) - GC.SuppressFinalize(Me) - End Sub -#End Region - - ''' - ''' 执行一行脚本并返回计算值 - ''' - ''' - ''' - ''' - ''' - Public Shared Operator <=(Shoal As ShoalShell.Runtime.Objects.ShellScript, Script As String) As Object - Call Shoal.EXEC(Script) - Return Shoal.GetStackValue - End Operator - - ''' - ''' èŽ·å–æŸä¸€ä¸ªå˜é‡ - ''' - ''' - ''' - ''' - ''' - Public Shared Operator >=(Shoal As ShoalShell.Runtime.Objects.ShellScript, Variable As String) As Object - Return Shoal.GetValue(Variable) - End Operator - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/ShoalShell_Core.Designer.cd b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/ShoalShell_Core.Designer.cd deleted file mode 100644 index ae6f7f551..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/ShoalShell_Core.Designer.cd +++ /dev/null @@ -1,719 +0,0 @@ - - - - - - AIAAAACIAAAAABBEAAAAtAQAAAECAgAAAAICAAAAAAA= - DelegateHandlers\EntryPointHandlers\CommandMethodEntryPoint.vb - - - - - - - AAAAAAAAAAAAAIAQAAAAAAAAAAAAAAACgAADAAAAAAA= - DelegateHandlers\EntryPointHandlers\EntryPointHashTable.vb - - - - - - AAAAAAEgGAAAAAAEoBAAAAIAYABAAgAAQAABAAAEAAA= - DelegateHandlers\EntryPointHandlers\FunctionSignature.vb - - - - - - - - - - - DelegateHandlers\EntryPointHandlers\InternalEntryPointLoader.vb - - - - - SAABAAAAAAAgABAQAQAAgAUICAASAEARAAghBABAAQE= - DelegateHandlers\EntryPointHandlers\ImportsEntryPointManager.vb - - - - - - - - - - - - DelegateHandlers\EntryPointHandlers\MethodDelegateCaller.vb - - - - - AFAAAAAAAACAAAAAoAAAACAAAAAAAIQgAAACgACAAIA= - DelegateHandlers\EntryPointHandlers\MethodDelegateCaller.vb - - - - - - AAIAABAABAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAA= - DelegateHandlers\TypeLibraryRegistry\DelegateRegistry.vb - - - - - - AABCiLAAASCABgBEAAAAAEAIACBAgAIBQAQSQiQEAEI= - DelegateHandlers\TypeLibraryRegistry\DelegateRegistry.vb - - - - - - - AAAAAAAAgAAAAAAAAAABAAAAAAIAAAAAAAAAAAQAACA= - DelegateHandlers\TypeLibraryRegistry\RegistryModuleLoader.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - DelegateHandlers\TypeLibraryRegistry\WebServiceDelegateRegistry.vb - - - - - - AAAAEgAAAAAgAAAEAAAEAAQAAAAAAAAAAIAAAAAAAgA= - DelegateHandlers\TypeLibraryRegistry\RegistryNodes\AssemblyModule.vb - - - - - - - IABAAwAAAAQgASAEgAAEAAUAAAAAJAAgQAAABAIAAAA= - DelegateHandlers\TypeLibraryRegistry\RegistryNodes\AssemblyModule.vb - - - - - - - AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAQA= - DelegateHandlers\TypeLibraryRegistry\RegistryNodes\AssemblyModule.vb - - - - - - AAAAAggAAAAAACAEAIAAAAAAAAAAAAACAAAAAAAAAAA= - DelegateHandlers\TypeLibraryRegistry\RegistryNodes\AssemblyModule.vb - - - - - - - CAAAAAAAAAAEABCFCAAAAAQEAAAiAAIAAAAgAAAAAAA= - DelegateHandlers\TypeLibraryRegistry\RegistryNodes\Module.vb - - - - - - - AAAAAAAAAABAAAAEAAAAIAQAAAAAAAAAAAAAAAAABAA= - Interpreter\Delegate.vb - - - - - - AACBAAAARgYIACgEAAACIEQQAAQCAgAAIAAAgAgEgAA= - Interpreter\Delegate.vb - - - - - - - - - - - Interpreter\InternalCommands.vb - - - - - IggCCAAAIgRgAAgECAAIIIgIAiAIAAABAICAAIBAGBY= - Interpreter\InternalCommands.vb - - - - - - BAAAkBAQAAIAAAACABAwGAAJEAAhICAAAAAAIAADAAA= - Interpreter\Interpreter.vb - - - - - - AAAAAAAAAACAAAAAAAAAYAAAEAAAAAAAAAAAAAAAAAA= - Interpreter\HybridScripting\HybridScriptingInterface.vb - - - - - - - - Interpreter\HybridScripting\HybridScriptingInterface.vb - - - - - AAAAAAAAAAAAAAAEAAAAQAAAEAAAAAAAAAEAAEAAAAA= - Interpreter\HybridScripting\HybridScriptingInterface.vb - - - - - - AAAAAAAAQAAAAAAEAAAAAAAQAAAACAAAAAAAgAAAAAA= - Interpreter\HybridScripting\HybridScriptingInterface.vb - - - - - - - - - - - Interpreter\HybridScripting\HybridScriptingInteropHandler.vb - - - - - cAAAAAAAACAAAwACAAAAAgAAgCgAAAAAggAAAgAAAAA= - Interpreter\HybridScripting\HybridScriptingInteropHandler.vb - - - - - - - - - - - - Interpreter\ObjectModels\Expression.vb - - - - - AAAAAAAAAAAAgAAEAAAAAAAAAAAgAAAgAAAAAAAAIAA= - Interpreter\ObjectModels\Expression.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAgAAAAAAAAAAA= - Interpreter\ObjectModels\Expression.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAA= - Interpreter\ObjectModels\Expression.vb - - - - - - AEAAAAAAAAAAAAAECAAAAAAAAAAAAAAoAAAAAAAAAAA= - Interpreter\ObjectModels\Expression.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAIABAAAAAAA= - Interpreter\ObjectModels\Expression.vb - - - - - - AIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAA= - Interpreter\ObjectModels\Expression.vb - - - - - - AAAACCAAAAAAAAAAAAAAAIAAAAAQABAgAAAAAAAAAAA= - Interpreter\ObjectModels\Expression.vb - - - - - - AAAAAAAAAAAAAAAEAAgAAAAAAAAAAAAgAAAAAAAAAGA= - Interpreter\ObjectModels\Expression.vb - - - - - - AAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAA= - Interpreter\ObjectModels\Expression.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAgAAAAAAAAAAA= - Interpreter\ObjectModels\Expression.vb - - - - - - AAAAAAAAAAAAAAAABAAAAAAAAAAAAAAgAAAAAAAAAAA= - Interpreter\ObjectModels\Expression.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAgAAACA= - Interpreter\ObjectModels\ScriptModel.vb - - - - - - AAAAAAAgAAAAAAAAAQACCAAAAAAAAAAAAAACAAABAAA= - Interpreter\ObjectModels\Tokenlisers\FullTokenliser.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAABIAA= - Interpreter\ObjectModels\Tokenlisers\Tokenliser.vb - - - - - - Interpreter\ObjectModels\Tokens.vb - - - - - - AAAAAAAAIAAAAAAEAAAAAAAAAAAAAAAQAAAEAAAAAAA= - Interpreter\ObjectModels\Tokens.vb - - - - - - AAAAAAAAAAAAAAAEAAAAAAUAAAAAAAAAAAQAAAAAAAA= - Interpreter\ObjectModels\Tokens.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - Interpreter\ObjectModels\Tokens.vb - - - - - - AAAAAACAAAAAAAAEAAAAAAQAAAAAAAAAAAAAAAAQAAA= - Interpreter\ObjectModels\Tokens.vb - - - - - - - - Interpreter\ObjectModels\Tokens.vb - - - - - AAAAAAIAAAAAAAAEAAAAAAAAAAAAAAAAAQAAAAAAAAA= - Interpreter\ObjectModels\Tokens.vb - - - - - - AACAAAAAAAAAAAAEAAAAAIAAEAQAgAgAAAAAACAAAAA= - Interpreter\ObjectModels\Tokens.vb - - - - - - AAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAA= - - - - - - - - - - - - - - - - RuntimeObjects\Debugging\Debugger.vb - - - - - RuntimeObjects\Debugging\Debugger.vb - - - - - AABgCAAAIAgAAAAIAAQEAAAgAAAAAAABAAAAAAAAQAA= - RuntimeObjects\Debugging\Debugger.vb - - - - - - - AAAIAAAIASAAIAIAACQAAAQAAAAAAAAAQAAICgAABAA= - RuntimeObjects\Debugging\DebuggerListener.vb - - - - - - - AAAAAAAABAAAAAAAAAAEAAAAIAAAAAAAAAAAAAAAAAI= - RuntimeObjects\Debugging\ShellScriptDebuggerModel.vb - - - - - - ABAAAAAAAAAAAAAAYAACAAAAAAAAAAAIIAAAAAgAAAA= - RuntimeObjects\DeviceDriver\DeviceDriver.vb - - - - - - AAAAAACACAAAAIAAAEACgAAAAACgAAAAAAAAAAiAAAA= - RuntimeObjects\DeviceDriver\IODeviceDriver.vb - - - - - - BAAAAAAAAAAAAAAAAAECAAAAEIABAIAAAAAAAAwAAAA= - RuntimeObjects\DeviceDriver\OutputDeviceDriver.vb - - - - - - - - - - - RuntimeObjects\DeviceDriver\TypeHandleEntryPointDriverrModule.vb - - - - - QAAAAAAACAEAAAAAAAACAAIAAAAAAQAAAAAAAAgAAAA= - RuntimeObjects\DeviceDriver\TypeHandleEntryPointDriverrModule.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAAA= - RuntimeObjects\DeviceDriver\DriverHandles.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - RuntimeObjects\DeviceDriver\DriverHandles.vb - - - - - - AAAAAAAAAAAgAAAEAAAAAAAAAAAAAIAUAAAAAAAAAAA= - RuntimeObjects\DeviceDriver\DriverHandles.vb - - - - - - AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAA= - RuntimeObjects\DeviceDriver\DriverHandles.vb - - - - - - AAAAAAIAACAAAAEEAAAARoBMGEgCAEAgQPgAogYQABI= - RuntimeObjects\Dynamics.vb - - - - - - - igAAEAAYgAAAghAQCAgAFAQkoAECAMAAACAgAIBQJAI= - RuntimeObjects\MemoryManagement.vb - - - - - - - AUABAAAQojQgAgUeAADUcoARLCAiAHFJAQggBgMCqkA= - RuntimeObjects\ShellScript.vb - - - - - - - AAAAAAAAEAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAA= - RuntimeObjects\Exceptions\CircularReferencesException.vb - - - - - - AAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAA= - RuntimeObjects\Exceptions\InterpreterException.vb - - - - - - AAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAA= - RuntimeObjects\Exceptions\InterpreterException.vb - - - - - - AAAAAAAAAAAAAAAAAAAAEAAAAAAAAgAAAAACAAAAAAA= - RuntimeObjects\Exceptions\MethodNotFoundException.vb - - - - - - AAAAAAAAAABAAAAEAAAAEAAAAAAAAAAAAAQAAAAAAAA= - RuntimeObjects\Exceptions\RunTimeException.vb - - - - - - AAAAAABAAgAAAAAAAAAIEAAAAAAAAAABAAAAAAAAAAA= - RuntimeObjects\Exceptions\ShoalScriptException.vb - - - - - - AAAAAAIAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAA= - RuntimeObjects\IScriptEngineComponent.vb - - - - - - CAAIABAAAAAEEBQACAAEAAQEIAACgQAIAAAgAAAAAAY= - RuntimeObjects\ObjectModels\ObjectModels.vb - - - - - - - AAAAAAAAACAAAAAGACEIIgAAAAAAAIQBgEAAEgAEAAA= - RuntimeObjects\ObjectModels\ScriptCodeLine.vb - - - - - - - JAAAAAAAAAAgEAAAAAAACAAAAABQAAACAABAAIAAgAA= - RuntimeObjects\ScriptInfo.vb - - - - - - AABAEAAAIAAAAgAAAAAAAAAAgAAAAEAAAAABAAIAAAA= - RuntimeObjects\ObjectModels\DataSource.vb - - - - - - AAAAgAAAIAAAAgAEAAAAIAQAAAAAAEAAAAAAQAAAAAA= - RuntimeObjects\ObjectModels\DataSource.vb - - - - - - AAAQAAAAIAAAAgAAAAAAAAAAAAAAAAAAAAAAQAAAAAA= - RuntimeObjects\ObjectModels\DataSource.vb - - - - - - AAAAAAAAJAAAAgAAAAAAAAAAAAAAAAAAAAAAQAAAAAA= - RuntimeObjects\ObjectModels\DataSource.vb - - - - - - CAAAAgAAAAAAAAAEAIAAAAAAAAAAAAAAIAAAAAAEIAQ= - Wiki\InternalHelpSearch.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - Wiki\WebServiceHandler.vb - - - - - - AAAAAAAAAAAAAAAEAAAAQAAAAAAEAAAAAAAAAAAAAAA= - BuildInModules\Threading.vb - - - - - - - AAAAAgAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAA= - DelegateHandlers\TypeLibraryRegistry\RegistryNodes\AssemblyModule.vb - - - - - - wAQQAAEAAAAAEAAgEAAOAIiAABCAkAAGAAAAAEAAAAA= - BuildInModules\Array.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAA= - BuildInModules\Cowsay.vb - - - - - - AAAAAAAAAAIAAAAAAAAAAAAAAACAAAAAAAAAgAAAEAA= - BuildInModules\Cowsay.vb - - - - - - AAAAAAAAAAIQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - BuildInModules\Threading.vb - - - - - - AAAAAAAAAAAAgAAAAAAAAAAAQBAAAEAAgABAAAAAAAA= - CommonExtensions.vb - - - - - - AIAAAAAAAAAAAAAAAgAAAAAAAFAAAAAAAAAAAAAAIQA= - Interpreter\DelegateDeclaration.vb - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA= - Interpreter\InternalTextEngine.vb - - - - - - AAAAgAIAAAJAAEAAASAAQAACAAAAAgBAAAAAAAEIAAA= - Interpreter\ObjectModels\SyntaxParser.vb - - - - - - AAAAAAAAAAAAAAAAAAABEAAAAQAAAAAAAAgIAAAAAIA= - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAA= - - - - - - AAAAAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - RuntimeObjects\Debugging\DebuggerProtocol.vb - - - - \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/ShoalShell_Core.vbproj b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/ShoalShell_Core.vbproj deleted file mode 100644 index aa038babb..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/ShoalShell_Core.vbproj +++ /dev/null @@ -1,207 +0,0 @@ - - - - - Debug - AnyCPU - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527} - Library - Microsoft.VisualBasic.Scripting.ShoalShell - Microsoft.VisualBasic.Scripting.ShoalShell - 512 - Windows - v4.6 - - - - true - full - true - true - bin\Debug\ - Microsoft.VisualBasic.Scripting.ShoalShell.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - pdbonly - false - true - true - ..\..\..\..\GCModeller\ - Microsoft.VisualBasic.Scripting.ShoalShell.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - x64 - - - On - - - Binary - - - Off - - - On - - - true - true - true - bin\x64\Debug\ - Microsoft.VisualBasic.Scripting.ShoalShell.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x64 - MinimumRecommendedRules.ruleset - - - true - ..\..\..\..\GCModeller-x64\ - Microsoft.VisualBasic.Scripting.ShoalShell.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - True - Application.myapp - - - True - True - Resources.resx - - - True - Settings.settings - True - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - VbMyResourcesResXFileCodeGenerator - Resources.Designer.vb - My.Resources - Designer - - - - - - MyApplicationCodeGenerator - Application.Designer.vb - - - SettingsSingleFileGenerator - My - Settings.Designer.vb - - - - - - - - - - - {fecce1fd-e1d4-49e3-a668-60bb5e7aed99} - Microsoft.VisualBasic.Architecture.Framework - - - - - \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Wiki/InternalHelpSearch.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Wiki/InternalHelpSearch.vb deleted file mode 100644 index d75ea0cde..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Wiki/InternalHelpSearch.vb +++ /dev/null @@ -1,225 +0,0 @@ -Imports System.Text -Imports Microsoft.VisualBasic.ConsoleDevice.Utility - -Namespace Wiki - - ''' - ''' Query the help information in the local content.(通过注册表信æ¯è¿›è¡Œå¸®åŠ©ä¿¡æ¯çš„æŸ¥æ‰¾) - ''' - ''' - Public Class InternalHelpSearch : Inherits ShoalShell.Runtime.Objects.ObjectModels.IScriptEngineComponent - - Dim _IndexedManual As Boolean - - Sub New(ShoalHost As ShoalShell.Runtime.Objects.ShellScript, preferIndexedManual As Boolean) - Call MyBase.New(ShoalHost) - _IndexedManual = preferIndexedManual - End Sub - - Public Function Match(keyword As String, ShowManual As Boolean) As String - Dim LQuery = (From item As DelegateHandlers.TypeLibraryRegistry.RegistryNodes.Namespace - In _RuntimeEnvironment._Interpreter._DelegateRegistry.RegisteredModules.AsParallel - Let result As String = item.Match(keyword) - Where Not String.IsNullOrEmpty(result) - Select result).ToArray - - If LQuery.IsNullOrEmpty Then - Return "" - End If - - Dim sBuilder As StringBuilder = New StringBuilder("Shoal internal Wiki could not match an extractly item, these result maybe is what you want to search:" & - vbCrLf & - vbCrLf & - String.Format("All of the result has been show below, matched for keyword [{0}]:" & vbCrLf & vbCrLf, keyword)) - Dim Title As String = sBuilder.ToString - - For Each strValue As String In LQuery - Call sBuilder.AppendLine(strValue) - Next - - Dim Message As String = sBuilder.ToString - - If ShowManual Then - Using Manual As Microsoft.VisualBasic.ConsoleDevice.Utility.ManualPages = - If(Me._IndexedManual, New IndexedManual(LQuery, Title), New ManualPages(Strings.Split(Message, vbCrLf))) - - Call Manual.ShowManual() - End Using - End If - - Return Message - End Function - - Private Function InternalListAllImportsCommand() As String - Dim sBuilder As StringBuilder = New StringBuilder(1024) - Dim ImportsCommands = ScriptEngine.InternalEntryPointManager.ImportsCommandEntryPoints - Dim CommandNameMaxLength As Integer = (From strKey As String In ImportsCommands.Keys Select Len(strKey)).ToArray.Max - - Call sBuilder.AppendLine() - Call sBuilder.AppendLine("System Basically Command & Currently Imported Commands" & vbCrLf) - Call sBuilder.AppendLine(vbCrLf & String.Format(" {0} Command(s)", ImportsCommands.Count)) - Call sBuilder.AppendLine() - Call sBuilder.AppendLine(String.Format(" MethodEntry{0} Return Type", New String(" "c, CommandNameMaxLength))) - Call sBuilder.AppendLine(String.Format("+---{0}+----------------------------------------------------", New String("-"c, 1.5 * CommandNameMaxLength - 3))) - - For Each MethodEntryPoint In ImportsCommands - Call sBuilder.AppendLine(String.Format(" {0}{1} {2} {3}", MethodEntryPoint.Key, New String(" "c, 1.5 * CommandNameMaxLength - Len(MethodEntryPoint.Key)), - MethodEntryPoint.Value.First.EntryPoint.MethodEntryPoint.ReturnType.FullName, - If(MethodEntryPoint.Value.IsOverloaded, String.Format("(+ {0} overloads)", MethodEntryPoint.Value.CountOfOverloadsCommand), ""))) - Next - - Dim TempShell = ScriptEngine.InternalEntryPointManager.TempShellCommands - - If Not TempShell.IsNullOrEmpty Then - - Call sBuilder.AppendLine() - Call sBuilder.AppendLine(String.Format(" {0} Temp Shell Command(s) available in current work directory" & vbCrLf, TempShell.Count)) - Call sBuilder.AppendLine("-Name---------------------------File----------------------") - - CommandNameMaxLength = (From strKey As String In TempShell.Keys Select Len(strKey)).ToArray.Max - - For Each ShellEntry As KeyValuePair(Of String, String) In TempShell - Call sBuilder.AppendLine(String.Format(" {0} {1} {2}", ShellEntry.Key, New String(" "c, CommandNameMaxLength - Len(ShellEntry.Key)), ShellEntry.Value)) - Next - End If - - Call Console.WriteLine(sBuilder.ToString) - - Return sBuilder.ToString - End Function - - Private Function InternalListMountDevice() As String - Dim sBuilder As StringBuilder = New StringBuilder(2048) - - Call sBuilder.AppendLine() - Call sBuilder.AppendLine("!List of the mounts external IO device:") - Call sBuilder.AppendLine("--------------------------------------------------------------------------------------------") - Call sBuilder.AppendLine() - Call sBuilder.AppendLine("==============================================") - Call sBuilder.AppendLine(" [+] Input_Devices Mount Points") - Call sBuilder.AppendLine("==============================================" & vbCrLf) - Call sBuilder.AppendLine(String.Join(vbCrLf, ScriptEngine._InputSupport.GetMountEntries)) - Call sBuilder.AppendLine(vbCrLf & vbCrLf) - Call sBuilder.AppendLine("==============================================") - Call sBuilder.AppendLine(" [+] Console_Output_Devices Mount Points") - Call sBuilder.AppendLine("==============================================" & vbCrLf) - Call sBuilder.AppendLine(String.Join(vbCrLf, ScriptEngine._OutputSupport.GetMountEntries)) - Call sBuilder.AppendLine(vbCrLf & vbCrLf) - Call sBuilder.AppendLine("==============================================") - Call sBuilder.AppendLine(" [+] Stream_Output_Device Mount Points") - Call sBuilder.AppendLine("==============================================" & vbCrLf) - Call sBuilder.AppendLine(String.Join(vbCrLf, ScriptEngine._IOSupport.GetMountEntries)) - - Call Console.WriteLine(sBuilder.ToString) - - Return sBuilder.ToString - End Function - - ''' - ''' Gets the help information of a specific object in the shoal shell system.(获å–帮助信æ¯ï¼Œå¦‚果实在无法进行精确匹é…çš„è¯ï¼Œç³»ç»Ÿä¼šå°è¯•进行模糊匹é…) - ''' - ''' Object Name - ''' - ''' - Public Function GetHelpInfo(obj As String, ShowManual As Boolean) As String - - If String.IsNullOrEmpty(obj) Then - Return InternalListAllImportsCommand() - ElseIf String.Equals(obj, "namespace", StringComparison.OrdinalIgnoreCase) Then - Dim s As String = String.Join(" ", Me.ScriptEngine._ImportsNamespace.ToArray) '显示所有已ç»å¯¼å…¥çš„命å空间 - s = vbCrLf & String.Format(" {0} Imported Namespace(s)", ScriptEngine._ImportsNamespace.Count) & vbCrLf & vbCrLf & " " & s & vbCrLf - Console.WriteLine(s) - Return s - ElseIf String.Equals(obj, "mount", StringComparison.OrdinalIgnoreCase) Then 'è¿”å›žå·²ç»æŒ‚载的IO设备 - Return InternalListMountDevice() - Else '将傿•°ä¹‹ä¸­çš„::符å·è½¬æ¢ä¸ºç©ºæ ¼ - obj = obj.Replace("::", " ") - End If - - Try - Return InternalGetMethodHelpInfo(obj) - Catch ex As Exception - - Try - Dim [Module] As Microsoft.VisualBasic.Scripting.ShoalShell.DelegateHandlers.TypeLibraryRegistry.RegistryNodes.[Module] = - _RuntimeEnvironment._Interpreter._DelegateRegistry.TryGetModule(obj, _RuntimeEnvironment._EngineMemoryDevice) - - Return InternalPrintLibrary([Module]) - Catch ex___ As Exception - Return Match(keyword:=obj, ShowManual:=ShowManual) - End Try - End Try - End Function - - Private Function InternalGetMethodHelpInfo(cmdName As String) As String - Dim Method = _RuntimeEnvironment._Interpreter.TryGetCommand(cmdName) - Dim sBuilder As StringBuilder = New StringBuilder(2048) - - If Not Method.IsOverloaded Then - Call sBuilder.AppendLine(Me._RuntimeEnvironment._Interpreter._InternalMethodInvoker.GetDescription(Method.NonOverloadsMethod.MethodEntryPoint)) - Else - Call sBuilder.AppendLine(String.Format("Command ""{0}"" (+ {1} Overloads)" & vbCrLf, cmdName, Method.CountOfOverloadsCommand)) - Call sBuilder.AppendLine() - - Dim i As Integer = 0 - - For Each OverloadsMethod In Method - Call sBuilder.Append(String.Format(" ------> [{0}] ", i.MoveNext)) - Call sBuilder.AppendLine(OverloadsMethod.GetDescription(AddressOf _RuntimeEnvironment._Interpreter._InternalMethodInvoker.GetDescription)) - Call sBuilder.AppendLine() - Next - End If - - Call Console.WriteLine(vbCrLf & sBuilder.ToString) - - Return sBuilder.ToString - End Function - - ''' - ''' ç›®æ ‡æ˜¯ä¸€ä¸ªç±»åž‹åº“ï¼Œåˆ™è¾“å‡ºè¯¦ç»†ä¿¡æ¯ - ''' - ''' - ''' - ''' - Private Shared Function InternalPrintLibrary([Module] As Microsoft.VisualBasic.Scripting.ShoalShell.DelegateHandlers.TypeLibraryRegistry.RegistryNodes.[Module]) As String - Dim sBuilder As StringBuilder = New StringBuilder(1024) - Dim MaxLength As Integer = (From strKey As String In [Module].Keys Select Len(strKey)).ToArray.Max - Call sBuilder.AppendLine() - Call sBuilder.AppendLine("Module Namespace: " & [Module].Namespace) - - For Each Entry In [Module].OriginalAssemblys - Call sBuilder.AppendLine("Assembly path: " & Entry.Key.Assembly.Location) - Call sBuilder.AppendLine("Assembly Lib: " & Entry.Key.FullName) - Call sBuilder.AppendLine("Module Description: " & Entry.Value) - Call sBuilder.AppendLine() - Next - - Call sBuilder.AppendLine(vbCrLf & String.Format(" {0} Command(s)", [Module].Count)) - Call sBuilder.AppendLine() - Call sBuilder.AppendLine(String.Format(" MethodEntry{0}Return Type", New String(" "c, MaxLength))) - Call sBuilder.AppendLine(String.Format("+---{0}+----------------------------------------------------", New String("-"c, 1.5 * MaxLength - 3))) - - For Each MethodEntry In [Module].Keys - Dim InternalCreateEntryPointDescription = Function(Entry As System.Reflection.MethodInfo) As String - Return String.Format(" {0}{1} {2}", MethodEntry, New String(" "c, 1.5 * MaxLength - Len(MethodEntry)), Entry.ReturnType.FullName) - End Function - Dim EntryList = [Module](MethodEntry) - If EntryList.Count = 1 Then - Call sBuilder.AppendLine(InternalCreateEntryPointDescription(EntryList.First)) - Else - For i As Integer = 0 To EntryList.Count - 1 - Call sBuilder.AppendLine(InternalCreateEntryPointDescription(EntryList(i)) & String.Format(" (+ {0} Overloads)", i)) - Next - End If - Next - - Call Console.WriteLine(sBuilder.ToString) - - Return sBuilder.ToString - End Function - - Public Overrides Function ToString() As String - Return _RuntimeEnvironment.ToString - End Function - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Wiki/WebServiceHandler.vb b/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Wiki/WebServiceHandler.vb deleted file mode 100644 index e3b6ab7b9..000000000 --- a/ShoalShell.Legacy/Microsoft.VisualBasic.Scripting.ShoalShell/Wiki/WebServiceHandler.vb +++ /dev/null @@ -1,13 +0,0 @@ -Namespace Wiki - - ''' - ''' Query for the online SourceForge website wiki in the shoal project.(查询在线的sourceforge网站上é¢çš„wiki内容) - ''' - ''' - Public Class WebServiceHandler : Inherits ShoalShell.Runtime.Objects.ObjectModels.IScriptEngineComponent - - Sub New(ScriptEngine As ShoalShell.Runtime.Objects.ShellScript) - Call MyBase.New(ScriptEngine) - End Sub - End Class -End Namespace \ No newline at end of file diff --git a/ShoalShell.Legacy/My Project/Application.Designer.vb b/ShoalShell.Legacy/My Project/Application.Designer.vb deleted file mode 100644 index 88dd01c78..000000000 --- a/ShoalShell.Legacy/My Project/Application.Designer.vb +++ /dev/null @@ -1,13 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - diff --git a/ShoalShell.Legacy/My Project/Application.myapp b/ShoalShell.Legacy/My Project/Application.myapp deleted file mode 100644 index e62f1a533..000000000 --- a/ShoalShell.Legacy/My Project/Application.myapp +++ /dev/null @@ -1,10 +0,0 @@ - - - false - false - 0 - true - 0 - 2 - true - diff --git a/ShoalShell.Legacy/My Project/AssemblyInfo.vb b/ShoalShell.Legacy/My Project/AssemblyInfo.vb deleted file mode 100644 index 7be68a7bb..000000000 --- a/ShoalShell.Legacy/My Project/AssemblyInfo.vb +++ /dev/null @@ -1,35 +0,0 @@ -Imports System -Imports System.Reflection -Imports System.Runtime.InteropServices - -' General Information about an assembly is controlled through the following -' set of attributes. Change these attribute values to modify the information -' associated with an assembly. - -' Review the values of the assembly attributes - - - - - - - - - - -'The following GUID is for the ID of the typelib if this project is exposed to COM - - -' Version information for an assembly consists of the following four values: -' -' Major Version -' Minor Version -' Build Number -' Revision -' -' You can specify all the values or you can default the Build and Revision Numbers -' by using the '*' as shown below: -' - - - diff --git a/ShoalShell.Legacy/My Project/Resources.Designer.vb b/ShoalShell.Legacy/My Project/Resources.Designer.vb deleted file mode 100644 index 11cc4fb7f..000000000 --- a/ShoalShell.Legacy/My Project/Resources.Designer.vb +++ /dev/null @@ -1,104 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - -Imports System - -Namespace My.Resources - - 'This class was auto-generated by the StronglyTypedResourceBuilder - 'class via a tool like ResGen or Visual Studio. - 'To add or remove a member, edit your .ResX file then rerun ResGen - 'with the /str option, or rebuild your VS project. - ''' - ''' A strongly-typed resource class, for looking up localized strings, etc. - ''' - _ - Friend Module Resources - - Private resourceMan As Global.System.Resources.ResourceManager - - Private resourceCulture As Global.System.Globalization.CultureInfo - - ''' - ''' Returns the cached ResourceManager instance used by this class. - ''' - _ - Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager - Get - If Object.ReferenceEquals(resourceMan, Nothing) Then - Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("Microsoft.VisualBasic.Shoal.Resources", GetType(Resources).Assembly) - resourceMan = temp - End If - Return resourceMan - End Get - End Property - - ''' - ''' Overrides the current thread's CurrentUICulture property for all - ''' resource lookups using this strongly typed resource class. - ''' - _ - Friend Property Culture() As Global.System.Globalization.CultureInfo - Get - Return resourceCulture - End Get - Set - resourceCulture = value - End Set - End Property - - ''' - ''' Looks up a localized string similar to GNU GENERAL PUBLIC LICENSE - ''' Version 3, 29 June 2007 - ''' - ''' Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> - ''' Everyone is permitted to copy and distribute verbatim copies - ''' of this license document, but changing it is not allowed. - ''' - ''' Preamble - ''' - ''' The GNU General Public License is a free, copyleft license for - '''software and other kinds of works. - ''' - ''' The licenses for most software and other practical works are designed - '''to take away yo [rest of string was truncated]";. - ''' - Friend ReadOnly Property gpl() As String - Get - Return ResourceManager.GetString("gpl", resourceCulture) - End Get - End Property - - ''' - ''' Looks up a localized string similar to This program is free software: you can redistribute it and/or modify - '''it under the terms of the GNU General Public License as published by - '''the Free Software Foundation, either version 3 of the License, or - '''any later version. - ''' - '''This program is distributed in the hope that it will be useful, - '''but WITHOUT ANY WARRANTY; without even the implied warranty of - '''MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - '''GNU General Public License for more details. - ''' - '''You should have received a copy of the GNU [rest of string was truncated]";. - ''' - Friend ReadOnly Property license() As String - Get - Return ResourceManager.GetString("license", resourceCulture) - End Get - End Property - End Module -End Namespace diff --git a/ShoalShell.Legacy/My Project/Resources.resx b/ShoalShell.Legacy/My Project/Resources.resx deleted file mode 100644 index 5a97acb37..000000000 --- a/ShoalShell.Legacy/My Project/Resources.resx +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - ..\Resources\gpl.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312 - - - ..\Resources\license.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312 - - \ No newline at end of file diff --git a/ShoalShell.Legacy/My Project/Settings.Designer.vb b/ShoalShell.Legacy/My Project/Settings.Designer.vb deleted file mode 100644 index a5ad226ea..000000000 --- a/ShoalShell.Legacy/My Project/Settings.Designer.vb +++ /dev/null @@ -1,73 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - - -Namespace My - - _ - Partial Friend NotInheritable Class MySettings - Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) - -#Region "My.Settings Auto-Save Functionality" -#If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean - - Private Shared addedHandlerLockObject As New Object - - _ - Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub -#End If -#End Region - - Public Shared ReadOnly Property [Default]() As MySettings - Get - -#If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If -#End If - Return defaultInstance - End Get - End Property - End Class -End Namespace - -Namespace My - - _ - Friend Module MySettingsProperty - - _ - Friend ReadOnly Property Settings() As Global.Microsoft.VisualBasic.Shoal.My.MySettings - Get - Return Global.Microsoft.VisualBasic.Shoal.My.MySettings.Default - End Get - End Property - End Module -End Namespace diff --git a/ShoalShell.Legacy/My Project/Settings.settings b/ShoalShell.Legacy/My Project/Settings.settings deleted file mode 100644 index 85b890b3c..000000000 --- a/ShoalShell.Legacy/My Project/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/ShoalShell.Legacy/My Project/app.manifest b/ShoalShell.Legacy/My Project/app.manifest deleted file mode 100644 index 4581619e0..000000000 --- a/ShoalShell.Legacy/My Project/app.manifest +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ShoalShell.Legacy/Resources/gpl.txt b/ShoalShell.Legacy/Resources/gpl.txt deleted file mode 100644 index 94a9ed024..000000000 --- a/ShoalShell.Legacy/Resources/gpl.txt +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/ShoalShell.Legacy/Resources/license.txt b/ShoalShell.Legacy/Resources/license.txt deleted file mode 100644 index da76ca0a9..000000000 --- a/ShoalShell.Legacy/Resources/license.txt +++ /dev/null @@ -1,12 +0,0 @@ -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . \ No newline at end of file diff --git a/ShoalShell.Legacy/ShellScript.ico b/ShoalShell.Legacy/ShellScript.ico deleted file mode 100644 index 5e90c4684..000000000 Binary files a/ShoalShell.Legacy/ShellScript.ico and /dev/null differ diff --git a/ShoalShell.Legacy/Shoal.Core.sln b/ShoalShell.Legacy/Shoal.Core.sln deleted file mode 100644 index 46cf52def..000000000 --- a/ShoalShell.Legacy/Shoal.Core.sln +++ /dev/null @@ -1,51 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.22823.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Shoal", "Shoal.vbproj", "{D71E0D55-DA94-4B18-B204-252D532EE8EC}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ShoalShell_Core", "Microsoft.VisualBasic.Scripting.ShoalShell\ShoalShell_Core.vbproj", "{0BE7FD44-D724-49F6-AEC0-06C80B4F5527}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Microsoft.VisualBasic.Architecture.Framework", "..\..\Microsoft.VisualBasic_Framework\Microsoft.VisualBasic.Architecture.Framework\Microsoft.VisualBasic.Architecture.Framework.vbproj", "{FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}" -EndProject -Global - GlobalSection(SharedMSBuildProjectFiles) = preSolution - ..\..\Microsoft.VisualBasic_Framework\SharedProject.VB_FrameworkExtensions\SharedProject.VB_FrameworkExtensions.projitems*{fecce1fd-e1d4-49e3-a668-60bb5e7aed99}*SharedItemsImports = 4 - EndGlobalSection - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|x64.ActiveCfg = Debug|x64 - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|x64.Build.0 = Debug|x64 - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|Any CPU.Build.0 = Release|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|x64.ActiveCfg = Release|x64 - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|x64.Build.0 = Release|x64 - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Debug|x64.ActiveCfg = Debug|x64 - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Debug|x64.Build.0 = Debug|x64 - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Release|Any CPU.Build.0 = Release|Any CPU - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Release|x64.ActiveCfg = Release|x64 - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Release|x64.Build.0 = Release|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x64.ActiveCfg = Debug|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x64.Build.0 = Debug|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|Any CPU.Build.0 = Release|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x64.ActiveCfg = Release|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/ShoalShell.Legacy/Shoal.ico b/ShoalShell.Legacy/Shoal.ico deleted file mode 100644 index 043d8d988..000000000 Binary files a/ShoalShell.Legacy/Shoal.ico and /dev/null differ diff --git a/ShoalShell.Legacy/Shoal.sln b/ShoalShell.Legacy/Shoal.sln deleted file mode 100644 index 22c8ca4fb..000000000 --- a/ShoalShell.Legacy/Shoal.sln +++ /dev/null @@ -1,364 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.22823.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Shoal", "Shoal.vbproj", "{D71E0D55-DA94-4B18-B204-252D532EE8EC}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IDE", "IDE", "{47832138-2140-4A2E-A035-BE14B4897204}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "RDotNET.Extensions.ShellScriptAPI", "..\RDotNET.Extensions.ShellScriptAPI\RDotNET.Extensions.ShellScriptAPI.vbproj", "{2A928B27-D8CE-4629-9711-0E792C94A85E}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting", "..\Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting\Microsoft.VisualBasic.Mathematical.Extensions.Shoal_HybridScripting.vbproj", "{85E19618-8A67-47DE-892D-4BB4EAF59AE2}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns", "..\Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns\Microsoft.VisualBasic.ShellScript.Dynamics.IDE_PlugIns.vbproj", "{F4CA3733-BA62-4A8D-BF45-0BCAE80B882F}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "LINQ.Extensions.ShoalShell.HybridScripting", "..\LINQ.Extensions.ShoalShell.HybridScripting\LINQ.Extensions.ShoalShell.HybridScripting.vbproj", "{B2355947-6A37-42F4-9340-CEFF43F37A2B}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ShoalShell.PlugIns.Plot", "..\ShoalShell.PlugIns.Plot\ShoalShell.PlugIns.Plot.vbproj", "{28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ShoalShell.Plugins.Runtime.Environment", "..\ShoalShell.Plugins.Runtime.Environment\ShoalShell.Plugins.Runtime.Environment.vbproj", "{4863E23A-8E58-4E10-9A77-8DBA4D4BB586}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Dev.Shl", "..\Dev.Shl\Dev.Shl.vbproj", "{C65C46DA-7919-4745-A952-CC77AA39E482}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Shoal.Testing", "..\Shoal.Testing\Shoal.Testing.vbproj", "{9E5436E9-9FA4-47B9-9BDE-F3621622F4B2}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Reference", "Reference", "{CE7914A4-EC20-4A94-8AC3-C5731100239B}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Win32API", "Win32API\Win32API.vbproj", "{4B0A5F0A-F9F5-4206-99CC-82781B6E3457}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ShoalShell.Plugins.HtmlHelpServer", "..\ShoalShell.Plugins.HtmlHelpServer\ShoalShell.Plugins.HtmlHelpServer.vbproj", "{D712E0A2-8AB1-4665-B7B5-D2FCE09188AE}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "SQLite_Interface", "..\..\Reference SharedLib\SQLite_Interface\SQLite_Interface.vbproj", "{EC288FFE-8FEE-4E89-88C1-CD68F92F75BC}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "LibMySQL", "..\..\Reference SharedLib\LibMySQL\LibMySQL.vbproj", "{2C34A044-1BDE-44E8-A86E-E9971C87DA21}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ShoalShell.Plugins.SQLDatabaseInterface", "..\ShoalShell.Plugins.SQLDatabaseInterface\ShoalShell.Plugins.SQLDatabaseInterface.vbproj", "{75B2A52A-F76B-4912-AAC2-CAC4AE56A001}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "PieChartControls", "..\..\Reference SharedLib\PieChart\PieChartControls\PieChartControls.vbproj", "{97898362-42AF-41B1-A2E5-2A137A6FEB9A}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ShoalShell_Core", "Microsoft.VisualBasic.Scripting.ShoalShell\ShoalShell_Core.vbproj", "{0BE7FD44-D724-49F6-AEC0-06C80B4F5527}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ShoalShell.Debugger", "..\ShoalShell.Debugger\ShoalShell.Debugger.vbproj", "{98B35793-A1A2-4E78-BAFD-75E0D95E6367}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{1CDABACB-44CB-4173-8313-913BA466562E}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.VisualBasic_Core", "Microsoft.VisualBasic_Core", "{65DF4CD8-CA2E-42E0-8F89-B4E875E5DFED}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "UILibrary.ShellControl", "..\..\Reference SharedLib\TerminalShell\UILibrary.ShellControl\UILibrary.ShellControl.vbproj", "{18877537-1163-4531-A310-B3D64C4ADB2C}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Microsoft.VisualBasic.Architecture.Framework", "..\..\Microsoft.VisualBasic_Framework\Microsoft.VisualBasic.Architecture.Framework\Microsoft.VisualBasic.Architecture.Framework.vbproj", "{FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Molk+", "..\..\Microsoft.VisualBasic_Framework\UXFramework\Molk+\Molk+\Molk+.vbproj", "{585D1FE8-5AC2-4BFF-A0C4-98245962FA9F}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "PlugIn", "..\..\Microsoft.VisualBasic_Framework\PlugIns\PlugIn\PlugIn.vbproj", "{53975D8C-DEFC-40BC-8C9B-CBA7A458EB55}" -EndProject -Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "SharedProject.VB_FrameworkExtensions", "..\..\Microsoft.VisualBasic_Framework\SharedProject.VB_FrameworkExtensions\SharedProject.VB_FrameworkExtensions.shproj", "{B1043125-DCB7-44E3-AF8F-D39CB7F1D082}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Forms.Ribbon", "..\..\Reference SharedLib\UX.Framework\Ribbon\System.Windows.Forms.Ribbon\System.Windows.Forms.Ribbon.csproj", "{46A18A55-5AE8-49CE-91CD-C7421B642E7E}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DocumentFormat.Csv", "..\..\Microsoft.VisualBasic_Framework\DocumentFormats\DocumentFormat.Csv\DocumentFormat.Csv.vbproj", "{1D8910C2-ADA2-4306-96DC-A61B494522ED}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UILibrary.Controls.Animation", "..\..\Reference SharedLib\UX.Framework\UILibrary.Controls.Animation\UILibrary.Controls.Animation\UILibrary.Controls.Animation.csproj", "{97FE1093-38D3-4EEC-A602-340F792C9D25}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "UILibrary.Controls.Animation.Extensions", "..\..\Reference SharedLib\UX.Framework\UILibrary.Controls.Animation\UILibrary.Controls.Animation.Extensions\UILibrary.Controls.Animation.Extensions.vbproj", "{2F22C463-D4E9-43E5-ABBB-C5854731E4C0}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "RDotNet", "..\..\Reference SharedLib\R.NET\RDotNet.vbproj", "{21C35138-455B-4833-9756-B2629F972A22}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pavel.CodeEditor", "..\..\Reference SharedLib\UX.Framework\Pavel.CodeEditor\Pavel.CodeEditor.csproj", "{6DD14A85-CCFC-4774-BD26-0F5772512319}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "LINQ", "..\..\Microsoft.VisualBasic_Framework\Scripting\LINQ\LINQ\LINQ.vbproj", "{0A9B9FA6-E12D-48FD-B979-9F021A591E69}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Microsoft.VisualBasic.Mathematical", "..\..\Microsoft.VisualBasic_Framework\Scripting\Math\Math\Microsoft.VisualBasic.Mathematical.vbproj", "{E3367B88-5D0C-495A-8273-331656D4B5AA}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DocumentFormat.HTML", "..\..\Microsoft.VisualBasic_Framework\DocumentFormats\MSHtml\MSHtml\DocumentFormat.HTML.vbproj", "{2DD4BE80-DDC3-4767-94A7-10F1C3395716}" -EndProject -Global - GlobalSection(SharedMSBuildProjectFiles) = preSolution - ..\..\Reference SharedLib\HTTPServer\HTTPServer.projitems*{d712e0a2-8ab1-4665-b7b5-d2fce09188ae}*SharedItemsImports = 4 - ..\..\Microsoft.VisualBasic_Framework\SharedProject.VB_FrameworkExtensions\SharedProject.VB_FrameworkExtensions.projitems*{b1043125-dcb7-44e3-af8f-d39cb7f1d082}*SharedItemsImports = 13 - ..\..\Microsoft.VisualBasic_Framework\SharedProject.VB_FrameworkExtensions\SharedProject.VB_FrameworkExtensions.projitems*{0a9b9fa6-e12d-48fd-b979-9f021a591e69}*SharedItemsImports = 4 - ..\..\Microsoft.VisualBasic_Framework\SharedProject.VB_FrameworkExtensions\SharedProject.VB_FrameworkExtensions.projitems*{fecce1fd-e1d4-49e3-a668-60bb5e7aed99}*SharedItemsImports = 4 - EndGlobalSection - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|x64.ActiveCfg = Debug|x64 - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Debug|x64.Build.0 = Debug|x64 - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|Any CPU.Build.0 = Release|Any CPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|x64.ActiveCfg = Release|x64 - {D71E0D55-DA94-4B18-B204-252D532EE8EC}.Release|x64.Build.0 = Release|x64 - {2A928B27-D8CE-4629-9711-0E792C94A85E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2A928B27-D8CE-4629-9711-0E792C94A85E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2A928B27-D8CE-4629-9711-0E792C94A85E}.Debug|x64.ActiveCfg = Debug|x64 - {2A928B27-D8CE-4629-9711-0E792C94A85E}.Debug|x64.Build.0 = Debug|x64 - {2A928B27-D8CE-4629-9711-0E792C94A85E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2A928B27-D8CE-4629-9711-0E792C94A85E}.Release|Any CPU.Build.0 = Release|Any CPU - {2A928B27-D8CE-4629-9711-0E792C94A85E}.Release|x64.ActiveCfg = Release|x64 - {2A928B27-D8CE-4629-9711-0E792C94A85E}.Release|x64.Build.0 = Release|x64 - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Debug|x64.ActiveCfg = Debug|x64 - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Debug|x64.Build.0 = Debug|x64 - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Release|Any CPU.Build.0 = Release|Any CPU - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Release|x64.ActiveCfg = Release|x64 - {85E19618-8A67-47DE-892D-4BB4EAF59AE2}.Release|x64.Build.0 = Release|x64 - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F}.Debug|x64.ActiveCfg = Debug|x64 - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F}.Debug|x64.Build.0 = Debug|x64 - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F}.Release|Any CPU.Build.0 = Release|Any CPU - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F}.Release|x64.ActiveCfg = Release|x64 - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F}.Release|x64.Build.0 = Release|x64 - {B2355947-6A37-42F4-9340-CEFF43F37A2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B2355947-6A37-42F4-9340-CEFF43F37A2B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B2355947-6A37-42F4-9340-CEFF43F37A2B}.Debug|x64.ActiveCfg = Debug|x64 - {B2355947-6A37-42F4-9340-CEFF43F37A2B}.Debug|x64.Build.0 = Debug|x64 - {B2355947-6A37-42F4-9340-CEFF43F37A2B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B2355947-6A37-42F4-9340-CEFF43F37A2B}.Release|Any CPU.Build.0 = Release|Any CPU - {B2355947-6A37-42F4-9340-CEFF43F37A2B}.Release|x64.ActiveCfg = Release|x64 - {B2355947-6A37-42F4-9340-CEFF43F37A2B}.Release|x64.Build.0 = Release|x64 - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865}.Debug|x64.ActiveCfg = Debug|x64 - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865}.Debug|x64.Build.0 = Debug|x64 - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865}.Release|Any CPU.Build.0 = Release|Any CPU - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865}.Release|x64.ActiveCfg = Release|x64 - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865}.Release|x64.Build.0 = Release|x64 - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586}.Debug|x64.ActiveCfg = Debug|x64 - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586}.Debug|x64.Build.0 = Debug|x64 - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586}.Release|Any CPU.Build.0 = Release|Any CPU - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586}.Release|x64.ActiveCfg = Release|x64 - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586}.Release|x64.Build.0 = Release|x64 - {C65C46DA-7919-4745-A952-CC77AA39E482}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C65C46DA-7919-4745-A952-CC77AA39E482}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C65C46DA-7919-4745-A952-CC77AA39E482}.Debug|x64.ActiveCfg = Debug|x64 - {C65C46DA-7919-4745-A952-CC77AA39E482}.Debug|x64.Build.0 = Debug|x64 - {C65C46DA-7919-4745-A952-CC77AA39E482}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C65C46DA-7919-4745-A952-CC77AA39E482}.Release|Any CPU.Build.0 = Release|Any CPU - {C65C46DA-7919-4745-A952-CC77AA39E482}.Release|x64.ActiveCfg = Release|x64 - {C65C46DA-7919-4745-A952-CC77AA39E482}.Release|x64.Build.0 = Release|x64 - {9E5436E9-9FA4-47B9-9BDE-F3621622F4B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9E5436E9-9FA4-47B9-9BDE-F3621622F4B2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9E5436E9-9FA4-47B9-9BDE-F3621622F4B2}.Debug|x64.ActiveCfg = Debug|Any CPU - {9E5436E9-9FA4-47B9-9BDE-F3621622F4B2}.Debug|x64.Build.0 = Debug|Any CPU - {9E5436E9-9FA4-47B9-9BDE-F3621622F4B2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9E5436E9-9FA4-47B9-9BDE-F3621622F4B2}.Release|Any CPU.Build.0 = Release|Any CPU - {9E5436E9-9FA4-47B9-9BDE-F3621622F4B2}.Release|x64.ActiveCfg = Release|Any CPU - {9E5436E9-9FA4-47B9-9BDE-F3621622F4B2}.Release|x64.Build.0 = Release|Any CPU - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Debug|x64.ActiveCfg = Debug|x64 - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Debug|x64.Build.0 = Debug|x64 - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Release|Any CPU.Build.0 = Release|Any CPU - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Release|x64.ActiveCfg = Release|x64 - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Release|x64.Build.0 = Release|x64 - {D712E0A2-8AB1-4665-B7B5-D2FCE09188AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D712E0A2-8AB1-4665-B7B5-D2FCE09188AE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D712E0A2-8AB1-4665-B7B5-D2FCE09188AE}.Debug|x64.ActiveCfg = Debug|x64 - {D712E0A2-8AB1-4665-B7B5-D2FCE09188AE}.Debug|x64.Build.0 = Debug|x64 - {D712E0A2-8AB1-4665-B7B5-D2FCE09188AE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D712E0A2-8AB1-4665-B7B5-D2FCE09188AE}.Release|Any CPU.Build.0 = Release|Any CPU - {D712E0A2-8AB1-4665-B7B5-D2FCE09188AE}.Release|x64.ActiveCfg = Release|x64 - {D712E0A2-8AB1-4665-B7B5-D2FCE09188AE}.Release|x64.Build.0 = Release|x64 - {EC288FFE-8FEE-4E89-88C1-CD68F92F75BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EC288FFE-8FEE-4E89-88C1-CD68F92F75BC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EC288FFE-8FEE-4E89-88C1-CD68F92F75BC}.Debug|x64.ActiveCfg = Debug|x64 - {EC288FFE-8FEE-4E89-88C1-CD68F92F75BC}.Debug|x64.Build.0 = Debug|x64 - {EC288FFE-8FEE-4E89-88C1-CD68F92F75BC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EC288FFE-8FEE-4E89-88C1-CD68F92F75BC}.Release|Any CPU.Build.0 = Release|Any CPU - {EC288FFE-8FEE-4E89-88C1-CD68F92F75BC}.Release|x64.ActiveCfg = Release|x64 - {EC288FFE-8FEE-4E89-88C1-CD68F92F75BC}.Release|x64.Build.0 = Release|x64 - {2C34A044-1BDE-44E8-A86E-E9971C87DA21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2C34A044-1BDE-44E8-A86E-E9971C87DA21}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2C34A044-1BDE-44E8-A86E-E9971C87DA21}.Debug|x64.ActiveCfg = Debug|x64 - {2C34A044-1BDE-44E8-A86E-E9971C87DA21}.Debug|x64.Build.0 = Debug|x64 - {2C34A044-1BDE-44E8-A86E-E9971C87DA21}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2C34A044-1BDE-44E8-A86E-E9971C87DA21}.Release|Any CPU.Build.0 = Release|Any CPU - {2C34A044-1BDE-44E8-A86E-E9971C87DA21}.Release|x64.ActiveCfg = Release|x64 - {2C34A044-1BDE-44E8-A86E-E9971C87DA21}.Release|x64.Build.0 = Release|x64 - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001}.Debug|Any CPU.Build.0 = Debug|Any CPU - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001}.Debug|x64.ActiveCfg = Debug|x64 - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001}.Debug|x64.Build.0 = Debug|x64 - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001}.Release|Any CPU.ActiveCfg = Release|Any CPU - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001}.Release|Any CPU.Build.0 = Release|Any CPU - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001}.Release|x64.ActiveCfg = Release|x64 - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001}.Release|x64.Build.0 = Release|x64 - {97898362-42AF-41B1-A2E5-2A137A6FEB9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {97898362-42AF-41B1-A2E5-2A137A6FEB9A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {97898362-42AF-41B1-A2E5-2A137A6FEB9A}.Debug|x64.ActiveCfg = Debug|x64 - {97898362-42AF-41B1-A2E5-2A137A6FEB9A}.Debug|x64.Build.0 = Debug|x64 - {97898362-42AF-41B1-A2E5-2A137A6FEB9A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {97898362-42AF-41B1-A2E5-2A137A6FEB9A}.Release|Any CPU.Build.0 = Release|Any CPU - {97898362-42AF-41B1-A2E5-2A137A6FEB9A}.Release|x64.ActiveCfg = Release|x64 - {97898362-42AF-41B1-A2E5-2A137A6FEB9A}.Release|x64.Build.0 = Release|x64 - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Debug|x64.ActiveCfg = Debug|x64 - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Debug|x64.Build.0 = Debug|x64 - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Release|Any CPU.Build.0 = Release|Any CPU - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Release|x64.ActiveCfg = Release|x64 - {0BE7FD44-D724-49F6-AEC0-06C80B4F5527}.Release|x64.Build.0 = Release|x64 - {98B35793-A1A2-4E78-BAFD-75E0D95E6367}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {98B35793-A1A2-4E78-BAFD-75E0D95E6367}.Debug|Any CPU.Build.0 = Debug|Any CPU - {98B35793-A1A2-4E78-BAFD-75E0D95E6367}.Debug|x64.ActiveCfg = Debug|x64 - {98B35793-A1A2-4E78-BAFD-75E0D95E6367}.Debug|x64.Build.0 = Debug|x64 - {98B35793-A1A2-4E78-BAFD-75E0D95E6367}.Release|Any CPU.ActiveCfg = Release|Any CPU - {98B35793-A1A2-4E78-BAFD-75E0D95E6367}.Release|Any CPU.Build.0 = Release|Any CPU - {98B35793-A1A2-4E78-BAFD-75E0D95E6367}.Release|x64.ActiveCfg = Release|x64 - {98B35793-A1A2-4E78-BAFD-75E0D95E6367}.Release|x64.Build.0 = Release|x64 - {18877537-1163-4531-A310-B3D64C4ADB2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {18877537-1163-4531-A310-B3D64C4ADB2C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {18877537-1163-4531-A310-B3D64C4ADB2C}.Debug|x64.ActiveCfg = Debug|x64 - {18877537-1163-4531-A310-B3D64C4ADB2C}.Debug|x64.Build.0 = Debug|x64 - {18877537-1163-4531-A310-B3D64C4ADB2C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {18877537-1163-4531-A310-B3D64C4ADB2C}.Release|Any CPU.Build.0 = Release|Any CPU - {18877537-1163-4531-A310-B3D64C4ADB2C}.Release|x64.ActiveCfg = Release|x64 - {18877537-1163-4531-A310-B3D64C4ADB2C}.Release|x64.Build.0 = Release|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x64.ActiveCfg = Debug|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|x64.Build.0 = Debug|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|Any CPU.Build.0 = Release|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x64.ActiveCfg = Release|x64 - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|x64.Build.0 = Release|x64 - {585D1FE8-5AC2-4BFF-A0C4-98245962FA9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {585D1FE8-5AC2-4BFF-A0C4-98245962FA9F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {585D1FE8-5AC2-4BFF-A0C4-98245962FA9F}.Debug|x64.ActiveCfg = Debug|x64 - {585D1FE8-5AC2-4BFF-A0C4-98245962FA9F}.Debug|x64.Build.0 = Debug|x64 - {585D1FE8-5AC2-4BFF-A0C4-98245962FA9F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {585D1FE8-5AC2-4BFF-A0C4-98245962FA9F}.Release|Any CPU.Build.0 = Release|Any CPU - {585D1FE8-5AC2-4BFF-A0C4-98245962FA9F}.Release|x64.ActiveCfg = Release|x64 - {585D1FE8-5AC2-4BFF-A0C4-98245962FA9F}.Release|x64.Build.0 = Release|x64 - {53975D8C-DEFC-40BC-8C9B-CBA7A458EB55}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {53975D8C-DEFC-40BC-8C9B-CBA7A458EB55}.Debug|Any CPU.Build.0 = Debug|Any CPU - {53975D8C-DEFC-40BC-8C9B-CBA7A458EB55}.Debug|x64.ActiveCfg = Debug|x64 - {53975D8C-DEFC-40BC-8C9B-CBA7A458EB55}.Debug|x64.Build.0 = Debug|x64 - {53975D8C-DEFC-40BC-8C9B-CBA7A458EB55}.Release|Any CPU.ActiveCfg = Release|Any CPU - {53975D8C-DEFC-40BC-8C9B-CBA7A458EB55}.Release|Any CPU.Build.0 = Release|Any CPU - {53975D8C-DEFC-40BC-8C9B-CBA7A458EB55}.Release|x64.ActiveCfg = Release|x64 - {53975D8C-DEFC-40BC-8C9B-CBA7A458EB55}.Release|x64.Build.0 = Release|x64 - {46A18A55-5AE8-49CE-91CD-C7421B642E7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {46A18A55-5AE8-49CE-91CD-C7421B642E7E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {46A18A55-5AE8-49CE-91CD-C7421B642E7E}.Debug|x64.ActiveCfg = Debug|x64 - {46A18A55-5AE8-49CE-91CD-C7421B642E7E}.Debug|x64.Build.0 = Debug|x64 - {46A18A55-5AE8-49CE-91CD-C7421B642E7E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {46A18A55-5AE8-49CE-91CD-C7421B642E7E}.Release|Any CPU.Build.0 = Release|Any CPU - {46A18A55-5AE8-49CE-91CD-C7421B642E7E}.Release|x64.ActiveCfg = Release|x64 - {46A18A55-5AE8-49CE-91CD-C7421B642E7E}.Release|x64.Build.0 = Release|x64 - {1D8910C2-ADA2-4306-96DC-A61B494522ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1D8910C2-ADA2-4306-96DC-A61B494522ED}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1D8910C2-ADA2-4306-96DC-A61B494522ED}.Debug|x64.ActiveCfg = Debug|x64 - {1D8910C2-ADA2-4306-96DC-A61B494522ED}.Debug|x64.Build.0 = Debug|x64 - {1D8910C2-ADA2-4306-96DC-A61B494522ED}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1D8910C2-ADA2-4306-96DC-A61B494522ED}.Release|Any CPU.Build.0 = Release|Any CPU - {1D8910C2-ADA2-4306-96DC-A61B494522ED}.Release|x64.ActiveCfg = Release|x64 - {1D8910C2-ADA2-4306-96DC-A61B494522ED}.Release|x64.Build.0 = Release|x64 - {97FE1093-38D3-4EEC-A602-340F792C9D25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {97FE1093-38D3-4EEC-A602-340F792C9D25}.Debug|Any CPU.Build.0 = Debug|Any CPU - {97FE1093-38D3-4EEC-A602-340F792C9D25}.Debug|x64.ActiveCfg = Debug|x64 - {97FE1093-38D3-4EEC-A602-340F792C9D25}.Debug|x64.Build.0 = Debug|x64 - {97FE1093-38D3-4EEC-A602-340F792C9D25}.Release|Any CPU.ActiveCfg = Release|Any CPU - {97FE1093-38D3-4EEC-A602-340F792C9D25}.Release|Any CPU.Build.0 = Release|Any CPU - {97FE1093-38D3-4EEC-A602-340F792C9D25}.Release|x64.ActiveCfg = Release|x64 - {97FE1093-38D3-4EEC-A602-340F792C9D25}.Release|x64.Build.0 = Release|x64 - {2F22C463-D4E9-43E5-ABBB-C5854731E4C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2F22C463-D4E9-43E5-ABBB-C5854731E4C0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2F22C463-D4E9-43E5-ABBB-C5854731E4C0}.Debug|x64.ActiveCfg = Debug|x64 - {2F22C463-D4E9-43E5-ABBB-C5854731E4C0}.Debug|x64.Build.0 = Debug|x64 - {2F22C463-D4E9-43E5-ABBB-C5854731E4C0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2F22C463-D4E9-43E5-ABBB-C5854731E4C0}.Release|Any CPU.Build.0 = Release|Any CPU - {2F22C463-D4E9-43E5-ABBB-C5854731E4C0}.Release|x64.ActiveCfg = Release|x64 - {2F22C463-D4E9-43E5-ABBB-C5854731E4C0}.Release|x64.Build.0 = Release|x64 - {21C35138-455B-4833-9756-B2629F972A22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {21C35138-455B-4833-9756-B2629F972A22}.Debug|Any CPU.Build.0 = Debug|Any CPU - {21C35138-455B-4833-9756-B2629F972A22}.Debug|x64.ActiveCfg = Debug|x64 - {21C35138-455B-4833-9756-B2629F972A22}.Debug|x64.Build.0 = Debug|x64 - {21C35138-455B-4833-9756-B2629F972A22}.Release|Any CPU.ActiveCfg = Release|Any CPU - {21C35138-455B-4833-9756-B2629F972A22}.Release|Any CPU.Build.0 = Release|Any CPU - {21C35138-455B-4833-9756-B2629F972A22}.Release|x64.ActiveCfg = Release|x64 - {21C35138-455B-4833-9756-B2629F972A22}.Release|x64.Build.0 = Release|x64 - {6DD14A85-CCFC-4774-BD26-0F5772512319}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6DD14A85-CCFC-4774-BD26-0F5772512319}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6DD14A85-CCFC-4774-BD26-0F5772512319}.Debug|x64.ActiveCfg = Debug|x64 - {6DD14A85-CCFC-4774-BD26-0F5772512319}.Debug|x64.Build.0 = Debug|x64 - {6DD14A85-CCFC-4774-BD26-0F5772512319}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6DD14A85-CCFC-4774-BD26-0F5772512319}.Release|Any CPU.Build.0 = Release|Any CPU - {6DD14A85-CCFC-4774-BD26-0F5772512319}.Release|x64.ActiveCfg = Release|x64 - {6DD14A85-CCFC-4774-BD26-0F5772512319}.Release|x64.Build.0 = Release|x64 - {0A9B9FA6-E12D-48FD-B979-9F021A591E69}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0A9B9FA6-E12D-48FD-B979-9F021A591E69}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0A9B9FA6-E12D-48FD-B979-9F021A591E69}.Debug|x64.ActiveCfg = Debug|x64 - {0A9B9FA6-E12D-48FD-B979-9F021A591E69}.Debug|x64.Build.0 = Debug|x64 - {0A9B9FA6-E12D-48FD-B979-9F021A591E69}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0A9B9FA6-E12D-48FD-B979-9F021A591E69}.Release|Any CPU.Build.0 = Release|Any CPU - {0A9B9FA6-E12D-48FD-B979-9F021A591E69}.Release|x64.ActiveCfg = Release|x64 - {0A9B9FA6-E12D-48FD-B979-9F021A591E69}.Release|x64.Build.0 = Release|x64 - {E3367B88-5D0C-495A-8273-331656D4B5AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E3367B88-5D0C-495A-8273-331656D4B5AA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E3367B88-5D0C-495A-8273-331656D4B5AA}.Debug|x64.ActiveCfg = Debug|x64 - {E3367B88-5D0C-495A-8273-331656D4B5AA}.Debug|x64.Build.0 = Debug|x64 - {E3367B88-5D0C-495A-8273-331656D4B5AA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E3367B88-5D0C-495A-8273-331656D4B5AA}.Release|Any CPU.Build.0 = Release|Any CPU - {E3367B88-5D0C-495A-8273-331656D4B5AA}.Release|x64.ActiveCfg = Release|x64 - {E3367B88-5D0C-495A-8273-331656D4B5AA}.Release|x64.Build.0 = Release|x64 - {2DD4BE80-DDC3-4767-94A7-10F1C3395716}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2DD4BE80-DDC3-4767-94A7-10F1C3395716}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2DD4BE80-DDC3-4767-94A7-10F1C3395716}.Debug|x64.ActiveCfg = Debug|x64 - {2DD4BE80-DDC3-4767-94A7-10F1C3395716}.Debug|x64.Build.0 = Debug|x64 - {2DD4BE80-DDC3-4767-94A7-10F1C3395716}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2DD4BE80-DDC3-4767-94A7-10F1C3395716}.Release|Any CPU.Build.0 = Release|Any CPU - {2DD4BE80-DDC3-4767-94A7-10F1C3395716}.Release|x64.ActiveCfg = Release|x64 - {2DD4BE80-DDC3-4767-94A7-10F1C3395716}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {2A928B27-D8CE-4629-9711-0E792C94A85E} = {1CDABACB-44CB-4173-8313-913BA466562E} - {85E19618-8A67-47DE-892D-4BB4EAF59AE2} = {1CDABACB-44CB-4173-8313-913BA466562E} - {F4CA3733-BA62-4A8D-BF45-0BCAE80B882F} = {1CDABACB-44CB-4173-8313-913BA466562E} - {B2355947-6A37-42F4-9340-CEFF43F37A2B} = {1CDABACB-44CB-4173-8313-913BA466562E} - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865} = {1CDABACB-44CB-4173-8313-913BA466562E} - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586} = {1CDABACB-44CB-4173-8313-913BA466562E} - {C65C46DA-7919-4745-A952-CC77AA39E482} = {47832138-2140-4A2E-A035-BE14B4897204} - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457} = {1CDABACB-44CB-4173-8313-913BA466562E} - {D712E0A2-8AB1-4665-B7B5-D2FCE09188AE} = {1CDABACB-44CB-4173-8313-913BA466562E} - {EC288FFE-8FEE-4E89-88C1-CD68F92F75BC} = {CE7914A4-EC20-4A94-8AC3-C5731100239B} - {2C34A044-1BDE-44E8-A86E-E9971C87DA21} = {CE7914A4-EC20-4A94-8AC3-C5731100239B} - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001} = {1CDABACB-44CB-4173-8313-913BA466562E} - {97898362-42AF-41B1-A2E5-2A137A6FEB9A} = {CE7914A4-EC20-4A94-8AC3-C5731100239B} - {98B35793-A1A2-4E78-BAFD-75E0D95E6367} = {47832138-2140-4A2E-A035-BE14B4897204} - {18877537-1163-4531-A310-B3D64C4ADB2C} = {CE7914A4-EC20-4A94-8AC3-C5731100239B} - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99} = {65DF4CD8-CA2E-42E0-8F89-B4E875E5DFED} - {585D1FE8-5AC2-4BFF-A0C4-98245962FA9F} = {47832138-2140-4A2E-A035-BE14B4897204} - {53975D8C-DEFC-40BC-8C9B-CBA7A458EB55} = {47832138-2140-4A2E-A035-BE14B4897204} - {B1043125-DCB7-44E3-AF8F-D39CB7F1D082} = {65DF4CD8-CA2E-42E0-8F89-B4E875E5DFED} - {46A18A55-5AE8-49CE-91CD-C7421B642E7E} = {CE7914A4-EC20-4A94-8AC3-C5731100239B} - {1D8910C2-ADA2-4306-96DC-A61B494522ED} = {CE7914A4-EC20-4A94-8AC3-C5731100239B} - {97FE1093-38D3-4EEC-A602-340F792C9D25} = {CE7914A4-EC20-4A94-8AC3-C5731100239B} - {2F22C463-D4E9-43E5-ABBB-C5854731E4C0} = {CE7914A4-EC20-4A94-8AC3-C5731100239B} - {21C35138-455B-4833-9756-B2629F972A22} = {CE7914A4-EC20-4A94-8AC3-C5731100239B} - {6DD14A85-CCFC-4774-BD26-0F5772512319} = {CE7914A4-EC20-4A94-8AC3-C5731100239B} - {0A9B9FA6-E12D-48FD-B979-9F021A591E69} = {CE7914A4-EC20-4A94-8AC3-C5731100239B} - {E3367B88-5D0C-495A-8273-331656D4B5AA} = {CE7914A4-EC20-4A94-8AC3-C5731100239B} - {2DD4BE80-DDC3-4767-94A7-10F1C3395716} = {CE7914A4-EC20-4A94-8AC3-C5731100239B} - EndGlobalSection -EndGlobal diff --git a/ShoalShell.Legacy/Shoal.vbproj b/ShoalShell.Legacy/Shoal.vbproj deleted file mode 100644 index 80fc5d1ab..000000000 --- a/ShoalShell.Legacy/Shoal.vbproj +++ /dev/null @@ -1,179 +0,0 @@ - - - - - Debug - AnyCPU - {D71E0D55-DA94-4B18-B204-252D532EE8EC} - Exe - Microsoft.VisualBasic.Shoal.Program - Microsoft.VisualBasic.Shoal - Shoal - 512 - Console - v4.6 - - - - AnyCPU - true - full - true - true - bin\Debug\ - Shoal.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - false - - - x64 - Full - false - true - true - ..\..\..\GCModeller\ - Shoal.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - false - true - true - On - - - On - - - Binary - - - Off - - - On - - - Shoal.ico - - - My Project\app.manifest - - - true - true - true - ..\..\..\bin-Debug\ - Shoal.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x64 - MinimumRecommendedRules.ruleset - - - true - true - ..\..\..\GCModeller-x64\ - true - Shoal.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - Full - x64 - On - MinimumRecommendedRules.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - True - Application.myapp - - - True - True - Resources.resx - - - True - Settings.settings - True - - - - - VbMyResourcesResXFileCodeGenerator - Resources.Designer.vb - My.Resources - Designer - - - - - - - MyApplicationCodeGenerator - Application.Designer.vb - - - SettingsSingleFileGenerator - My - Settings.Designer.vb - - - - - - - - - - - - {fecce1fd-e1d4-49e3-a668-60bb5e7aed99} - Microsoft.VisualBasic.Architecture.Framework - - - {0be7fd44-d724-49f6-aec0-06c80b4f5527} - ShoalShell_Core - - - - - \ No newline at end of file diff --git a/ShoalShell.Legacy/ShoalShell.Designer.cd b/ShoalShell.Legacy/ShoalShell.Designer.cd deleted file mode 100644 index 086cc2170..000000000 --- a/ShoalShell.Legacy/ShoalShell.Designer.cd +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - AAAAAAAAIKAAAgAABAAAAAAAAAAAAQAAACAAAAAAAAA= - ConsoleApplication\CommandLines.vb - - - - - - AAAAAIAAIAhQAAAAAAQAICAAACBAIQAAAAAAAAgCACA= - ConsoleApplication\Config.vb - - - - - - - AAAAAAAAAAAAAAAAAAAAIAAAAAABAAAAAAAAAAAAAAA= - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAA= - _DEBUG_MAIN.vb - - - - - - ABAAAAAAAIAAAAAEgAABAAAAAAAAAAAAgAAABAEAAAA= - ConsoleApplication\Program.vb - - - - - - ACAAAAACACAAAAAAAKAAAAACAAgIAAADAAgAAAUAgAA= - InternalCommands.vb - - - - - - AAAAAAAAAAAAAAAAAAABEAAAAQAAAAAAAAgIAAAAAIA= - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAA= - - - - \ No newline at end of file diff --git a/ShoalShell.Legacy/TestShellScriptModule/My Project/Application.Designer.vb b/ShoalShell.Legacy/TestShellScriptModule/My Project/Application.Designer.vb deleted file mode 100644 index 0aecefe66..000000000 --- a/ShoalShell.Legacy/TestShellScriptModule/My Project/Application.Designer.vb +++ /dev/null @@ -1,13 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.18444 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - diff --git a/ShoalShell.Legacy/TestShellScriptModule/My Project/Application.myapp b/ShoalShell.Legacy/TestShellScriptModule/My Project/Application.myapp deleted file mode 100644 index 758895def..000000000 --- a/ShoalShell.Legacy/TestShellScriptModule/My Project/Application.myapp +++ /dev/null @@ -1,10 +0,0 @@ - - - false - false - 0 - true - 0 - 1 - true - diff --git a/ShoalShell.Legacy/TestShellScriptModule/My Project/AssemblyInfo.vb b/ShoalShell.Legacy/TestShellScriptModule/My Project/AssemblyInfo.vb deleted file mode 100644 index e903e35f6..000000000 --- a/ShoalShell.Legacy/TestShellScriptModule/My Project/AssemblyInfo.vb +++ /dev/null @@ -1,35 +0,0 @@ -Imports System -Imports System.Reflection -Imports System.Runtime.InteropServices - -' General Information about an assembly is controlled through the following -' set of attributes. Change these attribute values to modify the information -' associated with an assembly. - -' Review the values of the assembly attributes - - - - - - - - - - -'The following GUID is for the ID of the typelib if this project is exposed to COM - - -' Version information for an assembly consists of the following four values: -' -' Major Version -' Minor Version -' Build Number -' Revision -' -' You can specify all the values or you can default the Build and Revision Numbers -' by using the '*' as shown below: -' - - - diff --git a/ShoalShell.Legacy/TestShellScriptModule/My Project/Resources.resx b/ShoalShell.Legacy/TestShellScriptModule/My Project/Resources.resx deleted file mode 100644 index af7dbebba..000000000 --- a/ShoalShell.Legacy/TestShellScriptModule/My Project/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/ShoalShell.Legacy/TestShellScriptModule/My Project/Settings.settings b/ShoalShell.Legacy/TestShellScriptModule/My Project/Settings.settings deleted file mode 100644 index 85b890b3c..000000000 --- a/ShoalShell.Legacy/TestShellScriptModule/My Project/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/ShoalShell.Legacy/TestShellScriptModule/Test1.vb b/ShoalShell.Legacy/TestShellScriptModule/Test1.vb deleted file mode 100644 index b470ccfe9..000000000 --- a/ShoalShell.Legacy/TestShellScriptModule/Test1.vb +++ /dev/null @@ -1,16 +0,0 @@ -Imports Microsoft.VisualBasic.CommandLine.Reflection - -<[Namespace]("test1")> -Public Class Test1 - - - Public Shared Function _MsgBox(str As String) As String - MsgBox(str) - Return str - End Function - - - Public Shared Function createarray(str As String) As Char() - Return str.ToArray - End Function -End Class diff --git a/ShoalShell.Legacy/TestShellScriptModule/TestShellScriptModule.vbproj b/ShoalShell.Legacy/TestShellScriptModule/TestShellScriptModule.vbproj deleted file mode 100644 index 8fb51a0ae..000000000 --- a/ShoalShell.Legacy/TestShellScriptModule/TestShellScriptModule.vbproj +++ /dev/null @@ -1,115 +0,0 @@ - - - - - Debug - AnyCPU - {73D02E01-37BF-47D2-B0CF-A2324BB422B4} - Library - TestShellScriptModule - TestShellScriptModule - 512 - Windows - v4.5 - - - true - full - true - true - bin\Debug\ - TestShellScriptModule.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - pdbonly - false - true - true - bin\Release\ - TestShellScriptModule.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - On - - - Binary - - - Off - - - On - - - - - - - - - - - - - - - - - - - - - - - - - True - Application.myapp - - - True - True - Resources.resx - - - True - Settings.settings - True - - - - - VbMyResourcesResXFileCodeGenerator - Resources.Designer.vb - My.Resources - Designer - - - - - MyApplicationCodeGenerator - Application.Designer.vb - - - SettingsSingleFileGenerator - My - Settings.Designer.vb - - - - - {cd4a48ed-b3c6-41ff-971c-eb54957ab497} - Microsoft.VisualBasic.Architecture.Framework - - - - - \ No newline at end of file diff --git a/ShoalShell.Legacy/Win32API/ComDlg32.vb b/ShoalShell.Legacy/Win32API/ComDlg32.vb deleted file mode 100644 index fcb550858..000000000 --- a/ShoalShell.Legacy/Win32API/ComDlg32.vb +++ /dev/null @@ -1,202 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.EntryPointMetaData - -<[Namespace]("comdlg32.dll")> -Public Module ComDlg32 - - ''' - ''' CommDlgExtendedError returns the error code from the last common dialog box function. This function does not return error codes for any other API function; for that, use GetLastError instead. - ''' - ''' - ''' The function's return value is undefined if the last common - ''' dialog function call was successful. If an error with a common dialog function did occur, the return value is exactly one of the - ''' following common dialog error flags: - ''' - ''' - ''' - - Public Declare Function CommDlgExtendedError Lib "comdlg32.dll" () As Long - - ''' - ''' The function could not open the dialog box. - ''' - ''' - Public Const CDERR_DIALOGFAILURE = &HFFFF - ''' - ''' The function failed to find the desired resource. - ''' - ''' - Public Const CDERR_FINDRESFAILURE = &H6 - ''' - ''' The error involved a general common dialog box property. - ''' - ''' - Public Const CDERR_GENERALCODES = &H0 - ''' - ''' The function failed during initialization (probably insufficient memory). - ''' - ''' - Public Const CDERR_INITIALIZATION = &H2 - ''' - ''' The function failed to load the desired resource. - ''' - ''' - Public Const CDERR_LOADRESFAILURE = &H7 - ''' - ''' The function failed to load the desired string. - ''' - ''' - Public Const CDERR_LOADSTRFAILURE = &H5 - ''' - ''' The function failed to lock the desired resource. - ''' - ''' - Public Const CDERR_LOCKRESFAILURE = &H8 - ''' - ''' The function failed to allocate sufficient memory. - ''' - ''' - Public Const CDERR_MEMALLOCFAILURE = &H9 - ''' - ''' The function failed to lock the desired memory. - ''' - ''' - Public Const CDERR_MEMLOCKFAILURE = &HA - ''' - ''' The function was not provided with a valid instance handle (if one was required). - ''' - ''' - Public Const CDERR_NOHINSTANCE = &H4 - ''' - ''' The function was not provided with a valid hook function handle (if one was required). - ''' - ''' - Public Const CDERR_NOHOOK = &HB - ''' - ''' The function was not provided with a valid template (if one was required). - ''' - ''' - Public Const CDERR_NOTEMPLATE = &H3 - ''' - ''' The function failed to successfully register a window message. - ''' - ''' - Public Const CDERR_REGISTERMSGFAIL = &HC - ''' - ''' The function was provided with an invalid structure size. - ''' - ''' - Public Const CDERR_STRUCTSIZE = &H1 - ''' - ''' The error involved the Choose Font common dialog box. - ''' - ''' - Public Const CFERR_CHOOSEFONTCODES = &H2000 - ''' - ''' The function was provided with a maximum font size value smaller than the provided minimum font size. - ''' - ''' - Public Const CFERR_MAXLESSTHANMIN = &H2002 - ''' - ''' The function could not find any existing fonts. - ''' - ''' - Public Const CFERR_NOFONTS = &H2001 - ''' - ''' The function was provided with a filename buffer which was too small. - ''' - ''' - Public Const FNERR_BUFFERTOOSMALL = &H3003 - ''' - ''' The error involved the Open File or Save File common dialog box. - ''' - ''' - Public Const FNERR_FILENAMECODES = &H3000 - ''' - ''' The function was provided with or received an invalid filename. - ''' - ''' - Public Const FNERR_INVALIDFILENAME = &H3002 - ''' - ''' The function had insufficient memory to subclass the list box. - ''' - ''' - Public Const FNERR_SUBCLASSFAILURE = &H3001 - ''' - ''' The function was provided with an invalid buffer. - ''' - ''' - Public Const FRERR_BUFFERLENGTHZERO = &H4001 - ''' - ''' The error involved the Find or Replace common dialog box. - ''' - ''' - Public Const FRERR_FINDREPLACECODES = &H4000 - ''' - ''' The function failed to create an information context. - ''' - ''' - Public Const PDERR_CREATEICFAILURE = &H100A - ''' - ''' The function was told that the information provided described the default printer, but the default printer's actual settings were - ''' different. - ''' - ''' - Public Const PDERR_DEFAULTDIFFERENT = &H100C - ''' - ''' The data in the two data structures describe different printers (i.e., they hold conflicting information). - ''' - ''' - Public Const PDERR_DNDMMISMATCH = &H1009 - ''' - ''' The printer driver failed to initialize the DEVMODE structure. - ''' - ''' - Public Const PDERR_GETDEVMODEFAIL = &H1005 - ''' - ''' The function failed during initialization. - ''' - ''' - Public Const PDERR_INITFAILURE = &H1006 - ''' - ''' The function failed to load the desired device driver. - ''' - ''' - Public Const PDERR_LOADDRVFAILURE = &H1004 - ''' - ''' The function could not find a default printer. - ''' - ''' - Public Const PDERR_NODEFAULTPRN = &H1008 - ''' - ''' The function could not find any printers. - ''' - ''' - Public Const PDERR_NODEVICES = &H1007 - ''' - ''' The function failed to parse the printer-related strings in WIN.INI. - ''' - ''' - Public Const PDERR_PARSEFAILURE = &H1002 - ''' - ''' The error involved the Print common dialog box. - ''' - ''' - Public Const PDERR_PRINTERCODES = &H1000 - ''' - ''' The function could not find information in WIN.INI about the requested printer. - ''' - ''' - Public Const PDERR_PRINTERNOTFOUND = &H100B - ''' - ''' The handles to the data structures provided were nonzero even though the function was asked to return information about - ''' the default printer. - ''' - ''' - Public Const PDERR_RETDEFFAILURE = &H1003 - ''' - ''' The function failed to load the desired resources. - ''' - ''' - Public Const PDERR_SETUPFAILURE = &H1001 - -End Module diff --git a/ShoalShell.Legacy/Win32API/Gdi32.vb b/ShoalShell.Legacy/Win32API/Gdi32.vb deleted file mode 100644 index 84d0e4f35..000000000 --- a/ShoalShell.Legacy/Win32API/Gdi32.vb +++ /dev/null @@ -1,74 +0,0 @@ -Imports System.Drawing - -<[Namespace]("gdi32.dll")> -Public Module Gdi32 - - ''' - ''' The Escape function allows applications to access capabilities of a particular device not directly available through GDI. Escape calls made by an application are translated and sent to the driver - ''' - ''' Identifies the device context. - ''' Specifies the escape function to be performed. This parameter must be one of the predefined escape values. Use the ExtEscape function if your application defines a private escape value. - ''' Specifies the number of bytes of data pointed to by the lpvInData parameter. - ''' Points to the input structure required for the specified escape. - ''' - ''' Points to the structure that receives output from this escape. This parameter should be NULL if no data is returned - ''' - ''' If the function succeeds, the return value is greater than zero, except with the QUERYESCSUPPORT printer escape, which checks for implementation only. If the escape is not implemented, the return value is zero. - ''' - ''' If the function fails, the return value is an error. To get extended error information, call GetLastError. - ''' - ''' - ''' - ''' - - Public Declare Function Escape Lib "gdi32" Alias "Escape" (ByVal hdc As Long, ByVal nEscape As Long, ByVal nCount As Long, ByVal lpInData As String, lpOutData As Object) As Long - - Public Declare Function Rectangle Lib "gdi32" (hdc As Integer, X1 As Integer, Y1 As Integer, X2 As Integer, Y2 As Integer) As Integer - - Public Declare Function Polygon Lib "gdi32" (hdc As Integer, lpPoint As Point, nCount As Integer) As Integer - - Public Declare Function CreateSolidBrush Lib "gdi32" (crColor As Integer) As Integer - - Public Declare Function CreatePatternBrush Lib "gdi32" (hBitmap As Integer) As Integer - - Public Declare Function CreatePen Lib "gdi32" (nPenStyle As Integer, nWidth As Integer, crColor As Integer) As Integer - - Public Declare Function GetPixel Lib "gdi32" (hdc As Integer, x As Integer, y As Integer) As Integer - - Public Declare Function SetPixelV Lib "gdi32" (hdc As Integer, x As Integer, y As Integer, crColor As Integer) As Integer - - Public Declare Function CreateCompatibleDC Lib "gdi32" (hdc As Integer) As Integer - - Public Declare Function DeleteDC Lib "gdi32" (hdc As Integer) As Integer - - Public Declare Function SaveDC Lib "gdi32" (hdc As Integer) As Integer - - Public Declare Function RestoreDC Lib "gdi32" (hdc As Integer, nSavedDC As Integer) As Integer - - Public Declare Function CreateBitmap Lib "gdi32" (nWidth As Integer, nHeight As Integer, nPlanes As Integer, nBitCount As Integer, lpBits As Object) As Integer - - Public Declare Function CreateCompatibleBitmap Lib "gdi32" (hdc As Integer, nWidth As Integer, nHeight As Integer) As Integer - - Public Declare Function CreateBitmapIndirect Lib "gdi32" (lpBitmap As C_BITMAP) As Integer - - Public Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (hObject As Integer, nCount As Integer, lpObject As Object) As Integer - - Public Declare Function SelectObject Lib "gdi32" (hdc As Integer, hObject As Integer) As Integer - - Public Declare Function DeleteObject Lib "gdi32" (hObject As Integer) As Integer - - Public Declare Function GetMapMode Lib "gdi32" (hdc As Integer) As Integer - - Public Declare Function SetMapMode Lib "gdi32" (hdc As Integer, nMapMode As Integer) As Integer - - Public Declare Function SetBkColor Lib "gdi32" (hdc As Integer, crColor As Integer) As Integer - - Public Declare Function BitBlt Lib "gdi32" (hDestDC As Integer, x As Integer, y As Integer, nWidth As Integer, nHeight As Integer, hSrcDC As Integer, xSrc As Integer, ySrc As Integer, dwRop As Integer) As Integer - - Public Declare Function StretchBlt Lib "gdi32" (hdc As Integer, x As Integer, y As Integer, nWidth As Integer, nHeight As Integer, hSrcDC As Integer, xSrc As Integer, ySrc As Integer, nSrcWidth As Integer, nSrcHeight As Integer, dwRop As Integer) As Integer - - Public Declare Function SetTextColor Lib "gdi32" (hdc As Integer, crColor As Integer) As Integer - - Public Declare Function SetBkMode Lib "gdi32" (hdc As Integer, nBkMode As Integer) As Integer - -End Module diff --git a/ShoalShell.Legacy/Win32API/Interop.QuartzTypeLib.zip b/ShoalShell.Legacy/Win32API/Interop.QuartzTypeLib.zip deleted file mode 100644 index 6b970f493..000000000 Binary files a/ShoalShell.Legacy/Win32API/Interop.QuartzTypeLib.zip and /dev/null differ diff --git a/ShoalShell.Legacy/Win32API/Kernel32.vb b/ShoalShell.Legacy/Win32API/Kernel32.vb deleted file mode 100644 index b04520ff3..000000000 --- a/ShoalShell.Legacy/Win32API/Kernel32.vb +++ /dev/null @@ -1,19 +0,0 @@ - -<[Namespace]("kernel32.dll")> -Public Module Kernel32 - - ''' - ''' Sleep pauses program execution for a certain amount of time. This is more accurate than using a do-nothing loop, waiting for a certain amount of time to pass. The function does not return a value. - ''' - ''' The number of milliseconds to halt program execution for. - ''' - ''' - - Public Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long) - - Public Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (lpBuffer As String, nSize As Integer) As Integer - - Public Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (lpBuffer As String, nSize As Integer) As Integer - - Public Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (lpString As String) As Integer -End Module diff --git a/ShoalShell.Legacy/Win32API/My Project/Application.Designer.vb b/ShoalShell.Legacy/Win32API/My Project/Application.Designer.vb deleted file mode 100644 index 88dd01c78..000000000 --- a/ShoalShell.Legacy/Win32API/My Project/Application.Designer.vb +++ /dev/null @@ -1,13 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - diff --git a/ShoalShell.Legacy/Win32API/My Project/Application.myapp b/ShoalShell.Legacy/Win32API/My Project/Application.myapp deleted file mode 100644 index 758895def..000000000 --- a/ShoalShell.Legacy/Win32API/My Project/Application.myapp +++ /dev/null @@ -1,10 +0,0 @@ - - - false - false - 0 - true - 0 - 1 - true - diff --git a/ShoalShell.Legacy/Win32API/My Project/AssemblyInfo.vb b/ShoalShell.Legacy/Win32API/My Project/AssemblyInfo.vb deleted file mode 100644 index 38eed57b1..000000000 --- a/ShoalShell.Legacy/Win32API/My Project/AssemblyInfo.vb +++ /dev/null @@ -1,35 +0,0 @@ -Imports System -Imports System.Reflection -Imports System.Runtime.InteropServices - -' General Information about an assembly is controlled through the following -' set of attributes. Change these attribute values to modify the information -' associated with an assembly. - -' Review the values of the assembly attributes - - - - - - - - - - -'The following GUID is for the ID of the typelib if this project is exposed to COM - - -' Version information for an assembly consists of the following four values: -' -' Major Version -' Minor Version -' Build Number -' Revision -' -' You can specify all the values or you can default the Build and Revision Numbers -' by using the '*' as shown below: -' - - - diff --git a/ShoalShell.Legacy/Win32API/My Project/Resources.Designer.vb b/ShoalShell.Legacy/Win32API/My Project/Resources.Designer.vb deleted file mode 100644 index 6f87b83b6..000000000 --- a/ShoalShell.Legacy/Win32API/My Project/Resources.Designer.vb +++ /dev/null @@ -1,63 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - -Imports System - -Namespace My.Resources - - 'This class was auto-generated by the StronglyTypedResourceBuilder - 'class via a tool like ResGen or Visual Studio. - 'To add or remove a member, edit your .ResX file then rerun ResGen - 'with the /str option, or rebuild your VS project. - ''' - ''' A strongly-typed resource class, for looking up localized strings, etc. - ''' - _ - Friend Module Resources - - Private resourceMan As Global.System.Resources.ResourceManager - - Private resourceCulture As Global.System.Globalization.CultureInfo - - ''' - ''' Returns the cached ResourceManager instance used by this class. - ''' - _ - Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager - Get - If Object.ReferenceEquals(resourceMan, Nothing) Then - Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("Microsoft.Win32.API_ImportsDLL.Resources", GetType(Resources).Assembly) - resourceMan = temp - End If - Return resourceMan - End Get - End Property - - ''' - ''' Overrides the current thread's CurrentUICulture property for all - ''' resource lookups using this strongly typed resource class. - ''' - _ - Friend Property Culture() As Global.System.Globalization.CultureInfo - Get - Return resourceCulture - End Get - Set - resourceCulture = value - End Set - End Property - End Module -End Namespace diff --git a/ShoalShell.Legacy/Win32API/My Project/Resources.resx b/ShoalShell.Legacy/Win32API/My Project/Resources.resx deleted file mode 100644 index af7dbebba..000000000 --- a/ShoalShell.Legacy/Win32API/My Project/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/ShoalShell.Legacy/Win32API/My Project/Settings.Designer.vb b/ShoalShell.Legacy/Win32API/My Project/Settings.Designer.vb deleted file mode 100644 index e227188d3..000000000 --- a/ShoalShell.Legacy/Win32API/My Project/Settings.Designer.vb +++ /dev/null @@ -1,73 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - - -Namespace My - - _ - Partial Friend NotInheritable Class MySettings - Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) - -#Region "My.Settings Auto-Save Functionality" -#If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean - - Private Shared addedHandlerLockObject As New Object - - _ - Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub -#End If -#End Region - - Public Shared ReadOnly Property [Default]() As MySettings - Get - -#If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If -#End If - Return defaultInstance - End Get - End Property - End Class -End Namespace - -Namespace My - - _ - Friend Module MySettingsProperty - - _ - Friend ReadOnly Property Settings() As Global.Microsoft.Win32.API_ImportsDLL.My.MySettings - Get - Return Global.Microsoft.Win32.API_ImportsDLL.My.MySettings.Default - End Get - End Property - End Module -End Namespace diff --git a/ShoalShell.Legacy/Win32API/My Project/Settings.settings b/ShoalShell.Legacy/Win32API/My Project/Settings.settings deleted file mode 100644 index 85b890b3c..000000000 --- a/ShoalShell.Legacy/Win32API/My Project/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/ShoalShell.Legacy/Win32API/Shell32.vb b/ShoalShell.Legacy/Win32API/Shell32.vb deleted file mode 100644 index 2050ffee1..000000000 --- a/ShoalShell.Legacy/Win32API/Shell32.vb +++ /dev/null @@ -1,8 +0,0 @@ -Imports Microsoft.VisualBasic.CommandLine.Reflection - -<[Namespace]("shell32.dll")> -Public Module Shell32 - - - Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (hwnd As Integer, lpOperation As String, lpFile As String, lpParameters As String, lpDirectory As String, nShowCmd As Integer) As Integer -End Module diff --git a/ShoalShell.Legacy/Win32API/User32.vb b/ShoalShell.Legacy/Win32API/User32.vb deleted file mode 100644 index 9e3377f4d..000000000 --- a/ShoalShell.Legacy/Win32API/User32.vb +++ /dev/null @@ -1,48 +0,0 @@ - -<[Namespace]("user32.dll")> -Public Module User32 - - - Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (idHook As Integer, lpfn As Integer, hmod As Integer, dwThreadId As Integer) As Integer - - Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (hWnd As Integer, wMsg As Integer, wParam As Integer, lParam As Object) As Integer - - Public Declare Function SetCapture Lib "user32" (hwnd As Integer) As Integer - - Public Declare Function ReleaseCapture Lib "user32" () As Integer - - Public Declare Function GetWindowRect Lib "user32" (hwnd As Integer, lpRect As RECT) As Integer - - Public Declare Function GetCursorPos Lib "user32" (lpPoint As System.Drawing.Point) As Integer - - Public Declare Function SetCursorPos Lib "user32" (x As Integer, y As Integer) As Integer - - Public Declare Function DrawEdge Lib "user32" (hdc As Integer, qrc As RECT, edge As Integer, grfFlags As Integer) As Boolean - - Public Declare Function OffsetRect Lib "user32" (lpRect As RECT, x As Integer, y As Integer) As Integer - - Public Declare Function DrawText Lib "user32" Alias "DrawTextA" (hdc As Integer, lpStr As String, nCount As Integer, lpRect As RECT, wFormat As Integer) As Integer - - Public Declare Function GetDC Lib "user32" (hwnd As Integer) As Integer - - Public Declare Function ReleaseDC Lib "user32" (hwnd As Integer, hdc As Integer) As Integer - - Public Declare Function FillRect Lib "user32" (hdc As Integer, lpRect As RECT, hBrush As Integer) As Integer - - Public Declare Function DrawState Lib "user32" Alias "DrawStateA" (hdc As Integer, hBrush As Integer, lpDrawStateProc As Integer, lParam As Integer, wParam As Integer, n1 As Integer, n2 As Integer, n3 As Integer, n4 As Integer, un As Integer) As Integer - - Public Declare Function GetWindowDC Lib "user32" (hwnd As Integer) As Integer - - Public Declare Function IntersectRect Lib "user32" (lpDestRect As RECT, lpSrc1Rect As RECT, lpSrc2Rect As RECT) As Integer - - Public Declare Function SubtractRect Lib "user32" (lprcDst As RECT, lprcSrc1 As RECT, lprcSrc2 As RECT) As Integer - - Public Declare Function UnionRect Lib "user32" (lpDestRect As RECT, lpSrc1Rect As RECT, lpSrc2Rect As RECT) As Integer - - Public Declare Function IsRectEmpty Lib "user32" (lpRect As RECT) As Integer - - Public Declare Function SetRect Lib "user32" (lpRect As RECT, X1 As Integer, Y1 As Integer, X2 As Integer, Y2 As Integer) As Integer - - Public Declare Function EqualRect Lib "user32" (lpRect1 As RECT, lpRect2 As RECT) As Integer - -End Module diff --git a/ShoalShell.Legacy/Win32API/Win32API.sln b/ShoalShell.Legacy/Win32API/Win32API.sln deleted file mode 100644 index 69b97dae4..000000000 --- a/ShoalShell.Legacy/Win32API/Win32API.sln +++ /dev/null @@ -1,28 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.22129.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Win32API", "Win32API.vbproj", "{4B0A5F0A-F9F5-4206-99CC-82781B6E3457}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Microsoft.VisualBasic.Architecture.Framework", "..\..\Microsoft.VisualBasic.Architecture.Framework\Microsoft.VisualBasic.Architecture.Framework.vbproj", "{FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457}.Release|Any CPU.Build.0 = Release|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FECCE1FD-E1D4-49E3-A668-60BB5E7AED99}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/ShoalShell.Legacy/Win32API/Win32API.vbproj b/ShoalShell.Legacy/Win32API/Win32API.vbproj deleted file mode 100644 index bee4a1b44..000000000 --- a/ShoalShell.Legacy/Win32API/Win32API.vbproj +++ /dev/null @@ -1,153 +0,0 @@ - - - - - Debug - AnyCPU - {4B0A5F0A-F9F5-4206-99CC-82781B6E3457} - Library - Microsoft.Win32.API_ImportsDLL - ShoalShell.Plugins.Win32API_v2.0_22.0.7601.121__ed1d5d0cd8c60cc9a - 512 - Windows - v4.6 - - - - true - full - true - true - ..\bin\Debug\ - ShoalShell.Plugins.Win32API_v2.0_22.0.7601.121__ed1d5d0cd8c60cc9a.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - pdbonly - false - true - true - ..\..\..\..\GCModeller\ - ShoalShell.Plugins.Win32API_v2.0_22.0.7601.121__ed1d5d0cd8c60cc9a.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - On - - - Binary - - - Off - - - On - - - true - true - true - bin\x64\Debug\ - ShoalShell.Plugins.Win32API_v2.0_22.0.7601.121__ed1d5d0cd8c60cc9a.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x64 - MinimumRecommendedRules.ruleset - - - true - ..\..\..\..\GCModeller-x64\ - ShoalShell.Plugins.Win32API_v2.0_22.0.7601.121__ed1d5d0cd8c60cc9a.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - - Interop.QuartzTypeLib\Interop.QuartzTypeLib.dll - True - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - True - Application.myapp - - - True - True - Resources.resx - - - True - Settings.settings - True - - - - - VbMyResourcesResXFileCodeGenerator - Resources.Designer.vb - My.Resources - Designer - - - - - MyApplicationCodeGenerator - Application.Designer.vb - - - SettingsSingleFileGenerator - My - Settings.Designer.vb - - - - - {fecce1fd-e1d4-49e3-a668-60bb5e7aed99} - Microsoft.VisualBasic.Architecture.Framework - - - {0be7fd44-d724-49f6-aec0-06c80b4f5527} - ShoalShell_Core - - - - - \ No newline at end of file diff --git a/ShoalShell.Legacy/Win32API/WinMM.vb b/ShoalShell.Legacy/Win32API/WinMM.vb deleted file mode 100644 index 5dd2a407a..000000000 --- a/ShoalShell.Legacy/Win32API/WinMM.vb +++ /dev/null @@ -1,87 +0,0 @@ -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports QuartzTypeLib -Imports Microsoft.VisualBasic.Scripting.EntryPointMetaData - -<[Namespace]("winmm.dll")> -Public Module WinMM - - ''' - ''' DirectShow组件的抽象接å£ï¼Œæ•´ä¸ªæ’­æ”¾å™¨çš„æ ¸å¿ƒéƒ¨ä»¶ - ''' - ''' - Public Structure DirectShow : Implements IDisposable - - Dim MediaControl As IMediaControl - Dim MediaPosition As IMediaPosition - Dim BasicAudio As IBasicAudio - - Public Function RenderFile(spath As String) As Boolean - MediaControl = New FilgraphManager - MediaControl.RenderFile(spath) - BasicAudio = MediaControl - MediaPosition = MediaControl - Return True - End Function - - Public Sub Dispose() Implements System.IDisposable.Dispose - On Error Resume Next - - MediaControl.Stop() - MediaPosition = Nothing - BasicAudio = Nothing - MediaControl = Nothing - End Sub - - Public Function IsNull() As Boolean - Return (BasicAudio Is Nothing OrElse MediaControl Is Nothing OrElse MediaPosition Is Nothing) - End Function - - Public Sub [Stop]() - On Error Resume Next - MediaControl.Stop() - End Sub - - Public Sub Pause() - On Error Resume Next - MediaControl.Pause() - End Sub - - Public Sub Play() - On Error Resume Next - MediaControl.Run() - End Sub - - Public ReadOnly Property State As Long - Get - Dim TimeOut As Long, s As Long = 0 - MediaControl.GetState(TimeOut, s) - Return s - End Get - End Property - End Structure - - Public Const SND_APPLICATION = &H80 ' look for application specific association - Public Const SND_ALIAS = &H10000 ' name is a WIN.INI [sounds] entry - Public Const SND_ALIAS_ID = &H110000 ' name is a WIN.INI [sounds] entry identifier - Public Const SND_ASYNC = &H1 ' play asynchronously - Public Const SND_FILENAME = &H20000 ' name is a file name - Public Const SND_LOOP = &H8 ' loop the sound until next sndPlaySound - Public Const SND_MEMORY = &H4 ' lpszSoundName points to a memory file - Public Const SND_NODEFAULT = &H2 ' silence not default, if sound not found - Public Const SND_NOSTOP = &H10 ' don't stop any currently playing sound - Public Const SND_NOWAIT = &H2000 ' don't wait if the driver is busy - Public Const SND_PURGE = &H40 ' purge non-static events for task - Public Const SND_RESOURCE = &H40004 ' name is a resource name or atom - Public Const SND_SYNC = &H0 ' play synchronously (default) - - - Public Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (lpszName As String, hModule As Integer, dwFlags As Integer) As Integer - - - Public Function InvokeDirectShow( filename As String) As Double - Dim Device As WinMM.DirectShow = New DirectShow - Call Device.RenderFile(filename) - Call Device.Play() - Return 0 - End Function -End Module diff --git a/ShoalShell.Legacy/_DEBUG_MAIN.vb b/ShoalShell.Legacy/_DEBUG_MAIN.vb deleted file mode 100644 index 194e1fd76..000000000 --- a/ShoalShell.Legacy/_DEBUG_MAIN.vb +++ /dev/null @@ -1,10 +0,0 @@ -Imports Microsoft.VisualBasic.Scripting.ShoalShell -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ObjectModels - -Module _DEBUG_MAIN - Sub Main() - Call CommandLines.RegisterModule("-register_modules ""E:\GCModeller\CompiledAssembly\LANS.SystemsBiology.Assembly.Plugins.Shoal.dll""") - Call CommandLines.RegisterModule("-register_modules -path ""E:\GCModeller\GCI Project\Reference\ShellScript\TestShellScriptModule\bin\Debug\TestShellScriptModule.dll""") - Call New Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.Objects.ShellScript().EXEC(FileIO.FileSystem.ReadAllText("../release/linq_test.txt")) - End Sub -End Module diff --git a/ShoalShell.PlugIns.Plot/App.config b/ShoalShell.PlugIns.Plot/App.config deleted file mode 100644 index c3faffbe8..000000000 --- a/ShoalShell.PlugIns.Plot/App.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/ShoalShell.PlugIns.Plot/Device/FormChartPlotDevice.Designer.vb b/ShoalShell.PlugIns.Plot/Device/FormChartPlotDevice.Designer.vb deleted file mode 100644 index b150074b6..000000000 --- a/ShoalShell.PlugIns.Plot/Device/FormChartPlotDevice.Designer.vb +++ /dev/null @@ -1,37 +0,0 @@ - _ -Partial Class FormChartPlotDevice - Inherits Microsoft.VisualBasic.DocumentFormat.Csv.CsvChartDevice - - 'Form overrides dispose to clean up the component list. - _ - Protected Overrides Sub Dispose( disposing As Boolean) - Try - If disposing AndAlso components IsNot Nothing Then - components.Dispose() - End If - Finally - MyBase.Dispose(disposing) - End Try - End Sub - - 'Required by the Windows Form Designer - Private components As System.ComponentModel.IContainer - - 'NOTE: The following procedure is required by the Windows Form Designer - 'It can be modified using the Windows Form Designer. - 'Do not modify it using the code editor. - _ - Private Sub InitializeComponent() - Me.SuspendLayout() - ' - 'FormChartPlotDevice - ' - Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!) - Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(292, 273) - Me.Name = "FormChartPlotDevice" - Me.Text = "Form1" - Me.ResumeLayout(False) - - End Sub -End Class diff --git a/ShoalShell.PlugIns.Plot/Device/FormChartPlotDevice.resx b/ShoalShell.PlugIns.Plot/Device/FormChartPlotDevice.resx deleted file mode 100644 index 1af7de150..000000000 --- a/ShoalShell.PlugIns.Plot/Device/FormChartPlotDevice.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/ShoalShell.PlugIns.Plot/Device/FormChartPlotDevice.vb b/ShoalShell.PlugIns.Plot/Device/FormChartPlotDevice.vb deleted file mode 100644 index 23d9f0691..000000000 --- a/ShoalShell.PlugIns.Plot/Device/FormChartPlotDevice.vb +++ /dev/null @@ -1,9 +0,0 @@ -Public Class FormChartPlotDevice : Inherits Microsoft.VisualBasic.DocumentFormat.Csv.CsvChartDevice - - Public Function CopyChartImage() As Image - Dim Bitmap As Bitmap = New Bitmap(Me._chart.Size.Width, Me._chart.Size.Height) - Call Me._chart.DrawToBitmap(Bitmap, New Rectangle(New Point, Me._chart.Size)) - - Return Bitmap - End Function -End Class \ No newline at end of file diff --git a/ShoalShell.PlugIns.Plot/Device/FormImagePlotDevice.Designer.vb b/ShoalShell.PlugIns.Plot/Device/FormImagePlotDevice.Designer.vb deleted file mode 100644 index 551affe42..000000000 --- a/ShoalShell.PlugIns.Plot/Device/FormImagePlotDevice.Designer.vb +++ /dev/null @@ -1,122 +0,0 @@ - _ -Partial Class FormImagePlotDevice - Inherits System.Windows.Forms.Form - - 'Form overrides dispose to clean up the component list. - _ - Protected Overrides Sub Dispose( disposing As Boolean) - Try - If disposing AndAlso components IsNot Nothing Then - components.Dispose() - End If - Finally - MyBase.Dispose(disposing) - End Try - End Sub - - 'Required by the Windows Form Designer - Private components As System.ComponentModel.IContainer - - 'NOTE: The following procedure is required by the Windows Form Designer - 'It can be modified using the Windows Form Designer. - 'Do not modify it using the code editor. - _ - Private Sub InitializeComponent() - Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(FormImagePlotDevice)) - Me.PictureBox1 = New System.Windows.Forms.PictureBox() - Me.MenuStrip1 = New System.Windows.Forms.MenuStrip() - Me.FileToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.HelpToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.CloseToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.SaveAsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.AboutToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripMenuItem1 = New System.Windows.Forms.ToolStripSeparator() - CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() - Me.MenuStrip1.SuspendLayout() - Me.SuspendLayout() - ' - 'PictureBox1 - ' - Me.PictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom - Me.PictureBox1.Dock = System.Windows.Forms.DockStyle.Fill - Me.PictureBox1.Location = New System.Drawing.Point(0, 24) - Me.PictureBox1.Name = "PictureBox1" - Me.PictureBox1.Size = New System.Drawing.Size(292, 249) - Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom - Me.PictureBox1.TabIndex = 0 - Me.PictureBox1.TabStop = False - ' - 'MenuStrip1 - ' - Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FileToolStripMenuItem, Me.HelpToolStripMenuItem}) - Me.MenuStrip1.Location = New System.Drawing.Point(0, 0) - Me.MenuStrip1.Name = "MenuStrip1" - Me.MenuStrip1.Size = New System.Drawing.Size(292, 24) - Me.MenuStrip1.TabIndex = 1 - Me.MenuStrip1.Text = "MenuStrip1" - ' - 'FileToolStripMenuItem - ' - Me.FileToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.SaveAsToolStripMenuItem, Me.ToolStripMenuItem1, Me.CloseToolStripMenuItem}) - Me.FileToolStripMenuItem.Name = "FileToolStripMenuItem" - Me.FileToolStripMenuItem.Size = New System.Drawing.Size(38, 20) - Me.FileToolStripMenuItem.Text = "File" - ' - 'HelpToolStripMenuItem - ' - Me.HelpToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.AboutToolStripMenuItem}) - Me.HelpToolStripMenuItem.Name = "HelpToolStripMenuItem" - Me.HelpToolStripMenuItem.Size = New System.Drawing.Size(44, 20) - Me.HelpToolStripMenuItem.Text = "Help" - ' - 'CloseToolStripMenuItem - ' - Me.CloseToolStripMenuItem.Name = "CloseToolStripMenuItem" - Me.CloseToolStripMenuItem.Size = New System.Drawing.Size(152, 22) - Me.CloseToolStripMenuItem.Text = "Close" - ' - 'SaveAsToolStripMenuItem - ' - Me.SaveAsToolStripMenuItem.Name = "SaveAsToolStripMenuItem" - Me.SaveAsToolStripMenuItem.Size = New System.Drawing.Size(152, 22) - Me.SaveAsToolStripMenuItem.Text = "Save As" - ' - 'AboutToolStripMenuItem - ' - Me.AboutToolStripMenuItem.Name = "AboutToolStripMenuItem" - Me.AboutToolStripMenuItem.Size = New System.Drawing.Size(152, 22) - Me.AboutToolStripMenuItem.Text = "About" - ' - 'ToolStripMenuItem1 - ' - Me.ToolStripMenuItem1.Name = "ToolStripMenuItem1" - Me.ToolStripMenuItem1.Size = New System.Drawing.Size(149, 6) - ' - 'FormImagePlotDevice - ' - Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!) - Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(292, 273) - Me.Controls.Add(Me.PictureBox1) - Me.Controls.Add(Me.MenuStrip1) - Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) - Me.MainMenuStrip = Me.MenuStrip1 - Me.Name = "FormImagePlotDevice" - Me.Text = "Shoal Plots" - CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit() - Me.MenuStrip1.ResumeLayout(False) - Me.MenuStrip1.PerformLayout() - Me.ResumeLayout(False) - Me.PerformLayout() - - End Sub - Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox - Friend WithEvents MenuStrip1 As System.Windows.Forms.MenuStrip - Friend WithEvents FileToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents SaveAsToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents CloseToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents HelpToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents AboutToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents ToolStripMenuItem1 As System.Windows.Forms.ToolStripSeparator - -End Class diff --git a/ShoalShell.PlugIns.Plot/Device/FormImagePlotDevice.resx b/ShoalShell.PlugIns.Plot/Device/FormImagePlotDevice.resx deleted file mode 100644 index 3cc2bc1ce..000000000 --- a/ShoalShell.PlugIns.Plot/Device/FormImagePlotDevice.resx +++ /dev/null @@ -1,3577 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 17, 17 - - - - - AAABABMAMDAQAAEABABoBgAANgEAACAgEAABAAQA6AIAAJ4HAAAYGBAAAQAEAOgBAACGCgAAEBAQAAEA - BAAoAQAAbgwAAAAAAAABAAgA5QsAAJYNAAAwMAAAAQAIAKgOAAB7GQAAICAAAAEACACoCAAAIygAABgY - AAABAAgAyAYAAMswAAAQEAAAAQAIAGgFAACTNwAAAAAAAAEAIACoCwAA+zwAAICAAAABACAAKAgBAKNI - AABgYAAAAQAgAKiUAADLUAEAUFAAAAEAIADoZwAAc+UBAEhIAAABACAAiFQAAFtNAgBAQAAAAQAgAChC - AADjoQIAMDAAAAEAIACoJQAAC+QCACAgAAABACAAqBAAALMJAwAYGAAAAQAgAIgJAABbGgMAEBAAAAEA - IABoBAAA4yMDACgAAAAwAAAAYAAAAAEABAAAAAAAgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACA - AAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAcAcAcAcAcAcAcAcAcAcAcAcAcHAABwBwBwBw - BwBwBwBwBwBwBwBwBwBwBwCABwcHBwcHBwcHBwcHBwcHBwcHBwcHAHBwcHBwAAAAAAAAAAAAAAAAAAAA - AAAABwcHBwcAAAAAAAAAAAAAAAAAAAAAAAAAAHAHAHcAAAAAAAAAAAAAAAAAAAAAAAAAAHBwcAcAAAAA - AAAAAAAAAAAAAAAAAAAAAHAHBwcAAAAAAAAAAAAAAAAAAAAAAAAAAHcABwcAAAAAAAAAAAAAAAAAAAAA - AAAAAHBwBwcAAAAAAAAAAAAAAAAAAAAAAAAAAHAHAHcAAAAAAAAAAAAAAAAAAAAAAAAAAHcAcAcAAAAA - AAAAAAAAAAAAAAAAAAAAAHBwBwcAAAAAAAAAAAAAAAAAAAAAAAAAAHAHBwcAAAcAdwAAAABwcAcAcAdw - AAAAAHBwBwcAAABwAHAAAABwBwBwBwAAAAAAAHBwBwcAAAAHcHcAAAAHBwcHBwdwAAAAAHBwBwcAAAAA - BwBwAAAAAAAAAAAAAAAAAHAHBwcAAAAABwcHAAAAAAAAAAAAAAAAAHcABwcAAAAAAHAHcAAAAAAAAAAA - AAAAAHBwAHcAAAAAAHBwcAAAAAAAAAAAAAAAAHAHcAcAAAAABwAHAAAAAAAAAAAAAAAAAHcABwcAAAAA - cHBwAAAAAAAAAAAAAAAAAHBwBwcAAAAHAHcAAAAAAAAAAAAAAAAAAHAHBwcAAABwcHAAAAAAAAAAAAAA - AAAAAHBwBwcAAAcABwAAAAAAAAAAAAAAAAAAAHBwAHcAAAeIcAAAAAAAAAAAAAAAAAAAAHAHcAcAAAAA - AAAAAAAAAAAAAAAAAAAAAHcABwcAAAAAAAAAAAAAAAAAAAAAAAAAAHBwBwcAAAAAAAAAAAAAAAAAAAAA - AAAAAHAHBwcAAAAAAAAAAAAAAAAAAAAAAAAAAHcABwcAAAAAAAAAAAAAAAAAAAAAAAAAAHBwBwcHBwcH - BwcHBwcHBwcHBwcHBwcHBwBwAHAHAHBwcHBwcHAHAHBwBwBwcAcAcHAHcAcAcHAABwAHAAcAcHAHAHBw - BwBwBwcABwcHBwB3AHBwcHBwcAcAcHAHAHBwcABwcAcAcAcAcHAHAHAHBwBwcAcAcHAHBwcHcHBwBwBw - cAcAcAcAcHBwBwcHBwcAcAcHAAcHAHBwBwcHBwcHAAcHBwBwAHBwBwBwCABwcHAHAHAHAHAAcHAAcHAH - BwAHBwdwAAcABwcAcAcAcAcHBwcHAAcHAHBwcHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA////////AAD///////8AAP///////wAA////////AADgAAAAAAcAAIAAAAAAAQAAgAAAAAAB - AAAH/////+AAAA//////8AAAD//////wAAAP//////AAAA//////8AAAD//////wAAAP//////AAAA// - ////8AAAD//////wAAAP//////AAAA+D/AAf8AAAD8H8AB/wAAAP4P4AH/AAAA/wf///8AAAD/g////w - AAAP/B////AAAA/8H///8AAAD/g////wAAAP8H////AAAA/g////8AAAD8H////wAAAPg/////AAAA+H - ////8AAAD//////wAAAP//////AAAA//////8AAAD//////wAAAP//////AAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAADgAAAAAAcAAP// - /////wAA////////AAD///////8AAP///////wAAKAAAACAAAABAAAAAAQAEAAAAAAAAAgAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8A - AAD/AP8A//8AAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHd3d3d3d3d3d3d3d3 - gAAHBwcHBwcHBwcHBwcHBwBwcHBwcHBwcHBwcHBwcHBwd3BwAAAAAAAAAAAAAAAABwcHAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAcHAAAAAAAAAAAAAAAAAAAAcHAAAAAAAAAAAAAAAAAAAHBwAAAAAA - AAAAAAAAAAAAcAAAAHBwAAAHBwcHcAAAAABwAAAHBwAAAHBwcAAAAABwBwAAAABwAAB3d3cAAAAABwcA - AAAHBwAAAAAAAAAAAAcAAAAABwdwAAAAAAAAAABwcAAAAAcHAAAAAAAAAAAAAAcAAAAHcAAAAAAAAAAA - AHAHAAAHBwAAAAAAAAAAAAAHAAAAd3AAAAAAAAAAAAAAB3AAAAAAAAAAAAAAAAAAAHAHAAAAAAAAAAAA - AAAAAAAHBwAAAAAAAAAAAAAAAAAAAAB3d3d3d3d3d3d3d3d3d3BwcHBwcAcHBwcHBwcHBwAHBwAHAAcA - cABwAHAHAHBwcHBwcHBwcAcHBwcHAHAHAHBwBwBwBwcHAHAHAHBwcHAIBwcHBwBwBwcHAHBwBwAHcAAH - d3eHeHd3d4d3eHd4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////4AAAB4AA - AAEAAAAAH///+D////w////8P////D////w////8PH4B/D4+Afw/HwP8P4///D+H//w/j//8Px///D4/ - //w8f//8P////D////w////8AAAAAAAAAAAAAAAAAAAAAAAAAACAAAAB4AAAB///////////KAAAABgA - AAAwAAAAAQAEAAAAAAAgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICA - AACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAHAWAWAWAWAWAWAWBwd3d3d3d3d3d3dwcHAAAAAAAAAAAAAHAHAAAAAAAAAAAAAHBhAAAAAAAAAAAA - AHAWAAAAAAAAAAAAABYHAAdwAAB3d3AAAHBhAAcHAAcAABAAAHAWAABwgAAAAAAAAHAHAAAHAAAAAAAA - ABZhAABwcAAAAAAAAHAWAAcHAAAAAAAAAHAHAAdwAAAAAAAAAHBhAAAAAAAAAAAAAHAWAAAAAAAAAAAA - AHAHAAAAAAAAAAAAAAcBYHAWFhYWFhYWFhBhYQYWAWAWAWBhBgdwBwFhYBYBYBYWEHcHAWBgFgFhYWEA - YWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AIAAAQAAAAAAP//8AD///AA///wAP//8ADnw - fAA44HwAPH/8AD5//AA8f/wAOP/8ADn//AA///wAP//8AD///AAAAAAAAAAAAAAAAACAAAEA////AP// - /wAoAAAAEAAAACAAAAABAAQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAA - AACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAB3d3d3d3 - d3B3AAAAAAAAcAAAAAAAAAAHAAAAAAAAAABwAAAAAAAAAAAAcAB3cAAHAAAAAAAAAABwAHcAAAAABwAH - cAAAAAAAcAAAAAAAAAAAAAAAAAAABwcHAHBwBwcAcABwcAcAcAcHd3cHd3d3cAAAAAAAAAAA//8AAIAB - AAA//AAAf/4AAH/+AAB//gAAdx4AAHv+AABz/gAAZ/4AAH/+AAB//gAAAAAAAAAAAACAAQAA//8AAIlQ - TkcNChoKAAAADUlIRFIAAAEAAAABAAgGAAAAXHKoZgAAC6xJREFUeJzt3c9rE2sbxvE7eQYUKXTTZcAu - zkYoRCgWSgQLboSACFIQ4sp/QChk4ap0VaQg9B8oCBaEIJRCFi6ECIaCUDEQ6KaIQhSEggSC2NKHeRc6 - eROb1qR9JvPj/n529XCmc058rrlm7plJplarCQCdslHvAIDoEACAYgQAoBgBAChGAACKEQCAYgQAoBgB - AChGAACKEQCAYgQAoBgBAChGAACKEQCAYgQAoBgBAChGAACKEQCAYgQAoJgX5sar1arfbDbl4OBARESs - tWH+OiA1jDEyNTUlMzMzUiwWM2H9nozLl4I2m03/1atX0ul0WOyAY5OTk3L//n2ZmZlxFghOAqBSqfg7 - OzsX3xsAQ5mfn5fFxcULB8GFAmBzc9Pf3d296D4AOKfZ2VkplUrnDoJzBUCj0fBfvHhBzQdiwBgjDx8+ - lHw+P3IQjBwA6+vrfqvVYvEDMXP16lV5/PjxSCEw0hjwyZMnLH4gpr58+SLlctkf5d8ZOgDK5bJ/eHjI - 4gdizForS0tLQ4fAUAFQLpd9Fj6QHMOGwD8DgMUPJNMwIXBmALD4gWT71zWBUwPgyZMnI11MABA/1toz - 1/LAANjY2PCPj4+54AekwOHhoWxsbAwMgYEBsLe3x+IHUqTZbA788xMBQPUH0mnQ2u4LgHq9zqwfSKnD - w0Op1+t9IdAXAFtbW2KMGe9eARibra2tvp+7AdBoNHxrLUd/IOUajUa3BXQD4OXLlxz9gZSz1srLly+7 - P3dfCXZ4eBjJDgEYr961nhX5/e4+jv6ADsYYqVarvsifAHj37l20ewRgbKy13TWfFRHhrj9Al+A0ICvC - 67oBbYJT/my9Xuf8H1DGWiv1et3Pfvv2jQYAKGOMkc+fP0v206dPzP8BhVqtlmR//foV9X4AGDNrrfz6 - 9UuynU4n6n0BEIFOp8MUANDKWitZFj+gkzFGslwABHSiAQCK0QAAxWgAgGI0AEAxGgCgGA0AUIwGAChG - AwAUowEAitEAAMVoAIBiNABAMRoAoBgNAFCMBgAo5xljnL0RiDYBhMv1AdtzvfgnJiacbA/ASZ1Ox+kB - 21kDsNbK/Py8LC4uZhzsG4ABqtWq/+bNGyfbcnoNwBgjV65ccbItAOPhbApgrZWfP3862RaAwX7+/Ons - WpsxhgYAJMmVK1ecXQOw1tIAAM1oAECCOD8FoAEAyeH8FIAGAOhFAwAShCkAoBhTAADO0ACABGEKACjG - FACAMzQAIEGYAgCKMQUA4AwNAEgQpgCAYkwBADhDAwAShCkAoBhTAADO0ACABGEKACjGFACAMzQAIEGY - AgCKMQUA4IzTbwceRwNoNBp+mNvP5/N8uSliKzgFcLFunX878DgawI8fP2R7ezvMX+E/e/aMEEAsqZ8C - LCwsZO7evRvq71haWgq1ZQBxkchrAIQAtGIK8AchAI2YAvQgBICLSWwDCBAC0IRnAQYgBKCF+inAaQgB - YHSpaAABQgBpxxTgHwgBpBlTgCEQAsBwUtcAAoQA0ogpwAgIAaQNU4AREQLA6VLdAAKEANKCKcA5EQJI - A6YAF0AIAP3UNIAAIYAkYwrgACGApGIK4AghACiZApyGEEDSMAVwjBBAkjAFCAEhAK3UN4AAIYAkYAoQ - IkIAcccUIGSEADShAQxACCCumAKMCSGAOGIKMEaEANKOBvAPhADihClABAgBxAVTgIgQAkgjGsAICAFE - jSlAxMYRAuVymRDAQEwBYuDr16+hbdvV5wEMgwYwos3NTX93dzeUbQeLf21tLRPKL0DiMQWIUFiL3xjD - 4sdQmAJEJMwjf4DFj3GjAQyB2o+4cH0K4NEAzhZm7Q+w+DEspgBjRO1H2nEN4BTUfsQRU4Ax4Go/4oop - QMio/dCEBtCD2o+441mAkLD4kQRMAULA4odW6hsAix9JwhTAIS74IWlcnwKovRNQ65G/Vqv5r1+/luPj - Y2d/keLCGCNzc3OyuLgYu//vceUZY5z8RUhSA9jc3PQ/fvwYyrbjuvjr9bq/tbWVukXfy1orOzs7srOz - 48/OzkqpVIrVZ+BCcArg4nNU+SyAxtq/sbHh7+3tpXrx/213d1f29/f95eXlWH0WF8UU4ALCrv3GmNgt - /kqlom7xB9rttjx9+pTXq51BzRRAY+0XEdnZ2VG5+APfv3+XarWamhBgCnAOwZE/zIUQx8W/srLi845B - kVqtFvUuOMOzACPSWPsD7XZb9dE/YK2VRqORmhbgUqobgNbaL/L7qj9H//9LSwvgjUBD0ni1v9fnz5+j - 3oVYabVaUe+CE0wBhqC59gcODg6i3gUkQOquAWiu/b2mpqY4//8jTadCTAHOoPVq/yDT09NR70JsWGtl - amoq6t1wginAKaj9/QqFQqb3FWTa3blzJ+pdiKVUNABq/2Ce50W9C7GRz+cT9/kNwhuB/kLtP93q6mpG - JF3nwKMyxsjt27ej3g1nmAL0CPvIn7TaP8j169dFRF8IBJ/fxMSEFIvFRH+GYUpsAwjzyJ/k2v+3UqmU - yeVyIqIvBCYmJiRtTwMyBZBwj/yBNCz+wOPHjzMLCwsi0v/dBGkU/PflcrnULX4R3gjUt/jD+oucpsUf - KBaLmWKxKJVKxf/w4UPUuxOaa9euyaNHj1L3+YUlc+PGDd9VCMzPz/M6JiBElUrFf//+vbM3AiX2GgCg - EVMAAM7QAIAEYQoAKMazAACcoQEACcKzAIBiTAEAOEMDABKEKQCgGFMAAM7QAIAEYQoAKMYUAIAzNAAg - QZgCAIoxBQDgDA0ASBCmAIBiTAEAOEMDABKEKQCgGFMAAM7QAIAEYQoAKMYUAIAzNAAgQZgCAIoxBQDg - DA0ASBCmAIBiTAEAOEMDABKEKQCgWGynACJCAwASxlkDABA+l6cAIg6vAYgIpwBAyFyeAog4bABcBASS - J+tqQ1wEBMLnfArgeZ6zDR4dHTnZDoDBjo6OnJ0CeJ4n2cuXLzvZmIhIq9Vyti0AJ7VaLScHbGOMXL58 - 2W0AfP/+3dm2AJx0cHDgpAFYa38HQC6Xc7BbAMbB5QQgl8tJdnp62ulGV1ZWfGcbA9C1srLiu7wHYHp6 - WrKFQiHjcqPtdlvq9TohADhUr9f9drvt9GBdKBQyzsaAvV69ehXGZgG1tra2nG3LGNO9kJgV+T0OcH1L - 8NLSkt9sNmkCwAU0m02/XC77Lo/81lrxPE9E/gTAzZs3nW2818bGhqyvrxMCwDmsr6/7z58/d1r7A8Ga - z9RqNRERKZfLvojbq4y9Jicn5datW7KwsJAJ5RcAKVCr1fy3b99Kp9MJZS0GTX9tbS0jIuIF/8DzPDk+ - Pnb+CwPtdlu2t7dle3ubRgBExForly5d6v7cvQj44MGD0I7+AOLBGCMPHjzo/twNgHw+n+m9OgggnfL5 - fPc0vG8MeO/evfHvDYDQBQf3v9d4XwAUCoVMGCNBANEKRn+FQqHvIvyJG4FWV1czXAsA0iM4oK+urp6Y - wA28E3B2djbkXQIwTqet6YEBUCqVMpOTk5wKAAlnjBHP86RUKg28/+bUZwGWl5e5YQdIgUHVP3Dmw0Br - a2tOnxQEMD7GmO4df6f559OAhACQPMMsfpEh3wochAA3CgHxFqzRYRa/yAivBV9bW8sEjxASAkC8BAvf - 87yhF7/IiN8LsLq6mgneIUgIAPFgjBFrreRyuTMv+A3SfRx4FI1Gw3/x4oWIhPf4MIB/Cw7EDx8+7LvH - f1jnCoDA5uam//HjRxEhCIBxM8bI9evXT53xD+NCARCoVCr++/fvRYQgAMLSe9o9Nzcni4uLF75Xx0kA - BJrNpl+tVuXg4KDvzwkFYDSDrrFNTU1JsViUmZkZZzfpOQ2Av1WrVX9/f5+vDAPOIZfLyX///SfFYjG0 - u3JDDQAA8RbK9wIASAYCAFCMAAAUIwAAxQgAQDECAFCMAAAUIwAAxQgAQDECAFCMAAAUIwAAxQgAQDEC - AFCMAAAUIwAAxQgAQDECAFCMAAAU+x+NMWWq83x3/gAAAABJRU5ErkJggigAAAAwAAAAYAAAAAEACAAA - AAAAAAkAAAAAAAAAAAAAAAEAAAABAAAAAAAAMTExADc3NwA9PT0AQUFBAEhISABNTU0AV1dXAFtbWwBe - Xl4AY2NjAGhoaABtbW0AcHBwAJGRkQCUlJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQEBAQEBAQEBAQEBAQEBAQEB - AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFAAAAAA4BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB - AQEBAQEBAQEBAQEBAQ4AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB - AQEADAEBAQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwBAQEMAwEBBQAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAQEDAQEBDQAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAQEBAQEBDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAANAQEBAQEBDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN - AQEBAQEBDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAQEBAQEBDQAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAQEBAQEBDQAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAQEBAQEBDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAANAQEBAQEBDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN - AQEBAQEBDQAAAAAABQEBAQ0AAAAAAAAAAA4BAQEBAQEBAQEBAQoAAAAAAAAAAAANAQEBAQEBDQAAAAAA - AAUBAQENAAAAAAAAAAcBAQEBAQEBAQEBAQEAAAAAAAAAAAANAQEBAQEBDQAAAAAAAAAFAQEBDQAAAAAA - AAABAQEBAQEBAQEBAQ0AAAAAAAAAAAANAQEBAQEBDQAAAAAAAAAABQEBAQ0AAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAANAQEBAQEBDQAAAAAAAAAAAAcBAQENAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN - AQEBAQEBDQAAAAAAAAAAAAAFAQEBDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAQEBAQEBDQAAAAAA - AAAAAAAJAQEBCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAQEBAQEBDQAAAAAAAAAAAAkBAQEJAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAQEBAQEBDQAAAAAAAAAACQEBAQkAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAANAQEBAQEBDQAAAAAAAAAJAQEBCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN - AQEBAQEBDQAAAAAAAAkBAQEJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAQEBAQEBDQAAAAAA - CQEBAQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAQEBAQEBDQAAAAAADg4ODgAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAQEBAQEBDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAANAQEBAQEBDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN - AQEBAQEBDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAQEBAQEBDQAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAQEBAQEBDQAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAQEBAQEBAQUFAwUDBQMFAwUDBQUDBQMFAwUDBQUDBQMFAwUF - AwUDBQMFAwUFAwUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB - AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB - AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwEBAQEBAQEBAQEBAQEBAQEBAQEB - AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDDAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB - AQEBAQEBAQEBAQEBAQEMAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB - AQEAAA4BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ4AAAAABQEBAQEB - AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD/ - //////8AAP///////wAA////////AADgAAAAAAcAAIAAAAAAAQAAgAAAAAABAAAH/////+AAAA////// - 8AAAD//////wAAAP//////AAAA//////8AAAD//////wAAAP//////AAAA//////8AAAD//////wAAAP - //////AAAA+D/AAf8AAAD8H8AB/wAAAP4P4AH/AAAA/wf///8AAAD/g////wAAAP/B////AAAA/8H/// - 8AAAD/g////wAAAP8H////AAAA/g////8AAAD8H////wAAAPg/////AAAA+H////8AAAD//////wAAAP - //////AAAA//////8AAAD//////wAAAP//////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAADgAAAAAAcAAP///////wAA////////AAD/ - //////8AAP///////wAAKAAAACAAAABAAAAAAQAIAAAAAAAABAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAy - MjIAOzs7AD4+PgBBQUEATk5OAFVVVQBeXl4AY2NjAG1tbQBycnIAgYGBAIWFhQCQkJAAlJSUAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAADg4NDQ4NDQ4NDQ4NDQ4NDQ4NDQ4NDQ4NDQ4AAAAABwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB - AQEBAQEHAAwBAQIEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAQEMBAEJAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAJAQQBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEAAAAABQQG - AAAAAAAACAQEBAQEBAYAAAAAAAAAAQEBAQAAAAAAAgEFAAAAAAABAQEBAQEBAQAAAAAAAAABAQEBAAAA - AAAAAgEFAAAAAAAODQ0ODQ0AAAAAAAAAAAEBAQEAAAAAAAAAAgEFAAAAAAAAAAAAAAAAAAAAAAAAAQEB - AQAAAAAAAAAOAQEMAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAAAAAEBCQAAAAAAAAAAAAAAAAAAAAAA - AAEBAQEAAAAAAAABAQkAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQAAAAAAAQEJAAAAAAAAAAAAAAAAAAAA - AAAAAAABAQEBAAAAAAoKDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEBAQEHDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsHAQEBAQEBAQEBAQEBAQEB - AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBAEBAQEBAQEB - AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQQMAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBDAAHAQEB - AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQcAAAAADg0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ4AAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAA///////////gAAAHgAAAAQAAAAAf///4P////D////w////8P////D////w8fgH8Pj4B/D8fA/w/ - j//8P4f//D+P//w/H//8Pj///Dx///w////8P////D////wAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAHg - AAAH//////////8oAAAAGAAAADAAAAABAAgAAAAAAEACAAAAAAAAAAAAAAABAAAAAQAAAAAAADExMQA0 - NDQAQkJCAEhISABRUVEAVlZWAF5eXgBhYWEAZmZmAGtrawBsbGwAcHBwAHV1dQB4eHgAg4ODAISEhACT - k5MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAQEBAQEBAQEBAQEBAQEB - AQEBAQEGAAkBBwwMDAwMDAwMDAwMDAwMDAwMDAcBCQEEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAQEGAAAA - AAAAAAAAAAAAAAAAAAAAAAAGAQEGAAAAAAAAAAAAAAAAAAAAAAAAAAAGAQEEAAAAAAAAAAAAAAAAAAAA - AAAAAAAEAQEGAAAADBEAAAAAAAwMDAwMAAAAAAAGAQEGAAAACgEPAAAABgEBAQEBAAAAAAAGAQEGAAAA - AAoBDwAAAAAAAAAAAAAAAAAEAQEGAAAAAAADAQAAAAAAAAAAAAAAAAAGAQEEAAAAAA4BDAAAAAAAAAAA - AAAAAAAGAQEGAAAADgEMAAAAAAAAAAAAAAAAAAAEAQEGAAAACQ8AAAAAAAAAAAAAAAAAAAAGAQEGAAAA - AAAAAAAAAAAAAAAAAAAAAAAGAQEEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAQEDAAAAAAAAAAAAAAAAAAAA - AAAAAAADAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQoBAQEB - AQEBAQEBAQEBAQEBAQEBAQEBCgAHAQEBAQEBAQEBAQEBAQEBAQEBAQEHAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8AgAABAAAAAAA///wAP//8AD///AA/ - //wAOfB8ADjgfAA8f/wAPn/8ADx//AA4//wAOf/8AD///AA///wAP//8AAAAAAAAAAAAAAAAAIAAAQD/ - //8A////ACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAMjIyADk5OQA8 - PDwASkpKAFFRUQBhYWEAbGxsAHJycgB/f38AhYWFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAA - AAAAAAAAAAAHBgYGBgYGBgYGBgYGBwAECAAAAAAAAAAAAAAAAAgEAQAAAAAAAAAAAAAAAAAAAQEAAAAA - AAAAAAAAAAAAAAEBAAAAAAAAAAAAAAAAAAABAQAAAAMAAAAGBgYAAAAAAQEAAAAAAwAAAAAAAAAAAAEB - AAAABQkAAAAAAAAAAAABAQAACAoAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAAAAAA - AAABAQEBAQEBAQEBAQEBAQEBAQQBAQEBAQEBAQEBAQEBAQQABwYGBgYGBgYGBgYGBgcAAAAAAAAAAAAA - AAAAAAAAAP//AACAAQAAP/wAAH/+AAB//gAAf/4AAHceAAB7/gAAc/4AAGf+AAB//gAAf/4AAAAAAAAA - AAAAgAEAAP//AACJUE5HDQoaCgAAAA1JSERSAAABAAAAAQAIBgAAAFxyqGYAAAtvSURBVHic7d1rqKVl - GYDhe6+Zxsyc8kC2OohlZagRPhSRiaVBByspsiI1O0BnMSgzSkgK7Fx2gH4FoWlmBkGZopDVMARN8Iik - loVlhrOiHM1Rq5lx3P1Ya3Z7z+yZffpO63vvC/wxs9d+39cfzz1rfWvtb4MkSZIkSZIkSZIkSZIkSZIk - SZIkSZIkSZIkSZKkFs00sUlErAeOAZ4MbAQOAdY1sbc0JXYDjwDbgX8Bd2fmo3VvWnkAImIGOAE4DTgV - OBE4Fnhc1XtJPbYLuAu4DdgE/AK4PTNnq9yksgBExHHAecC5wNFVrStpzj3AlcAVmXlnFQuuOQARcSrw - KeBVVawnaUmzwE3A5zJz01oWWvXARsQLgG8Cr1jLASStyS+BCzLzd6v55hUHICKeAHwWuABf10tdsIvx - P8afzsx/r+QbVxSAiDgeuIbxhT1J3XIb8LbMvGO53zBY7gMj4q3AFhx+qatOBLZMZnVZlvVefEScD3wH - OGiVB5PUjA3Am4fD4f2j0WjLUg9eMgAR8Ungq3iFX5oWM8AZw+Fw52g02nygBx4wABHxXuAyHH5pGp0+ - HA63jkaj3N8D9jvYEXEG8BP8yK40zXYDZ2bm9Yt9cdEARMQzgVuAI2o8mKRmbANOysy/7f2Ffd4FiIh1 - wA9w+KW+OAL4wWS2F1jsbcAPASfXfiRJTTqZ8WwvsOAlQEQ8FfgD8KSGDiWpOQ8Cz8/Mv+/5i72fAXwG - h1/qqycxnvE5c88AIuLpjH/+2A/7SP21Azg2M++Fhc8APorDL/XdQYxnHZg8A4iIDcBWvPIvlWAb8LTM - 3LnnGcDrcfilUhzBeObnXgK8vb2zSGrB2wFmImIA3Acc1u55JDXoAeDIAXASDr9UmsOAkwbAKW2fRFIr - ThkAx7V9CkmtOG4APK/tU0hqxfMG+Es8pFIdPWD8u/oklWfjADi07VNIasWhA+Dgtk8hqRUHD/CGn1Kp - Zpb9i0Ek9Y8BkApmAKSCGQCpYAZAKpgBkApmAKSCGQCpYAZAKpgBkApmAKSCGQCpYAZAKpgBkApmAKSC - GQCpYAZAKtj6itfbCWyveE1J/7cR2FDVYlUH4PrMfFPFa0qaiIgfA2+saj1fAkgFMwBSwQyAVDADIBXM - AEgFMwBSwQyAVDADIBXMAEgFMwBSwQyAVDADIBXMAEgFMwBSwQyAVDADIBXMAEgFMwBSwQyAVDADIBXM - AEgFMwBSwQyAVDADIBXMAEgFMwBSwQyAVDADIBWs6l8OWquIeClwZs3b3JGZ36t5D6kTpioAwBbgw8A5 - Ne4xGxFHZeZXatxD6oSpegmQmbuBdwJX1bjNDPCliLiwxj2kTpiqAIARkKo0dQGABRG4ssZtjIB6byoD - AHMReBdGQFq1qQ0AGAFpraY6ANBoBL5sBNQ3Ux8AaOyaABgB9UwvAgCQmY/RXAQ+XvMeUiN6EwBoNAJf - MgLqg14FAIyAtBK9CwAYAWm5ehkAMALScvQ2AGAEpKX0OgBgBKQD6X0AYEEE6v45fyOgqVJEAGAuAu/C - CEhzigkANB6Bi2reQ1qzogIAjUbgi0ZAXVdcAMAISHsUGQAwAhIUHABYEIErat7KCKiTig4AzEXg3RgB - Faj4AIARULkMwIQRUIkMwDxGQKUxAHsxAiqJAVhEwxH4RM17SPtlAPajwQh8wQioLQbgAIyA+s4ALMEI - qM8MwDIYAfWVAVgmI6A+MgArMC8Cdf8A0Rd8i1BNMAArdzBwdM177AL+XPMekgFYiYg4BLgOeHmN2+wC - zs7MH9W4hwQYgGWbN/yvqHEbh1+NMgDL4PCrrwzAEhx+9ZkBOACHX31nAPbD4VcJDMAiGhz+cxx+tckA - 7CUinkBzw39tjXtISzIA80yG/2c4/CqEAZhw+FUiA0Bjw/8oDr86pvgANDj8Zzv86pqiA+Dwq3Tr2z5A - W0oe/ohYDzwHeBqwseXjVOG/wFbgrsx8pO3DTJMiA1Dq8EfEC4CPAW8ADm/5OHX4b0T8HPh2Zl7f9mGm - QXEBaOh9/k4Nf0RsAL4OvA9Y1/Jx6vR44HXA6yLiZuDczBy1fKZOK+oawLzhP63Gbbo2/BuBm4EP0u/h - 39vpwJaIOL7tg3RZMQEodPgHwPeBl7V9lpY8A7guIo5s+yBdVUQAShz+ifczfkpcsmcBl7V9iK7qfQAa - HP5Ofchn8v99Sdvn6IizJxdAtZdeB6Dh4f9hjXusxquAo9o+REcMgHe0fYgu6m0ACh9+gNe2fYCOKf2l - 0KJ6GQCHH4Bj2z5Axzy77QN0Ue8C4PDP8cr3Qo+PiEPbPkTX9CoADv8C97d9gI7ZATzc9iG6pjcBcPj3 - 8Ze2D9Axf83M2bYP0TW9CECDw3/ulAw/wE1tH6Bjbmj7AF009QFoePivqXGPql2PLwP2mAWuavsQXTTV - AZgM/09x+PeRmQ8Bl7Z9jo74cWb+tu1DdNHUBmDe8J9e4zZTOfzzfAv4VduHaNlW4IK2D9FVUxkAh395 - MnMXcBbwu7bP0pJtwBsz8962D9JVUxcAh39lMvM+4GSgMz+n0JBbgJf41P/ApioADv/qZObDmflW4OWM - 74S0o+Uj1eUx4DfAO4EXZeZdLZ+n86btjkDPBa6e/FeXP2VmL183Z+YmYNPkE3EvpH/3BPy9dwBamakK - QGbeCtza9jmm3eQdgs1tn0Ptm6qXAJKqZQCkghkAqWAGQCqYAZAKZgCkghkAqWAGQCqYAZAKZgCkghkA - qWAGQCqYAZAKZgCkghkAqWAGQCqYAZAKZgCkghkAqWAGQCqYAZAKZgCkghkAqWAGQCqYAZAKZgCkghkA - qWAGQCqYAZAKZgCkghkAqWAGQCqYAZAKZgCkghkAqWAGQCqYAZAKNgBmK1xvpsK1JO2ryhmbHQD/qXDB - wytcS9K+qpyx/wyAhypc8BkVriVpX1XO2EMDYHuFCx4TEcdUuJ6kiclsHVPhktsHwD0VLjgDnFXhepL+ - 7yyqvQZwzwC4s8IFAS6MiCdWvKZUtMlMXVjxsncOgD9WvOhRwOcrXlMq3ecZz1aV/jgANle8KMD5EfG+ - GtaVijOZpfNrWHrzTEQMgPuAwypefBb4LPCZzKzyswZSESJiBrgE+DTVf8bmAeDImclG11LfxbsELgZu - NATS0iaD/2rgUiBq2uZHmfmW9ZM/XE19AQjgBmAUETcAdwP/AHbXtJ80jdYBT2H8Nt9rgWHN+10NsCcA - 1wHbgCNq3HAIvKfG9SUtzzbGMz/+YaDM3Alc3uaJJDXm8snML/hpwK8BO9o5j6SG7GA868C8AGTmvfgs - QOq7yyezDux7P4BLgAebPY+khjzIeMbnrJv/h9Fo9PBwOHyE8VVISf1yUWbePP8vFrsj0LeBXzdzHkkN - +TXj2V5g0U8XRcQzgVuo921BSc3YBpyUmX/b+wuL3hNw8sDz8MM60rTbDZy32PDDXtcA5huNRn8aDocj - 4PV4rz9pGs0CH8jMa/b3gP0GAGA0GuVwONwJvLLqk0mq3cWZ+Y0DPeCAAQAYjUabh8PhNuA1+ExAmgaP - ARdk5teWeuCSAQAYjUZbhsPhH4AzgA1rPJyk+jzC+DX/d5fz4BX9ix4RxwPXACeu4mCS6nUb8LbMvGO5 - 37CsZwB7jEajfw6Hw8uBg4AXr/T7JdViF3AZcE5mbl3JN676NX1EnAB8Ay8QSm36OfCRzLx9Nd+85ot6 - EXEK4zv+vLqK9SQtaRa4Ebg0M9d0T8/KBjYijmP84aFzgaOrWlfSnHuAK4ErMrOS2/lX/i/25H5mJwCn - AacyvmB4LPC4qveSemwXcBfjC3ubgF8At1d9X81GnrJHxHrG9zp7MrAROAQvIErz7Wb8Ft524F/A3Zn5 - aLtHkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJklSz/wEkcE5vsjodQQAAAABJRU5ErkJggigAAACA - AAAAAAEAAAEAIAAAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAyMjIBMjIyFjIyMiQyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigy - MjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigy - MjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigy - MjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigy - MjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigy - MjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigy - MjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMiQy - MjIWMjIyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMisyMjKDMjIyxTIyMvMyMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLzMjIyxTIyMoMyMjIrAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMjky - MjK8MjIy/jIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv4yMjK8MjIyOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADIyMgoyMjKaMjIy/TIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL9MjIymjIyMgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjIbMjIy0TIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy0TIyMhsAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIyGTIyMt0yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy3TIyMhkAAAAAAAAAAAAAAAAAAAAAAAAAADIyMgcyMjLMMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIyzDIyMgcA - AAAAAAAAAAAAAAAAAAAAMjIyjTIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIyjQAAAAAAAAAAAAAAADIyMiwyMjL7MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL7MjIyLAAAAAAAAAAAMjIyqDIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjKoAAAAADIyMhYyMjL6MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLgMjIyuDIyMrEyMjKxMjIysTIyMrEy - MjKxMjIysTIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEy - MjKxMjIysTIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEy - MjKxMjIysTIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEy - MjKxMjIysTIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEy - MjKxMjIysTIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEy - MjKxMjIysTIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEy - MjKxMjIysTIyMrEyMjKxMjIyuDIyMuAyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMvoyMjIWMjIyZzIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjLfMjIyRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMkUy - MjLfMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMmcyMjKoMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy5DIyMhkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMhkyMjLkMjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIyqDIyMtMyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjJaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMloyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLTMjIy8DIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy9jIyMggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyCDIyMvYyMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMvAyMjL8MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjLcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIy3DIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/DIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMtcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLXMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADIyMtcyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLXAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIy1zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMtcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLXMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy1wAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMtcy - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjLXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIy1zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMtcAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy - MjLXMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMtcyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLXAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMjIy1zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMtcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLXMjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy1wAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMtcyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIy1zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMtcA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAyMjLXMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMtcyMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjLXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIy1zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMtcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLXMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADIyMtcyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLXAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIy1zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMtcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLXMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy1wAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyDjIyMqEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEy - MjKxMjIysTIyMrEyMjKxMjIysTIyMmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMg8yMjJuMjIypDIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEy - MjKxMjIysTIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMrEyMjKxMjIysTIyMq8y - MjKWMjIySQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMtcy - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjLXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMjIyNDIyMu4yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/jIyMmoA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjI8MjIy6TIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIytzIyMg0AAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIy1zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMtcAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyNDIyMu4yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/jIyMmoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMjIyHTIyMu8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIyqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy - MjLXMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIyNDIyMu4yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/jIyMmoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjKUMjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL+MjIyMQAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMtcyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLXAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyNDIyMu4y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/jIyMmoAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMtYyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjJ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMjIy1zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMtcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyNDIyMu4yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/jIyMmoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIy4jIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMoEA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLXMjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy1wAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMjIyNDIyMu4yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/jIyMmkA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAyMjK6MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIyVwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMtcyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyNDIyMu4yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/jIyMmkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMlYyMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMucy - MjILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIy1zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMtcA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIyNDIyMu4yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/jIyMmkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADIyMqEyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL4MjIyRwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAyMjLXMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyNDIyMu8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/jIyMmkAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyATIyMm8y - MjLjMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL9MjIyvzIyMjUA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMtcyMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjLXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyNTIyMu8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/jIyMmkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMgEyMjIaMjIyKDIyMigyMjIoMjIyKDIyMigy - MjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigy - MjIoMjIyKDIyMigyMjIoMjIyJjIyMg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIy1zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMtcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMjIyNTIyMu8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/jIyMmkA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLXMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyNTIyMu8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/TIyMmkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADIyMtcyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLXAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIyNTIyMu8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/TIyMmkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIy1zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMtcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyNTIyMu8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/TIyMmgAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLXMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy1wAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyNTIyMu8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/TIyMmgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMtcy - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjLXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMjIyNTIyMu8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/TIyMmgA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIy1zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMtcAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyXDIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/TIyMjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy - MjLXMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMikyMjLnMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjJ7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMtcyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLXAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjIpMjIy5zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIyewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMjIy1zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMtcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMjIyKTIyMucyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMnsA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLXMjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy1wAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMikyMjLnMjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjJ7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMtcyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy - MjIpMjIy5zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIyewAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIy1zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMtcA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyKTIyMucyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMnoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAyMjLXMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMioy - MjLnMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjJ6AAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMtcyMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjLXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjIqMjIy5zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIyegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIy1zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMtcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyKjIyMucy - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMnoAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLXMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADIyMioyMjLoMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjJ6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADIyMtcyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLXAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjIqMjIy6DIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIyegAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIy1zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMtcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIyKjIyMugyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMnoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLXMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy1wAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMioyMjLoMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjJ6AAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMtcy - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjLXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAyMjIqMjIy6DIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL+MjIyegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIy1zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMtcAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyKjIyMugyMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/jIyMnkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy - MjLXMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMioyMjLoMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv4y - MjJ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMtcyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLXAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjIPMjIyrDIyMsMyMjLDMjIywzIyMsMy - MjLDMjIywzIyMsMyMjLDMjIywzIyMsMyMjLDMjIydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMjIy1zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMtcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLXMjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy1wAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMtcyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIy1zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMtcA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAyMjLXMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMtcyMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjLXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIy1zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMtcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLXMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADIyMtcyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLXAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIy1zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMtcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLXMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy1wAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMtcy - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjLXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIy1zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMtcAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy - MjLXMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMtcyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLpMjIydTIyMnUy - MjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUy - MjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUy - MjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUy - MjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUy - MjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUy - MjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUy - MjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUyMjJ1MjIydTIyMnUy - MjJ1MjIy6TIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMvwyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL8MjIy8DIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMvAyMjLUMjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy1DIyMqgyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjKoMjIyZzIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMmcyMjIWMjIy+jIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL6MjIyFgAAAAAyMjKoMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMqgAAAAAAAAAADIyMiwyMjL7MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL7MjIyLAAAAAAAAAAAAAAAADIyMo0y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMo0AAAAAAAAAAAAAAAAAAAAAMjIyBzIyMswyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLMMjIyBwAAAAAAAAAAAAAAAAAAAAAA - AAAAMjIyGTIyMt0yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy3TIyMhkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyGzIyMtEyMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMtEyMjIbAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIyCjIyMpoyMjL9MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv0y - MjKaMjIyCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMjsy - MjK9MjIy/jIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv4yMjK9MjIyOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjIrMjIygzIyMsUyMjLzMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy8zIyMsUyMjKDMjIyKwAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADIyMgEyMjIWMjIyJDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigy - MjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigy - MjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigy - MjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigy - MjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigy - MjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigy - MjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigyMjIoMjIyKDIyMigy - MjIoMjIyJDIyMhYyMjIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////AAAAAAAAAAAAAAAAAP//+AAAAAAAAAAAAAAAAAAf/+AAAAAAAAAAAAAAAA - AAB/+AAAAAAAAAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAA/gAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAA - AAAAAAAAA8AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAQAAAAAA - AAAAAAAAAAAAAAAAB////////////////+AAAA/////////////////wAAAf////////////////+AAA - H/////////////////gAAD/////////////////8AAA//////////////////AAAP/////////////// - //wAAD/////////////////8AAA//////////////////AAAP/////////////////wAAD////////// - ///////8AAA//////////////////AAAP/////////////////wAAD/////////////////8AAA///// - /////////////AAAP/////////////////wAAD/////////////////8AAA//////////////////AAA - P/////////////////wAAD/////////////////8AAA//////////////////AAAP/////////////// - //wAAD/////////////////8AAA//////////////////AAAP/gAH///+AAAAB////wAAD/8AA////AA - AAAH///8AAA//gAH///gAAAAB////AAAP/8AA///4AAAAAP///wAAD//gAH//+AAAAAD///8AAA//8AA - ///gAAAAA////AAAP//gAH//4AAAAAP///wAAD//8AA//+AAAAAD///8AAA///gAH//wAAAAB////AAA - P//8AA//8AAAAA////wAAD///gAH//wAAAA////8AAA///8AA////////////AAAP///gAH///////// - //wAAD///8AA///////////8AAA////gAH///////////AAAP///8AA///////////wAAD////gAH/// - ///////8AAA////8AA///////////AAAP///+AAf//////////wAAD////AAP//////////8AAA////g - AH///////////AAAP///wAD///////////wAAD///4AB///////////8AAA///8AA////////////AAA - P//+AAf///////////wAAD///AAP///////////8AAA///gAH////////////AAAP//wAD////////// - //wAAD//4AB////////////8AAA//8AA/////////////AAAP/+AAf////////////wAAD//AAP///// - ///////8AAA//gAH/////////////AAAP/wAD/////////////wAAD/4AB/////////////8AAA///// - /////////////AAAP/////////////////wAAD/////////////////8AAA//////////////////AAA - P/////////////////wAAD/////////////////8AAA//////////////////AAAP/////////////// - //wAAD/////////////////8AAA//////////////////AAAP/////////////////wAAD////////// - ///////8AAA//////////////////AAAP/////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAA - AAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPg - AAAAAAAAAAAAAAAAAAAH8AAAAAAAAAAAAAAAAAAAD/gAAAAAAAAAAAAAAAAAAB/+AAAAAAAAAAAAAAAA - AAB//4AAAAAAAAAAAAAAAAAB///wAAAAAAAAAAAAAAAAD/////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////8o - AAAAYAAAAMAAAAABACAAAAAAAICUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMQ8x - MTFMMjIyfDExMZUyMjKdMTExnTExMZ0xMTGdMjIynTExMZ0xMTGdMjIynTExMZ0xMTGdMjIynTExMZ0x - MTGdMjIynTExMZ0xMTGdMjIynTExMZ0xMTGdMjIynTExMZ0yMjKdMTExnTExMZ0yMjKdMTExnTExMZ0y - MjKdMTExnTExMZ0yMjKdMTExnTExMZ0yMjKdMTExnTExMZ0yMjKdMTExnTExMZ0yMjKdMTExnTExMZ0y - MjKdMTExnTExMZ0xMTGdMjIynTExMZ0xMTGdMjIynTExMZ0xMTGdMjIynTExMZ0xMTGdMjIynTExMZ0x - MTGdMjIynTExMZ0xMTGdMjIynTExMZ0xMTGdMjIynTExMZ0xMTGdMjIynTExMZ0xMTGdMjIynTExMZ0x - MTGdMjIynTExMZUxMTF8MjIyTDExMQ8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAxMTEgMjIynDExMfIxMTH+MjIy/zExMf4yMjL/MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4y - MjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMfExMTGcMjIyIAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyAjIyMm4yMjL1MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy9TIyMm4yMjICAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTECMjIyljExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4yMjL/MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTGWMjIyAgAAAAAA - AAAAAAAAAAAAAAAyMjKDMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIygwAAAAAAAAAAAAAAADExMUExMTH8MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4yMjL/MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/DExMUEAAAAAMjIyAzExMcwx - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4yMjL/MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4y - MjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMcwxMTEDMjIyQDExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/TExMdYy - MjLFMTExxDExMcQxMTHEMjIyxDExMcQxMTHEMjIyxDExMcQxMTHEMjIyxDExMcQxMTHEMjIyxDExMcQx - MTHEMjIyxDExMcQxMTHEMjIyxDExMcQyMjLEMTExxDExMcQyMjLEMTExxDExMcQyMjLEMTExxDExMcQy - MjLEMTExxDExMcQyMjLEMTExxDExMcQyMjLEMTExxDExMcQyMjLEMTExxDExMcQyMjLEMTExxDExMcQx - MTHEMjIyxDExMcQxMTHEMjIyxDExMcQxMTHEMjIyxDExMcQxMTHEMjIyxDExMcQxMTHEMjIyxDExMcQx - MTHEMjIyxDExMcQxMTHEMjIyxDExMcQxMTHEMjIyxDExMcQxMTHEMjIyxDExMcQxMTHEMjIyxTExMdYx - MTH9MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTFAMjIylTIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjLJMjIyJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjInMjIyyTIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjKVMjIyzzExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMeYxMTEUAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyFDExMeYx - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTHPMjIy8DExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMYkA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADExMYkxMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTHwMjIy/TIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMmQyMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL9MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMWEAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADExMWExMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMWEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMWExMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMmEy - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMWEA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADExMWExMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMWEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMWExMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMmEAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMmEyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMWEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMWExMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMWEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMWEx - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMmEA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADIyMmEyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMWEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMWExMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMWEAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADExMWExMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMmEyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMWEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMWEx - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMmEA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADIyMmEyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMWEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMUgx - MTHDMjIyxDExMcQxMTHEMjIyxDExMcQxMTHEMjIyxDExMbUxMTEaAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExBzExMWsy - MjK1MTExxDExMcQyMjLEMTExxDExMcQyMjLEMTExxDExMcQxMTHEMjIyxDExMcQxMTHEMjIyxDExMcQx - MTHEMjIyxDExMcQxMTHEMjIywDExMZgxMTEqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMWExMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMWEAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTF6MjIy/jExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTHVMjIyGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAyMjIEMTExtzExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTHzMjIyPgAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADExMWExMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyezIyMv4y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy1DIyMhkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjJfMjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy0zIyMgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMmEyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMWEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADExMXoxMTH9MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMdUx - MTEaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy - MjKkMTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/DExMR0AAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMWEx - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMWEA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTF6MjIy/jExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTHVMjIyGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjKeMTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy+zExMRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADExMWExMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIyfDIyMv4yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy1DIyMhgA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjJPMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIyxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMmEyMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMWEAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMXsxMTH9MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMdQyMjIZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMTExljExMf0yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTHjMjIyKAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADExMWExMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMWEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAxMTF7MjIy/jExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4yMjLUMTExGAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExATExMUUyMjKOMTExnTExMZ0y - MjKdMTExnTExMZ0yMjKdMTExnTExMZ0xMTGdMjIynTExMZ0xMTGdMjIynTExMZ0xMTGdMjIynTExMZ0x - MTGdMjIymTExMXAxMTETAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMWExMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyfDIyMv4yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy0zIyMhgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMmEy - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMWEA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADExMXsxMTH9MjIy/zExMf4xMTH+MjIy/zExMf4yMjL/MTEx/jExMdQyMjIZAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADExMWExMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMWEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTF7MjIy/jExMf4xMTH+MjIy/zExMf4y - MjL/MTEx/jExMf4yMjLUMTExGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMWExMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMmEAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMjIyfDIyMv4yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy0zIyMhgAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMmEyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMWEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMXsxMTH9MjIy/zExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMdQyMjIZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMWExMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMWEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMT0x - MTH3MjIy/zExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMfQyMjI/AAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMWEx - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMmEA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIyOzIyMu8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy9TIyMkcA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADIyMmEyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMWEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTE7MjIy8TExMf4xMTH+MjIy/zExMf4y - MjL/MTEx/jExMf4yMjL1MTExRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMWExMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMWEAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMTwx - MTHvMjIy/zExMf4xMTH+MjIy/zExMf4yMjL/MTEx/jExMfQyMjJHAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADExMWExMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIyOzIyMu8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy9TIyMkcA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMmEyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMWEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTE8MjIy8jExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4yMjL1MTExRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMWEx - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMWEA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMT0x - MTHvMjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMfQyMjJGAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADExMWExMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIyPDIyMvAyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy9TIyMkYA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMmEyMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMWEAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTE8MjIy8jExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH1MjIyRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADExMWExMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMWEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMT0x - MTHwMjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMfMxMTFGAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMWExMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMWEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIyPDExMfAxMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy9TExMUYA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMWEx - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMmEA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjI8MjIy8jIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL0MjIyRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADIyMmEyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMWEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMT0x - MTHwMjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMfMxMTFGAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMWExMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMWEAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADExMQwxMTESMjIyEjExMRIxMTESMjIyEjExMRIxMTESMjIyEjExMQ4A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADExMWExMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMmEyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMWEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMWEx - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMWEA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADExMWExMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMmEyMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMWEAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADExMWExMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMWEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMWExMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMmEy - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMWEA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADExMWExMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMWEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMWExMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMmEAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMmEyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMeYxMTHXMjIy1zExMdcyMjLXMTEx1zExMdcxMTHXMjIy1zExMdcxMTHXMjIy1zExMdcx - MTHXMjIy1zExMdcxMTHXMjIy1zExMdcxMTHXMjIy1zExMdcxMTHXMjIy1zExMdcyMjLXMTEx1zExMdcy - MjLXMTEx1zExMdcyMjLXMTEx1zExMdcyMjLXMTEx1zExMdcyMjLXMTEx1zExMdcyMjLXMTEx1zExMdcy - MjLXMTEx1zExMdcyMjLXMTEx1zExMdcxMTHXMjIy1zExMdcxMTHXMjIy1zExMdcxMTHXMjIy1zExMdcx - MTHXMjIy1zExMdcxMTHXMjIy1zExMdcxMTHXMjIy1zExMdcxMTHXMjIy1zExMdcxMTHXMjIy1zExMdcx - MTHXMjIy1zExMdcxMTHXMjIy1zExMdcxMTHXMjIy1zExMeYxMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4yMjL/MTEx/jExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4yMjL/MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4y - MjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4y - MjL/MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4yMjL/MTEx/jExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/TExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4yMjL/MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH9MjIy8DIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjLwMjIyzzExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4y - MjL/MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTHPMjIylTExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4yMjL/MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTGVMjIyQDIyMv4yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv4yMjJAMjIyAzExMcwxMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4yMjL/MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMcwxMTEDAAAAADExMUEx - MTH8MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4yMjL/MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4y - MjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/DExMUEAAAAAAAAAAAAAAAAyMjKDMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIygwAAAAAAAAAAAAAAAAAAAAAxMTECMjIyljExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4yMjL/MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTGWMjIyAgAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIyAjExMW4xMTH1MjIy/zExMf4xMTH+MjIy/zExMf4yMjL/MTEx/jExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4y - MjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4xMTH+MjIy/zExMf4x - MTH+MjIy9TExMW4xMTECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjIhMjIynDIyMvIy - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMvIyMjKcMjIyIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADExMQ8xMTFMMjIyfDExMZUyMjKdMTExnTExMZ0xMTGdMjIynTExMZ0x - MTGdMjIynTExMZ0xMTGdMjIynTExMZ0xMTGdMjIynTExMZ0xMTGdMjIynTExMZ0xMTGdMjIynTExMZ0y - MjKdMTExnTExMZ0yMjKdMTExnTExMZ0yMjKdMTExnTExMZ0yMjKdMTExnTExMZ0yMjKdMTExnTExMZ0y - MjKdMTExnTExMZ0yMjKdMTExnTExMZ0yMjKdMTExnTExMZ0xMTGdMjIynTExMZ0xMTGdMjIynTExMZ0x - MTGdMjIynTExMZ0xMTGdMjIynTExMZ0xMTGdMjIynTExMZ0xMTGdMjIynTExMZ0xMTGdMjIynTExMZ0x - MTGdMjIynTExMZ0xMTGdMjIynTExMZ0xMTGdMjIynTExMZUxMTF8MjIyTDExMQ8AAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAA//////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////gAAAAAAAAAAAAB/+AAAAAAAAAAAAAAf4AAAAAAAAAAA - AAAHwAAAAAAAAAAAAAADwAAAAAAAAAAAAAADgAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAD////////////wAAH////////////4AAP////////////8AAP////////////8AAP////////// - //8AAP////////////8AAP////////////8AAP////////////8AAP////////////8AAP////////// - //8AAP////////////8AAP////////////8AAP////////////8AAP////////////8AAP////////// - //8AAP////////////8AAP////////////8AAP////////////8AAP8AH//4AAAH//8AAP+AD//wAAAD - //8AAP/AB//wAAAB//8AAP/gA//wAAAB//8AAP/wAf/wAAAB//8AAP/4AP/wAAAD//8AAP/8AH/4AAAD - //8AAP/+AD/4AAAH//8AAP//AB////////8AAP//gA////////8AAP//wAf///////8AAP//4AP///// - //8AAP//8AH///////8AAP//8AH///////8AAP//4AP///////8AAP//wAf///////8AAP//gA////// - //8AAP//AB////////8AAP/+AD////////8AAP/8AH////////8AAP/4AP////////8AAP/wAf////// - //8AAP/gA/////////8AAP/AB/////////8AAP+AD/////////8AAP8AH/////////8AAP8AP/////// - //8AAP////////////8AAP////////////8AAP////////////8AAP////////////8AAP////////// - //8AAP////////////8AAP////////////8AAP////////////8AAP////////////8AAP////////// - //8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAABwAAAAAAAAAAA - AAADwAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAH+AAAAAAAAAAAAAAf/gAAAAAAAAAAAAB///////////// - //////////////////////////////////////////////////////////////////////////////// - ////////////////////KAAAAFAAAACgAAAAAQAgAAAAAADAZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIyFjIyMmsyMjKqMjIyzTIyMtcyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgy - MjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgy - MjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgy - MjLYMTEx2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgy - MjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLXMjIyzTIyMqoyMjJrMjIyFgAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyCTExMYUyMjL0MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL0MjIyhTIyMgkAAAAAAAAAAAAAAAAAAAAAAAAAADIyMhgyMjLLMTEx/jIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIyyzIyMhgAAAAAAAAAAAAAAAAy - MjILMjIyzjIyMv8xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MTEx/jIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIyzjIyMgsAAAAAAAAAADIyMpYyMjL/MjIy/zExMf4yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIylgAAAAAyMjIlMjIy+jIyMv8yMjL/MTEx/jIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL6MjIyJTIyMoYy - MjL/MjIy/zIyMv8xMTH+MjIy/zIyMv8yMjLUMjIyazIyMk8yMjJPMjIyTzIyMk8yMjJPMjIyTzIyMk8y - MjJPMjIyTzIyMk8yMjJPMjIyTzIyMk8yMjJPMjIyTzIyMk8yMjJPMjIyTzIyMk8yMjJPMjIyTzIyMk8y - MjJPMjIyTzIyMk8yMjJPMjIyTzIyMk8yMjJPMjIyTzIyMk8yMjJPMjIyTzIyMk8yMjJPMjIyTzIyMk8y - MjJPMTExTzIyMk8yMjJPMjIyTzIyMk8yMjJPMjIyTzIyMk8yMjJPMjIyTzIyMk8yMjJPMjIyTzIyMk8y - MjJPMjIyTzIyMk8yMjJPMjIyTzIyMk8yMjJPMjIyTzIyMk8yMjJPMjIyazIyMtQyMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjKGMjIyyjExMf4xMTH+MTEx/jExMf4yMjL/MjIyyzIyMgsAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMjIyCzIyMssyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMsoyMjLwMTEx/jExMf4xMTH+MTEx/jIyMv8y - MjJPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyTzIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy8DIyMv4x - MTH+MTEx/jExMf4xMTH+MjIy/zIyMigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjIoMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL+MjIy/zExMf4xMTH+MTEx/jExMf4yMjL/MjIyJgAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMiYyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MTEx/jExMf4xMTH+MTEx/jIyMv8y - MjImAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyJjIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8x - MTH+MTEx/jExMf4xMTH+MjIy/zIyMiYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjImMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zExMf4xMTH+MTEx/jExMf4yMjL/MjIyJgAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMiYyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MTEx/jExMf4xMTH+MTEx/jIyMv8y - MjImAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyJjIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8x - MTH+MTEx/jExMf4xMTH+MjIy/zIyMiYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjImMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zExMf4xMTH+MTEx/jExMf4yMjL/MjIyJgAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMiYyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MTEx/jExMf4xMTH+MTEx/jIyMv8y - MjImAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyJjIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8x - MTH+MTEx/jExMf4xMTH+MjIy/zIyMiYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjImMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zExMf4xMTH+MTEx/jExMf4yMjL/MjIyJgAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMiYyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MTEx/jExMf4xMTH+MTEx/jIyMv8y - MjImAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyJjIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8x - MTH+MTEx/jExMf4xMTH+MjIy/zIyMiYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTEXMTExTzExMU8x - MTFPMTExTzExMU8xMTFPMTExTzExMSsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExBjExMT0xMTFPMTExTzExMU8xMTFPMTExTzExMU8x - MTFPMTExTzIyMk8yMjJPMjIyTzIyMk8yMjJPMjIyTzIyMk8yMjJJMjIyGQAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjImMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zExMf4xMTH+MTEx/jExMf4yMjL/MjIyJgAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADExMQQxMTGhMTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx8jExMT4AAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMScxMTHaMTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL3MjIybAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMiYyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MTEx/jExMf4xMTH+MTEx/jIyMv8y - MjImAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMQMxMTGjMTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx8TExMT4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMTExxDExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL7MjIyKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyJjIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8x - MTH+MTEx/jExMf4xMTH+MjIy/zIyMiYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMQMx - MTGhMTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx8jExMT8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADExMQ4xMTH6MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjJsAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjImMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zExMf4xMTH+MTEx/jExMf4yMjL/MjIyJgAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADExMQQxMTGiMTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx8jExMT4A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExBTExMe8xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMiYyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MTEx/jExMf4xMTH+MTEx/jIyMv8y - MjImAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMQMxMTGiMTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx8TExMT4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMTExgDExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLYMjIyCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyJjIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8x - MTH+MTEx/jExMf4xMTH+MjIy/zIyMiYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADExMQQxMTGiMTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx8jExMT4AAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTECMTExazExMcYxMTHYMTEx2DExMdgxMTHYMTEx2DExMdgx - MTHYMTEx2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLTMjIymzIyMhkAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjImMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zExMf4xMTH+MTEx/jExMf4yMjL/MjIyJgAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMQMxMTGjMTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx8TExMT0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMiYyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MTEx/jExMf4xMTH+MTEx/jIyMv8y - MjImAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMQMx - MTGiMTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx8jExMT4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyJjIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8x - MTH+MTEx/jExMf4xMTH+MjIy/zIyMiYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADExMQQxMTGiMTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx8jExMT0A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjImMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zExMf4xMTH+MTEx/jExMf4yMjL/MjIyJgAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMQQxMTGiMTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx8TExMT4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMiYyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MTEx/jExMf4xMTH+MTEx/jIyMv8y - MjImAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADExMQwxMTHlMTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx3TExMQYAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyJjIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8x - MTH+MTEx/jExMf4xMTH+MjIy/zIyMiYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTEHMTExsjExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMesx - MTExAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjImMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zExMf4xMTH+MTEx/jExMf4yMjL/MjIyJgAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExCDExMbMxMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4xMTHrMTExMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMiYyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MTEx/jExMf4xMTH+MTEx/jIyMv8y - MjImAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMQgx - MTGyMTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx6jExMTEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyJjIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8x - MTH+MTEx/jExMf4xMTH+MjIy/zIyMiYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAxMTEHMTExszExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMeoxMTEwAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjImMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zExMf4xMTH+MTEx/jExMf4yMjL/MjIyJgAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExCDExMbIxMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTHqMTExMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMiYyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MTEx/jExMf4xMTH+MTEx/jIyMv8y - MjImAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMQcxMTGzMTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx6zExMTEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyJjIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8x - MTH+MTEx/jExMf4xMTH+MjIy/zIyMiYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx - MTEIMTExszExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMesxMTEvAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjImMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zExMf4xMTH+MTEx/jExMf4yMjL/MjIyJgAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMTExCDExMbIxMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTHqMTExMQAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMiYyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTEmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMQcxMTG0MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx6jExMTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExJjExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jIyMv8y - MjL/MjIy/zIyMv8xMTH+MjIy/zIyMiYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjIIMjIyszIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMuoyMjIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjImMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4yMjL/MjIyJgAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMhMyMjI6MjIyOjIyMjoyMjI6MjIyOjIyMjoyMjI6MjIyHQAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMiYyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MTEx/jIyMv8y - MjImAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyJjIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8xMTH+MjIy/zIyMiYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjImMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4yMjL/MjIyJgAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMiYyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MTEx/jIyMv8y - MjImAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyJjIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8xMTH+MjIy/zIyMiYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjImMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4yMjL/MjIyJgAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMiYyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MTEx/jIyMv8y - MjImAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyJjIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8xMTH+MjIy/zIyMiYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjImMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4yMjL/MjIymzIyMokyMjKJMjIyiTIyMoky - MjKJMjIyiTIyMokyMjKJMjIyiTIyMokyMjKJMjIyiTIyMokyMjKJMjIyiTIyMokyMjKJMjIyiTIyMoky - MjKJMjIyiTIyMokyMjKJMjIyiTIyMokyMjKJMjIyiTIyMokyMjKJMjIyiTIyMokyMjKJMjIyiTIyMoky - MjKJMjIyiTIyMokyMjKJMjIyiTIyMokxMTGJMjIyiTIyMokyMjKJMjIyiTIyMokyMjKJMjIyiTIyMoky - MjKJMjIyiTIyMokyMjKJMjIyiTIyMokyMjKJMjIyiTIyMokyMjKJMjIyiTIyMokyMjKJMjIyiTIyMoky - MjKJMjIyiTIyMpsyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MTEx/jIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MTEx/jIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MTEx/jIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MTEx/jIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/jIyMv8yMjL/MjIy/zExMf4yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv4yMjLwMjIy/zIyMv8yMjL/MTEx/jIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy8DIyMsoy - MjL/MjIy/zIyMv8xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MTEx/jIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjLKMjIyhjIyMv8yMjL/MjIy/zExMf4yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMoYyMjIlMjIy+jIyMv8yMjL/MTEx/jIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL6MjIyJQAAAAAy - MjKWMjIy/zIyMv8xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MTEx/jIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMpYAAAAAAAAAADIyMgsyMjLOMjIy/zExMf4yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLOMjIyCwAAAAAAAAAAAAAAADIyMhgyMjLLMTEx/jIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIyyzIyMhgAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMgkxMTGGMjIy9DIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MTEx/jIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy9DIyMoYy - MjIJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjIWMjIyazIyMqoyMjLNMjIy1zIyMtgy - MjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgy - MjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgy - MjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgxMTHYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgy - MjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtcy - MjLNMjIyqjIyMmsyMjIWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////AAD/////////////AAD/ - ////////////AAD/////////////AAD/////////////AAD/////////////AAD4AAAAAAAAAAAfAADg - AAAAAAAAAAAHAADAAAAAAAAAAAADAACAAAAAAAAAAAABAACAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAA//////////8AAAAB//////////+AAAAB//////////+AAAAB//////////+AAAAB - //////////+AAAAB//////////+AAAAB//////////+AAAAB//////////+AAAAB//////////+AAAAB - //////////+AAAAB//////////+AAAAB//////////+AAAAB//////////+AAAAB//////////+AAAAB - +AP//AAAf/+AAAAB+AH/+AAAP/+AAAAB/AD/+AAAH/+AAAAB/gB/8AAAH/+AAAAB/wA/8AAAH/+AAAAB - /4Af+AAAH/+AAAAB/8AP+AAAP/+AAAAB/+AH//////+AAAAB//AD//////+AAAAB//gB//////+AAAAB - //wA//////+AAAAB//4Af/////+AAAAB//wA//////+AAAAB//gB//////+AAAAB//AD//////+AAAAB - /+AH//////+AAAAB/8AP//////+AAAAB/4Af//////+AAAAB/wA///////+AAAAB/gB///////+AAAAB - /AD///////+AAAAB+AH///////+AAAAB+AP///////+AAAAB//////////+AAAAB//////////+AAAAB - //////////+AAAAB//////////+AAAAB//////////+AAAAB//////////+AAAAB//////////+AAAAB - //////////+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAABAACAAAAAAAAAAAABAADAAAAAAAAAAAADAADg - AAAAAAAAAAAHAAD4AAAAAAAAAAAfAAD/////////////AAD/////////////AAD/////////////AAD/ - ////////////AAD/////////////AAD/////////////AAAoAAAASAAAAJAAAAABACAAAAAAAGBUAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTEIMTExPzExMWgyMjJ1MTExdjExMXYx - MTF2MTExdjExMXYxMTF2MTExdjExMXYyMjJ2MTExdjExMXYxMTF2MTExdjExMXYxMTF2MTExdjExMXYy - MjJ2MTExdjExMXYxMTF2MTExdjExMXYxMTF2MTExdjExMXYyMjJ2MTExdjExMXYxMTF2MTExdjExMXYx - MTF2MTExdjExMXYxMTF2MjIydjExMXYxMTF2MTExdjExMXYxMTF2MTExdjExMXYxMTF2MjIydjExMXYx - MTF2MTExdjExMXYxMTF2MTExdjExMXYxMTF2MjIydTExMWgxMTE/MTExCAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMTExDTExMYUxMTHsMTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx7DExMYUxMTENAAAAAAAAAAAAAAAAAAAAAAAAAAAx - MTEqMTEx2jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4y - MjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTHaMTExKgAAAAAAAAAAAAAAADIyMh8yMjLmMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy5jIyMh8AAAAAMjIyATExMcAxMTH+MTEx/jExMf4xMTH+MTEx/jExMf4y - MjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMcAxMTEBMjIySDExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL9MTEx/TExMf0x - MTH9MTEx/TExMf0xMTH9MTEx/TExMf0yMjL9MTEx/TExMf0xMTH9MTEx/TExMf0xMTH9MTEx/TExMf0y - MjL9MTEx/TExMf0xMTH9MTEx/TExMf0xMTH9MTEx/TExMf0yMjL9MTEx/TExMf0xMTH9MTEx/TExMf0x - MTH9MTEx/TExMf0xMTH9MjIy/TExMf0xMTH9MTEx/TExMf0xMTH9MTEx/TExMf0xMTH9MjIy/TExMf0x - MTH9MTEx/TExMf0xMTH9MTEx/TExMf0xMTH9MjIy/TExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTFIMjIypTExMf4xMTH+MTEx/jExMf4xMTH+MTExvzExMTkyMjIWMTExFTExMRUxMTEVMTExFTExMRUx - MTEVMTExFTExMRUyMjIVMTExFTExMRUxMTEVMTExFTExMRUxMTEVMTExFTExMRUyMjIVMTExFTExMRUx - MTEVMTExFTExMRUxMTEVMTExFTExMRUyMjIVMTExFTExMRUxMTEVMTExFTExMRUxMTEVMTExFTExMRUx - MTEVMjIyFTExMRUxMTEVMTExFTExMRUxMTEVMTExFTExMRUxMTEVMjIyFTExMRUxMTEVMTExFTExMRUx - MTEVMTExFTExMRUxMTEVMjIyFjExMTkxMTG/MTEx/jExMf4xMTH+MTEx/jExMf4xMTGlMjIy4DExMf4x - MTH+MTEx/jExMf4xMTHfMTExCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAxMTELMTEx3zExMf4xMTH+MTEx/jExMf4xMTHgMjIy+jExMf4xMTH+MTEx/jExMf4x - MTGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMTExlDExMf4xMTH+MTEx/jExMf4xMTH6MjIy/zExMf4xMTH+MTEx/jExMf4xMTGIAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExiTExMf4x - MTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExiTExMf4xMTH+MTEx/jExMf4x - MTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExiTExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjKJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIyiTIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4xMTH+MTEx/jExMf4x - MTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMTExiTExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTGIAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExiTExMf4x - MTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExiTExMf4xMTH+MTEx/jExMf4x - MTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExiTExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MTEx/jExMf4xMTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMTExiTExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4x - MTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMTExiTExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTGIAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMTExEDExMRUxMTEVMTExFTExMRUyMjIVMTExFTExMQYAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjIJMTExFTExMRUx - MTEVMTExFTExMRUxMTEVMTExFTExMRUxMTEVMjIyFTExMRUxMTEVMTExFTExMRUxMTEGAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExiTExMf4x - MTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMTExRDExMfMxMTH9MTEx/TExMf0yMjL9MTEx/TExMcMxMTEOAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExBTExMZgyMjL2MTEx/TExMf0xMTH9MTEx/TExMf0x - MTH9MTEx/TExMf0xMTH9MjIy/TExMf0xMTH9MTEx/TExMf0xMTHxMTExewAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExiTExMf4xMTH+MTEx/jExMf4x - MTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjKJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMkUy - MjL1MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLEMjIyDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIydzIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/jIyMk8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyiTIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zExMf4x - MTH+MTEx/jExMf4xMTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTFFMTEx9TExMf4y - MjL/MTEx/jExMf4xMTH+MTExxDExMQ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMTExuzExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMTExiTExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4x - MTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExRTExMfUyMjL/MTEx/jExMf4x - MTH+MTEx/jExMcQxMTEOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExnjExMf4y - MjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMXYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMTExiTExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTGIAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMUYyMjL1MTEx/jExMf4xMTH+MTEx/jExMf4x - MTHDMTExDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExJDExMeYyMjL/MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx0jExMRAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExiTExMf4x - MTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjJGMTEx9TExMf4xMTH+MTEx/jExMf4xMTH+MTExwzExMQ4A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMRMyMjJjMTExdjExMXYxMTF2MTExdjExMXYx - MTF2MTExdjExMXYxMTF2MjIydjExMXYxMTF2MTExdjExMXUxMTFaMTExCgAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExiTExMf4xMTH+MTEx/jExMf4x - MTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMTExRjExMfUxMTH+MTEx/jExMf4xMTH+MTEx/jExMcMyMjIOAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExiTExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MTEx/jExMf4xMTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADExMUYxMTH1MTEx/jExMf4xMTH+MTEx/jExMf4yMjLEMTExDQAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMTExiTExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4x - MTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx - MTFGMTEx9TExMf4xMTH+MTEx/jExMf4yMjL/MTExwzExMQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMTExiTExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTGIAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExYzExMf4x - MTH+MTEx/jExMf4yMjL/MTEx/jExMasAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExiTExMf4x - MTH+MTEx/jExMf4xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjKJAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjIhMjIy3zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy5TIyMicAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyiTIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zExMf4xMTH+MTEx/jExMf4xMTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADExMSExMTHfMTEx/jExMf4xMTH+MTEx/jExMf4yMjLlMTExJwAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExiTExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MTEx/jExMf4xMTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMTExITExMd8xMTH+MTEx/jExMf4xMTH+MTEx/jExMeQyMjInAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMTExiTExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4x - MTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjIhMTEx3zExMf4x - MTH+MTEx/jExMf4xMTH+MTEx5DExMScAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMTExiTExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTGIAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMSIyMjLfMTEx/jExMf4xMTH+MTEx/jExMf4x - MTHkMTExJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExiTExMf4x - MTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMTExIjExMd8yMjL/MTEx/jExMf4xMTH+MTEx/jExMeQxMTEoAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExiTExMf4xMTH+MTEx/jExMf4x - MTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx - MTEiMTEx3zExMf4yMjL/MTEx/jExMf4xMTH+MTEx5DExMScAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExiTExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MTEx/jExMf4xMTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMSIxMTHfMTEx/jExMf4y - MjL/MTEx/jExMf4xMTHkMTExJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMTExiTExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4x - MTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExIjExMd8xMTH+MTEx/jExMf4yMjL/MTEx/jExMeQx - MTEnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMTExiTExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTGIAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMTExMzExMU0xMTFNMTExTTExMU0yMjJNMTExTTExMR8AAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExiTExMf4x - MTH+MTEx/jExMf4xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjKJAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyiTIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zExMf4xMTH+MTEx/jExMf4xMTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExiTExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MTEx/jExMf4xMTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMTExiTExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4x - MTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMTExiTExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTGIAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExiTExMf4x - MTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExiTExMf4xMTH+MTEx/jExMf4x - MTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExiTExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MTEx/jExMf4xMTG2MTExYjExMWIyMjJiMTExYjExMWIxMTFiMTExYjExMWIxMTFiMTExYjExMWIy - MjJiMTExYjExMWIxMTFiMTExYjExMWIxMTFiMTExYjExMWIyMjJiMTExYjExMWIxMTFiMTExYjExMWIx - MTFiMTExYjExMWIyMjJiMTExYjExMWIxMTFiMTExYjExMWIxMTFiMTExYjExMWIxMTFiMjIyYjExMWIx - MTFiMTExYjExMWIxMTFiMTExYjExMWIxMTFiMjIyYjExMWIxMTFiMTExYjExMWIxMTFiMTExYjExMWIx - MTFiMjIyYjExMWIxMTFiMTExtjExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4y - MjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4y - MjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4y - MjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy+jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4y - MjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH6MjIy4DExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4y - MjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4xMTHgMjIypTExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4y - MjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTGlMjIySDExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTFIMjIyATExMcAx - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4y - MjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMcAxMTEBAAAAADIyMh8yMjLmMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy5jIyMh8AAAAAAAAAAAAAAAAxMTEqMTEx2jExMf4xMTH+MTEx/jExMf4y - MjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4x - MTHaMTExKgAAAAAAAAAAAAAAAAAAAAAAAAAAMTExDTExMYUxMTHsMTEx/jExMf4yMjL/MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4y - MjL/MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MjIy/zExMf4xMTH+MTEx7DExMYUxMTENAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTEIMTExPzExMWgyMjJ1MTExdjExMXYxMTF2MTExdjExMXYx - MTF2MTExdjExMXYyMjJ2MTExdjExMXYxMTF2MTExdjExMXYxMTF2MTExdjExMXYyMjJ2MTExdjExMXYx - MTF2MTExdjExMXYxMTF2MTExdjExMXYyMjJ2MTExdjExMXYxMTF2MTExdjExMXYxMTF2MTExdjExMXYx - MTF2MjIydjExMXYxMTF2MTExdjExMXYxMTF2MTExdjExMXYxMTF2MjIydjExMXYxMTF2MTExdjExMXYx - MTF2MTExdjExMXYxMTF2MjIydTExMWgxMTE/MTExCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////// - AAAA////////////AAAA////////////AAAA////////////AAAA////////////AAAA+AAAAAAAAAAf - AAAA4AAAAAAAAAAHAAAAwAAAAAAAAAADAAAAgAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAf////////+AAAAAA//////////AAAAAA//////////AAAAAA//////////A - AAAAA//////////AAAAAA//////////AAAAAA//////////AAAAAA//////////AAAAAA//////////A - AAAAA//////////AAAAAA//////////AAAAAA//////////AAAAAA/AP/+AAH//AAAAAA/AH/4AAD//A - AAAAA/gD/4AAB//AAAAAA/wB/4AAB//AAAAAA/4A/4AAB//AAAAAA/8Af4AAB//AAAAAA/+AP8AAD//A - AAAAA//AH//////AAAAAA//gD//////AAAAAA//wB//////AAAAAA//4B//////AAAAAA//wB//////A - AAAAA//gD//////AAAAAA//AH//////AAAAAA/+AP//////AAAAAA/8Af//////AAAAAA/4A///////A - AAAAA/wB///////AAAAAA/gD///////AAAAAA/AH///////AAAAAA/AP///////AAAAAA//////////A - AAAAA//////////AAAAAA//////////AAAAAA//////////AAAAAA//////////AAAAAA//////////A - AAAAA//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAABAAAAwAAAAAAAAAADAAAA4AAAAAAAAAAH - AAAA+AAAAAAAAAAfAAAA////////////AAAA////////////AAAA////////////AAAA//////////// - AAAA////////////AAAAKAAAAEAAAACAAAAAAQAgAAAAAAAAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjIFMjIyEzIyMhQyMjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQy - MjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQy - MjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQy - MjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQyMjIUMjIyFDIyMhMyMjIFAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyDjIyMnkyMjLRMjIy/DIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/DIyMtEyMjJ5MjIyDgAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyPTIyMuUyMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMuUyMjI9AAAAAAAAAAAAAAAAMjIyOzIyMvYy - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy9jIyMjsA - AAAAMjIyCzIyMuEyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjLhMjIyCzIyMm4yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMvcyMjLaMjIy2DIyMtgy - MjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgy - MjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgy - MjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgy - MjLYMjIy2jIyMvcyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMm4yMjLDMjIy/zIyMv8yMjL/MjIy/zIyMrYy - MjIRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjIRMjIytjIyMv8yMjL/MjIy/zIyMv8yMjLDMjIy8DIyMv8y - MjL/MjIy/zIyMvwyMjIYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMhgyMjL8MjIy/zIyMv8y - MjL/MjIy8DIyMv4yMjL/MjIy/zIyMv8yMjLsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMjIy7DIyMv8yMjL/MjIy/zIyMv4yMjL/MjIy/zIyMv8yMjL/MjIy6wAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADIyMusyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMusA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLrMjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjLrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIy6zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMusyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMusAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLrMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjLrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIy6zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMusy - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMusAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAyMjLrMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLrAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIy6zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy6wAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyAzIyMp0yMjLYMjIy2DIyMtgyMjLYMjIy2DIyMnMA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjJNMjIyxDIyMtgy - MjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtgyMjLYMjIy2DIyMtAyMjKAMjIyAwAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMusyMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMusAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjINMjIyxDIyMv8y - MjL/MjIy/zIyMv8yMjL+MjIydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy - MjIsMjIy+zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMnYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy - MjLrMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLrAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMg0yMjLEMjIy/zIyMv8yMjL/MjIy/zIyMv4yMjJ0AAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIybjIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjK8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIy6zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy6wAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyDTIyMsQyMjL/MjIy/zIyMv8yMjL/MjIy/jIyMnQA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMkQyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIykgAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMusyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMusAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjINMjIyxDIyMv8y - MjL/MjIy/zIyMv8yMjL+MjIydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyhDIyMvgy - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL+MjIyuzIyMhEA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLrMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMg0yMjLEMjIy/zIyMv8yMjL/MjIy/zIyMv4yMjJ0AAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAyMjIGMjIyFDIyMhQyMjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQy - MjIUMjIyDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMjIy6zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy6wAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyDTIyMsQyMjL/MjIy/zIyMv8yMjL/MjIy/jIyMnQA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADIyMusyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMusA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjINMjIyxDIyMv8y - MjL/MjIy/zIyMv8yMjL+MjIycwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLrMjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjLrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMg0yMjLSMjIy/zIyMv8yMjL/MjIy/zIyMv4yMjJmAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIy6zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjJOMjIy+TIyMv8yMjL/MjIy/zIyMv8yMjLeMjIyHgAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMusyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMusAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjJOMjIy+TIyMv8yMjL/MjIy/zIyMv8y - MjLeMjIyHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLrMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjLrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjJOMjIy+TIyMv8y - MjL/MjIy/zIyMv8yMjLdMjIyHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIy6zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy - MjJOMjIy+TIyMv8yMjL/MjIy/zIyMv8yMjLdMjIyHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMusy - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMusAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAyMjJPMjIy+TIyMv8yMjL/MjIy/zIyMv8yMjLdMjIyHgAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAyMjLrMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLrAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjJPMjIy+TIyMv8yMjL/MjIy/zIyMv8yMjLdMjIyHgAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIy6zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjJPMjIy+TIyMv8yMjL/MjIy/zIyMv8y - MjLdMjIyHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMusyMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMusAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjJPMjIy+TIyMv8y - MjL/MjIy/zIyMv8yMjLdMjIyHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy - MjLrMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLrAAAAAAAAAAAAAAAAAAAAAAAAAAAy - MjIDMjIyWzIyMmEyMjJhMjIyYTIyMmEyMjJhMjIyHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIy6zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy6wAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMusyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMusAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLrMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMjIy6zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy6wAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADIyMusyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMusA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLrMjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjLrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIy6zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy7zIyMjoyMjI6MjIyOjIyMjoyMjI6MjIyOjIyMjoy - MjI6MjIyOjIyMjoyMjI6MjIyOjIyMjoyMjI6MjIyOjIyMjoyMjI6MjIyOjIyMjoyMjI6MjIyOjIyMjoy - MjI6MjIyOjIyMjoyMjI6MjIyOjIyMjoyMjI6MjIyOjIyMjoyMjI6MjIyOjIyMjoyMjI6MjIyOjIyMjoy - MjI6MjIyOjIyMjoyMjI6MjIyOjIyMjoyMjI6MjIyOjIyMjoyMjI6MjIyOjIyMjoyMjI6MjIyOjIyMjoy - MjI6MjIyOjIyMu8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv4yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv4yMjLwMjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjLwMjIywzIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIywzIyMm4yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMm4yMjILMjIy4TIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMuEyMjILAAAAADIyMjsy - MjL2MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMvYy - MjI7AAAAAAAAAAAAAAAAMjIyPTIyMuUyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMuUyMjI9AAAAAAAAAAAAAAAAAAAAAAAAAAAyMjIOMjIyeTIyMtEyMjL8MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL8MjIy0TIyMnkyMjIOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMjIyBTIyMhMyMjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQy - MjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQy - MjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQy - MjIUMjIyFDIyMhQyMjIUMjIyFDIyMhQyMjITMjIyBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ - //////////////////////////////////////////wAAAAAAAA/4AAAAAAAAAfAAAAAAAAAA4AAAAAA - AAABAAAAAAAAAAAAAAAAAAAAAAH///////+AA////////8AH////////4Af////////gB////////+AH - ////////4Af////////gB////////+AH////////4Af////////gB////////+AH////////4AfAP/wA - Af/gB+Af+AAB/+AH8A/4AAH/4Af4B/gAAf/gB/wD/AAB/+AH/gH+AAf/4Af/AP/////gB/+Af////+AH - /8A/////4Af/wD/////gB/+Af////+AH/wD/////4Af+Af/////gB/wD/////+AH+Af/////4AfwD/// - ///gB+Af/////+AHwD//////4Af////////gB////////+AH////////4Af////////gB////////+AH - ////////4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAHAAAAAAAAAA+AAAAAAAAAH/AAAAAAAAD// - /////////////////////////////////////////ygAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo - KCgDMTExMjExMUwyMjJOMjIyTjExMU4yMjJOMjIyTjIyMk4xMTFOMjIyTjExMU4yMjJOMjIyTjExMU4y - MjJOMjIyTjExMU4yMjJOMjIyTjExMU4yMjJOMjIyTjExMU4yMjJOMjIyTjExMU4yMjJOMjIyTjIyMk4x - MTFOMjIyTjIyMk4xMTFOMjIyTjIyMk4xMTFOMjIyTjIyMk4xMTFMMTExMikpKQMAAAAAAAAAAAAAAAAA - AAAAAAAAADExMWEyMjLjMjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zIyMv8xMTH+MjIy/zExMf4y - MjL/MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zExMf4y - MjL/MjIy/zIyMv8xMTH+MjIy/zIyMv8xMTH+MjIy/zIyMv8xMTH+MjIy/zIyMv8xMTH+MjIy/zIyMuMx - MTFhAAAAAAAAAAAAAAAAMTExhjExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTExhgAAAAAyMjJEMjIy/jExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zExMf4y - MjL/MjIy/zIyMv8xMTH+MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zExMf4y - MjL/MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zIyMv8xMTH+MjIy/zIyMv8xMTH+MjIy/zIyMv8x - MTH+MjIy/zIyMv8xMTH+MjIy/zIyMv8xMTH+MjIy/jExMUQyMjK1MjIy/zExMf4yMjL/MjIyuzExMWYy - MjJiMjIyYjExMWIyMjJiMjIyYjIyMmIxMTFiMjIyYjExMWIyMjJiMjIyYjExMWIyMjJiMjIyYjExMWIy - MjJiMjIyYjExMWIyMjJiMjIyYjExMWIyMjJiMjIyYjExMWIyMjJiMjIyYjIyMmIxMTFiMjIyYjIyMmIx - MTFiMjIyYjIyMmIxMTFiMjIyYjIyMmIxMTFmMjIyuzIyMv8xMTH+MjIy/zExMbUxMTHvMTEx/jExMf4x - MTHbMDAwBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALi4uBTExMdsxMTH+MTEx/jExMe8y - MjL+MjIy/zExMf4yMjKxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMrEx - MTH+MjIy/zExMf4yMjL/MjIy/zExMf4yMjKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMrAxMTH+MjIy/zExMf4yMjL/MjIy/zExMf4yMjKwAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADIyMrAxMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTGwAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMbAxMTH+MTEx/jExMf4yMjL/MjIy/zExMf4y - MjKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMrAxMTH+MjIy/zExMf4x - MTH+MTEx/jExMf4xMTGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMbAx - MTH+MTEx/jExMf4yMjL/MjIy/zExMf4yMjKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMrAxMTH+MjIy/zExMf4yMjL/MjIy/zExMf4yMjKwAAAAAAAAAAAAAAAAAAAAADExMUMy - MjJiMjIyYjIyMmIxMTFeLy8vBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKioqATExMUgy - MjJiMjIyYjExMWIyMjJiMjIyYjExMWIyMjJiMjIyYjIyMmIxMTFWMDAwCgAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADIyMrAxMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTGwAAAAAAAAAAAA - AAAAAAAAADExMR4xMTHdMTEx/jExMf4xMTH+MTExsC8vLwYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMTExhjExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTExwAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMbAxMTH+MTEx/jExMf4yMjL/MjIy/zExMf4y - MjKwAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjIeMjIy3TIyMv8xMTH+MjIy/zExMbAvLy8GAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAMjIy0DExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zIyMv8x - MTH+MjIy/S0tLQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMrAxMTH+MjIy/zExMf4y - MjL/MjIy/zExMf4yMjKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExHzIyMt0xMTH+MjIy/zExMf4y - MjKwLy8vBgAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyeTExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zExMf4y - MjL/MjIy/zIyMv8xMTH+MjIyswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMrAx - MTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMR8x - MTHeMTEx/jExMf4xMTH+MTExsC8vLwYAAAAAAAAAAAAAAAAAAAAAAAAAADExMTQxMTFOMTExTjExMU4x - MTFOMTExTjExMU4xMTFOMTExTjExMU4xMTFCLy8vBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADExMbAxMTH+MTEx/jExMf4yMjL/MjIy/zExMf4yMjKwAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAxMTEfMjIy3TExMf4yMjL/MjIy/zExMbAvLy8GAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADIyMrAxMTH+MjIy/zExMf4yMjL/MjIy/zExMf4yMjKwAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExHzExMd0yMjL/MjIy/zExMf4yMjKwLy8vBgAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMrAxMTH+MjIy/zExMf4xMTH+MTEx/jExMf4x - MTGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExDjExMcgxMTH+MTEx/jExMf4x - MTHLMTExDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMbAxMTH+MTEx/jExMf4y - MjL/MjIy/zExMf4yMjKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAPMjIyxzExMf4y - MjL/MjIy/zExMcsxMTERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMrAx - MTH+MjIy/zExMf4yMjL/MjIy/zExMf4yMjKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMA8x - MTHHMjIy/zExMf4yMjL/MjIyyzExMREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMrAxMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTGwAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAMDAwDzExMccxMTH+MTEx/jExMf4xMTHLMTExEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADExMbAxMTH+MTEx/jExMf4yMjL/MjIy/zExMf4yMjKwAAAAAAAAAAAA - AAAAAAAAAAAAAAAwMDAPMjIyxzIyMv8xMTH+MjIy/zExMcsxMTERAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMrAxMTH+MjIy/zExMf4yMjL/MjIy/zExMf4y - MjKwAAAAAAAAAAAAAAAAAAAAADAwMA8yMjLHMjIy/zIyMv8xMTH+MjIyyzExMREAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMrAxMTH+MjIy/zExMf4x - MTH+MTEx/jExMf4xMTGwAAAAAAAAAAAAAAAAAAAAADExMVMxMTGIMTExiDExMYgxMTGEMTExEQAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMbAx - MTH+MTEx/jExMf4yMjL/MjIy/zExMf4yMjKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAADIyMrAxMTH+MjIy/zExMf4yMjL/MjIy/zExMf4yMjKwAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAADIyMrAxMTH+MjIy/zExMf4yMjL/MjIy/zExMf4yMjKwAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMrAxMTH+MjIy/zExMf4xMTH+MTEx/jExMf4x - MTGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMbAxMTH+MTEx/jExMf4y - MjL/MjIy/zExMf4yMjKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMrAx - MTH+MjIy/zExMf4yMjL/MjIy/zExMf4yMjL4MjIy6zExMesyMjLrMjIy6zExMesyMjLrMjIy6zIyMusx - MTHrMjIy6zExMesyMjLrMjIy6zExMesyMjLrMjIy6zExMesyMjLrMjIy6zExMesyMjLrMjIy6zExMesy - MjLrMjIy6zExMesyMjLrMjIy6zIyMusxMTHrMjIy6zIyMusxMTHrMjIy6zIyMusxMTHrMjIy6zIyMusx - MTHrMjIy6zIyMvgxMTH+MjIy/zExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zExMf4y - MjL/MjIy/zExMf4yMjL/MjIy/zIyMv8xMTH+MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zExMf4y - MjL/MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zIyMv8xMTH+MjIy/zIyMv8x - MTH+MjIy/zIyMv8xMTH+MjIy/zIyMv8xMTH+MjIy/zIyMv8xMTH+MjIy/zExMf4yMjL+MjIy/zExMf4y - MjL/MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zIyMv8xMTH+MjIy/zExMf4yMjL/MjIy/zExMf4y - MjL/MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zIyMv8x - MTH+MjIy/zIyMv8xMTH+MjIy/zIyMv8xMTH+MjIy/zIyMv8xMTH+MjIy/zIyMv8xMTH+MjIy/zExMf4x - MTHvMTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMe8yMjK1MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zIyMv8x - MTH+MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zExMf4y - MjL/MjIy/zExMf4yMjL/MjIy/zIyMv8xMTH+MjIy/zIyMv8xMTH+MjIy/zIyMv8xMTH+MjIy/zIyMv8x - MTH+MjIy/zIyMv8xMTH+MjIy/zExMbQyMjJEMjIy/jExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zExMf4y - MjL/MjIy/zIyMv8xMTH+MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zExMf4y - MjL/MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zIyMv8xMTH+MjIy/zIyMv8xMTH+MjIy/zIyMv8x - MTH+MjIy/zIyMv8xMTH+MjIy/zIyMv8xMTH+MjIy/jExMUQAAAAAMTExhjExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4x - MTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTEx/jExMf4xMTH+MTExhgAAAAAAAAAAAAAAADExMWEy - MjLjMjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zIyMv8xMTH+MjIy/zExMf4yMjL/MjIy/zExMf4y - MjL/MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zExMf4yMjL/MjIy/zIyMv8x - MTH+MjIy/zIyMv8xMTH+MjIy/zIyMv8xMTH+MjIy/zIyMv8xMTH+MjIy/zIyMuMxMTFhAAAAAAAAAAAA - AAAAAAAAAAAAAAAtLS0DMjIyMjExMUwyMjJOMjIyTjExMU4yMjJOMjIyTjIyMk4xMTFOMjIyTjExMU4y - MjJOMjIyTjExMU4yMjJOMjIyTjExMU4yMjJOMjIyTjExMU4yMjJOMjIyTjExMU4yMjJOMjIyTjExMU4y - MjJOMjIyTjIyMk4xMTFOMjIyTjIyMk4xMTFOMjIyTjIyMk4xMTFOMjIyTjIyMk4xMTFMMjIyMi4uLgMA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAP////// - /wAA////////AADgAAAAAAcAAMAAAAAAAwAAgAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAB//////gAAAP - //////AAAA//////8AAAD//////wAAAP//////AAAA//////8AAAD//////wAAAP//////AAAA8D/AAf - 8AAADwH8AB/wAAAPgPwAD/AAAA/AfAAf8AAAD+A+AB/wAAAP8B////AAAA/4D///8AAAD/gP///wAAAP - 8B////AAAA/gP///8AAAD8B////wAAAPgP////AAAA8B////8AAADwP////wAAAP//////AAAA////// - 8AAAD//////wAAAP//////AAAA//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAEAAMAAAAAAAwAA4AAAAAAHAAD///////8AAP////// - /wAA////////AAAoAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAbGxsDLS0tUjIyMoUyMjKJMjIyiTIyMokyMjKJMjIyiTIyMokyMjKJMjIyiTIyMoky - MjKJMjIyiTIyMokyMjKJMjIyiTIyMokyMjKJMjIyiTIyMokyMjKJMjIyiTIyMokyMjKJMjIyiTIyMoky - MjKFLi4uUh0dHQMAAAAAIyMjDjIyMsYyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIyxiYmJg4yMjKWMjIy/zIyMv8yMjLzMjIy6zIyMusyMjLrMjIy6zIyMusy - MjLrMjIy6zIyMusyMjLrMjIy6zIyMusyMjLrMjIy6zIyMusyMjLrMjIy6zIyMusyMjLrMjIy6zIyMusy - MjLrMjIy6zIyMusyMjLrMjIy8zIyMv8yMjL/MjIyljIyMuwyMjL/MjIysiMjIwQAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhISEEMjIysjIyMv8yMjLsMjIy/jIyMv8yMjJ1AAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDB1MjIy/zIyMv4yMjL/MjIy/zIyMnUA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLnUyMjL/MjIy/zIyMv8y - MjL/MjIydQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALi4udTIyMv8y - MjL/MjIy/zIyMv8yMjJ1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu - Li51MjIy/zIyMv8yMjL/MjIy/zIyMnUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAC4uLnUyMjL/MjIy/zIyMv8yMjL/MjIydQAAAAAAAAAALy8vKzIyMtwyMjLrMjIy0ioqKh0A - AAAAAAAAAAAAAAAAAAAAHh4eCzIyMsIyMjLrMjIy6zIyMusyMjLrMjIy6zIyMusyMjLTKCgoHgAAAAAA - AAAAAAAAAAAAAAAAAAAALi4udTIyMv8yMjL/MjIy/zIyMv8yMjJ1AAAAAAAAAAAAAAAALy8vNzIyMvAy - MjL/MjIy3CoqKh0AAAAAAAAAAAAAAAAiIiIsMjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8u - Li5TAAAAAAAAAAAAAAAAAAAAAAAAAAAuLi51MjIy/zIyMv8yMjL/MjIy/zIyMnUAAAAAAAAAAAAAAAAA - AAAALy8vNzIyMvAyMjL/MjIy3CoqKh0AAAAAAAAAAAAAAAAxMTFgMjIyiTIyMokyMjKJMjIyiTIyMoky - MjKJMjIycR8fHwQAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLnUyMjL/MjIy/zIyMv8yMjL/MjIydQAAAAAA - AAAAAAAAAAAAAAAAAAAALy8vNzIyMvAyMjL/MjIy3CoqKhwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALi4udTIyMv8yMjL/MjIy/zIyMv8y - MjJ1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyiTIyMv8yMjL/MjIymAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuLi51MjIy/zIyMv8y - MjL/MjIy/zIyMnUAAAAAAAAAAAAAAAAAAAAAAAAAADExMWUyMjL9MjIy/zIyMrYlJSUHAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4uLnUy - MjL/MjIy/zIyMv8yMjL/MjIydQAAAAAAAAAAAAAAAAAAAAAxMTFlMjIy/TIyMv8yMjK2JSUlBwAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAALi4udTIyMv8yMjL/MjIy/zIyMv8yMjJ1AAAAAAAAAAAAAAAAMTExZTIyMv0yMjL/MjIytiUlJQcA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAuLi51MjIy/zIyMv8yMjL/MjIy/zIyMnUAAAAAAAAAADExMSsyMjKuMjIysDIyMpYl - JSUHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAC4uLnUyMjL/MjIy/zIyMv8yMjL/MjIydQAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALi4udTIyMv8yMjL/MjIy/zIyMv8yMjJ1AAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuLi51MjIy/zIyMv8yMjL/MjIy/zIyMnUA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8vL3UyMjL/MjIy/zIyMv8y - MjL/MjIyyjIyMpwyMjKcMjIynDIyMpwyMjKcMjIynDIyMpwyMjKcMjIynDIyMpwyMjKcMjIynDIyMpwy - MjKcMjIynDIyMpwyMjKcMjIynDIyMpwyMjKcMjIynDIyMpwyMjKcMjIynDIyMpwyMjKcMjIyyjIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/jIyMuwyMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLsMjIyljIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMpYlJSUOMjIyxjIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjLGKCgoDgAAAAAeHh4DMDAwUjIyMoUy - MjKJMjIyiTIyMokyMjKJMjIyiTIyMokyMjKJMjIyiTIyMokyMjKJMjIyiTIyMokyMjKJMjIyiTIyMoky - MjKJMjIyiTIyMokyMjKJMjIyiTIyMokyMjKJMjIyiTIyMokyMjKFMDAwUiAgIAMAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAP//////////gAAAAQAAAAAAAAAAD///8B////gf///4H///+B////gf///4GDwA+BwcAPge - DgD4Hwf/+B+H//gfB//4Hg//+Bwf//gYP//4H///+B////gf///4AAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAgAAAAf//////////KAAAABgAAAAwAAAAAQAgAAAAAABgCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGBgYHxkZGScZGRknGRkZJxkZGScZ - GRknGRkZJxkZGScZGRknGRkZJxkZGScZGRknGRkZJxkZGScZGRknGRkZJxkZGScZGRknGRkZJxgYGB8A - AAAAAAAAACEhISExMTHQMTEx/jIyMv8xMTH+MTEx/jIyMv8xMTH+MTEx/jIyMv8xMTH+MjIy/zExMf4x - MTH+MTEx/jIyMv8xMTH+MTEx/jIyMv8xMTH+MTEx/jIyMv8xMTHQIyMjITIyMr0yMjL/MjIyyDIyMrAy - MjKwMjIysDIyMrAyMjKwMjIysDIyMrAyMjKwMjIysDIyMrAyMjKwMjIysDIyMrAyMjKwMjIysDIyMrAy - MjKwMjIysDIyMsgyMjL/MjIyvTIyMvsxMTHiGBgYAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWFgExMTHiMTEx+zIyMv8x - MTHXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTHXMTEx/jIyMv8yMjLXAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy - MjLXMjIy/zIyMv8xMTHXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTHXMTEx/jIyMv8xMTHXAAAAAAAAAAAx - MTFoMTExsDExMYUSEhIBAAAAAAAAAAAAAAAAMDAwczExMbAxMTGwMTExsDIyMrAxMTGtJiYmMwAAAAAA - AAAAAAAAAAAAAAAxMTHXMTEx/jIyMv8yMjLXAAAAAAAAAAAYGBgHMTExtjIyMv8xMTGZEhISAQAAAAAA - AAAAMjIy0TIyMv8yMjL/MjIy/zIyMv8yMjL/Li4ubwAAAAAAAAAAAAAAAAAAAAAyMjLXMjIy/zIyMv8x - MTHXAAAAAAAAAAAAAAAAGBgYBzIyMrYxMTH+MTExmRISEgEAAAAAGBgYDRsbGycbGxsnGxsbJxsbGycb - GxskEBAQAQAAAAAAAAAAAAAAAAAAAAAxMTHXMTEx/jIyMv8yMjLXAAAAAAAAAAAAAAAAAAAAACIiIgsy - MjLpMjIy/zExMWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy - MjLXMjIy/zIyMv8xMTHXAAAAAAAAAAAAAAAAExMTAzExMacxMTH+MTExqhcXFwQAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTHXMTEx/jIyMv8xMTHXAAAAAAAAAAAT - ExMDMTExpzIyMv8xMTGpFxcXBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAxMTHXMTEx/jIyMv8xMTHXAAAAAAAAAAAxMTFsMTExwzExMZgXFxcEAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTHXMTEx/jIyMv8y - MjLXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLXMjIy/zIyMv8xMTHXAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx - MTHXMTEx/jIyMv8xMTHpKioqdScnJ3UnJyd1JycndScnJ3UnJyd1JycndScnJ3UnJyd1JycndScnJ3Un - Jyd1JycndScnJ3UnJyd1JycndScnJ3UnJyd1JycndSkpKXUxMTHpMTEx/jIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMvsxMTH+MTEx/jIyMv8xMTH+MTEx/jIyMv8xMTH+MTEx/jIyMv8x - MTH+MjIy/zExMf4xMTH+MTEx/jIyMv8xMTH+MTEx/jIyMv8xMTH+MTEx/jIyMv8xMTH+MTEx+zIyMr0x - MTH+MTEx/jIyMv8xMTH+MTEx/jIyMv8xMTH+MTEx/jIyMv8xMTH+MjIy/zExMf4xMTH+MTEx/jIyMv8x - MTH+MTEx/jIyMv8xMTH+MTEx/jIyMv8xMTH+MTExvSMjIyEyMjLQMjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjLQJSUlIQAAAAAAAAAAGxsbHxsbGycbGxsnGxsbJxsbGycbGxsnGxsbJxsbGycbGxsnGxsbJxsbGycb - GxsnGxsbJxsbGycbGxsnGxsbJxsbGycbGxsnGxsbJxsbGx8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAP///wDAAAMAAAAAAAAAAAAf//gAP//8AD///AA///wAMOA8ADBgPAA4 - IDwAPD/8ADg//AAwf/wAMP/8AD///AA///wAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAMA////ACgAAAAQ - AAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBwcNjAwMLUyMjLEMjIyxDIyMsQy - MjLEMjIyxDIyMsQyMjLEMjIyxDIyMsQyMjLEMjIyxDIyMsQxMTG1Hh4eNjIyMuAuLi6qIyMjdSMjI3Uj - IyN1IyMjdSMjI3UjIyN1IyMjdSMjI3UjIyN1IyMjdSMjI3UjIyN1LS0tqjIyMuAyMjL+GRkZOgAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcXFzoyMjL+MjIy/xkZGToA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXFxc6MjIy/zIyMv8Z - GRk6ERERCiIiInIdHR07AAAAAAAAAAAZGRkzIiIidSIiInUiIiJ1HBwcPAAAAAAAAAAAFxcXOjIyMv8y - MjL/GRkZOgAAAAAmJiZXMjIy8iMjI0UAAAAAJycnYzIyMsQyMjLEMjIyxCwsLHIAAAAAAAAAABcXFzoy - MjL/MjIy/xkZGToAAAAAAAAAACsrK2wyMjL2HR0dLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX - Fxc6MjIy/zIyMv8ZGRk6AAAAABUVFRkxMTHXLi4unAoKCgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAFxcXOjIyMv8yMjL/GRkZOhEREQoxMTGwLi4ulAoKCgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAABcXFzoyMjL/MjIy/xkZGToAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAXFxc6MjIy/zIyMv8mJiZ3GhoaThoaGk4aGhpOGhoaThoaGk4aGhpOGhoaThoaGk4a - GhpOGhoaThoaGk4aGhpOJSUldzIyMv8yMjL+MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL+MjIy4DIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8y - MjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8yMjL/MjIy4B4eHjYxMTG1MjIyxDIyMsQyMjLEMjIyxDIyMsQy - MjLEMjIyxDIyMsQyMjLEMjIyxDIyMsQyMjLEMTExtR8fHzYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAP/wAAD/8AAAG - DAAAIgwAADH8AAAh/AAAA/wAAD/8AAAAAAAAAAAAAAAAAAAAAAAA//8AAA== - - - \ No newline at end of file diff --git a/ShoalShell.PlugIns.Plot/Device/FormImagePlotDevice.vb b/ShoalShell.PlugIns.Plot/Device/FormImagePlotDevice.vb deleted file mode 100644 index 79d0ef162..000000000 --- a/ShoalShell.PlugIns.Plot/Device/FormImagePlotDevice.vb +++ /dev/null @@ -1,24 +0,0 @@ -Public Class FormImagePlotDevice - - Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click - - End Sub - - Private Sub AboutToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AboutToolStripMenuItem.Click - MsgBox(My.Application.Info.Version.ToString, MsgBoxStyle.Information) - End Sub - - Private Sub CloseToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CloseToolStripMenuItem.Click - Me.Close() - End Sub - - Private Sub SaveAsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SaveAsToolStripMenuItem.Click - Using sf = New SaveFileDialog With {.FileName = "ImageResource.png", .DefaultExt = "*.png"} - sf.Filter = "Bitmap(*.bmp)|*.bmp|Jpeg Image(*.jpg, *.jpeg)|*.jpg*.jpeg|Portable Network Graphic(*.png)|*.png" - - If sf.ShowDialog = System.Windows.Forms.DialogResult.OK Then - Call PictureBox1.BackgroundImage.Save(sf.FileName) - End If - End Using - End Sub -End Class diff --git a/ShoalShell.PlugIns.Plot/Device/FormPieChartDevice.Designer.vb b/ShoalShell.PlugIns.Plot/Device/FormPieChartDevice.Designer.vb deleted file mode 100644 index a17bc635b..000000000 --- a/ShoalShell.PlugIns.Plot/Device/FormPieChartDevice.Designer.vb +++ /dev/null @@ -1,51 +0,0 @@ - _ -Partial Class FormPieChartDevice - Inherits System.Windows.Forms.Form - - 'Form overrides dispose to clean up the component list. - _ - Protected Overrides Sub Dispose( disposing As Boolean) - Try - If disposing AndAlso components IsNot Nothing Then - components.Dispose() - End If - Finally - MyBase.Dispose(disposing) - End Try - End Sub - - 'Required by the Windows Form Designer - Private components As System.ComponentModel.IContainer - - 'NOTE: The following procedure is required by the Windows Form Designer - 'It can be modified using the Windows Form Designer. - 'Do not modify it using the code editor. - _ - Private Sub InitializeComponent() - Me.PieChart1 = New Microsoft.VisualBasic.DataVisualization.Enterprise.Windows.Forms.Nexus.PieChart() - Me.SuspendLayout() - ' - 'PieChart1 - ' - Me.PieChart1.Dock = System.Windows.Forms.DockStyle.Fill - Me.PieChart1.Location = New System.Drawing.Point(0, 0) - Me.PieChart1.Name = "PieChart1" - Me.PieChart1.Radius = 200.0! - Me.PieChart1.Size = New System.Drawing.Size(664, 549) - Me.PieChart1.TabIndex = 0 - Me.PieChart1.Text = "PieChart1" - Me.PieChart1.Thickness = 10.0! - ' - 'FormPieChart - ' - Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!) - Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(664, 549) - Me.Controls.Add(Me.PieChart1) - Me.Name = "FormPieChart" - Me.Text = "Form1" - Me.ResumeLayout(False) - - End Sub - Friend WithEvents PieChart1 As Microsoft.VisualBasic.DataVisualization.Enterprise.Windows.Forms.Nexus.PieChart -End Class diff --git a/ShoalShell.PlugIns.Plot/Device/FormPieChartDevice.resx b/ShoalShell.PlugIns.Plot/Device/FormPieChartDevice.resx deleted file mode 100644 index 1af7de150..000000000 --- a/ShoalShell.PlugIns.Plot/Device/FormPieChartDevice.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/ShoalShell.PlugIns.Plot/Device/FormPieChartDevice.vb b/ShoalShell.PlugIns.Plot/Device/FormPieChartDevice.vb deleted file mode 100644 index c1471599d..000000000 --- a/ShoalShell.PlugIns.Plot/Device/FormPieChartDevice.vb +++ /dev/null @@ -1,3 +0,0 @@ -Public Class FormPieChartDevice - -End Class \ No newline at end of file diff --git a/ShoalShell.PlugIns.Plot/ModuleChartPlot.vb b/ShoalShell.PlugIns.Plot/ModuleChartPlot.vb deleted file mode 100644 index 47bcf4eab..000000000 --- a/ShoalShell.PlugIns.Plot/ModuleChartPlot.vb +++ /dev/null @@ -1,132 +0,0 @@ -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.DeviceDriver -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.DeviceDriver.DriverHandles -Imports Microsoft.VisualBasic.DocumentFormat.Csv.Extensions -Imports Microsoft.VisualBasic.Scripting.MetaData -Imports Microsoft.VisualBasic.DocumentFormat.Csv -Imports Microsoft.VisualBasic.Terminal.Utility - -<[PackageNamespace]("Plot.Device.Chart", Url:="http://SourceForge.net/projects/shoal")> -Module ModuleChartPlot - - - Public Function PlotChart(data As DocumentStream.File) As Image - 'Using device As FormChartPlotDevice = New FormChartPlotDevice - ' Call device.Draw(DocumentStream.DataFrame.CreateObject(data)) - ' Call device.ShowDialog() - ' Return device.CopyChartImage - 'End Using - End Function - - - Public Function PlotPiChart(data As DocumentStream.File) As Image - Throw New NotImplementedException - End Function -End Module - -''' -''' Data source operation ShoalShell API for the csv document IO. -''' -''' -<[PackageNamespace]("IO_Device.Csv", Description:="Data source operation ShoalShell API for the csv document IO.", Publisher:="xie.guigang@live.com", - Url:="http://SourceForge.net/projects/shoal")> -Public Module DataSource - - - - Public Function LoadExcel(path As String) As Dictionary(Of String, DocumentStream.DataFrame) - Dim Excel = New ExcelReader(path, True, True) - Dim Tables = Excel.GetWorksheetList - Dim LQuery = (From Table As String In Tables Select Table, DF = Excel.GetWorksheet(Table).CreateDataReader.DataFrame).ToDictionary(Function(item) item.Table, Function(item) item.DF) - Return LQuery - End Function - - - Public Function GetTable(Excel As Dictionary(Of String, DocumentStream.DataFrame), Tab As String) As DocumentStream.DataFrame - Return Excel(Tab) - End Function - - - Public Function TrimData(path As String, Optional replaceAs As String = "") As DocumentStream.File - Return DocumentStream.File.Normalization(path, replaceAs) - End Function - - - - Public Function LoadDataFrameFromCsv(path As String) As Microsoft.VisualBasic.DocumentFormat.Csv.DocumentStream.DataFrame - Return Microsoft.VisualBasic.DocumentFormat.Csv.DocumentStream.DataFrame.Load(path, System.Text.Encoding.Default) - End Function - - - - Public Function ReadCsv(path As String) As Microsoft.VisualBasic.DocumentFormat.Csv.DocumentStream.File - Return Microsoft.VisualBasic.DocumentFormat.Csv.DocumentStream.File.Load(path) - End Function - - - - Public Function ReadCSV_FASTLOAD(path As String) As Microsoft.VisualBasic.DocumentFormat.Csv.DocumentStream.File - Using pdt As New CBusyIndicator(_start:=True) - Call Console.WriteLine("[DEBUG] Start loading data from " & path.ToFileURL) - Dim MAT = Microsoft.VisualBasic.DocumentFormat.Csv.DocumentStream.File.FastLoad(path) - Return MAT - End Using - End Function - - - Public Function ImportsCsv(path As String, Optional delimiter As String = ",") As Microsoft.VisualBasic.DocumentFormat.Csv.DocumentStream.File - If String.Equals(delimiter, "VB.Tab", StringComparison.OrdinalIgnoreCase) Then - delimiter = vbTab - End If - If String.Equals(delimiter, "VB.CrLF", StringComparison.OrdinalIgnoreCase) Then - delimiter = vbCrLf - End If - If String.Equals(delimiter, "VB.LF", StringComparison.OrdinalIgnoreCase) Then - delimiter = vbLf - End If - - Return Microsoft.VisualBasic.DocumentFormat.Csv.DataImports.Imports(path, delimiter) - End Function - - - - Public Function WriteCsv(data As Microsoft.VisualBasic.DocumentFormat.Csv.DocumentStream.File, path As String) As Boolean - Return data.Save(path, False) - End Function - - - - Public Function WriteCsv(data As Generic.IEnumerable(Of Object), path As String) As Boolean - Return data.SaveTo(path) - End Function - - - - Public Function WriteCsv(data As Generic.IEnumerable(Of Microsoft.VisualBasic.DocumentFormat.Csv.StorageProvider.ComponentModels.DynamicObjectLoader), path As String) As Boolean - Return data.SaveTo(path) - End Function - - - Public Function WriteCsv(data As Generic.IEnumerable(Of Microsoft.VisualBasic.DocumentFormat.Csv.DocumentStream.RowObject), path As String) As Boolean - Return CType(data, Microsoft.VisualBasic.DocumentFormat.Csv.DocumentStream.File).Save(path, False) - End Function - - - Private Function ShowCSVData(csv As Generic.IEnumerable(Of Microsoft.VisualBasic.DocumentFormat.Csv.DocumentStream.RowObject)) As Boolean - Dim TempPath As String = My.Computer.FileSystem.SpecialDirectories.Temp & "/csv_output___temp.csv" - Call CType(csv, Microsoft.VisualBasic.DocumentFormat.Csv.DocumentStream.File).Save(TempPath, False) - Call Process.Start(TempPath).WaitForExit() - Return True - End Function - - - Public Function CreateDocument(data As Generic.IEnumerable(Of Object)) As Microsoft.VisualBasic.DocumentFormat.Csv.DocumentStream.File - Return Microsoft.VisualBasic.DocumentFormat.Csv.StorageProvider.Reflection.Save(data, False) - End Function - - - - Public Function WriteCsv(data As Microsoft.VisualBasic.DocumentFormat.Csv.DocumentStream.DataFrame, saveto As String) As Boolean - Return data.Save(saveto, False) - End Function -End Module \ No newline at end of file diff --git a/ShoalShell.PlugIns.Plot/ModulePlot.vb b/ShoalShell.PlugIns.Plot/ModulePlot.vb deleted file mode 100644 index 263e63d48..000000000 --- a/ShoalShell.PlugIns.Plot/ModulePlot.vb +++ /dev/null @@ -1,71 +0,0 @@ -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports Microsoft.VisualBasic.Scripting.MetaData -Imports Microsoft.VisualBasic.Scripting.ShoalShell -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.DeviceDriver -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.DeviceDriver.DriverHandles - -<[PackageNamespace]("Plot.Device.Image", - Description:="ShoalShell runtime library extensions for Image resource.", - Cites:="ShoalShell runtime library extensions.", - Publisher:="xie.guigang@live.com", - Url:="http://SourceForge.net/projects/shoal")> -Public Module ModulePlot - - - - Public Function Plot(image As Image) As Boolean - Using Device As FormImagePlotDevice = New FormImagePlotDevice - Device.PictureBox1.BackgroundImage = image - Device.Text = String.Format("[{0},{1}] {2}", image.Width, image.Height, image.RawFormat.ToString) - Device.Size = image.Size - Device.ShowDialog() - End Using - - Return True - End Function - - - - Public Function Plot(image As Bitmap) As Boolean - Using Device As FormImagePlotDevice = New FormImagePlotDevice - Device.PictureBox1.BackgroundImage = image - Device.Text = String.Format("[{0},{1}] {2}", image.Width, image.Height, image.RawFormat.ToString) - Device.Size = image.Size - Device.ShowDialog() - End Using - - Return True - End Function - - - - Public Function WriteImage(res As Image, saveto As String) As Boolean - Try - Call res.Save(saveto) - Catch ex As Exception - Call Console.WriteLine(ex.ToString) - Return False - End Try - - Return True - End Function - - - - Public Function WriteImage(res As Bitmap, saveto As String) As Boolean - Try - Call res.Save(saveto) - Catch ex As Exception - Call Console.WriteLine(ex.ToString) - Return False - End Try - - Return True - End Function - - - - Public Function ReadImage(path As String) As Image - Return Image.FromFile(path) - End Function -End Module diff --git a/ShoalShell.PlugIns.Plot/My Project/Application.Designer.vb b/ShoalShell.PlugIns.Plot/My Project/Application.Designer.vb deleted file mode 100644 index 88dd01c78..000000000 --- a/ShoalShell.PlugIns.Plot/My Project/Application.Designer.vb +++ /dev/null @@ -1,13 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - diff --git a/ShoalShell.PlugIns.Plot/My Project/Application.myapp b/ShoalShell.PlugIns.Plot/My Project/Application.myapp deleted file mode 100644 index 1243847fd..000000000 --- a/ShoalShell.PlugIns.Plot/My Project/Application.myapp +++ /dev/null @@ -1,11 +0,0 @@ - - - true - Form1 - false - 0 - true - 0 - 0 - true - diff --git a/ShoalShell.PlugIns.Plot/My Project/AssemblyInfo.vb b/ShoalShell.PlugIns.Plot/My Project/AssemblyInfo.vb deleted file mode 100644 index ad58ba37f..000000000 --- a/ShoalShell.PlugIns.Plot/My Project/AssemblyInfo.vb +++ /dev/null @@ -1,35 +0,0 @@ -Imports System -Imports System.Reflection -Imports System.Runtime.InteropServices - -' General Information about an assembly is controlled through the following -' set of attributes. Change these attribute values to modify the information -' associated with an assembly. - -' Review the values of the assembly attributes - - - - - - - - - - -'The following GUID is for the ID of the typelib if this project is exposed to COM - - -' Version information for an assembly consists of the following four values: -' -' Major Version -' Minor Version -' Build Number -' Revision -' -' You can specify all the values or you can default the Build and Revision Numbers -' by using the '*' as shown below: -' - - - diff --git a/ShoalShell.PlugIns.Plot/My Project/Resources.Designer.vb b/ShoalShell.PlugIns.Plot/My Project/Resources.Designer.vb deleted file mode 100644 index eb55cb987..000000000 --- a/ShoalShell.PlugIns.Plot/My Project/Resources.Designer.vb +++ /dev/null @@ -1,63 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - -Imports System - -Namespace My.Resources - - 'This class was auto-generated by the StronglyTypedResourceBuilder - 'class via a tool like ResGen or Visual Studio. - 'To add or remove a member, edit your .ResX file then rerun ResGen - 'with the /str option, or rebuild your VS project. - ''' - ''' A strongly-typed resource class, for looking up localized strings, etc. - ''' - _ - Friend Module Resources - - Private resourceMan As Global.System.Resources.ResourceManager - - Private resourceCulture As Global.System.Globalization.CultureInfo - - ''' - ''' Returns the cached ResourceManager instance used by this class. - ''' - _ - Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager - Get - If Object.ReferenceEquals(resourceMan, Nothing) Then - Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("ShoalShell.PlugIns.Plot_Devices.Resources", GetType(Resources).Assembly) - resourceMan = temp - End If - Return resourceMan - End Get - End Property - - ''' - ''' Overrides the current thread's CurrentUICulture property for all - ''' resource lookups using this strongly typed resource class. - ''' - _ - Friend Property Culture() As Global.System.Globalization.CultureInfo - Get - Return resourceCulture - End Get - Set - resourceCulture = value - End Set - End Property - End Module -End Namespace diff --git a/ShoalShell.PlugIns.Plot/My Project/Resources.resx b/ShoalShell.PlugIns.Plot/My Project/Resources.resx deleted file mode 100644 index af7dbebba..000000000 --- a/ShoalShell.PlugIns.Plot/My Project/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/ShoalShell.PlugIns.Plot/My Project/Settings.Designer.vb b/ShoalShell.PlugIns.Plot/My Project/Settings.Designer.vb deleted file mode 100644 index 2a406770a..000000000 --- a/ShoalShell.PlugIns.Plot/My Project/Settings.Designer.vb +++ /dev/null @@ -1,73 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - - -Namespace My - - _ - Partial Friend NotInheritable Class MySettings - Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) - -#Region "My.Settings Auto-Save Functionality" -#If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean - - Private Shared addedHandlerLockObject As New Object - - _ - Private Shared Sub AutoSaveSettings( sender As Global.System.Object, e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub -#End If -#End Region - - Public Shared ReadOnly Property [Default]() As MySettings - Get - -#If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If -#End If - Return defaultInstance - End Get - End Property - End Class -End Namespace - -Namespace My - - _ - Friend Module MySettingsProperty - - _ - Friend ReadOnly Property Settings() As Global.ShoalShell.PlugIns.Plot_Devices.My.MySettings - Get - Return Global.ShoalShell.PlugIns.Plot_Devices.My.MySettings.Default - End Get - End Property - End Module -End Namespace diff --git a/ShoalShell.PlugIns.Plot/My Project/Settings.settings b/ShoalShell.PlugIns.Plot/My Project/Settings.settings deleted file mode 100644 index 85b890b3c..000000000 --- a/ShoalShell.PlugIns.Plot/My Project/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/ShoalShell.PlugIns.Plot/ShoalShell.PlugIns.Plot.vbproj b/ShoalShell.PlugIns.Plot/ShoalShell.PlugIns.Plot.vbproj deleted file mode 100644 index b5e3215f2..000000000 --- a/ShoalShell.PlugIns.Plot/ShoalShell.PlugIns.Plot.vbproj +++ /dev/null @@ -1,187 +0,0 @@ - - - - - Debug - AnyCPU - {28ECA1CD-4E79-4EA9-A6C8-C41F30E5C865} - Library - - - ShoalShell.PlugIns.Plot_Devices - ShoalShell.PlugIns.Plot_Devices - 512 - Windows - v4.6 - - - - AnyCPU - true - full - true - true - ..\Shoal.v2\Console\bin\Debug\ - ShoalShell.PlugIns.Plot_Devices.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - AnyCPU - pdbonly - false - true - true - ..\..\GCModeller\GCModeller\ - ShoalShell.PlugIns.Plot_Devices.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - On - - - Binary - - - Off - - - On - - - true - true - true - ..\..\GCModeller\bin-Debug\ - ShoalShell.PlugIns.Plot_Devices.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x64 - MinimumRecommendedRules.ruleset - - - true - ..\..\GCModeller\GCModeller-x64\ - ShoalShell.PlugIns.Plot_Devices.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FormPieChartDevice.vb - - - Form - - - FormChartPlotDevice.vb - - - - Form - - - FormImagePlotDevice.vb - Form - - - - - - True - Application.myapp - - - True - True - Resources.resx - - - True - Settings.settings - True - - - - - FormChartPlotDevice.vb - - - FormImagePlotDevice.vb - - - FormPieChartDevice.vb - - - VbMyResourcesResXFileCodeGenerator - Resources.Designer.vb - My.Resources - Designer - - - - - MyApplicationCodeGenerator - Application.Designer.vb - - - SettingsSingleFileGenerator - My - Settings.Designer.vb - - - - - - {7283c179-f852-4ead-8d8f-b82ef2cbd7db} - +VB_Tabular.DataFrame - - - {fecce1fd-e1d4-49e3-a668-60bb5e7aed99} - +Microsoft.VisualBasic.Architecture.Framework - - - {74c47355-b2b3-4450-92a4-4eb1234ba924} - Microsoft.VisualBasic.DataVisualization.Enterprise - - - {a7cb16ff-75c6-4746-8449-86c121d723c4} - ShoalShell_Core.v2 - - - - - \ No newline at end of file diff --git a/ShoalShell.Plugins.HtmlHelpServer/HelpServer.vb b/ShoalShell.Plugins.HtmlHelpServer/HelpServer.vb deleted file mode 100644 index d331db36b..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/HelpServer.vb +++ /dev/null @@ -1,34 +0,0 @@ -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports ShoalShell.Plugins.HtmlHelpServer.HttpInternal -Imports System.Threading -Imports Microsoft.VisualBasic.Parallel -Imports Microsoft.VisualBasic.Scripting.MetaData - -<[PackageNamespace]("Wiki.Http_Server", - Description:="Running the shoal shell local HTTP server for served the help information about the shoal shell system.", - Category:=APICategories.SoftwareTools, - Publisher:="xie.guigang@gcmodeller.org", - Url:="http://gcmodeller.org")> -Public Module HelpServer - - Dim _serverEngine As ShoalShell.Plugins.HtmlHelpServer.NotificationIcon - - - Public Function StartServer() As Integer - Call (Sub() NotificationIcon.Main(Nothing)).BeginInvoke(Nothing, Nothing) - Return 0 - End Function - - Friend Function __runServer(Optional LocalPort As Integer = 8080) As Thread - Dim HttpServer As HttpServer = New HttpInternal.HttpFileSystem(LocalPort, App.HOME & "/html", True) - Dim svrThread = RunTask(AddressOf HttpServer.Run) - Call Thread.Sleep(1000) - Call Process.Start("http://127.0.0.1:8080") - Return svrThread - End Function - - - Public Sub BuildDoc(Optional library As String = "./html/") - Call Index.GenerateDocument(library) - End Sub -End Module diff --git a/ShoalShell.Plugins.HtmlHelpServer/Icon.ico b/ShoalShell.Plugins.HtmlHelpServer/Icon.ico deleted file mode 100644 index 4d45974bc..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Icon.ico and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Library/CLI_MAN.vb b/ShoalShell.Plugins.HtmlHelpServer/Library/CLI_MAN.vb deleted file mode 100644 index 8823d64fc..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/Library/CLI_MAN.vb +++ /dev/null @@ -1,46 +0,0 @@ -Imports System.Text -Imports Microsoft.VisualBasic.Scripting.ShoalShell - -Module CLI_MAN - - Public Sub GenerateDocument(repository As String, SPMgr As SPM.PackageModuleDb) - Dim html As New StringBuilder(My.Resources.index) - Call html.Replace(Title, "GCModeller CLI Manual") - Call html.Replace(Doc, __innerHTML(SPMgr)) - Call html.SaveTo(repository & "/cli_man.html", System.Text.Encoding.UTF8) - End Sub - - Private Function __innerHTML(SPMgr As SPM.PackageModuleDb) As String - Dim LQuery = (From x In SPMgr.NamespaceCollection - Select (From xx In x.PartialModules - Where xx.Category = Scripting.MetaData.APICategories.CLI_MAN - Select xx).ToArray).MatrixToList - Dim html As New StringBuilder("Document Library > CLI Manuals -

    GCModeller CLI Manual

    ") - Call html.AppendLine("How to get help from the program tools in the GCModeller
    -If you are not sure how to use the tools which is provided from the GCModeller, then you can just using the command line help system in the utility tools, -
  • using ? command to listing all of the available commands that exists in the tools
  • -
  • and using ? <name> command to gets the details help information of which is the detail description of the command including usage and example.
  • -
  • and at last man command is available for all tools to print theirs command line user manual.
  • -

    -Here is a list of program tools that including in GCModeller for the systems biology analysis. -
    ") - Call html.AppendLine(" - - - - -") - For Each tool In LQuery - Dim Name As String = FileIO.FileSystem.GetFileInfo(tool.Assembly.Path).Name - Call html.AppendLine($" - - - -") - Next - Call html.AppendLine("
    ProgramNameDescription
    {IO.Path.GetFileNameWithoutExtension(Name)}{tool.Namespace}{tool.Description}
    ") - - Return html.ToString - End Function -End Module diff --git a/ShoalShell.Plugins.HtmlHelpServer/Library/Cite.vb b/ShoalShell.Plugins.HtmlHelpServer/Library/Cite.vb deleted file mode 100644 index 9cd301077..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/Library/Cite.vb +++ /dev/null @@ -1,31 +0,0 @@ -Imports System.Text -Imports Microsoft.VisualBasic.Linq.Extensions - -''' -''' ç”Ÿæˆæ¯ä¸€ä¸ªå·¥å…·çš„引用文献的工具 -''' -Module Cite - - Public Sub GenerateDocument(repository As String, library As Scripting.ShoalShell.SPM.PackageModuleDb) - Dim index As New StringBuilder(My.Resources.index) - Call index.Replace(Title, "Cites") - Call index.Replace(Doc, __innerHTML(library)) - Call index.SaveTo($"{repository}/cites.html", System.Text.Encoding.UTF8) - End Sub - - Private Function __innerHTML(library As Scripting.ShoalShell.SPM.PackageModuleDb) As String - Dim html As New StringBuilder("Document Library > Module Cites

    -

    -Here is a list of articles that cite for build the modules in the GCModeller, many thanks to these researches:

    ") - Dim LQuery = (From ns In library.NamespaceCollection - Select (From x In ns.PartialModules - Let cites As String = x.GetCites - Where Not String.IsNullOrEmpty(cites) - Select cites).ToArray).MatrixToList - Call html.AppendLine("") - Call html.AppendLine(LQuery.ToArray(Function(x, i) $"").JoinBy(vbCrLf)) - Call html.AppendLine("
    References
    {x}
    ") - - Return html.ToString - End Function -End Module diff --git a/ShoalShell.Plugins.HtmlHelpServer/Library/Contributors.vb b/ShoalShell.Plugins.HtmlHelpServer/Library/Contributors.vb deleted file mode 100644 index eca24596a..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/Library/Contributors.vb +++ /dev/null @@ -1,100 +0,0 @@ -Imports System.Text -Imports Microsoft.VisualBasic.Scripting -Imports Microsoft.VisualBasic.Scripting.ShoalShell - -Module Contributors - - Public Function GenerateDocument(repository As String, SPMgr As SPM.PackageModuleDb) As Boolean - Dim HtmlBuilder As StringBuilder = New StringBuilder(My.Resources.index) - Call HtmlBuilder.Replace(Title, "Contributors") - Call HtmlBuilder.Replace(Doc, __contributors(SPMgr)) - - Return HtmlBuilder.SaveTo(repository & "/contributors.html", System.Text.Encoding.UTF8) - End Function - - Private Function __contributors(SPMgr As SPM.PackageModuleDb) As String - Dim doc As New StringBuilder( -"Document Library > Contributors

    -

    About GCModeller

    -GCModeller is a project which is attempting to provide a modern piece of systems biology analysis software for the GNU suite of software. -
    -

    GCModeller has three type of user interface(CLI commandline, Workbench GUI, ShoalShell Scripting), and the ShoalShell scripting language project is the one of the user interface for biologist applied GCModeller in their researches. -As a most important part in the GCModeller, the current ShoalShell is the result of a collaborative effort with contributions from all over the world. -
    - -

    Authors of ShoalShell

    -

    As the project leader of GCModeller, master xie developed the entired ShoalShell runtime core library and the most part of the GCModeller ShoalShell library packages, he is begins written GCModeller since mid-2013 and start writing ShoalShell from a idea of develop a much commandline like debugging tools for the GCModeller virtual cell system since 2014 August.

    - -Here is the currently developer members on developing GCModeller:

    -

  • Master xie (xie.guigang@gcmodeller.org, xie.guigang@xanthomonas.wiki)
  • -
  • and his research assistant Miss asuka (amethyst.asuka@gcmodeller.org)
  • -
  • Mr Huahao Jiang (jhh1725@gcmodeller.org)

  • - -

    Contributors to GCModeller Library

    -

    -Here are the peoples who is contributes to the algorithm or source code of GCModeller: -

    -
    ") - Call doc.AppendLine("") - Call doc.AppendLine(" - - ") - Dim getAuthors = (From authorMod - In (From obj In SPMgr.NamespaceCollection Select (From [mod] In obj.PartialModules Select [mod].Publisher, [mod]).ToArray).ToArray.MatrixToList - Select authorMod, - author = InputHandler.ToString(authorMod.Publisher).ToLower.Trim - Group authorMod By author Into Group).ToArray - - For Each author In getAuthors - Dim modList As String = String.Join(", ", (From [mod] In author.Group - Let typeRef As System.Type = [mod].mod.Assembly.GetType - Where Not typeRef Is Nothing 'å¯èƒ½æ–‡ä»¶è¢«åˆ æŽ‰äº†æˆ–者命å空间被修改了,找ä¸åˆ°ç±»åž‹çš„å®šä¹‰å…¥å£æ•°æ® - Let [namespace] = typeRef.NamespaceEntry.Namespace - Select $"{[namespace]}").ToArray) - Dim authorName As String = author.author - If String.IsNullOrEmpty(authorName) Then - authorName = "Thanks to these anonymous developers" - Else - authorName = author.Group.First.mod.Publisher - End If - - Call doc.AppendLine($" ") - Next - - Call doc.AppendLine("
    Author/ContributorsModules
    {authorName}{modList}
    ") - Call doc.AppendLine("
    -

    -

    Special thanks

    -

    Many thanks to my teacher and doctor niu(niuxiangna@gmail.com), -professor Jiang(weijiang@gxu.edu.cn) and -professor He(yqhe@gxu.edu.cn) from SKLCUSA Laboratory in Guangxi University, -for giving good advices on my research and encouraging me devoted myself into the GCModeller project and bringing out this fantastic language project to you. -

    ") - Call doc.AppendLine($"

    License

    -

    -

    {Scripting.ShoalShell.License}
    -

    ") - Call doc.AppendLine("



    Project Links

    -

    GCModeller was benefits from two special project on the RNA-seq high-performance analysis, these two project which are: -
    - - - - -
    Bioinformatics ProjectHOME
  • Microsoft .NET Bio
  • https://github.com/dotnetbio/bio
  • BOW(Bioinformatics on Windows)
  • http://bow.codeplex.com/
    -

    Project Folked Branches

    -

    Shoal Shell not just working in systems biology area but also works in financial economics area: -Another Shoal commercial extension project ""MiMaster (pre-alpha state)"" was applied on the financial online trading system from MiPaiMai.com, power this very first online instant auction platform. -

    - - - - -
    Shoal ProjectHOMEScienceLicense
  • GCModeller
  • http://GCModeller.orgSystems Biology/BioinformaticsGPL3 Open Source
  • MiMaster
  • http://mipaimai.com/Financial Online Trading SystemCommercial Licensed($32k/Product System)
    -

    - -

    ") - - Return doc.ToString - End Function -End Module diff --git a/ShoalShell.Plugins.HtmlHelpServer/Library/Index.vb b/ShoalShell.Plugins.HtmlHelpServer/Library/Index.vb deleted file mode 100644 index e53064547..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/Library/Index.vb +++ /dev/null @@ -1,109 +0,0 @@ -Imports System.Text -Imports Microsoft.VisualBasic.Scripting.ShoalShell -Imports Microsoft.VisualBasic.Linq.Extensions - -''' -''' è¿™ä¸ªæ¨¡å—æ˜¯ç”¨äºŽç”Ÿæˆæœ¬åœ°å¸®åŠ©æ–‡æ¡£çš„å·¥å…·ï¼Œè¿™ä¸ªå·¥å…·å’ŒShoal脚本引擎之中的自带的帮助文档的生æˆå·¥å…·çš„作用是一样的, -''' åªä¸è¿‡Shoal脚本引擎之中的帮助文档生æˆå¼•擎由于精简内核的需è¦ï¼Œåªä¼šç”Ÿæˆæœ€åŸºæœ¬çš„视图,而这个模å—则是加强版的帮助文档的生æˆå·¥å…· -''' -''' index.html -''' -Public Module Index - - Public Const Doc As String = "{doc}" - Public Const Title As String = "{Title}" - - Public Sub GenerateDocument(repository As String) - Dim index As New StringBuilder(My.Resources.index) - Dim library = SPM.PackageModuleDb.LoadDefault - - Call $"Library source loaded!".__DEBUG_ECHO - Call My.Resources.foundation.SaveTo($"{repository}/assets/foundation.css") - Call $"Write css foundation!".__DEBUG_ECHO - Call index.Replace("{doc}", __innerHTML(library, repository)) - Call index.Replace(Title, "GCModeller Help Library") - Call Cite.GenerateDocument(repository, library) - Call Type.GenerateDocument(repository, library) - - Dim indexPage As String = $"{repository}/index.html" - - Call index.SaveTo(indexPage, Encoding.UTF8) - Call $"Index page saved at {indexPage.ToFileURL}...".__DEBUG_ECHO - End Sub - - ''' - ''' 生æˆindex.html - ''' - ''' - ''' - Private Function __innerHTML(library As SPM.PackageModuleDb, repository As String) As String - Dim innerDoc As New StringBuilder(1024) - - Call innerDoc.AppendLine($"

    Brief Introductions

    - - - - - -
    Publisher: xie.guigang@gcmodeller.org
    Version: {GetType(Runtime.ScriptEngine).ModuleVersion}
    License: -GPL3
    -

    GCModeller is an open source project of bioinformatics computing platform which is attempting to provide a modern piece of systems biology analysis software for the GNU suite of software. -Inspired by the Microsoft bioinformatics research project MBF and recently advances in Virtual Cell technology, GCModeller was developed for solving the problem of systemsbiology not only in the discovery of the novel cellular mechanism in molecular biology, but also for more complex situation such as metagenomics and environment co-evolution. -GCModeller is original written in Microsoft VisualBasic language, and some module in GCModeller is hybrids programming with Perl and R languages.
    -ShoalShell program is part of important runtime environment from GCModeller analysis suite which it is distributed under the GPL3 license, you can download the latest source code of shoal shell from SourceForge.net: -

  • https://github.com/SMRUCC/Shoal
  • -

    -
    ") - - Call innerDoc.AppendLine("

    Library Document Contents

    -
  • Installed Modules
  • -
  • Contributors
  • -
  • Cites
  • -
  • CLI Tools Manual
  • -
  • TypeOf GCModeller
  • -") - Dim libraries As SPM.Nodes.Namespace() = (From x As SPM.Nodes.Namespace - In library.NamespaceCollection - Select x - Order By x.Namespace Ascending).ToArray - Call $"Start indexing library packages....".__DEBUG_ECHO - Call innerDoc.AppendLine($"

    Installed Modules

    -Currently there are {library.NamespaceCollection.Length} packages -({library.NamespaceCollection.ToArray(Function(x) x.API.ToArray(Function(a) a.OverloadsNumber).Sum, Parallel:=True).Sum} API in totally) and -{library.HybridEnvironments.Length} language hybrids environments have been installed on your ShoalShell system: -
    -
    -

    -Quick Navigation -
    -{HTML.DocRenderer.QuickNavigation(libraries.ToArray(Function(x) x.Namespace))} -
    - - - -") - - For Each ns As SPM.Nodes.Namespace In libraries - Call innerDoc.AppendLine($" - - -") - Next - - Call innerDoc.AppendLine("
    NamespaceDescription
    {ns.Namespace}{ns.Description}

    [↑]") - Call innerDoc.AppendLine("

    Language Hybrids

    -

    -Here is the language environment that was installed in your shoal system: -

    ") - Call innerDoc.AppendLine($" - -{library.HybridEnvironments.ToArray(Function(x) $"").JoinBy(vbCrLf)} -
    LanguageDescriptionModule
    {x.Language}{x.Description}{FileIO.FileSystem.GetFileInfo(x.Path).Name}
    ") - - Call [Namespace].GenerateDocument(repository, libraries) - Call Contributors.GenerateDocument(repository, library) - Call CLI_MAN.GenerateDocument(repository, library) - - Return innerDoc.ToString - End Function -End Module diff --git a/ShoalShell.Plugins.HtmlHelpServer/Library/Namespace.vb b/ShoalShell.Plugins.HtmlHelpServer/Library/Namespace.vb deleted file mode 100644 index 86d8efcc5..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/Library/Namespace.vb +++ /dev/null @@ -1,176 +0,0 @@ -Imports System.Runtime.CompilerServices -Imports System.Text -Imports Microsoft.VisualBasic.Scripting.MetaData -Imports Microsoft.VisualBasic.Scripting.ShoalShell -Imports Microsoft.VisualBasic.DocumentFormat.HTML -Imports Microsoft.VisualBasic.Linq.Extensions - -''' -''' 生æˆAPI模å—的帮助文档 -''' -Module [Namespace] - - Public Sub GenerateDocument(repository As String, library As SPM.Nodes.Namespace()) - Dim IndexFiles = (From obj In (From x In library Select (From xx In x.PartialModules Select xx.Assembly.Path, xx).ToArray).ToArray.MatrixToList - Select obj.Path, obj.xx - Group By Path Into Group) _ - .ToDictionary(Function(x) x.Path, elementSelector:=Function(x) x.Group.ToArray(Function(xx) xx.xx)) - - For Each ns As SPM.Nodes.Namespace In library - Dim HTMLBuilder As New StringBuilder(My.Resources.index) - Dim HTML As String = HTMLDoc(repository, ns, IndexFiles) - Dim path As String = $"{repository}/{ns.Namespace.NormalizePathString(False)}.html" - - Call HTMLBuilder.Replace(Title, ns.Namespace) - Call HTMLBuilder.Replace(Doc, HTML) - Call HTMLBuilder.SaveTo(path, System.Text.Encoding.UTF8) - - Call $" ===> {ns.Namespace}...".__DEBUG_ECHO - Next - End Sub - - Public Function HTMLDoc(repository As String, ns As SPM.Nodes.Namespace, related As Dictionary(Of String, SPM.Nodes.PartialModule())) As String - Dim HTMLBuilder As StringBuilder = New StringBuilder(1024) - Call HTMLBuilder.AppendLine($"Document Library > {ns.Namespace}") - Call HTMLBuilder.AppendLine("
    ") - Call HTMLBuilder.AppendLine("

    Related Namespace

    ") - For Each entry In ns.PartialModules - Dim Name As String = FileIO.FileSystem.GetFileInfo(entry.Assembly.Path).Name - Dim path As String = $"{repository}/{Name}/{ns.Namespace.NormalizePathString(False)}.html" - Call HTMLBuilder.AppendLine($"
  • {Name}
  • ") - Dim relates = related(entry.Assembly.Path) - Call HTMLBuilder.AppendLine(" -") - For Each nss In relates - Dim href As String = $"./{FileIO.FileSystem.GetFileInfo(nss.Assembly.Path).Name}/{nss.Namespace}.html" - Call HTMLBuilder.AppendLine($"") - Next - Call HTMLBuilder.AppendLine("
    NamespaceDescription
    {nss.Namespace}{nss.Description}
    ") - - Dim innerDoc As New StringBuilder(My.Resources.index) - Call innerDoc.RestoreCSS - Call innerDoc.Replace(Doc, HTMLDoc(entry, ns.Namespace)) - Call innerDoc.Replace(Title, ns.Namespace) - Call innerDoc.SaveTo(path, System.Text.Encoding.UTF8) - Next - Return HTMLBuilder.ToString - End Function - - Public Function HTMLDoc(ns As SPM.Nodes.PartialModule, name As String) As String - Dim HTMLBuilder As StringBuilder = New StringBuilder(1024) - Call HTMLBuilder.AppendLine($"Document Library > {name}") - Call HTMLBuilder.AppendLine($"

    {name}

    ") - Call HTMLBuilder.AppendLine($" - - - - - - - -
    Publishers{ns.Publisher}
    Description{ns.Description}
    Revision{ns.Revision}
    Cites{ns.GetCites}
    Category{ns.Category.ToString} ({ns.Category.Description})
    URL{ns.Url}
    Library{ns.Assembly.TypeId}
    ") - - If ns.EntryPoints.IsNullOrEmpty Then - GoTo _EXIT - End If - - Dim entryPoints = Scripting.ShoalShell.SPM.Nodes.AssemblyParser.Imports(ns.Assembly.GetType) - - Call HTMLBuilder.AppendLine("

    API List

    ") - - For Each api In entryPoints - Call HTMLBuilder.AppendLine($"
  • {api.Name}
  • ") - Next - - Call HTMLBuilder.AppendLine("


    ") - - For Each api As Interpreter.Linker.APIHandler.APIEntryPoint In entryPoints - - Call HTMLBuilder.AppendLine($"

    {api.Name}{If(api.IsOverloaded, $"(+{api.OverloadsNumber} Overloads)", "")}

    ") - Call HTMLBuilder.AppendLine("

    ") - - For Each overloadsAPI In api.OverloadsAPI - - Dim rtvl = overloadsAPI.EntryPoint.GetAttribute(Of FunctionReturns) - - Call HTMLBuilder.AppendLine($"

    {overloadsAPI.Name}
    ") - Call HTMLBuilder.AppendLine($" - - - -
    Description{overloadsAPI.Info.InvokeReplace("<", "<")}
    Return{If(rtvl Is Nothing, "", rtvl.Description.InvokeReplace("<", "<"))}
    Usage{overloadsAPI.Usage.InvokeReplace("<", "<")}
    ") - Call HTMLBuilder.AppendLine("API Details") - Call HTMLBuilder.AppendLine($" - - -
    Prototype{overloadsAPI.EntryPointFullName(True)}
    Returns{overloadsAPI.EntryPoint.ReturnType.FullName}
    ") - - If ns.Category = APICategories.CLI_MAN Then - Call __buildCLIArguments(overloadsAPI, HTMLBuilder) - Else - Call __buildAPIParameters(overloadsAPI, HTMLBuilder) - End If - Next - - Call HTMLBuilder.AppendLine("

    ") - Next - -_EXIT: Return HTMLBuilder.ToString - End Function - - Private Sub __buildAPIParameters(overloadsAPI As CommandLine.Reflection.EntryPoints.APIEntryPoint, ByRef HTMLBuilder As StringBuilder) - Dim lstParams = overloadsAPI.EntryPoint.GetParameters - - If lstParams.IsNullOrEmpty Then - Call HTMLBuilder.AppendLine("Not Required of parameters.") - Return - End If - - Call HTMLBuilder.AppendLine("Parameters") - Call HTMLBuilder.AppendLine(" -") - - For Each param As Reflection.ParameterInfo In lstParams - Dim describ = param.GetCustomAttributes(attributeType:=GetType(Scripting.MetaData.Parameter), inherit:=True) - Dim attr = If(describ.IsNullOrEmpty, Nothing, DirectCast(describ(Scan0), Parameter)) - Call HTMLBuilder.AppendLine($" - - - -") - Next - - Call HTMLBuilder.AppendLine("
    NameDescriptionType
    {If(attr Is Nothing, param.Name, attr.Alias.InvokeReplace("<", "<"))}{If(attr Is Nothing, "", attr.Description.InvokeReplace("<", "<"))}{param.ParameterType.FullName}
    ") - End Sub - - Private Sub __buildCLIArguments(overloadsAPI As CommandLine.Reflection.EntryPoints.APIEntryPoint, ByRef HTMLBuilder As StringBuilder) - Dim args As CommandLine.Reflection.ParameterInfo() = - overloadsAPI.EntryPoint.GetCustomAttributes(GetType(CommandLine.Reflection.ParameterInfo), inherit:=True) - If args.IsNullOrEmpty Then - Call HTMLBuilder.AppendLine("Probably Not Required of parameters, please read Usage for help.") - Return - End If - - Call HTMLBuilder.AppendLine("Parameters") - Call HTMLBuilder.AppendLine(" -") - - For Each param As CommandLine.Reflection.ParameterInfo In args - Call HTMLBuilder.AppendLine($" - - - -") - Next - - Call HTMLBuilder.AppendLine("
    NameOptionalDescription
    {param.Name.InvokeReplace("<", "<")}{param.Optional.ToString }{DocFormatter.HighlightLinks(param.Description).InvokeReplace("<", "<")}
    ") - End Sub - - Public Function InvokeReplace(source As String, old As String, _new As String) As String - If String.IsNullOrEmpty(source) Then - Return "" - Else - Return source.Replace(old, _new) - End If - End Function -End Module diff --git a/ShoalShell.Plugins.HtmlHelpServer/Library/Type.vb b/ShoalShell.Plugins.HtmlHelpServer/Library/Type.vb deleted file mode 100644 index b53557b17..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/Library/Type.vb +++ /dev/null @@ -1,80 +0,0 @@ -Imports System.Runtime.CompilerServices -Imports System.Text -Imports Microsoft.VisualBasic.Scripting.ShoalShell.HTML -Imports Microsoft.VisualBasic.Linq.Extensions - -''' -''' ç”Ÿæˆæ•°æ®ç±»åž‹çš„帮助文档 -''' -Module Type - - Public Sub GenerateDocument(repository As String, library As Scripting.ShoalShell.SPM.PackageModuleDb) - Dim index As New StringBuilder(My.Resources.index) - - Call index.Replace(Title, "TypeOf GCModeller") - Call index.Replace(Doc, __innerHTML(library, repository)) - Call index.RestoreCSS - Call index.SaveTo($"{repository}/TypeLinks/index.html", System.Text.Encoding.UTF8) - End Sub - - Public Sub RestoreCSS(ByRef sbr As StringBuilder) - Call sbr.Replace("=""assets", "=""../assets") - End Sub - - Private Function __innerHTML(library As Scripting.ShoalShell.SPM.PackageModuleDb, repository As String) As String - Dim html As StringBuilder = New StringBuilder - Dim pages = __pages(library, repository) - - Call html.AppendLine("Document Library > TypeOf GCModeller") - Call html.AppendLine("

    -Here are the list of all data types in the GCModeller for facility of your programming with GCModeller API: -

    -") - Call html.AppendLine("

    - -") - Call html.AppendLine(String.Join(vbCrLf, (From type As System.Type - In pages - Where Not String.IsNullOrEmpty(type.FullName) - Select $"").ToArray)) - Call html.AppendLine("
    TypeOf List GCModeller Programming Manual
    {type.FullName}
    -
    ") - Call html.AppendLine("

    ") - - Return html.ToString - End Function - - Private Function __pages(library As Scripting.ShoalShell.SPM.PackageModuleDb, repository As String) As System.Type() - Dim source = Scripting.ShoalShell.HTML.TypeLinks.GetSource(library) - Dim __getPages = (From data In source - Let template As String = pageTemplate - Let tdefValue = TypeLinks.CreatePage(template, data) - Select tdef = tdefValue.Value, - html = tdefValue.Key - Order By tdef.FullName Ascending).ToArray - - For Each page In __getPages - Dim path As String = $"{repository}/{NameOf(TypeLinks)}/{PageName(page.tdef)}.html" - Dim html As StringBuilder = New StringBuilder(My.Resources.index) - Dim innerDoc As New StringBuilder - Call innerDoc.AppendLine("Document Library > TypeOf GCModeller
    ") - Call innerDoc.AppendLine(page.html) - Call html.Replace(Title, page.tdef.ToString) - Call html.Replace(Doc, innerDoc.ToString) - Call html.RestoreCSS - Call html.SaveTo(path, System.Text.Encoding.UTF8) - Next - - Return __getPages.ToArray(Function(x) x.tdef) - End Function - - Const pageTemplate As String = " - - - - -
    %Publisher%
    Description%Description%
    %DefineFile%
    TypeOf%Type%
    - - -

    %SDK_HELP%

    " -End Module diff --git a/ShoalShell.Plugins.HtmlHelpServer/My Project/Application.Designer.vb b/ShoalShell.Plugins.HtmlHelpServer/My Project/Application.Designer.vb deleted file mode 100644 index 88dd01c78..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/My Project/Application.Designer.vb +++ /dev/null @@ -1,13 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - diff --git a/ShoalShell.Plugins.HtmlHelpServer/My Project/Application.myapp b/ShoalShell.Plugins.HtmlHelpServer/My Project/Application.myapp deleted file mode 100644 index 758895def..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/My Project/Application.myapp +++ /dev/null @@ -1,10 +0,0 @@ - - - false - false - 0 - true - 0 - 1 - true - diff --git a/ShoalShell.Plugins.HtmlHelpServer/My Project/AssemblyInfo.vb b/ShoalShell.Plugins.HtmlHelpServer/My Project/AssemblyInfo.vb deleted file mode 100644 index ceabfe6ca..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/My Project/AssemblyInfo.vb +++ /dev/null @@ -1,35 +0,0 @@ -Imports System -Imports System.Reflection -Imports System.Runtime.InteropServices - -' General Information about an assembly is controlled through the following -' set of attributes. Change these attribute values to modify the information -' associated with an assembly. - -' Review the values of the assembly attributes - - - - - - - - - - -'The following GUID is for the ID of the typelib if this project is exposed to COM - - -' Version information for an assembly consists of the following four values: -' -' Major Version -' Minor Version -' Build Number -' Revision -' -' You can specify all the values or you can default the Build and Revision Numbers -' by using the '*' as shown below: -' - - - diff --git a/ShoalShell.Plugins.HtmlHelpServer/My Project/Resources.Designer.vb b/ShoalShell.Plugins.HtmlHelpServer/My Project/Resources.Designer.vb deleted file mode 100644 index 1dd63ec36..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/My Project/Resources.Designer.vb +++ /dev/null @@ -1,162 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - -Imports System - -Namespace My.Resources - - 'This class was auto-generated by the StronglyTypedResourceBuilder - 'class via a tool like ResGen or Visual Studio. - 'To add or remove a member, edit your .ResX file then rerun ResGen - 'with the /str option, or rebuild your VS project. - ''' - ''' A strongly-typed resource class, for looking up localized strings, etc. - ''' - _ - Friend Module Resources - - Private resourceMan As Global.System.Resources.ResourceManager - - Private resourceCulture As Global.System.Globalization.CultureInfo - - ''' - ''' Returns the cached ResourceManager instance used by this class. - ''' - _ - Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager - Get - If Object.ReferenceEquals(resourceMan, Nothing) Then - Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("ShoalShell.Plugins.HtmlHelpServer.Resources", GetType(Resources).Assembly) - resourceMan = temp - End If - Return resourceMan - End Get - End Property - - ''' - ''' Overrides the current thread's CurrentUICulture property for all - ''' resource lookups using this strongly typed resource class. - ''' - _ - Friend Property Culture() As Global.System.Globalization.CultureInfo - Get - Return resourceCulture - End Get - Set - resourceCulture = value - End Set - End Property - - ''' - ''' Looks up a localized string similar to <!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>Page Not Found :(</title><style>::-moz-selection { - ''' background: #b3d4fc; - ''' text-shadow: none; - ''' } - ''' - ''' ::selection { - ''' background: #b3d4fc; - ''' text-shadow: none; - ''' } - ''' - ''' html { - ''' padding: 30px 10px; - ''' font-size: 20px; - ''' line-height: 1.4; - ''' color: #737373; - ''' background: #f0f0f0; - ''' -webkit-text-size-adjust: 100%; - ''' -ms-text-size-adjust: 100%; - ''' [rest of string was truncated]";. - ''' - Friend ReadOnly Property _404() As String - Get - Return ResourceManager.GetString("_404", resourceCulture) - End Get - End Property - - ''' - ''' Looks up a localized string similar to meta.foundation-version { - ''' font-family: "/5.4.5/"; } - ''' - '''meta.foundation-mq-small { - ''' font-family: "/only screen/"; - ''' width: 0em; } - ''' - '''meta.foundation-mq-medium { - ''' font-family: "/only screen and (min-width:40.063em)/"; - ''' width: 40.063em; } - ''' - '''meta.foundation-mq-large { - ''' font-family: "/only screen and (min-width:64.063em)/"; - ''' width: 64.063em; } - ''' - '''meta.foundation-mq-xlarge { - ''' font-family: "/only screen and (min-width:90.063em)/"; - ''' width: 90.063em; } - ''' - '''meta.foundation-mq-xxlarge { - ''' font-famil [rest of string was truncated]";. - ''' - Friend ReadOnly Property foundation() As String - Get - Return ResourceManager.GetString("foundation", resourceCulture) - End Get - End Property - - ''' - ''' Looks up a localized string similar to GNU GENERAL PUBLIC LICENSE - ''' Version 3, 29 June 2007 - ''' - ''' Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> - ''' Everyone is permitted to copy and distribute verbatim copies - ''' of this license document, but changing it is not allowed. - ''' - ''' Preamble - ''' - ''' The GNU General Public License is a free, copyleft license for - '''software and other kinds of works. - ''' - ''' The licenses for most software and other practical works are designed - '''to [rest of string was truncated]";. - ''' - Friend ReadOnly Property gpl() As String - Get - Return ResourceManager.GetString("gpl", resourceCulture) - End Get - End Property - - ''' - ''' Looks up a localized resource of type System.Drawing.Icon similar to (Icon). - ''' - Friend ReadOnly Property Icon() As System.Drawing.Icon - Get - Dim obj As Object = ResourceManager.GetObject("Icon", resourceCulture) - Return CType(obj,System.Drawing.Icon) - End Get - End Property - - ''' - ''' Looks up a localized string similar to <!DOCTYPE html> - '''<!-- saved from url=(0052)http://foundation.zurb.com/templates/workspace.html# --> - '''<html class=" js flexbox flexboxlegacy canvas canvastext webgl no-touch geolocation postmessage websqldatabase indexeddb hashchange history draganddrop websockets rgba hsla multiplebgs backgroundsize borderimage borderradius boxshadow textshadow opacity cssanimations csscolumns cssgradients cssreflections csstransforms csstransforms3d csstransitions fontface generatedcontent video audio localstorage sessions [rest of string was truncated]";. - ''' - Friend ReadOnly Property index() As String - Get - Return ResourceManager.GetString("index", resourceCulture) - End Get - End Property - End Module -End Namespace diff --git a/ShoalShell.Plugins.HtmlHelpServer/My Project/Resources.resx b/ShoalShell.Plugins.HtmlHelpServer/My Project/Resources.resx deleted file mode 100644 index ea87e8b2a..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/My Project/Resources.resx +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - ..\Resources\gpl.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312 - - - ..\Icon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\404.html;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 - - - ..\Resources\foundation.css;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 - - - ..\Resources\index.html;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8 - - \ No newline at end of file diff --git a/ShoalShell.Plugins.HtmlHelpServer/My Project/Settings.Designer.vb b/ShoalShell.Plugins.HtmlHelpServer/My Project/Settings.Designer.vb deleted file mode 100644 index 4c13dc5ea..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/My Project/Settings.Designer.vb +++ /dev/null @@ -1,73 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - - -Namespace My - - _ - Partial Friend NotInheritable Class MySettings - Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) - -#Region "My.Settings Auto-Save Functionality" -#If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean - - Private Shared addedHandlerLockObject As New Object - - _ - Private Shared Sub AutoSaveSettings( sender As Global.System.Object, e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub -#End If -#End Region - - Public Shared ReadOnly Property [Default]() As MySettings - Get - -#If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If -#End If - Return defaultInstance - End Get - End Property - End Class -End Namespace - -Namespace My - - _ - Friend Module MySettingsProperty - - _ - Friend ReadOnly Property Settings() As Global.ShoalShell.Plugins.HtmlHelpServer.My.MySettings - Get - Return Global.ShoalShell.Plugins.HtmlHelpServer.My.MySettings.Default - End Get - End Property - End Module -End Namespace diff --git a/ShoalShell.Plugins.HtmlHelpServer/My Project/Settings.settings b/ShoalShell.Plugins.HtmlHelpServer/My Project/Settings.settings deleted file mode 100644 index 85b890b3c..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/My Project/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/ShoalShell.Plugins.HtmlHelpServer/NotificationIcon.resx b/ShoalShell.Plugins.HtmlHelpServer/NotificationIcon.resx deleted file mode 100644 index 555241f66..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/NotificationIcon.resx +++ /dev/null @@ -1,546 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - AAABAAkAMDAQAAAAAABoBgAAlgAAACAgEAAAAAAA6AIAAP4GAAAQEBAAAAAAACgBAADmCQAAMDAAAAEA - CACoDgAADgsAACAgAAABAAgAqAgAALYZAAAQEAAAAQAIAGgFAABeIgAAMDAAAAEAIACoJQAAxicAACAg - AAABACAAqBAAAG5NAAAQEAAAAQAgAGgEAAAWXgAAKAAAADAAAABgAAAAAQAEAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAIAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAAAAAAA//8A/wAAAP8A - /wD//wAA////AACAAACZmZmZmZmZmZmZmZmZmZmZmZAACZmZmZmZmZmZmZmZmZmZmZmZmZmZAAKiIJmZ - mZmZmZmZmZmZmZmZmZmZmZAAKioqIgmZmZmZmZmZmZmZmZmZmZmZmZCioqKiIiCZmZmZmZmZmZAAAACZ - kAAAAAAKKioqIiIJmZmZmZmZmQAAAAAJkAAAAAAAoqKiIiIgmZmZmZmZkAdu7ucAkH7u7mcACioqIiIg - mZmZmZmZkG7u7u7gAH7u7u7nAKKiIiIgmZmZmZmZkO7uZu7mAH7u7u7uYAoqIiIgmZmZmZmZkH5wAH7u - AH7nAAbu5wKiIiIgmZmZmZmZmQAAAA7ucH7nBwB+7gAqIiIgmZmZmZmZmZAAAH7ucH7nAHAG7nCiIiIg - mZmZmZmZmQAAB+7uAH7nBwAH7mAqIiIgmZmZmZmZkAB27u7nAH7nAHAH7uCiIiIgmZmZmZmZAAbu7u5w - AH7nBwAH7uAqIiIgmZmZmZmQAG7u5nAAAH7nAHAH7uCiIiIgmZmZmZkAcO7mAAAAAH7nBwAH7mAqIiIg - mZmZmZAHB+7gAAAAAH7nAAAG7nCiIiIgmZmZmZBwB+7gAAdwAH7nAABu5goqIiIgmZmZmZAHB+7md37g - AH7mZmbu5wKiIiIgmZmZmZBwcH7u7u7mAH7u7u7ucCoqIiIgmZmZmZAHBwfu7u5gAH7u7u5gAqKiIiIg - mZkAAABwbnAHZncAcHd3d3AAKioqIiIgmZkAcHAO5uZwAAB3YAAAAACioqKqIiIgmZkHBwBu7m5gcAZm - dnZ3AHAqKqqqoiIgmZkAcHDm7ubmBwZmZ2dnBwCqqqqqqiIgmZkHBwcObu5uYAZmZnZ2AHCqqqqqqqIg - mZkAcHBw5u7m5mZmZmdnZ3cKqqqqqqogmZkHBwcHDm7ubmZmZmZ2dndwqqqqqqqgmZkAAAAAAObu5uZm - ZmZ2dnd3CqqqqgAJmZkHd2dmZubu7m5gAABnZ2d3cKqgAACZmZkHd3Z2Zm5u7mAAcHAAdnZ3dwAHZmCZ - mZkHd3Z2Zmbm7gcHBwcHB2dnd3d2dmCZmZkHd3dnZmbm7gAAAAAABnZ2d3d3Z2CZmZkHd3d2dmZubuAA - AAAAZmdnZ3d3Z2CZmZkHd3d3Z2Zm5u7gAABmZmdnZ3d3dnCZmZkAAAAAAAZmbm7ubmZmZmZ2AAAAAACZ - mZmZmZBwcGdmZubu5uZmZmZnYHBwmZmZmZmZmZAHB2dmZubu7m5mZmZmdgcAmZmZmZmZmZBwd3Z3YA5u - 7ubmAGZmdnBwmZmZmZmZmZAHd3dmCQbm7u5uCQZmZ2cAmZmZmZmZmZB3d3dwmQZubu5uCZBmZnZwmZmZ - mZmZmZkHd3cJmQZm5u7mCZkGZmcJmZmZmZmZmZmQd3CZmQZm5u7uCZmQZmCZmZmZmZmZmZmZBwmZmQZm - bm7uCZmZBgmZmZmZmZmZmZmZkJmZmQZmZubuCZmZkJmZmZmZmZmZmZmZmZmZmQZmZm5uCZmZmZmZmZmZ - mZmZmZmZmZmZmQAAAAAACZmZmZmZmZmZmZn/////4f8AAP////8A/wAA////+AB/AAD////4AD8AAP/g - OAAAHwAA/8AYAAAPAAD/gAgAAA8AAP+AAAAADwAA/4AAAAAPAAD/gAAAAA8AAP/AAAAADwAA/+AAAAAP - AAD/wAAAAA8AAP+AAAAADwAA/wAAAAAPAAD+AAAAAA8AAPwAAAAADwAA+AAAAAAPAAD4AAAAAA8AAPgA - AAAADwAA+AAAAAAPAAD4AAAAAA8AAAAAAAAADwAAAAAAAAAPAAAAAAAAAA8AAAAAAAAADwAAAAAAAAAP - AAAAAAAAAA8AAAAAAAAADwAAAAAAAAAfAAAAAAAAAD8AAAAAAAAAPwAAAAAAAAA/AAAAAAAAAD8AAAAA - AAAAPwAAAAAAAAA/AAAAAAAAAD8AAPgAAAAD/wAA+AAAAAP/AAD4AAAAA/8AAPgBABAD/wAA+AMAGAP/ - AAD8BwAcB/8AAP4PAB4P/wAA/x8AHx//AAD/vwAfv/8AAP//AB///wAA//8AH///AAAoAAAAIAAAAEAA - AAABAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgIAAgAAAAIAAgACAgAAAwMDAAICA - gAAAAP8AAAAAAAD//wD/AAAA/wD/AP//AAD///8AAIAAAJmZmZmZmZmZmZmZkAAJmZmZmZmZmZmZmZmQ - AAIiIJmZmZmZkAAACQAAAAIiIiIJmZmZmQAAAAAAAAAAIiIiIJmZmZAH7u5wDu7mcAIiIiCZmZmQDuZu - 5w7u7uYAIiIgmZmZmQAABuYO4ADucAIiIJmZmZmQAAfmDuAADuACIiCZmZmZAAdu5w7gAAbgAiIgmZmZ - kABu7mAO4AAG4AIiIJmZmQAO7ncADuAABuACIiCZmZAADuAAAA7gAA7gAiIgmZmQAA7gAHAO4ADucCIi - IJmZkAAG7m7gDu7u5gIiIiCZAAAHcG7ucA7u5nAiIiIgmQAHfmcAAAcAAAACIiIiIJkAAO7mZ3dnd3dw - IiqqIiCZAAAO7mZ3Znd3cKqqqqIgmQAAAO7mZmZmd3CqqqqqIJkAAABu7mZmZ2d3CqqqqqCZB2Zmbu7m - cAB3d3CqoAAJmQd2ZmbuZwAAB3d3AAdwmZkHd2ZmbmcAAAdnd3d3YJmZB3d3Zm7mYABmZ3d3d3CZmQAA - AAZm7u5mZmZ3AAAAmZmZkAB2Zm7u5mZmZ3AAmZmZmZAHdmcA7ubgBmZ3AJmZmZmQd3ZwkO7u4JBmdnCZ - mZmZmQd3CZBu7uCZBmcJmZmZmZmQcJmQZu7gmZBwmZmZmZmZmQmZkGbu4JmZCZmZmZmZmZmZmZAAAACZ - mZmZmZmZ///+H///4A/+BAAH/AAAA/gAAAP4AAAD/AAAA/4AAAP8AAAD+AAAA/AAAAPgAAAD4AAAA+AA - AAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAHAAAADwAAAA8AAAAPAAAAD+AAAD/gAAA/4CAgP/Bg - MH/44Dj//eA9///gP/8oAAAAEAAAACAAAAABAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - gAAAgIAAgAAAAIAAgACAgAAAwMDAAICAgAAAAP8AAAAAAAD//wD/AAAA/wD/AP//AAD///8AAIAAAJmZ - mZmZmSKZmQAAAAAAIimZBu5wbmcCIpkAdmDgdgIimQdmcOAOAiKQBmcA4HYCIpAH7mBuZwIiAGAAAAAA - qiIADmZmdyqqogd25gB3cqoiBmbmAHdwIpkAB25nZnAAmZB3YO4HZwmZkHcA7gB2CZmZAJBuCQCZmZmZ - kAAJmZmZ//OZAMAB5w7AAAbgwAAgmcAAkACAAGAOgAAG4AAAIJkAAAAOAAAADgADBuAAAyCZgAcADoAH - AA7ITw7g+H8gmSgAAAAwAAAAYAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGBQQACAcGAA0M - CwCdiWYAn4xpAKWTcgCpl3YAHBkUAKyaewCxoIEAt6eKAMGymADEtZsAzb+nAMu9pQDYzLYA1cmzAN3R - vADh1sIA3tTCAOrgzgDp380A7OLRAOTbywDi2ckA8unZAPTr3ADz6tsA8unaAPHo2QDu5dYA7eTVANrT - xwAbGBIAoY9sAKORbwAmIhoAXlVDALSkhgBLRTkAuquOALytkQC/sZUAx7mfAMm7oQDSxa0Az8KqAERA - OADZz7sA593KAOPZxgDb0sEA39bFAO3k0wDw59YA7uXUAOjg0ADn388A5d3NAPTs3ADq4tMA8enaAO/n - 2ADu5tcA7eXWAHpvVgAuKiEAj4RrADQwJwCTiG8AnZJ6AKGWfgCil4AAnZN+AKmfiQCupI4AraONALWr - lQCyqJMAu7GcALatmgDFvKgAzsWxAMa9qgDJwK0Ac29mAF1VQQBwZk8AW1NAAIN4XQCCd1wAf3RaAGti - TABIQjMAGBYRAIV6XwBoX0oAXlZDADs2KgCGe2AAe3FYADIuJABMRjcAiH1jAIyBZwCSh20AHRsWAJSK - cQCbkXkAmY93AKSaggCelH0AdG1cAKWbhAConocAp52GAKyiiwCroYoAuK+ZALatmACzqpUAubCbAL20 - nwC8s54AxLumAMK5pADBuKMAwLeiAL62ogDUzLkAPzosAGtiSwBhWUQAVE07AE5INwBuZU4AZFxHAF1W - QgBZUj8Ac2pSAGhgSgBEPzEAiX9lAI2DaQCXjXMATkk8AKKZggBvaVkAsKeQAK6mkAAeHBYAIR8YAAMD - AgAAAAAAADAuAALAugABcWwAAW5qAAKhnAACmpUAApeSAAKTjgACkIsAAoyHAAO7tQACgHsAAn55AAJ+ - egACfHcAAnx4AAJ7dgACenUAAndzAAJ2cQACdHAAAm9rAAJtaQACa2cAAmdjAAJgXQACwr0AAr24AAK3 - sgACs64AAq2oAAF1cgABbGkAAWNgAAFaWAADxL4AAqWhAAKJhQAChoIAAoSAAAKCfgABR0UAAoB9AAJ9 - egACe3gAAnl2AAJ4dQACd3QAAnVyAAJzcAACcm8AAnFuAAJwbQACbWoAAmtoAAJpZgACaGUAAmViAAXJ - xAAFwLsADcbCABTMygAAGhoAABERAAAICAAZ09MAH8/RACbX2QAkzs4AIc7RAC7e4gA12d8AOuLpAEPb - 5ABH5e8AQ9PeAP///wDu7u4A3t7eAM7OzgC6uroAuLi4ALW1tQCqqqoAmZmZAJSUlACIiIgAenp6AHV1 - dQBlZWUAVVVVAERERAA6OjoAMDAwACsrKwAkJCQAIyMjACAgIAAbGxsAFxcXABAQEAAAAAAAmZmZmZmZ - mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn/////mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ - mZmZmZmZmZmZmZmZmZn///+qqqjH/5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn/ - ///Myqyrqamoqv+ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn/u7Kxr67IxqaoqMv/ - mZmZmZmZmZmZmZmZmZmZmZn/////////mZmZ/////////////7O70q+uqqaoqa7R/5mZmZmZmZmZmZmZ - mZmZmf/9//v//////5mZ//////////////+8s9LOyamopq2xs/+ZmZmZmZmZmZmZmZmZ///y6Obm5ubu - /v+Z//Lm5ubm5ury+///vLuxy6mqxayxs/+ZmZmZmZmZmZmZmZmZ/+rm5ubm5ubm5/v6//Lm5ubm5ubm - 5vL//7yyzqqrxayws/+ZmZmZmZmZmZmZmZmZ/+bm5ufq6Obm5ur///Lm5ubm5ubm5ubt//+7navIxcjP - s/+ZmZmZmZmZmZmZmZmZ//Pm7v8C//Dm5ub///Lm5vL////t5ubm8P+7uqusp8ivu/+ZmZmZmZmZmZmZ - mZmZmf/////////m5ub///Lm5vL/8vb/7ubm5vv/usjIp6vOu/+ZmZmZmZmZmZmZmZmZmZn///////Xm - 5ub///Lm5vL/7+z//+jm5vDYusfIparN0/+ZmZmZmZmZmZmZmZmZmf/////77ubm5uf/IfLm5vL/7+v/ - 2fDm5ur/namrpanM0/+ZmZmZmZmZmZmZmZmZ//z/8+nm5ubm5vKYB/Lm5vL/7+z/mvXm5ub/nKWowqbL - sv+ZmZmZmZmZmZmZmZn/Av7p5ubm5ubm8v+Xl/Lm5vL/8O3/w/Xm5ub/ucGmwaeusv+ZmZmZmZmZmZmZ - mf9i/+rm5ubm6PD7/ySNJPLm5vL/8O//mvPm5uf/qb/EwMSt0v+ZmZmZmZmZmZmZ/41C/ubm5u33//+W - Yl1dJPLm5vL/8vH//+7m5u3awaLBv8Ks0f+ZmZmZmZmZmZn/hmZl9ebm5v769P9CZWWGQvLm5vL///// - 9+bm5vOao6C/o8HIsf+ZmZmZmZmZmZn/hYVi9+bm5vv/+P/19ACNQvLm5vL/+f/15+bm6P+8oJ6josCr - 0P+ZmZmZmZmZmZn/Vlhd/+fm5un09e7m5/cHRPLm5ury8u3m5ubm9dmgnr6iosCqsP+ZmZmZmZmZmZn/ - iIRhAfLm5ubm5ubm5uqWYvLm5ubm5ubm5ubz/8u+uLihob+or/+ZmZmZmZmZmZn/XIxbVf/y5ubm5ubm - 6feXjfLm5ubm5ubm6vf/u7i4t7egoaOmr/+ZmZmZ////////i1o4GFX/+/Lq6u70/2pwJ/Xy8vLy8vP7 - /5qit7a2pKSgoKOnzv+ZmZmZ/2aGhmb/WT1AORiAjZZqal4vk5JJk5EnXY1lYmL/nqSktbW15eWfoKOl - zf+ZmZmZ/4qKior/HBsdQDkYM1tBQYRQeJVKkkZrQ46EQWT/vb294+Pj3tfWn6KlzP+ZmZmZ/4iIiIiI - GxwbGR84FxNaWoh9enZOdXFGkGmIWlr/1OTk4+Hd39fW1Z/Crv+ZmZmZ/1dXV1dXVxsbGxkfOBcTWYhU - fXt2lHVuRpCIWWf/5OTk4+Hd3NfWtJufrv+ZmZmZ/2RkZGRkZGQbGxs+HzgYM4FSU317d5R1SGxrQ45j - /+Tk4uDd29fWtLSbn/+ZmZmZ/1lZWVlZWVlZGxsdPjw5GDOBUlN+T01Lckdta4+OX//k4uDd29fUvbS0 - m/+ZmZmZ/1lZWVlZWVlZWRsbGz88OjQwgVJRgE94THNHbUWPZ1//4uDd29fU1P///5mZmZmZ/wUIJikM - DhARMTcbGz0ePDo0MIiIiIiITnRub5BpaGdf/+Dd2////zz/mZmZmZmZ/yIFCCYpKw0QExU2GxwdHziI - iIuLi4uLiIh1bkaQaWhnWf///5J4UyD/mZmZmZmZ/wMiBgkKKisuDxIUNhsbHYiHh4eHh4eHh4eISkhs - a0OOY1laZ2tzUFT/mZmZmZmZ/wMDIwYJKAssLTAyFh0bG4iMjIyMYIyMjIyIS3JHbWtDjmNZWo5tSnn/ - mZmZmZmZ/wMDBCMICSgMDi0RMjUcGz2IiIiIiIiIiIhPTUtzR21Fj2dfWVlobEv/mZmZmZmZ/wMDAwQF - CCYpDA4QETE3GxsZHoiIiIiIVHyAeU50cW+QaWhnX1pfQ2//mZmZmZmZ//////+CYWFhYWENEBIVNhsc - GR84FxMwUlR8endOdW6JiYmJiYL/////mZmZmZmZmZmZmZn/YWFhWSorLg8SFB0bGx0fORgzgVJUfXt3 - lEpIWSWJJf+ZmZmZmZmZmZmZmZmZmZn/XINZCSgLLC0wMhYdGxs+PDkYM4FSU397TUtyR1lcXP+ZmZmZ - mZmZmZmZmZmZmZn/QVkjCCYoDA4t//81GRs9Pzw6NDD//1GAeXhMc29ZQf+ZmZmZmZmZmZmZmZmZmZn/ - WQMEBQgmKQz/mf8xNxscPR48FzT/mf98enlOTHFvWf+ZmZmZmZmZmZmZmZmZmZn/AwMDIgUIJv+Zmf8S - FDYbGx0fOBf/mZn/fXp3TnVuRv+ZmZmZmZmZmZmZmZmZmZmZ/wMDAyIF/5mZmf8PEhQ2Ghs+Hzj/mZmZ - /317d5RK/5mZmZmZmZmZmZmZmZmZmZmZmf8DAwP/mZmZmf8tMDIWGRscPjz/mZmZmf9+T03/mZmZmZmZ - mZmZmZmZmZmZmZmZmZn/A/+ZmZmZmf8OLREyNRkbPT//mZmZmZn/gP+ZmZmZmZmZmZmZmZmZmZmZmZmZ - mZmZ/5mZmZmZmf8MDhARMTccGxn/mZmZmZmZ/5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmf8p - Kw0QEhU2Oxv/mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmf//////////////mZmZ - mZmZmZmZmZmZmZmZmZmZmZmZ/////+H/AAD/////AP8AAP////gAfwAA////+AA/AAD/4DgAAB8AAP/A - GAAADwAA/4AIAAAPAAD/gAAAAA8AAP+AAAAADwAA/4AAAAAPAAD/wAAAAA8AAP/gAAAADwAA/8AAAAAP - AAD/gAAAAA8AAP8AAAAADwAA/gAAAAAPAAD8AAAAAA8AAPgAAAAADwAA+AAAAAAPAAD4AAAAAA8AAPgA - AAAADwAA+AAAAAAPAAAAAAAAAA8AAAAAAAAADwAAAAAAAAAPAAAAAAAAAA8AAAAAAAAADwAAAAAAAAAP - AAAAAAAAAA8AAAAAAAAAHwAAAAAAAAA/AAAAAAAAAD8AAAAAAAAAPwAAAAAAAAA/AAAAAAAAAD8AAAAA - AAAAPwAAAAAAAAA/AAD4AAAAA/8AAPgAAAAD/wAA+AAAAAP/AAD4AQAQA/8AAPgDABgD/wAA/AcAHAf/ - AAD+DwAeD/8AAP8fAB8f/wAA/78AH7//AAD//wAf//8AAP//AB///wAAKAAAACAAAABAAAAAAQAIAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAABsaGwBJRUAA8ujaAOLWwwDVy7sA/vTkAPjv4QCZhmMAeGlOAKqV - bwCOfF0ArJdxAJOBYQA5MiYAoo9tAH1uVQC1oH0Aqph3AK2bewC5poUAp5d6ALmpjAC3qZEA2cy2ANzQ - ugDWzLoA593LAO7k0wDt49IA6+HQAOfezgDx6NgA6+LTAPTr3ADz6tsA8OfYAPfu3wDz690A+fHjAC0o - HgCdjGoAFhQQALWlhwCyo4UAJCEbAMO1mQC4q5MAo5iCAJ2TfwCelIEA0sWtAOHUvAC1q5cAzMGrAJOL - ewDl2sUA7OHMANPKuAD37dkA6d/MANnQvgDXzr0AyMCwAHx3bQD47tsA5NvKAOLZyABNSkQA9+7cAPLp - 2ADw59YA/fTjAOzk1ADp4dEA7+fXAOvj1AD17d4A9OzdAPHp2gDt5dYAQD46AGVbRgBWTjwAd2xUAGxi - TAA2MSYAYFdEAJCEagCbj3UAiH5oAJuQdwCbkHgAnZJ7AKSZggCnnIUAzL+kAHNsXQCxp5EAmpF+ALCm - kQCto44Aw7mjALqwmwCxqJUAu7KeAL+2ogDDuqcA0sm2AN3VxADm39AAXVQ+AGddRgB1alAAY1pFAF1V - QQByaFAAaF9JAHBmTwBEPjAAlIdpAIl9YQB/dFoAeW9WAHFnUABIQjMAhXpgAEhCNACLgGUAgXdeAI2C - aACIfmUAb2dTAJaLcQAoJR4AkohvAGFaSgCXjXUAkohxALSpjwChl4AArqSNAKifiQCroowAsaiSAMa8 - pAC4r5kAt66YAMC3oQC9tJ8AxLumAP/45wBmXUUAaWFKAFVOPABkXEcATUc3AG1lTwBqYk0AeG9YAIF4 - YABxaVQAkIZsAIqCbACEfWsAtq2WAP/56QAdGxUAMS4lABAPCgD///0AW1taAAAAAAAABwYADSUjAACz - rQABuLIAAWllAAFbWAACm5YAApOOAAKOiQACiIMAAVVSAAKAfAACfnoAAn14AAJ8dwACe3cAAnl1AAJ2 - cgACcW0AAm9rAAJtaQABPDkAAlxZAAJWUwAMKyoADCgnAA0nJgANJiUADSUkAAAoJwABZGEAA8jCAAKk - nwACnZkAApWRAAKKhgAChYEABNLNAAJ3dAACdHEAAnNwAAJybwACcW4AAm1qAAJraAACamcAAmlmAATB - vAACX10ABq2oAA3Z1gAOv7wAEcnHAAAJCQAb09MABBoaACPMzgAiw8UAByIiAC/x9QAq2NsAKLG1ADjX - 3gBA3OUAPM3UAE3z/gA4u8QA////AO7u7gDm5uYA3t7eAM7OzgC6uroAra2tAJubmwCZmZkAgICAAHd3 - dwBlZWUAMTExACUlJQATExMAAgICAAAAAACrq6urq6urq6urq6urq6urq6urq6urq62tra2rq6urq6ur - q6urq6urq6urq6urq6urq6utra2t3Lq3wq2rq6urq6urq6urq////////6v//////63/trDZ19W4wq2r - q6urq6urq6v////////8////////////tsrA1b29w62rq6urq6ur///68O/v8Pn///Hv7+/0+v//ttnW - 077Axqurq6urq6v//+/v8/Pv76r/8e/v7+/v9P//sb7T1dqtq6urq6urq6v//////fXv9f/x7/////Dv - 9//B1L3U2Mirq6urq6urq6v///z/9+/0//Hv///j/+/v/8HTvdPAyKurq6urq6ur+/3/qvTv7/n/8e// - /+bj8u//wby70r/Hq6urq6urqyn/+/Lv7+/0p//x7///5sn07//BuLm8vserq6urq6spUv/w7+/2qlV2 - //Hv///j4fLv/8HQt7nUxqurq6urKXxS/+/v//+m////8e///6z/7+//wbTQt9PGq6urq6spUlL/7+// - ///4///x7//+//Dv9/+yzs/Q0serq6urqylWdv/z7/D07+////Hv7+/v7/P/sczNtNC8xqurKSkpAFEx - Afv07+/v+P//8e/v7/L3/7HdrsyztbvGq6spm5uojSVsP///////Nv///////8Wxrq/f3bPPucWrqyx0 - cX5NAkttPYKXYmaOL4iGnHrFy9vk5Orlzc+4xaurhXp1dTAGIUhJPZ9klZKMXVyegMXn6+vq5ODbsrjG - q6sneHl5cC8kAk8eQhk1amZjL1qhxezt6+ji4MvbzMSrq6d3f4FXeGYmTktBQms0Y41hXYiBxe7n6OLe - 0a+vxaurDRAqLTUYGh8iIyJponF0mFmLi4SBxenn4sXFxcWrq6tVCxEqLV8YOwImPm5ve3V1b51eXIZ/ - xcXFYDYnq6urqw0JDhIVLTIzHSRsnG6aUZpyn2FeW4Z/fYChpCerq6urJwcKKBQrLjUDHCYeZ52DoGeU - kYxdhoJ9gHqJJ6urq6tDQ0NDQ1JUFhc3RSRMSh5sOTVpNIxZcXJDQ0NDq6urq6urq0OaUystXzMEIE0f - IEI8amhlj4yEc3ZDq6urq6urq6urQ3koEipfNkNDBSJKSUZQQ2iTYY1YmUOrq6urq6urq6tDDA4OE1lD - q0NAIiJPREOrQ5SUZIqHQ6urq6urq6urq6tDBwkPQ6urQzgbIQJHQ6urQ2iQo0Orq6urq6urq6urq6tD - CEOrq6tDMzdGIqVDq6urQzZDq6urq6urq6urq6urq6tDq6urq0MzNzqWqUOrq6urQ6urq6urq6urq6ur - q6urq6urq6urQ0NDQ0NDQ6urq6urq6urq6urq6ur///+H///4A/+BAAH/AAAA/gAAAP4AAAD/AAAA/4A - AAP8AAAD+AAAA/AAAAPgAAAD4AAAA+AAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAHAAAADwAA - AA8AAAAPAAAAD+AAAD/gAAA/4CAgP/BgMH/44Dj//eA9///gP/8oAAAAEAAAACAAAAABAAgAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA0MCmAMe5ogDy6NgA7uTUAPfu4ACAcVYAtqF9AObaxQDo3coA1827AOng - 0ADo388A/vXlAPrx4QD37t4AxrKNAKubfQConIUAuK6aAOvfxwDHvakAzcSzAPDo2QD58eIAbWJLAEQ+ - MQCpm30AppqAAJiNdQCRinsAt6+dALqyoACGe2AAiH1iAHRrVgCQhm0AmI52AExHOwCakHgAo5mCAKac - hQC7sZoAn5eDAEpFOAC6sJYAuK+YAL61ngC1rZgAo5yKAP//8gAAAAAAAVFOAAGuqQACz8kAAoJ+ADDw - 9AAw7/MA////AL+/vwBBQUEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMjIyMjIyMjIyMjMzMjIyMjw8PDw8PDw8PDw1NDMyMjI8Ojk5 - Ozw6OTo7PDQ2MzIyPDw7Ojo8OTw7Ojw0NjMyMjw7Ojo7PDk8PDk8NDYzMiU8Ojo7PDw5PDs6PDQ2MzIl - PDs5OTo8Ojk6Ozw0NjM8JRU8PDw8PDw8PDw4ODYzJSUlFgsSFC0kITM4ODg4MyUaGwkECiUlKBwgMzc4 - MzMlDwAHDR8lJSInKxkzMzIyJSUlEQgCHiovLiYlJSUyMjIlGBABJRcOJR0pIyUyMjIyJQUGJSUDDCUl - MCwlMjIyMjIlJTIlEzElMiUlMjIyMjIyMjIyJSUlJTIyMjIyMjL/86urwAH7/cAA9O/AAP/xwAD/5oAA - 7/+AALvSAACrqwAAq6sAAP/7AAPv7wAD//GAB//mgAfv/8hPubz4f6urKAAAADAAAABgAAAAAQAgAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAA - AAQAAAAGAAAACQAAAAwAAAAPAAAAEQAAABIAAAASAAAAEAAAAA4AAAAMAAAACgAAAAkAAAAKAAAADAAA - AA0AAAAOAAAADwAAAA8AAAAOAAAADQAAAAsAAAAJAAAABwAAAAUAAAADAAAA/wAAAP8AAAD/AAAA/wAA - AH8AAAB/AAAAfwAAAH8AAAA/AAAAPwAAAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAACAAAABQAAAAkAAAAOAAAAFAAAABkAAAAeAAAAIQAAACIAAAAhAAAAHwAAABwAAAAYAAAAFQAA - ABQAAAAVAAAAGAAAABoAAAAcAAAAHgAAAB4AAAAdAAAAGwAAABgAAAAUAAAA/wAAAP8AAAD/Anp2/wJ6 - dv8Ce3f/Anl2/wAAAP8AAAB/AAAAfwAAAH8AAAB/AAAAfwAAAD8AAAAfAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAIAAAAFAAAACgAAABEAAAAZAAAAIgAAACsAAAAxAAAANQAAADcAAAA2AAAAMwAA - AC4AAAApAAAAJgAAACQAAAAlAAAAKQAAACwAAAAwAAAAMgAAADIAAAAxAAAA/wAAAP8AAAD/AnJu/wJ1 - cv8Cd3P/Anl1/wJ8eP8CfHj/Ant3/wJ6dv8AAAD/AAAAfwAAAH8AAAB/AAAAfwAAAH8AAAA/AAAAHwAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAIAAAADwAAABoAAAAoAAAANAAAAEAAAABIAAAATQAA - AE8AAABOAAAASwAAAEUAAAA/AAAAOgAAADgAAAA5AAAAPgAAAEMAAABIAAAASwAAAEwAAABKAAAA/wFj - YP8CZmP/Amtn/wJva/8CdHD/Anh0/wJ7eP8CfXn/Ant3/wJ8d/8Cc2//AAAA/wAAAH8AAAB/AAAAfwAA - AH8AAAA/AAAAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAALAAAAFgAAACQAAAA1AAAARQAA - AGcAAACHAAAAigAAAIsAAACLAAAAXgAAAFgAAABTAAAATgAAAEsAAABMAAAAUQAAAFYAAABaAAAAXgAA - AF8AAABdAAAA/wFaV/8BXVv/AWJf/wJoZP8Cb2r/AnRx/wJ6dv8CfXn/Anx3/wJ8eP8CdHD/Amll/wAA - AP8AAAD/AAAAfwAAAH8AAAA/AAAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAANAAAAGgAA - ACoAAACXAAAA6AAAAP8gICD/RERE/0RERP8AAAD/AAAA/wAAAMIAAABtAAAAXwAAAKcAAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEtLP8BS0n/AVtY/wFgXf8CaGX/AnBs/wJ3dP8CfXj/Ant3/wJ9 - ef8CdnH/Ampn/wJfW/8AAAD/AAAAHwAAAB8AAAAfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA - AAUAAAAOAAAAKQAAAMYAAAD/dXV1/97e3v//////////////////////mZmZ/xAQEP8AAAD1AAAAfgAA - AK11dXX///////////////////////////+6urr/dXV1/yAgIP8AAAD/AS8t/wFbV/8BYl//Amtn/wJz - cP8CfHj/Anp2/wJ9ev8Cd3L/Amtn/wJfXf8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAUAAAANAAAAZhAQEP+6urr//////////////////////////////////////+7u - 7v8gICD/AAAA3AAAALZ1dXX///////////////////////////////////////////91dXX/AAAA/wAd - HP8BXFr/AWZj/wJwbf8Ce3b/Anp1/wJ9ev8Cd3P/Amxp/wJhXf8AAAD/AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAALAAAAZFVVVf/////////////////u7u7/urq6/97e - 3v////////////////+6urr/AAAA/wAAAMF1dXX///////////////////////////////////////// - ////////qqqq/wAAAP8AKij/AWNf/wJuav8CeXX/Anh1/wJ9ev8CeHT/Am1q/wJhXv8AAAD/AAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAJAAAAYgAAAP9lZWX//////5mZ - mf8AAAD/AAAA9QAAAP+JiYn/////////////////ICAg/wAAAMZ1dXX///////////91dXX/AAAA/wAA - AP8wMDD/qqqq/////////////////4mJif8AAAD/AVVS/wFsaf8CeXT/Andz/wJ+ev8CeHT/Am5r/wJi - X/8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAIAAAAFgAA - AIMAAAD/RERE/wAAAP8AAAC/AAAAaQAAALwAAAD/////////////////RERE/wAAAMR1dXX///////// - //91dXX/AAAAvAAAAIoAAADFAAAA/5mZmf////////////////8gICD/ACwr/wFsaP8CeHX/Anh0/wJ+ - ev8CeXX/AnBs/wJkYP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA - AAMAAAANAAAAJgAAAEgAAACLAAAAkAAAAI4AAAB5AAAAxAAAAP9ERET/////////////////MDAw/wAA - AP91dXX///////////91dXX/AAAA/wAAAGoAAABJAAAA/wAAAP/e3t7///////////+JiYn/ABoa/wFs - af8CeXb/Anh0/wKAe/8Cenb/AnFt/wJlYf8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAgAAAAeAAAAPwAAAFoAAABtAAAArQAAAOUAAAD/ICAg/5mZmf////////////// - ///u7u7/AAAA/xsYEv91dXX///////////91dXX/AAAA/wAAAGoAAABHAAAA/wAQD/+JiYn///////// - //+6urr/AAAA/wFuav8CfHj/Anl1/wKAe/8CfHj/AnJu/wJlYv8AAAD/AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAABkAAAA4AAAAUQAAAP8AAADkAAAA/2VlZf/Ozs7///////// - //////////////////91dXX/AwMC/xwZE/91dXX///////////91dXX/AAAA/wAAAG0AAABMAAAA/wA4 - N/9ERET/////////////////AAAA/wFxbP8Cf3v/Ant3/wKCfv8CfXn/AnNv/wJnY/8AAAD/AAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAC0AAABIAAAA/w8OC/8QEBD/zs7O//// - /////////////////////////////3V1df8AAAD/IB4X/yEeF/91dXX///////////91dXX/AAAA/wAA - AHMAAABXAAAA/wFHRf9ERET/////////////////AAAA/wF1cv8ChID/An55/wKEf/8Cfnr/AnRw/wJn - ZP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAADYAAAD/OTQo/wAA - AP+6urr//////////////////////97e3v+JiYn/ICAg/wAAAP8kIRn/RD4w/yUiGv91dXX///////// - //91dXX/AAAA/wAAAH0AAABtAAAA/wAtK/9lZWX////////////u7u7/AAAA/wJ8eP8CiYX/AoB9/wKG - gv8Cf33/AnVx/wJoZf8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAA - AP9FPzH/MCsh/xAQEP////////////////+qqqr/MDAw/wAAAP8AAAD/HhwW/zw3K/9HQTL/SUM0/ygk - HP91dXX///////////91dXX/AAAA/wAAAIsAAACFAAAA/wAAAP+ZmZn///////////+qqqr/AAgI/wKE - gP8Cj4v/AoSA/wKKhf8Cg37/AnZz/wJpZv8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAA/05HN/9LRTb/NC8k/0RERP////////////////8QEBD/AAAA3QAAAKsAAAD/Lysh/zEt - I/8zLyT/Tkg3/ysoHv91dXX///////////91dXX/AAAA/wAAAJIAAACuAAAA/zAwMP////////////// - //9lZWX/ACsp/wKNh/8Cl5L/AoiE/wKMiP8Cg3//Anh0/wJqZ/8AAAD/AAAAAAAAAAAAAAAAAAAAAAAA - AAQAAAAMAAAAEAAAABAAAAAQAAAA/1VOPP9TSzr/OTQp/zAwMP////////////////8gICD/AAAA/wAA - ANQAAAD/RERE/1VVVf8GBQT/RUAy/y8rIv91dXX///////////91dXX/AAAA/wAAANsAAAD/RERE/+7u - 7v///////////97e3v8AAAD/AVRS/wKXk/8Cn5v/AoyH/wKPiv8ChoH/Anl1/wJraP8AAAD/AAAAAAAA - AAAAAAAAAAAAAAAAAAwAAAAkAAAAMAAAADAAAAAwAAAA/11VQf9bU0D/R0Ay/wAAAP/u7u7///////// - ///Ozs7/VVVV/0RERP+ZmZn//////+7u7v8wMDD/GxkU/zQwJ/91dXX///////////+6urr/dXV1/3V1 - df+qqqr//////////////////////0RERP8AEhL/ApiT/wKhm/8CpqL/ApCM/wKRjP8ChoL/Anp2/wJt - af8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAQAAAAEAAAABAAAAA/2NbRv9iWkX/X1dD/wgH - Bv91dXX///////////////////////////////////////////+6urr/HhwX/zo2LP91dXX///////// - ////////////////////////////////////////ZWVl/wAAAP8Bc3D/AqSf/wKqpf8Crqr/ApOO/wKT - jv8CiYT/Ant3/wJua/8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAQAAAAEAAAABAAAAA/2ti - TP9pYEv/f3Ra/3NuZv8AAAD/dXV1/////////////////////////////////87Ozv8wMDD/IiAb/0M+ - Mv91dXX//////////////////////////////////////7q6uv8wMDD/AAAA/wFkYP8Cq6b/Aq+p/wKy - rf8CtK//ApWR/wKUj/8Ci4b/An15/wJva/8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/3NoUf+Cd1z/6ODR/+DYyf9zb2b/AAAA/yAgIP91dXX/urq6/7q6uv+ZmZn/VVVV/wAA - AP8cGxf/dG1c/0pFOf9ERET/dXV1/3V1df91dXX/dXV1/3V1df9lZWX/ICAg/wAAAP8BLy3/ApCL/wKz - rv8CtrH/Ariy/wK6s/8CurT/ApeS/wKXkv8Ci4f/An56/wJwbf8AAAD/AAAAAAAAAAAAAAAAAAAAAAAA - AP9NRzf/Tkc3/05INv9NRzf/AAAA/4N4Xf/x6dr/7eXW/+ff0P/h2cj/vLWm/0M9MP8eHBb/HhsV/x4b - Ff8YFhH/REA4/29pW/+hmIP/nZN+/29oV/9OSTz/S0U4/0dCNf9EPzL/MS0j/zw3Kv88Nyv/AAAA/wOi - nf8DurX/A7y2/wK8t/8Cvbj/Ar+4/0LT3v9D093/ApqV/wKYk/8CjYj/An97/wJxbv8AAAD/AAAAAAAA - AAAAAAAAAAAAAAAAAP9ZUj//WVI//1lRP/9ZUT7/AAAA//Lp2v/z6tv/8OjZ/+3l1v/n39D/4drK/9vT - wf9+dFr/em9W/3pvVv9gWET/t62a/7Oqlf+uppD/qZ+J/6Kagv+cknv/k4py/46Da/+Jf2X/YFhE/3pv - Vv97cVf/AAAA/wPEvv8DxL7/A8S+/0Xa5P9E2eP/Rdji/yTOzv8aycj/EMTB/wKalf8Cj4r/AoB8/wJy - b/8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAP9kXEf/ZFxH/2RcR/9kXEf/ZFxH//Pq2//y6dr/8+rb//Hp - 2f/t5dX/6ODQ/+Pbyv/d1cP/gXdc/4F3XP9jW0b/wrmk/720n/+4r5n/saiS/6uhiv+lm4P/nZN7/5eM - c/+Rh23/Y1tG/4J3XP+Cd1z/AAAA/wPLxP9I4ez/R+Dq/0Hc5f822N//K9PX/yHO0f8Yycn/DsXC/wXA - u/8CmpX/AoJ+/wJ0cP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAP9wZk//cGdP/3BmT/9wZk//cGZP/3Bm - T//z6tv/8+rb//Lq2//x6dn/7eTV/+jg0P/k28r/3dTD/4N4Xf9kXEf/ycCs/8K5pf+9s57/uK+Z/7Gn - kf+roYr/pJqC/52Sev+XjXP/ZFxH/4N4Xf+HfWL/AAAA/0nn8v9I5fD/RuPt/z/f5v802t//KdXY/x/P - 0f8Uy8n/DMbB/wPBvP8CwLr/ApuW/wJ0cf8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAP97cFf/e3FX/3tw - WP97cVj/e3FY/3twWP97cVj/8+rb//Pq2//y6tv/8OfY/+zk1f/o4ND/4tnJ/9vSwf/Vzbr/z8Wy/8i+ - qv/CuaT/vLOe/7atl/+wpY//qqGJ/6KXgP+bkHj/lYpx/4+Fa/+Kf2X/hntg/wAAAP9J6PP/RuXw/zzg - 6P8x2+H/J9bY/xzR0v8TzMr/CcfD/wLDvv8Cwrz/AsC6/wKblv8AAAD/AAAAAAAAAAAAAAAAAAAAAAAA - AP+DeF3/g3hd/4N4Xf+DeF3/g3hd/4N4Xf+DeF3/g3hd//Pq2//z6tv/8eja/+/n2P/r49P/5t7O/+HY - x//a0cD/1My5/87Fsf/Gvan/wbij/7uxnP+1q5X/rqSO/6ieh/+hl3//mo93/5SKcP+Og2n/iX5k/4V6 - YP8AAAD/Refx/zrj6f8v3eH/Jdja/xvS0v8Qzsr/B8jE/wPFv/8Cw77/AsK8/wLAuv8AAAD/AAAAAAAA - AAAAAAAAAAAAAAAAAP+DeF3/g3hd/4N4Xf+DeF3/g3hd/4N4Xf+DeF3/g3hd/4N4Xf/z6tv/8+rb//Lq - 2//u5tf/6uLS/+Xczf/g18b/2dC+/9LKt//Mwq//xbyn/7+2of+6sZv/s6qU/62kjf+nnYb/oJV9/5iO - dv+TiG//joRp/4h9Y/+Fel//AAAA/zjk6/8t3uL/Itnb/xjU0v8Nzsv/BcrE/wPHwv8AAAD/AAAA/wAA - AP8AAAAQAAAAAAAAAAAAAAAAAAAAAAAAAP+kknH/q5l6/7Sjhf+8rJD/xLab/8u9pf/VyLH/3tK9/+fc - yv/u5dT/8+vb//Pq2//x6dr/7ubW/+ri0v/l3cz/3tXE/9jQvf9kXEf/ZFxH/2RcR/9kXEf/ZFxH/7Kp - k/+soov/pZqD/56UfP+YjXT/kodu/4yBZ/+IfWP/hHlf/wAAAP8q4OP/INvb/xXV1P8AAAD/AAAA/wAA - AP/o4dj/AAAA/wAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAP+hjmv/ppNy/62bfP+2pYf/va6T/8a4 - nv/Nv6f/1sq0/9/UwP/p383/8OfW//Pq2//y6dv/8OjZ/+3k1f/o4ND/ZFxH/2RcR/90alL/c2pS/3Rq - Uv9zalL/c2pS/2RcR/9kXEf/q6GK/6Sagv+dknr/l41z/5GGbP+LgGb/h31i/4R5Xv8AAAD/AAAA/wAA - AP+imYP/sqmX/8S8rP/a08f/AAAA/wAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAP+diWb/oo9s/6iW - df+vnn//t6eK/7+wlf/HuZ//zsGp/9jMtv/i18P/6uDP//Hn1//z6tv/8urb//Do2P9kXEf/bmVO/25l - Tv9uZU7/bmVO/25lTv9uZU7/bmVO/25lTv9uZU7/ZFxH/6qgif+imIH/m5F5/5WKcf+PhGv/in9l/4Z7 - Yf+EeV7/gndd/4h9Y/+UinP/pZyH/7Wsmv/IwLH/AAAA/wAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAA - AP+diWb/nYlm/6KQbv+pl3f/saGC/7mpjP/Bspf/yLqh/9HErP/bz7n/5NnF/+zi0f/x6Nn/8+rb//Lq - 2/9kXEf/aWBK/2hgSv9oYEr/aWBK/2hfSv9oYEr/aGBK/2hgSv9oYEr/ZFxH/66kjv+onof/oZd//5qP - d/+UinD/j4Vq/4l+ZP+Ge2D/g3hd/4J3Xf+JfmX/mI93/6ifi/+3r53/AAAA/wAAACQAAAAMAAAAAAAA - AAAAAAAAAAAAAAAAAP+diWb/nYlm/56LaP+kkXD/q5l5/7Khg/+7q47/w7SZ/8q9pP/Sxa7/3NC7/+Xa - x//t5NL/8ura//Pr2//x6dr/ZFxH/2RcR/9kXEf/ZFxH/2RcR/9kXEf/ZFxH/2RcR/9kXEf/urGb/7Sr - lP+upI3/p52G/6CVff+Zj3b/k4hv/42Daf+IfWP/hXpf/4N4Xf+DeF3/jIJo/5qRev+spI//AAAA/wAA - AAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAP+diWb/nYlm/52JZv+fjGn/pZNx/6uae/+0o4X/vKyQ/8S2 - m//LvaX/1cix/93Rvf/n3Mr/7uXU//Pq2//z6tv/8enZ/+7m1v9kXEf/ZFxH/2RcR/9kXEf/ZFxH/8vB - rv/Eu6b/v7ah/7mwmv+yqJP/rKKL/6abhP+elHz/mI50/5KHbf+Mgmj/iH1j/4V6X/+Cd13/hHlf/4+E - a/+elX//AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAD/Pzos/15W - Q/9eVkP/XlZD/15WQ/9eVkP/zb+n/9bJs//g1cH/6d7M//Dm1v/z69v/8unb//Hp2f/t5dX/6ODQ/+Pa - yv/d1MP/1868/9DItf/Jv6z/w7ql/720n/+3rpj/saiS/6uhiv+kmoL/XVZC/11WQv9dVkL/XVZC/11W - Qv8/Oiz/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAA/15WQ/9eVkL/XlZD/4N4Xf+/sZX/x7mf/8/Cqv/YzLb/4tfD/+rgz//x6Nj/8+rb//Lq - 2//w6Nj/7OTU/+ffz//i2sn/29LB/9XMuv/PxrL/yL+r/8K5pP+8s57/tq2Y/7CnkP+pn4j/opiB/4N4 - Xf9eVUP/XVZC/15VQv8AAAD/AAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAA/2tiTP9rYkv/g3hd/7Gggf+6q43/wbKY/8m7of/Rxa3/2s65/+PY - xf/s4tH/8ejZ//Pq2//y6tv/7+fY/+vj0//n387/4djH/9rRwP/UzLn/zsWx/8a9qf/At6L/vLOd/7Wq - lf+upY7/qJ2H/6GXf/+DeF3/a2JM/2tjTP8AAAD/AAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/3lvVv+DeF3/pJFv/6uaev+zo4T/u6yP/8O0 - mv/KvaT/0sWu/wAAAP8AAAD/7eTT//Lp2f/z6tv/8ena/+7m1//q4tL/5d3N/9/Wxv/Yz77/AAAA/wAA - AP/FvKj/v7Wh/7qwm/+0qpT/rqON/6eehv+flX3/g3hd/3lvVv8AAAD/AAAAFAAAAAQAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4N4Xf+diWb/n4xp/6SS - cf+rmXr/tKOF/7yskP/Etpv/AAAA/wAAAAAAAAD/59zK/+7k1P/z69v/8unb//Hp2v/u5db/6uLS/+Tc - zP/e1cT/AAAA/wAAADAAAAD/xLum/761oP+5sJr/sqiT/6yjjP+lmoT/npR8/4N4Xf8AAAD/AAAABAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/52J - Zv+diWb/nYlm/6GPa/+mlHP/rp19/7Wlh/8AAAD/AAAAAAAAAAAAAAD/4NXB/+rgzf/w59b/8+rb//Pr - 2//w6Nn/7OTV/+jg0P/j2sr/AAAA/wAAADAAAAAQAAAA/8O5pf+9tJ//t62Y/7Gokv+roYr/pJqC/52S - ev8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAP+diWb/nYlm/52JZv+hjmz/p5R0/wAAAP8AAAAAAAAAAAAAAAAAAAD/2My2/+LX - w//q387/8efX//Tr3P/y6tv/7+bY/+zk1P/o4ND/AAAA/wAAADAAAAAQAAAAAAAAAP/CuaT/vLOe/7at - l/+wp5D/qZ+I/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/nYlm/52JZv+diWb/AAAA/wAAAAAAAAAAAAAAAAAA - AAAAAAD/0cOs/9rPuf/j2MX/7OLR//Lp2f/z6tv/8una/+/n2P/r49P/AAAA/wAAADAAAAAQAAAAAAAA - AAAAAAD/wbij/7uxnP+1q5X/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/52JZv8AAAD/AAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAD/yr2k/9LFrv/c0Lv/5drH/+3k0//y6dn/8+rb//Hp2v/u5tf/AAAA/wAA - ACQAAAAMAAAAAAAAAAAAAAAAAAAA/7+2of8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xLab/8u9pf/UyLH/3tO+/+fey//u5dT/8una//Pq - 2//x6dn/AAAA/wAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/va+T/8a4nv/NwKj/1sq0/+DV - wf/p383/8ObW//Ts3P/y6tv/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP4A - AAAAAwAA/AAAAAABAAD8AAAAAAAAAPgAAAAAAAAA+AAAAAAAAAD4AAAAAAEAAPgAAAAADwAA+AAAAAAP - AAD4AAAAAA8AAPgAAAAADwAA+AAAAAAPAAD4AAAAAA8AAPgAAAAADwAA+AAAAAAPAAD4AAAAAA8AAPgA - AAAADwAA+AAAAAAPAAD4AAAAAA8AAAAAAAAADwAAAAAAAAAPAAAAAAAAAA8AAAAAAAAADwAAAAAAAAAP - AAAAAAAAAA8AAAAAAAAADwAAAAAAAAAPAAAAAAAAAA8AAAAAAAAADwAAAAAAAAAPAAAAAAAAAA8AAAAA - AAAADwAAAAAAAAAPAAAAAAAAAA8AAAAAAAAADwAAAAAAAAAPAAAAAAAAAD8AAAAAAAAAPwAA+AAAAAD/ - AAD4AAAAAP8AAPgAAAAA/wAA+AEAAAH/AAD4AwAAA/8AAPwHAAQH/wAA/g8ABg//AAD/HwAHH/8AAP+/ - AAe//wAA//8AH///AAD//wAf//8AACgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAADAAAACAAAABAAAAAZAAAAJAAAAC0AAAA0AAAANwAAADcAAAA1AAAAMgAA - ADAAAAAxAAAAMwAAADUAAAA1AAAANAAAADAAAABbAAAAWgAREbcBJST/ASUk/wAKCroAAACFAAAAaAAA - AEwAAAAZAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAALAAAAFQAAACIAAAAwAAAAPQAAAEYAAABLAAAATAAA - AEoAAABHAAAARQAAAEYAAABIAAAASQAAAEoAAAC4AAAAuwAwMPABQkD/Al9d/wJ8d/8CgHz/AVxZ/wAD - A8IAAACEAAAAgwAAAFsAAAAcAAAAAAAAAAAAAAABAAAABgAAAA4AAAAZAAAAMQAAAHEAAACZAAAApgAA - AKkAAACMAAAAXwAAAFkAAAB9AAAAiAAAAIkAAACJAAAAiQEQEPkBU1D/AWBd/wFpZf8Camf/Am1q/wJy - b/8Cf3r/AlxY/wAGBtMAAACeAAAAbgAAADQAAAAAAAAAAAAAAAIAAAAGAAAADwAAAD8AAADFAAAA/wAA - AP9ERET/RERE/wAAAP8AAADYAAAAhAAAAOEAAAD/AAAA/wAAAP8AAAD/AAEB/wAWFf8BOzn/AV5b/wFk - Yf8CbGn/AnJu/wJ2cv8Cd3L/AlZT/wAJCcIAAAA2AAAADwAAAAAAAAAAAAAAAQAAAAYAAAAPAAAAkgAA - AP9lZWX/7u7u////////////7u7u/3V1df8AAADZAAAA3Lq6uv////////////////+6urr/ZWVl/wAA - AP8BMjH/AWJg/wJqZ/8CcW7/AnRx/wJxbf8CbWn/ARsb8wAAAAAAAAAAAAAAAAAAAAAAAAABAAAABgAA - AA8AAACfMDAw////////////zs7O/87Ozv///////////1hYWPcAAADeurq6//////////////////// - ////////urq6/xATE/8BSUf/Amtn/wJxbf8CdXH/AnJv/wJpZv8BGhjzAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAGAAAAEwAAAE0AAADbaGho94ODg+QAAACVAAAA7aqqqv//////ra2t+gAAAN26urr//////09P - T9wAAACxREVF/+7u7v//////mZmZ/wAkI/8BbGn/AnNv/wJ2cv8Cc3D/Amto/wEaGfMAAAAAAAAAAAAA - AAAAAAAAAAAAAgAAAAoAAAAgAAAAQAAAAGcAAACfAAAAtAAAAN0AAAD/mZmZ//////+7u7r/BQQD/rq6 - uv//////RUVF/gAAAHgBExP6REVF////////////ICoq/wFvbP8CdHH/AnZz/wJ1cf8CbWn/ARoZ8wAA - AAAAAAAAAAAAAAAAAAAAAAACAAAAEAAAAC8AAABXAAAAywAAAOwAAAD/VVVV/7q6uv///////////3l5 - eP8PDgv/urq6//////9KSUj+AAAAfAAcHPgAGhn/3t7e//////9lZmb/AXRx/wJ5df8Cenb/Andz/wJv - a/8BGhrzAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAATAAAAPQgIBd4AAAD/MDAw/97e3v////////////// - //+7u7r/Mi8n/xAPC/+6urr//////0pKSP4AAACEAR0c+QAoJ/+6urr//////3V2dv8Cenf/An56/wJ9 - eP8CeXX/AnFt/wEbGvMAAAAAAAAAAAAAAAIAAAAHAAAACwAAAB0MDArQIh8Y/wAAAP/u7u7///////// - //+ampr9X15c/zYxJv9FPzH/ERAM/7q6uv//////S0tJ/gAAAIgAGBj6AAkJ/97e3v//////dXh4/wKE - f/8ChYH/AoF8/wJ8eP8Cc2//ARsb8wAAAAAAAAAAAAAACQAAABkAAAAkAQEBtEhCM/8kIBn/RERE//// - ////////NTU16QAAAMUdGxX/NjEm/0xGNf8VFA//urq6//////9MS0r+AAAAmwAHBv9ERET///////// - //8gOzr/Ao+K/wKNif8ChYH/AoB8/wJ0cf8BGxvzAAAAAAAAAAAAAAAOAAAAKwAAADoDAwHDVk48/yon - Hv8wMDD///////////8lJCP/AAAA/DAwMP9lZWX/MzAm/xwaFf+6urr//////0hHRv4AAAD9VVVV/+7u - 7v//////mZmZ/wFUUf8Cm5X/ApWR/wKJhv8Cg3//And0/wEcG/QAAAAAAAAAAAAAABAAAAAvAAAAQQEB - Ab9gV0T/RD0v/wAAAP/Ozs7//////+7u7v+6urr///////////9qaGX/Ih8Z/7q6uv////////////// - /////////////87Ozv8QMDD/ApiT/wKmof8CnZn/Ao6J/wKFgf8CeXX/AR0c9AAAAAAAAAAAAAAAlQAA - AKUAAACtAQAB5WVbRf+elIH/SUVA/zAwMP+6urr/////////////////mZmZ/01JQP8hHxn/urq6//// - /////////////97e3v91dXX/ETc2/wKRjP8Craf/ALGr/wGkn/8Cko3/AoiD/wJ7d/8BHRz0AAAAAAAA - AAAWFBD/TUY3/01HNv8QDwr/qJ+L//Pr3v/a08T/fHdt/yMgGv8zMS3/U1JO/zo3Mv9taFv/lYt4/05K - Pv82Min/NTAn/ykmHf8rJx7/AxcW/wKDfv8Cr6n/ALWv/wC2sP8Ov7z/Cq2p/wGTjv8Ci4f/An15/wEd - HfQAAAAAAAAAAB8cFflnX0n/Y1tG/0hCNP/07N7/8una/+vj1P/m39D/1s28/4d9Zf9mXUX/mpF+/7mw - m/+rooz/opiC/5eNdv+Rh27/bmVP/3luVv8GNzX/AMvE/wPBu/8jzM7/JczO/zfS2P8iw8X/AZ2Y/wKL - hf8Cfnv/AR4d9AAAAAAAAAAAIyAZ+XhvVf9wZk//cGZO/52Tf//47+H/8+vc/+zk1P/p4dH/18+9/4F4 - YP+soo7/xLum/7eumP+upI3/pJqC/5yRev94b1j/gXhd/wc/PP8o6uz/QNvk/0Xd5v84197/IMzO/xLJ - x/8HwLv/AZuW/wJ+ev8BHRz0AAAAAAAAAAAoJR35iX1h/390Wv9/dFr/dWpQ/6OZgv/37t//8uja/+3l - 1v/n387/4tnI/9bMuv/Kwaz/w7qm/7qwmv+wppD/o5iC/5uQd/+Qhmz/NDw1/0HI0P9N8/7/O93l/yvX - 2/8e0NH/EMnG/wXFwP8Cw73/AqGc/wEhIPQAAAAAAAAAACsnHvmUh2n/jIBk/42CZ/+QhGr/iHxh/7ux - nP/58eL/8ena/+vj1P/k28r/49rI/9LJtv+1q5f/r6aR/6ifif+xqJH/pJmB/5eMdP+Og2n/Oj40/zi7 - xP888vn/Kdnb/xvU1P8N2db/BNLN/wK4sv8CubT/AS4s5wAAAAAAAAAANC4i+bWgff+1pIb/wrOX/8/B - qP/c0Lr/593L//Ho2P/z6tz/8OfY//Lq2v+/tqT/i4Nt/2NaRP9oX0n/aWFK/4iAav+hl4D/oZd//5aL - cv+Ngmj/Pz0x/yixtf8q9/r/F9bV/wWCf/8Dfnr/GCAf/QAAALgAAAA4AAAAAAAAAAAxKyD5rJdx/6qY - d/+1pYj/wbOY/8y/pv/bz7n/6d/M//Lo2v/58eP/yMCw/11UPv9nXUb/cWdQ/3BmT/9vZk//Zl1G/2ti - Tf+nnIX/nZN7/5OIb/+LgGf/QkY6/wtISP8XQDz/c2xd/5CKff8/PTj6AAAAGQAAAAkAAAAAAAAAADMs - IPmqlW7/o5Fv/66cfP+5qYz/xbeb/9LFrf/f077/6+HQ//fu3//e1sb/bGRP/1xUPv9lXEf/ZFtG/2Rc - Rv9dVUD/fXVg/7Gnkf+mnIT/m5B4/5KIbv+Kf2X/hXlf/4N3Xf+Qhmz/t62W/zo4MvkAAAAHAAAAAgAA - AAAAAAAALScd/5mFY/+OfF3/m4pp/6eXev+yo4f/uKuT/83Aqv/i1sP/7ePS//rx4//n3s//sKiW/2lh - TP9vZ1P/cWlU/7GnlP++taD/uK+Z/66kjf+kmYL/kYhv/4h+Zf+FemD/gXZc/3pvV/+SiHH/Lywn/wAA - AAAAAAAAAAAAAAAAAAAAAACOAAAAkQAAAJEWFBDdW1NB/1hQPf9sYkz/t6mR/9nMtv/k2cb/8unY//fu - 4P/17d7/7+fX/+fezv/e1cP/08q4/8rArP+/tqH/tayW/66ljf+Hfmj/Y1pF/1xUQf9MRTX/BwYEwgAA - AJoAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKlkXEf/d2xU/7Kig//EtZn/yr6k/+DV - vv/Vy7v/6+LT//Ts3f/w6Nj/6uLS/+LZyP/Z0L7/wrqn/7uzn//DuaP/saiS/66jjP+VinD/cmhQ/0Q/ - MP8AAABZAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICsH50Wf+ejWv/rJp6/7Wl - iP/Ov6P/lox7/wAAAL2fmIz//vTk//Pq3P/u5tf/6eDQ//Dm1f87OTT4GRgXzLuyn//At6H/saeR/6mf - iP+bj3X/VU48/wAAAFkAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwKkk4Fh/6OO - av+hj23/uaaF/4l+aP8FBANoAAAAP5qShf/47tv/8+rb//Pq2//t5db/9+7c/0dEPvcAAAA2HhwZvLy0 - n/++tJ7/raOO/7Spj/9hWkr/AAAATQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAQhHBXCmYZj/6qVb/99blX/AAAAcwAAAAAAAABTkol6/+zhzP/u5NP/9Ovc//Ho2v/99OP/SUdC+wAA - ACUAAAAMJyUhwruynv/GvKT/hH1r/wMDA3MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAkgHBW+eGlO/wUEA3oAAAAAAAAAAAAAAFKLgnH/4dO8/+Xaxv/w59b/8+rb///5 - 6f9LSUT5AAAAEgAAAAQAAAAJKCYivpGJev8HBwZ6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAABxAAAAAAAAAAAAAAAAAAAAUY6Db//k1bn/59vE//ft - 2f//+Of////9/1JPSvoAAAAGAAAAAAAAAAAAAAAKAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPKCUf+UI9 - NflCPjf5R0Q9+UtIQ/lRUEv5GBcW9AAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAwAAAAcAAAADAAAAAwAAAAMAAAAPAAAADwAAAA8AAAAPAAAADwAAAAwAA - AAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAPAAAAD+AA - AA/gAAAf4AAAP+BAAH/wwAD/+cAZ///AH/8oAAAAEAAAACAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAVFO/wFR - Tv8AAABAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wLP - yf8Brqn/AVFO/wAAAEAAAAAAAAAAAAAAAP+/v7////////////9BQUH/AAAA/7+/v///////v7+//0FB - Qf8AAAD/Aa6p/wKCfv8BUU7/AAAAAAAAAAAAAAD/AAAA/0FBQf+/v7//v7+//wAAAP//////AAAA/0FB - Qf+/v7//AAAA/wGuqf8Cgn7/AVFO/wAAAAAAAABAAAAA/0FBQf+/v7//v7+//0FBQf8AAAD//////wAA - AP8AAAD//////wAAAP8Brqn/AoJ+/wFRTv8AAAAATEc7/wAAAP+/v7//v7+//0FBQf8AAAD/AAAA//// - //8AAAD/QUFB/7+/v/8AAAD/Aa6p/wKCfv8BUU7/AAAAQExHO/8AAAD/QUFB////////////v7+//wAA - AP+/v7///////7+/v/9BQUH/AAAA/wGuqf8Cgn7/AVFO/wAAAP9MRzv/zcSz/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/zDv8/8w7/P/AoJ+/wFRTv9MRzv/TEc7/0xHO//w6Nn/6N/P/7iu - mv/Hvan/uK+Y/5iOdv+IfWL/AVFO/zDv8/8w7/P/MO/z/zDv8/8BUU7/TEc7/6mbff+mmoD/1827//fu - 4P/p4ND/TEc7/0xHO/+mnIX/mI11/4Z7YP8BUU7/MPD0/zDv8/8BUU7/AVFO/0xHO//Gso3/0MCm/+ba - xf/68eH/urKg/0xHO/9MRzv/dGtW/6OZgv9KRTj/RD4x/wFRTv8BUU7/AAAAAAAAAABMRzv/TEc7/0xH - O/+onIX/6N3K//Lo2P+3r53/n5eD/7WtmP++tZ7/mpB4/0xHO/9MRzv/TEc7/wAAAAAAAAAAAAAAAExH - O/9tYkv/q5t9/8e5ov9MRzv/+fHi//fu3v9MRzv/kYp7/7uxmv+Qhm3/TEc7/wAAAAAAAAAAAAAAAAAA - AABMRzv/fm9U/Lahff9MRzv/TEc7/+7k1P/+9eX/TEc7/0xHO/+imoj7urCW/0xHO/8AAAAAAAAAAAAA - AAAAAAAAAAAAAExHO/9MRzv/AAAAAExHO//r38f////y/0xHO/8AAAAATEc7/0xHO/8AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMRzv/TEc7/0xHO/9MRzv/AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAMABAADAAAAAwAAAAsAAABCAAAAvgAAAVwAAAMsAAADsAAAA/wAAVf8AA7r/AAP//4AH - //+AB3j/yE8L//h/uv8= - - - \ No newline at end of file diff --git a/ShoalShell.Plugins.HtmlHelpServer/NotificationIcon.vb b/ShoalShell.Plugins.HtmlHelpServer/NotificationIcon.vb deleted file mode 100644 index 5327975c8..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/NotificationIcon.vb +++ /dev/null @@ -1,83 +0,0 @@ -' -' Created by SharpDevelop. -' User: WORKGROUP -' Date: 2015/1/2 -' Time: 20:22 -' -' To change this template use Tools | Options | Coding | Edit Standard Headers. -' -Imports System.Threading -Imports System.Windows.Forms -Imports System.Drawing - -Public NotInheritable Class NotificationIcon - Private notifyIcon As NotifyIcon - Private notificationMenu As ContextMenu - - Dim _InternalServerThreading As Thread - -#Region "Initialize icon and menu" - Public Sub New() - notifyIcon = New NotifyIcon() - notificationMenu = New ContextMenu(InitializeMenu()) - - AddHandler notifyIcon.DoubleClick, AddressOf InternalShowAboutInfo - Dim resources As New System.ComponentModel.ComponentResourceManager(GetType(NotificationIcon)) - notifyIcon.Icon = DirectCast(resources.GetObject("$this.Icon"), Icon) - notifyIcon.ContextMenu = notificationMenu - End Sub - - Private Function InitializeMenu() As MenuItem() - Dim menuBuilder As MenuItem() = New MenuItem() { - New MenuItem("Open Home Page", Sub() Call Process.Start("http://127.0.0.1:8080")), - New MenuItem("About", AddressOf InternalShowAboutInfo), - New MenuItem("Exit", AddressOf menuExitClick) - } - Return menuBuilder - End Function -#End Region - -#Region "Main - Program entry point" - ''' Program entry point. - ''' Command Line Arguments - _ - Public Shared Sub Main(args As String()) - Application.EnableVisualStyles() - Application.SetCompatibleTextRenderingDefault(False) - - Call HelpServer.BuildDoc() - - Dim isFirstInstance As Boolean - ' Please use a unique name for the mutex to prevent conflicts with other programs - Using mtx As New Mutex(True, "Shoal-Http-Server", isFirstInstance) - If isFirstInstance Then - Dim notificationIcon As New NotificationIcon() - notificationIcon.notifyIcon.Visible = True - notificationIcon.notifyIcon.ShowBalloonTip(30, "Http help server", "ShoalShell Http help server is running at 127.0.0.1:8080!", ToolTipIcon.Info) - notificationIcon._InternalServerThreading = HelpServer.__runServer() - Application.Run() - notificationIcon.notifyIcon.Dispose() - notificationIcon._InternalServerThreading.Abort() - Call Console.WriteLine("Server thread shutdown...") - ' The application is already running - ' TODO: Display message box or change focus to existing application instance - Else - End If - End Using - ' releases the Mutex - End Sub -#End Region - -#Region "Event Handlers" - Private Sub InternalShowAboutInfo(sender As Object, e As EventArgs) - MessageBox.Show("ShoalShell Http help system local server Application plugin. ShoalShell version " & My.Application.Info.Version.ToString, - "ShoalShell Http Help Local Server", - buttons:=MessageBoxButtons.OK, - icon:=MessageBoxIcon.Information) - End Sub - - Private Sub menuExitClick(sender As Object, e As EventArgs) - Application.[Exit]() - End Sub -#End Region -End Class diff --git a/ShoalShell.Plugins.HtmlHelpServer/Resources/404.html b/ShoalShell.Plugins.HtmlHelpServer/Resources/404.html deleted file mode 100644 index eef68bc99..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/Resources/404.html +++ /dev/null @@ -1,133 +0,0 @@ -Page Not Found :(

    Not found :(

    Sorry, but the page you were trying to view does not exist.

    It looks like this was the result of either:

    • a mistyped address
    • an out-of-date link
    \ No newline at end of file diff --git a/ShoalShell.Plugins.HtmlHelpServer/Resources/DNA.ico b/ShoalShell.Plugins.HtmlHelpServer/Resources/DNA.ico deleted file mode 100644 index 402b81a83..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Resources/DNA.ico and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Resources/foundation.css b/ShoalShell.Plugins.HtmlHelpServer/Resources/foundation.css deleted file mode 100644 index 24805ffbf..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/Resources/foundation.css +++ /dev/null @@ -1,6119 +0,0 @@ -meta.foundation-version { - font-family: "/5.4.5/"; } - -meta.foundation-mq-small { - font-family: "/only screen/"; - width: 0em; } - -meta.foundation-mq-medium { - font-family: "/only screen and (min-width:40.063em)/"; - width: 40.063em; } - -meta.foundation-mq-large { - font-family: "/only screen and (min-width:64.063em)/"; - width: 64.063em; } - -meta.foundation-mq-xlarge { - font-family: "/only screen and (min-width:90.063em)/"; - width: 90.063em; } - -meta.foundation-mq-xxlarge { - font-family: "/only screen and (min-width:120.063em)/"; - width: 120.063em; } - -meta.foundation-data-attribute-namespace { - font-family: false; } - -html, body { - height: 100%; } - -*, -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; } - -html, -body { - font-size: 100%; } - -body { - background: white; - color: #222222; - padding: 0; - margin: 0; - font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; - font-weight: normal; - font-style: normal; - line-height: 1.5; - position: relative; - cursor: auto; } - -a:hover { - cursor: pointer; } - -img { - max-width: 100%; - height: auto; } - -img { - -ms-interpolation-mode: bicubic; } - -#map_canvas img, -#map_canvas embed, -#map_canvas object, -.map_canvas img, -.map_canvas embed, -.map_canvas object { - max-width: none !important; } - -.left { - float: left !important; } - -.right { - float: right !important; } - -.clearfix:before, .clearfix:after { - content: " "; - display: table; } -.clearfix:after { - clear: both; } - -.hide { - display: none; } - -.antialiased { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; } - -img { - display: inline-block; - vertical-align: middle; } - -textarea { - height: auto; - min-height: 50px; } - -select { - width: 100%; } - -.row { - width: 100%; - margin-left: auto; - margin-right: auto; - margin-top: 0; - margin-bottom: 0; - max-width: 1440px; } - .row:before, .row:after { - content: " "; - display: table; } - .row:after { - clear: both; } - .row.collapse > .column, - .row.collapse > .columns { - padding-left: 0; - padding-right: 0; } - .row.collapse .row { - margin-left: 0; - margin-right: 0; } - .row .row { - width: auto; - margin-left: -0.9375rem; - margin-right: -0.9375rem; - margin-top: 0; - margin-bottom: 0; - max-width: none; } - .row .row:before, .row .row:after { - content: " "; - display: table; } - .row .row:after { - clear: both; } - .row .row.collapse { - width: auto; - margin: 0; - max-width: none; } - .row .row.collapse:before, .row .row.collapse:after { - content: " "; - display: table; } - .row .row.collapse:after { - clear: both; } - -.column, -.columns { - padding-left: 0.9375rem; - padding-right: 0.9375rem; - width: 100%; - float: left; } - -[class*="column"] + [class*="column"]:last-child { - float: right; } - -[class*="column"] + [class*="column"].end { - float: left; } - -@media only screen { - .small-push-0 { - position: relative; - left: 0%; - right: auto; } - - .small-pull-0 { - position: relative; - right: 0%; - left: auto; } - - .small-push-1 { - position: relative; - left: 8.33333%; - right: auto; } - - .small-pull-1 { - position: relative; - right: 8.33333%; - left: auto; } - - .small-push-2 { - position: relative; - left: 16.66667%; - right: auto; } - - .small-pull-2 { - position: relative; - right: 16.66667%; - left: auto; } - - .small-push-3 { - position: relative; - left: 25%; - right: auto; } - - .small-pull-3 { - position: relative; - right: 25%; - left: auto; } - - .small-push-4 { - position: relative; - left: 33.33333%; - right: auto; } - - .small-pull-4 { - position: relative; - right: 33.33333%; - left: auto; } - - .small-push-5 { - position: relative; - left: 41.66667%; - right: auto; } - - .small-pull-5 { - position: relative; - right: 41.66667%; - left: auto; } - - .small-push-6 { - position: relative; - left: 50%; - right: auto; } - - .small-pull-6 { - position: relative; - right: 50%; - left: auto; } - - .small-push-7 { - position: relative; - left: 58.33333%; - right: auto; } - - .small-pull-7 { - position: relative; - right: 58.33333%; - left: auto; } - - .small-push-8 { - position: relative; - left: 66.66667%; - right: auto; } - - .small-pull-8 { - position: relative; - right: 66.66667%; - left: auto; } - - .small-push-9 { - position: relative; - left: 75%; - right: auto; } - - .small-pull-9 { - position: relative; - right: 75%; - left: auto; } - - .small-push-10 { - position: relative; - left: 83.33333%; - right: auto; } - - .small-pull-10 { - position: relative; - right: 83.33333%; - left: auto; } - - .small-push-11 { - position: relative; - left: 91.66667%; - right: auto; } - - .small-pull-11 { - position: relative; - right: 91.66667%; - left: auto; } - - .column, - .columns { - position: relative; - padding-left: 0.9375rem; - padding-right: 0.9375rem; - float: left; } - - .small-1 { - width: 8.33333%; } - - .small-2 { - width: 16.66667%; } - - .small-3 { - width: 25%; } - - .small-4 { - width: 33.33333%; } - - .small-5 { - width: 41.66667%; } - - .small-6 { - width: 50%; } - - .small-7 { - width: 58.33333%; } - - .small-8 { - width: 66.66667%; } - - .small-9 { - width: 75%; } - - .small-10 { - width: 83.33333%; } - - .small-11 { - width: 91.66667%; } - - .small-12 { - width: 100%; } - - .small-offset-0 { - margin-left: 0% !important; } - - .small-offset-1 { - margin-left: 8.33333% !important; } - - .small-offset-2 { - margin-left: 16.66667% !important; } - - .small-offset-3 { - margin-left: 25% !important; } - - .small-offset-4 { - margin-left: 33.33333% !important; } - - .small-offset-5 { - margin-left: 41.66667% !important; } - - .small-offset-6 { - margin-left: 50% !important; } - - .small-offset-7 { - margin-left: 58.33333% !important; } - - .small-offset-8 { - margin-left: 66.66667% !important; } - - .small-offset-9 { - margin-left: 75% !important; } - - .small-offset-10 { - margin-left: 83.33333% !important; } - - .small-offset-11 { - margin-left: 91.66667% !important; } - - .small-reset-order { - margin-left: 0; - margin-right: 0; - left: auto; - right: auto; - float: left; } - - .column.small-centered, - .columns.small-centered { - margin-left: auto; - margin-right: auto; - float: none; } - - .column.small-uncentered, - .columns.small-uncentered { - margin-left: 0; - margin-right: 0; - float: left; } - - .column.small-centered:last-child, - .columns.small-centered:last-child { - float: none; } - - .column.small-uncentered:last-child, - .columns.small-uncentered:last-child { - float: left; } - - .column.small-uncentered.opposite, - .columns.small-uncentered.opposite { - float: right; } } -@media only screen and (min-width: 40.063em) { - .medium-push-0 { - position: relative; - left: 0%; - right: auto; } - - .medium-pull-0 { - position: relative; - right: 0%; - left: auto; } - - .medium-push-1 { - position: relative; - left: 8.33333%; - right: auto; } - - .medium-pull-1 { - position: relative; - right: 8.33333%; - left: auto; } - - .medium-push-2 { - position: relative; - left: 16.66667%; - right: auto; } - - .medium-pull-2 { - position: relative; - right: 16.66667%; - left: auto; } - - .medium-push-3 { - position: relative; - left: 25%; - right: auto; } - - .medium-pull-3 { - position: relative; - right: 25%; - left: auto; } - - .medium-push-4 { - position: relative; - left: 33.33333%; - right: auto; } - - .medium-pull-4 { - position: relative; - right: 33.33333%; - left: auto; } - - .medium-push-5 { - position: relative; - left: 41.66667%; - right: auto; } - - .medium-pull-5 { - position: relative; - right: 41.66667%; - left: auto; } - - .medium-push-6 { - position: relative; - left: 50%; - right: auto; } - - .medium-pull-6 { - position: relative; - right: 50%; - left: auto; } - - .medium-push-7 { - position: relative; - left: 58.33333%; - right: auto; } - - .medium-pull-7 { - position: relative; - right: 58.33333%; - left: auto; } - - .medium-push-8 { - position: relative; - left: 66.66667%; - right: auto; } - - .medium-pull-8 { - position: relative; - right: 66.66667%; - left: auto; } - - .medium-push-9 { - position: relative; - left: 75%; - right: auto; } - - .medium-pull-9 { - position: relative; - right: 75%; - left: auto; } - - .medium-push-10 { - position: relative; - left: 83.33333%; - right: auto; } - - .medium-pull-10 { - position: relative; - right: 83.33333%; - left: auto; } - - .medium-push-11 { - position: relative; - left: 91.66667%; - right: auto; } - - .medium-pull-11 { - position: relative; - right: 91.66667%; - left: auto; } - - .column, - .columns { - position: relative; - padding-left: 0.9375rem; - padding-right: 0.9375rem; - float: left; } - - .medium-1 { - width: 8.33333%; } - - .medium-2 { - width: 16.66667%; } - - .medium-3 { - width: 25%; } - - .medium-4 { - width: 33.33333%; } - - .medium-5 { - width: 41.66667%; } - - .medium-6 { - width: 50%; } - - .medium-7 { - width: 58.33333%; } - - .medium-8 { - width: 66.66667%; } - - .medium-9 { - width: 75%; } - - .medium-10 { - width: 83.33333%; } - - .medium-11 { - width: 91.66667%; } - - .medium-12 { - width: 100%; } - - .medium-offset-0 { - margin-left: 0% !important; } - - .medium-offset-1 { - margin-left: 8.33333% !important; } - - .medium-offset-2 { - margin-left: 16.66667% !important; } - - .medium-offset-3 { - margin-left: 25% !important; } - - .medium-offset-4 { - margin-left: 33.33333% !important; } - - .medium-offset-5 { - margin-left: 41.66667% !important; } - - .medium-offset-6 { - margin-left: 50% !important; } - - .medium-offset-7 { - margin-left: 58.33333% !important; } - - .medium-offset-8 { - margin-left: 66.66667% !important; } - - .medium-offset-9 { - margin-left: 75% !important; } - - .medium-offset-10 { - margin-left: 83.33333% !important; } - - .medium-offset-11 { - margin-left: 91.66667% !important; } - - .medium-reset-order { - margin-left: 0; - margin-right: 0; - left: auto; - right: auto; - float: left; } - - .column.medium-centered, - .columns.medium-centered { - margin-left: auto; - margin-right: auto; - float: none; } - - .column.medium-uncentered, - .columns.medium-uncentered { - margin-left: 0; - margin-right: 0; - float: left; } - - .column.medium-centered:last-child, - .columns.medium-centered:last-child { - float: none; } - - .column.medium-uncentered:last-child, - .columns.medium-uncentered:last-child { - float: left; } - - .column.medium-uncentered.opposite, - .columns.medium-uncentered.opposite { - float: right; } - - .push-0 { - position: relative; - left: 0%; - right: auto; } - - .pull-0 { - position: relative; - right: 0%; - left: auto; } - - .push-1 { - position: relative; - left: 8.33333%; - right: auto; } - - .pull-1 { - position: relative; - right: 8.33333%; - left: auto; } - - .push-2 { - position: relative; - left: 16.66667%; - right: auto; } - - .pull-2 { - position: relative; - right: 16.66667%; - left: auto; } - - .push-3 { - position: relative; - left: 25%; - right: auto; } - - .pull-3 { - position: relative; - right: 25%; - left: auto; } - - .push-4 { - position: relative; - left: 33.33333%; - right: auto; } - - .pull-4 { - position: relative; - right: 33.33333%; - left: auto; } - - .push-5 { - position: relative; - left: 41.66667%; - right: auto; } - - .pull-5 { - position: relative; - right: 41.66667%; - left: auto; } - - .push-6 { - position: relative; - left: 50%; - right: auto; } - - .pull-6 { - position: relative; - right: 50%; - left: auto; } - - .push-7 { - position: relative; - left: 58.33333%; - right: auto; } - - .pull-7 { - position: relative; - right: 58.33333%; - left: auto; } - - .push-8 { - position: relative; - left: 66.66667%; - right: auto; } - - .pull-8 { - position: relative; - right: 66.66667%; - left: auto; } - - .push-9 { - position: relative; - left: 75%; - right: auto; } - - .pull-9 { - position: relative; - right: 75%; - left: auto; } - - .push-10 { - position: relative; - left: 83.33333%; - right: auto; } - - .pull-10 { - position: relative; - right: 83.33333%; - left: auto; } - - .push-11 { - position: relative; - left: 91.66667%; - right: auto; } - - .pull-11 { - position: relative; - right: 91.66667%; - left: auto; } } -@media only screen and (min-width: 64.063em) { - .large-push-0 { - position: relative; - left: 0%; - right: auto; } - - .large-pull-0 { - position: relative; - right: 0%; - left: auto; } - - .large-push-1 { - position: relative; - left: 8.33333%; - right: auto; } - - .large-pull-1 { - position: relative; - right: 8.33333%; - left: auto; } - - .large-push-2 { - position: relative; - left: 16.66667%; - right: auto; } - - .large-pull-2 { - position: relative; - right: 16.66667%; - left: auto; } - - .large-push-3 { - position: relative; - left: 25%; - right: auto; } - - .large-pull-3 { - position: relative; - right: 25%; - left: auto; } - - .large-push-4 { - position: relative; - left: 33.33333%; - right: auto; } - - .large-pull-4 { - position: relative; - right: 33.33333%; - left: auto; } - - .large-push-5 { - position: relative; - left: 41.66667%; - right: auto; } - - .large-pull-5 { - position: relative; - right: 41.66667%; - left: auto; } - - .large-push-6 { - position: relative; - left: 50%; - right: auto; } - - .large-pull-6 { - position: relative; - right: 50%; - left: auto; } - - .large-push-7 { - position: relative; - left: 58.33333%; - right: auto; } - - .large-pull-7 { - position: relative; - right: 58.33333%; - left: auto; } - - .large-push-8 { - position: relative; - left: 66.66667%; - right: auto; } - - .large-pull-8 { - position: relative; - right: 66.66667%; - left: auto; } - - .large-push-9 { - position: relative; - left: 75%; - right: auto; } - - .large-pull-9 { - position: relative; - right: 75%; - left: auto; } - - .large-push-10 { - position: relative; - left: 83.33333%; - right: auto; } - - .large-pull-10 { - position: relative; - right: 83.33333%; - left: auto; } - - .large-push-11 { - position: relative; - left: 91.66667%; - right: auto; } - - .large-pull-11 { - position: relative; - right: 91.66667%; - left: auto; } - - .column, - .columns { - position: relative; - padding-left: 0.9375rem; - padding-right: 0.9375rem; - float: left; } - - .large-1 { - width: 8.33333%; } - - .large-2 { - width: 16.66667%; } - - .large-3 { - width: 25%; } - - .large-4 { - width: 33.33333%; } - - .large-5 { - width: 41.66667%; } - - .large-6 { - width: 50%; } - - .large-7 { - width: 58.33333%; } - - .large-8 { - width: 66.66667%; } - - .large-9 { - width: 75%; } - - .large-10 { - width: 83.33333%; } - - .large-11 { - width: 91.66667%; } - - .large-12 { - width: 100%; } - - .large-offset-0 { - margin-left: 0% !important; } - - .large-offset-1 { - margin-left: 8.33333% !important; } - - .large-offset-2 { - margin-left: 16.66667% !important; } - - .large-offset-3 { - margin-left: 25% !important; } - - .large-offset-4 { - margin-left: 33.33333% !important; } - - .large-offset-5 { - margin-left: 41.66667% !important; } - - .large-offset-6 { - margin-left: 50% !important; } - - .large-offset-7 { - margin-left: 58.33333% !important; } - - .large-offset-8 { - margin-left: 66.66667% !important; } - - .large-offset-9 { - margin-left: 75% !important; } - - .large-offset-10 { - margin-left: 83.33333% !important; } - - .large-offset-11 { - margin-left: 91.66667% !important; } - - .large-reset-order { - margin-left: 0; - margin-right: 0; - left: auto; - right: auto; - float: left; } - - .column.large-centered, - .columns.large-centered { - margin-left: auto; - margin-right: auto; - float: none; } - - .column.large-uncentered, - .columns.large-uncentered { - margin-left: 0; - margin-right: 0; - float: left; } - - .column.large-centered:last-child, - .columns.large-centered:last-child { - float: none; } - - .column.large-uncentered:last-child, - .columns.large-uncentered:last-child { - float: left; } - - .column.large-uncentered.opposite, - .columns.large-uncentered.opposite { - float: right; } - - .push-0 { - position: relative; - left: 0%; - right: auto; } - - .pull-0 { - position: relative; - right: 0%; - left: auto; } - - .push-1 { - position: relative; - left: 8.33333%; - right: auto; } - - .pull-1 { - position: relative; - right: 8.33333%; - left: auto; } - - .push-2 { - position: relative; - left: 16.66667%; - right: auto; } - - .pull-2 { - position: relative; - right: 16.66667%; - left: auto; } - - .push-3 { - position: relative; - left: 25%; - right: auto; } - - .pull-3 { - position: relative; - right: 25%; - left: auto; } - - .push-4 { - position: relative; - left: 33.33333%; - right: auto; } - - .pull-4 { - position: relative; - right: 33.33333%; - left: auto; } - - .push-5 { - position: relative; - left: 41.66667%; - right: auto; } - - .pull-5 { - position: relative; - right: 41.66667%; - left: auto; } - - .push-6 { - position: relative; - left: 50%; - right: auto; } - - .pull-6 { - position: relative; - right: 50%; - left: auto; } - - .push-7 { - position: relative; - left: 58.33333%; - right: auto; } - - .pull-7 { - position: relative; - right: 58.33333%; - left: auto; } - - .push-8 { - position: relative; - left: 66.66667%; - right: auto; } - - .pull-8 { - position: relative; - right: 66.66667%; - left: auto; } - - .push-9 { - position: relative; - left: 75%; - right: auto; } - - .pull-9 { - position: relative; - right: 75%; - left: auto; } - - .push-10 { - position: relative; - left: 83.33333%; - right: auto; } - - .pull-10 { - position: relative; - right: 83.33333%; - left: auto; } - - .push-11 { - position: relative; - left: 91.66667%; - right: auto; } - - .pull-11 { - position: relative; - right: 91.66667%; - left: auto; } } -.accordion { - margin-bottom: 0; } - .accordion:before, .accordion:after { - content: " "; - display: table; } - .accordion:after { - clear: both; } - .accordion .accordion-navigation, .accordion dd { - display: block; - margin-bottom: 0 !important; } - .accordion .accordion-navigation.active > a, .accordion dd.active > a { - background: #e8e8e8; } - .accordion .accordion-navigation > a, .accordion dd > a { - background: #efefef; - color: #222222; - padding: 1rem; - display: block; - font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; - font-size: 1rem; } - .accordion .accordion-navigation > a:hover, .accordion dd > a:hover { - background: #e3e3e3; } - .accordion .accordion-navigation > .content, .accordion dd > .content { - display: none; - padding: 0.9375rem; } - .accordion .accordion-navigation > .content.active, .accordion dd > .content.active { - display: block; - background: white; } - -.alert-box { - border-style: solid; - border-width: 1px; - display: block; - font-weight: normal; - margin-bottom: 1.25rem; - position: relative; - padding: 0.875rem 1.5rem 0.875rem 0.875rem; - font-size: 0.8125rem; - transition: opacity 300ms ease-out; - background-color: #008cba; - border-color: #0078a0; - color: white; } - .alert-box .close { - font-size: 1.375rem; - padding: 9px 6px 4px; - line-height: 0; - position: absolute; - top: 50%; - margin-top: -0.6875rem; - right: 0.25rem; - color: #333333; - opacity: 0.3; } - .alert-box .close:hover, .alert-box .close:focus { - opacity: 0.5; } - .alert-box.radius { - border-radius: 3px; } - .alert-box.round { - border-radius: 1000px; } - .alert-box.success { - background-color: #43ac6a; - border-color: #3a945b; - color: white; } - .alert-box.alert { - background-color: #f04124; - border-color: #de2d0f; - color: white; } - .alert-box.secondary { - background-color: #e7e7e7; - border-color: #c7c7c7; - color: #4f4f4f; } - .alert-box.warning { - background-color: #f08a24; - border-color: #de770f; - color: white; } - .alert-box.info { - background-color: #a0d3e8; - border-color: #74bfdd; - color: #4f4f4f; } - .alert-box.alert-close { - opacity: 0; } - -[class*="block-grid-"] { - display: block; - padding: 0; - margin: 0 -0.625rem; } - [class*="block-grid-"]:before, [class*="block-grid-"]:after { - content: " "; - display: table; } - [class*="block-grid-"]:after { - clear: both; } - [class*="block-grid-"] > li { - display: block; - height: auto; - float: left; - padding: 0 0.625rem 1.25rem; } - -@media only screen { - .small-block-grid-1 > li { - width: 100%; - list-style: none; } - .small-block-grid-1 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-1 > li:nth-of-type(1n+1) { - clear: both; } - - .small-block-grid-2 > li { - width: 50%; - list-style: none; } - .small-block-grid-2 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-2 > li:nth-of-type(2n+1) { - clear: both; } - - .small-block-grid-3 > li { - width: 33.33333%; - list-style: none; } - .small-block-grid-3 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-3 > li:nth-of-type(3n+1) { - clear: both; } - - .small-block-grid-4 > li { - width: 25%; - list-style: none; } - .small-block-grid-4 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-4 > li:nth-of-type(4n+1) { - clear: both; } - - .small-block-grid-5 > li { - width: 20%; - list-style: none; } - .small-block-grid-5 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-5 > li:nth-of-type(5n+1) { - clear: both; } - - .small-block-grid-6 > li { - width: 16.66667%; - list-style: none; } - .small-block-grid-6 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-6 > li:nth-of-type(6n+1) { - clear: both; } - - .small-block-grid-7 > li { - width: 14.28571%; - list-style: none; } - .small-block-grid-7 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-7 > li:nth-of-type(7n+1) { - clear: both; } - - .small-block-grid-8 > li { - width: 12.5%; - list-style: none; } - .small-block-grid-8 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-8 > li:nth-of-type(8n+1) { - clear: both; } - - .small-block-grid-9 > li { - width: 11.11111%; - list-style: none; } - .small-block-grid-9 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-9 > li:nth-of-type(9n+1) { - clear: both; } - - .small-block-grid-10 > li { - width: 10%; - list-style: none; } - .small-block-grid-10 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-10 > li:nth-of-type(10n+1) { - clear: both; } - - .small-block-grid-11 > li { - width: 9.09091%; - list-style: none; } - .small-block-grid-11 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-11 > li:nth-of-type(11n+1) { - clear: both; } - - .small-block-grid-12 > li { - width: 8.33333%; - list-style: none; } - .small-block-grid-12 > li:nth-of-type(1n) { - clear: none; } - .small-block-grid-12 > li:nth-of-type(12n+1) { - clear: both; } } -@media only screen and (min-width: 40.063em) { - .medium-block-grid-1 > li { - width: 100%; - list-style: none; } - .medium-block-grid-1 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-1 > li:nth-of-type(1n+1) { - clear: both; } - - .medium-block-grid-2 > li { - width: 50%; - list-style: none; } - .medium-block-grid-2 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-2 > li:nth-of-type(2n+1) { - clear: both; } - - .medium-block-grid-3 > li { - width: 33.33333%; - list-style: none; } - .medium-block-grid-3 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-3 > li:nth-of-type(3n+1) { - clear: both; } - - .medium-block-grid-4 > li { - width: 25%; - list-style: none; } - .medium-block-grid-4 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-4 > li:nth-of-type(4n+1) { - clear: both; } - - .medium-block-grid-5 > li { - width: 20%; - list-style: none; } - .medium-block-grid-5 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-5 > li:nth-of-type(5n+1) { - clear: both; } - - .medium-block-grid-6 > li { - width: 16.66667%; - list-style: none; } - .medium-block-grid-6 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-6 > li:nth-of-type(6n+1) { - clear: both; } - - .medium-block-grid-7 > li { - width: 14.28571%; - list-style: none; } - .medium-block-grid-7 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-7 > li:nth-of-type(7n+1) { - clear: both; } - - .medium-block-grid-8 > li { - width: 12.5%; - list-style: none; } - .medium-block-grid-8 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-8 > li:nth-of-type(8n+1) { - clear: both; } - - .medium-block-grid-9 > li { - width: 11.11111%; - list-style: none; } - .medium-block-grid-9 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-9 > li:nth-of-type(9n+1) { - clear: both; } - - .medium-block-grid-10 > li { - width: 10%; - list-style: none; } - .medium-block-grid-10 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-10 > li:nth-of-type(10n+1) { - clear: both; } - - .medium-block-grid-11 > li { - width: 9.09091%; - list-style: none; } - .medium-block-grid-11 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-11 > li:nth-of-type(11n+1) { - clear: both; } - - .medium-block-grid-12 > li { - width: 8.33333%; - list-style: none; } - .medium-block-grid-12 > li:nth-of-type(1n) { - clear: none; } - .medium-block-grid-12 > li:nth-of-type(12n+1) { - clear: both; } } -@media only screen and (min-width: 64.063em) { - .large-block-grid-1 > li { - width: 100%; - list-style: none; } - .large-block-grid-1 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-1 > li:nth-of-type(1n+1) { - clear: both; } - - .large-block-grid-2 > li { - width: 50%; - list-style: none; } - .large-block-grid-2 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-2 > li:nth-of-type(2n+1) { - clear: both; } - - .large-block-grid-3 > li { - width: 33.33333%; - list-style: none; } - .large-block-grid-3 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-3 > li:nth-of-type(3n+1) { - clear: both; } - - .large-block-grid-4 > li { - width: 25%; - list-style: none; } - .large-block-grid-4 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-4 > li:nth-of-type(4n+1) { - clear: both; } - - .large-block-grid-5 > li { - width: 20%; - list-style: none; } - .large-block-grid-5 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-5 > li:nth-of-type(5n+1) { - clear: both; } - - .large-block-grid-6 > li { - width: 16.66667%; - list-style: none; } - .large-block-grid-6 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-6 > li:nth-of-type(6n+1) { - clear: both; } - - .large-block-grid-7 > li { - width: 14.28571%; - list-style: none; } - .large-block-grid-7 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-7 > li:nth-of-type(7n+1) { - clear: both; } - - .large-block-grid-8 > li { - width: 12.5%; - list-style: none; } - .large-block-grid-8 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-8 > li:nth-of-type(8n+1) { - clear: both; } - - .large-block-grid-9 > li { - width: 11.11111%; - list-style: none; } - .large-block-grid-9 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-9 > li:nth-of-type(9n+1) { - clear: both; } - - .large-block-grid-10 > li { - width: 10%; - list-style: none; } - .large-block-grid-10 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-10 > li:nth-of-type(10n+1) { - clear: both; } - - .large-block-grid-11 > li { - width: 9.09091%; - list-style: none; } - .large-block-grid-11 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-11 > li:nth-of-type(11n+1) { - clear: both; } - - .large-block-grid-12 > li { - width: 8.33333%; - list-style: none; } - .large-block-grid-12 > li:nth-of-type(1n) { - clear: none; } - .large-block-grid-12 > li:nth-of-type(12n+1) { - clear: both; } } -.breadcrumbs { - display: block; - padding: 0.5625rem 0.875rem 0.5625rem; - overflow: hidden; - margin-left: 0; - list-style: none; - border-style: solid; - border-width: 1px; - background-color: #f4f4f4; - border-color: gainsboro; - border-radius: 3px; } - .breadcrumbs > * { - margin: 0; - float: left; - font-size: 0.6875rem; - line-height: 0.6875rem; - text-transform: uppercase; - color: #008cba; } - .breadcrumbs > *:hover a, .breadcrumbs > *:focus a { - text-decoration: underline; } - .breadcrumbs > * a { - color: #008cba; } - .breadcrumbs > *.current { - cursor: default; - color: #333333; } - .breadcrumbs > *.current a { - cursor: default; - color: #333333; } - .breadcrumbs > *.current:hover, .breadcrumbs > *.current:hover a, .breadcrumbs > *.current:focus, .breadcrumbs > *.current:focus a { - text-decoration: none; } - .breadcrumbs > *.unavailable { - color: #999999; } - .breadcrumbs > *.unavailable a { - color: #999999; } - .breadcrumbs > *.unavailable:hover, .breadcrumbs > *.unavailable:hover a, .breadcrumbs > *.unavailable:focus, - .breadcrumbs > *.unavailable a:focus { - text-decoration: none; - color: #999999; - cursor: default; } - .breadcrumbs > *:before { - content: "/"; - color: #aaaaaa; - margin: 0 0.75rem; - position: relative; - top: 1px; } - .breadcrumbs > *:first-child:before { - content: " "; - margin: 0; } - -/* Accessibility - hides the forward slash */ -[aria-label="breadcrumbs"] [aria-hidden="true"]:after { - content: "/"; } - -button, .button { - border-style: solid; - border-width: 0px; - cursor: pointer; - font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; - font-weight: normal; - line-height: normal; - margin: 0 0 1.25rem; - position: relative; - text-decoration: none; - text-align: center; - -webkit-appearance: none; - -webkit-border-radius: 0; - display: inline-block; - padding-top: 1rem; - padding-right: 2rem; - padding-bottom: 1.0625rem; - padding-left: 2rem; - font-size: 1rem; - background-color: #008cba; - border-color: #007095; - color: white; - transition: background-color 300ms ease-out; } - button:hover, button:focus, .button:hover, .button:focus { - background-color: #007095; } - button:hover, button:focus, .button:hover, .button:focus { - color: white; } - button.secondary, .button.secondary { - background-color: #e7e7e7; - border-color: #b9b9b9; - color: #333333; } - button.secondary:hover, button.secondary:focus, .button.secondary:hover, .button.secondary:focus { - background-color: #b9b9b9; } - button.secondary:hover, button.secondary:focus, .button.secondary:hover, .button.secondary:focus { - color: #333333; } - button.success, .button.success { - background-color: #43ac6a; - border-color: #368a55; - color: white; } - button.success:hover, button.success:focus, .button.success:hover, .button.success:focus { - background-color: #368a55; } - button.success:hover, button.success:focus, .button.success:hover, .button.success:focus { - color: white; } - button.alert, .button.alert { - background-color: #f04124; - border-color: #cf2a0e; - color: white; } - button.alert:hover, button.alert:focus, .button.alert:hover, .button.alert:focus { - background-color: #cf2a0e; } - button.alert:hover, button.alert:focus, .button.alert:hover, .button.alert:focus { - color: white; } - button.warning, .button.warning { - background-color: #f08a24; - border-color: #cf6e0e; - color: white; } - button.warning:hover, button.warning:focus, .button.warning:hover, .button.warning:focus { - background-color: #cf6e0e; } - button.warning:hover, button.warning:focus, .button.warning:hover, .button.warning:focus { - color: white; } - button.info, .button.info { - background-color: #a0d3e8; - border-color: #61b6d9; - color: #333333; } - button.info:hover, button.info:focus, .button.info:hover, .button.info:focus { - background-color: #61b6d9; } - button.info:hover, button.info:focus, .button.info:hover, .button.info:focus { - color: white; } - button.large, .button.large { - padding-top: 1.125rem; - padding-right: 2.25rem; - padding-bottom: 1.1875rem; - padding-left: 2.25rem; - font-size: 1.25rem; } - button.small, .button.small { - padding-top: 0.875rem; - padding-right: 1.75rem; - padding-bottom: 0.9375rem; - padding-left: 1.75rem; - font-size: 0.8125rem; } - button.tiny, .button.tiny { - padding-top: 0.625rem; - padding-right: 1.25rem; - padding-bottom: 0.6875rem; - padding-left: 1.25rem; - font-size: 0.6875rem; } - button.expand, .button.expand { - padding-right: 0; - padding-left: 0; - width: 100%; } - button.left-align, .button.left-align { - text-align: left; - text-indent: 0.75rem; } - button.right-align, .button.right-align { - text-align: right; - padding-right: 0.75rem; } - button.radius, .button.radius { - border-radius: 3px; } - button.round, .button.round { - border-radius: 1000px; } - button.disabled, button[disabled], .button.disabled, .button[disabled] { - background-color: #008cba; - border-color: #007095; - color: white; - cursor: default; - opacity: 0.7; - box-shadow: none; } - button.disabled:hover, button.disabled:focus, button[disabled]:hover, button[disabled]:focus, .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus { - background-color: #007095; } - button.disabled:hover, button.disabled:focus, button[disabled]:hover, button[disabled]:focus, .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus { - color: white; } - button.disabled:hover, button.disabled:focus, button[disabled]:hover, button[disabled]:focus, .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus { - background-color: #008cba; } - button.disabled.secondary, button[disabled].secondary, .button.disabled.secondary, .button[disabled].secondary { - background-color: #e7e7e7; - border-color: #b9b9b9; - color: #333333; - cursor: default; - opacity: 0.7; - box-shadow: none; } - button.disabled.secondary:hover, button.disabled.secondary:focus, button[disabled].secondary:hover, button[disabled].secondary:focus, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary:hover, .button[disabled].secondary:focus { - background-color: #b9b9b9; } - button.disabled.secondary:hover, button.disabled.secondary:focus, button[disabled].secondary:hover, button[disabled].secondary:focus, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary:hover, .button[disabled].secondary:focus { - color: #333333; } - button.disabled.secondary:hover, button.disabled.secondary:focus, button[disabled].secondary:hover, button[disabled].secondary:focus, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary:hover, .button[disabled].secondary:focus { - background-color: #e7e7e7; } - button.disabled.success, button[disabled].success, .button.disabled.success, .button[disabled].success { - background-color: #43ac6a; - border-color: #368a55; - color: white; - cursor: default; - opacity: 0.7; - box-shadow: none; } - button.disabled.success:hover, button.disabled.success:focus, button[disabled].success:hover, button[disabled].success:focus, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success:hover, .button[disabled].success:focus { - background-color: #368a55; } - button.disabled.success:hover, button.disabled.success:focus, button[disabled].success:hover, button[disabled].success:focus, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success:hover, .button[disabled].success:focus { - color: white; } - button.disabled.success:hover, button.disabled.success:focus, button[disabled].success:hover, button[disabled].success:focus, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success:hover, .button[disabled].success:focus { - background-color: #43ac6a; } - button.disabled.alert, button[disabled].alert, .button.disabled.alert, .button[disabled].alert { - background-color: #f04124; - border-color: #cf2a0e; - color: white; - cursor: default; - opacity: 0.7; - box-shadow: none; } - button.disabled.alert:hover, button.disabled.alert:focus, button[disabled].alert:hover, button[disabled].alert:focus, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert:hover, .button[disabled].alert:focus { - background-color: #cf2a0e; } - button.disabled.alert:hover, button.disabled.alert:focus, button[disabled].alert:hover, button[disabled].alert:focus, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert:hover, .button[disabled].alert:focus { - color: white; } - button.disabled.alert:hover, button.disabled.alert:focus, button[disabled].alert:hover, button[disabled].alert:focus, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert:hover, .button[disabled].alert:focus { - background-color: #f04124; } - button.disabled.warning, button[disabled].warning, .button.disabled.warning, .button[disabled].warning { - background-color: #f08a24; - border-color: #cf6e0e; - color: white; - cursor: default; - opacity: 0.7; - box-shadow: none; } - button.disabled.warning:hover, button.disabled.warning:focus, button[disabled].warning:hover, button[disabled].warning:focus, .button.disabled.warning:hover, .button.disabled.warning:focus, .button[disabled].warning:hover, .button[disabled].warning:focus { - background-color: #cf6e0e; } - button.disabled.warning:hover, button.disabled.warning:focus, button[disabled].warning:hover, button[disabled].warning:focus, .button.disabled.warning:hover, .button.disabled.warning:focus, .button[disabled].warning:hover, .button[disabled].warning:focus { - color: white; } - button.disabled.warning:hover, button.disabled.warning:focus, button[disabled].warning:hover, button[disabled].warning:focus, .button.disabled.warning:hover, .button.disabled.warning:focus, .button[disabled].warning:hover, .button[disabled].warning:focus { - background-color: #f08a24; } - button.disabled.info, button[disabled].info, .button.disabled.info, .button[disabled].info { - background-color: #a0d3e8; - border-color: #61b6d9; - color: #333333; - cursor: default; - opacity: 0.7; - box-shadow: none; } - button.disabled.info:hover, button.disabled.info:focus, button[disabled].info:hover, button[disabled].info:focus, .button.disabled.info:hover, .button.disabled.info:focus, .button[disabled].info:hover, .button[disabled].info:focus { - background-color: #61b6d9; } - button.disabled.info:hover, button.disabled.info:focus, button[disabled].info:hover, button[disabled].info:focus, .button.disabled.info:hover, .button.disabled.info:focus, .button[disabled].info:hover, .button[disabled].info:focus { - color: white; } - button.disabled.info:hover, button.disabled.info:focus, button[disabled].info:hover, button[disabled].info:focus, .button.disabled.info:hover, .button.disabled.info:focus, .button[disabled].info:hover, .button[disabled].info:focus { - background-color: #a0d3e8; } - -button::-moz-focus-inner { - border: 0; - padding: 0; } - -@media only screen and (min-width: 40.063em) { - button, .button { - display: inline-block; } } -.button-group { - list-style: none; - margin: 0; - left: 0; } - .button-group:before, .button-group:after { - content: " "; - display: table; } - .button-group:after { - clear: both; } - .button-group > li { - margin: 0 -2px; - float: left; - display: inline-block; } - .button-group > li > button, .button-group > li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group > li:first-child button, .button-group > li:first-child .button { - border-left: 0; } - .button-group.stack > li { - margin: 0 -2px; - float: left; - display: inline-block; - display: block; - margin: 0; - float: none; } - .button-group.stack > li > button, .button-group.stack > li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.stack > li:first-child button, .button-group.stack > li:first-child .button { - border-left: 0; } - .button-group.stack > li > button, .button-group.stack > li .button { - border-top: 1px solid; - border-color: rgba(255, 255, 255, 0.5); - border-left-width: 0px; - margin: 0; - display: block; } - .button-group.stack > li:first-child button, .button-group.stack > li:first-child .button { - border-top: 0; } - .button-group.stack-for-small > li { - margin: 0 -2px; - float: left; - display: inline-block; } - .button-group.stack-for-small > li > button, .button-group.stack-for-small > li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.stack-for-small > li:first-child button, .button-group.stack-for-small > li:first-child .button { - border-left: 0; } - @media only screen and (max-width: 40em) { - .button-group.stack-for-small > li { - margin: 0 -2px; - float: left; - display: inline-block; - display: block; - margin: 0; } - .button-group.stack-for-small > li > button, .button-group.stack-for-small > li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.stack-for-small > li:first-child button, .button-group.stack-for-small > li:first-child .button { - border-left: 0; } - .button-group.stack-for-small > li > button, .button-group.stack-for-small > li .button { - border-top: 1px solid; - border-color: rgba(255, 255, 255, 0.5); - border-left-width: 0px; - margin: 0; - display: block; } - .button-group.stack-for-small > li:first-child button, .button-group.stack-for-small > li:first-child .button { - border-top: 0; } } - .button-group.radius > * { - margin: 0 -2px; - float: left; - display: inline-block; } - .button-group.radius > * > button, .button-group.radius > * .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.radius > *:first-child button, .button-group.radius > *:first-child .button { - border-left: 0; } - .button-group.radius > *, .button-group.radius > * > a, .button-group.radius > * > button, .button-group.radius > * > .button { - border-radius: 0; } - .button-group.radius > *:first-child, .button-group.radius > *:first-child > a, .button-group.radius > *:first-child > button, .button-group.radius > *:first-child > .button { - -webkit-border-bottom-left-radius: 3px; - -webkit-border-top-left-radius: 3px; - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; } - .button-group.radius > *:last-child, .button-group.radius > *:last-child > a, .button-group.radius > *:last-child > button, .button-group.radius > *:last-child > .button { - -webkit-border-bottom-right-radius: 3px; - -webkit-border-top-right-radius: 3px; - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; } - .button-group.radius.stack > * { - margin: 0 -2px; - float: left; - display: inline-block; - display: block; - margin: 0; } - .button-group.radius.stack > * > button, .button-group.radius.stack > * .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.radius.stack > *:first-child button, .button-group.radius.stack > *:first-child .button { - border-left: 0; } - .button-group.radius.stack > * > button, .button-group.radius.stack > * .button { - border-top: 1px solid; - border-color: rgba(255, 255, 255, 0.5); - border-left-width: 0px; - margin: 0; - display: block; } - .button-group.radius.stack > *:first-child button, .button-group.radius.stack > *:first-child .button { - border-top: 0; } - .button-group.radius.stack > *, .button-group.radius.stack > * > a, .button-group.radius.stack > * > button, .button-group.radius.stack > * > .button { - border-radius: 0; } - .button-group.radius.stack > *:first-child, .button-group.radius.stack > *:first-child > a, .button-group.radius.stack > *:first-child > button, .button-group.radius.stack > *:first-child > .button { - -webkit-top-left-radius: 3px; - -webkit-top-right-radius: 3px; - border-top-left-radius: 3px; - border-top-right-radius: 3px; } - .button-group.radius.stack > *:last-child, .button-group.radius.stack > *:last-child > a, .button-group.radius.stack > *:last-child > button, .button-group.radius.stack > *:last-child > .button { - -webkit-bottom-left-radius: 3px; - -webkit-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; - border-bottom-right-radius: 3px; } - @media only screen and (min-width: 40.063em) { - .button-group.radius.stack-for-small > * { - margin: 0 -2px; - float: left; - display: inline-block; } - .button-group.radius.stack-for-small > * > button, .button-group.radius.stack-for-small > * .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.radius.stack-for-small > *:first-child button, .button-group.radius.stack-for-small > *:first-child .button { - border-left: 0; } - .button-group.radius.stack-for-small > *, .button-group.radius.stack-for-small > * > a, .button-group.radius.stack-for-small > * > button, .button-group.radius.stack-for-small > * > .button { - border-radius: 0; } - .button-group.radius.stack-for-small > *:first-child, .button-group.radius.stack-for-small > *:first-child > a, .button-group.radius.stack-for-small > *:first-child > button, .button-group.radius.stack-for-small > *:first-child > .button { - -webkit-border-bottom-left-radius: 3px; - -webkit-border-top-left-radius: 3px; - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; } - .button-group.radius.stack-for-small > *:last-child, .button-group.radius.stack-for-small > *:last-child > a, .button-group.radius.stack-for-small > *:last-child > button, .button-group.radius.stack-for-small > *:last-child > .button { - -webkit-border-bottom-right-radius: 3px; - -webkit-border-top-right-radius: 3px; - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; } } - @media only screen and (max-width: 40em) { - .button-group.radius.stack-for-small > * { - margin: 0 -2px; - float: left; - display: inline-block; - display: block; - margin: 0; } - .button-group.radius.stack-for-small > * > button, .button-group.radius.stack-for-small > * .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.radius.stack-for-small > *:first-child button, .button-group.radius.stack-for-small > *:first-child .button { - border-left: 0; } - .button-group.radius.stack-for-small > * > button, .button-group.radius.stack-for-small > * .button { - border-top: 1px solid; - border-color: rgba(255, 255, 255, 0.5); - border-left-width: 0px; - margin: 0; - display: block; } - .button-group.radius.stack-for-small > *:first-child button, .button-group.radius.stack-for-small > *:first-child .button { - border-top: 0; } - .button-group.radius.stack-for-small > *, .button-group.radius.stack-for-small > * > a, .button-group.radius.stack-for-small > * > button, .button-group.radius.stack-for-small > * > .button { - border-radius: 0; } - .button-group.radius.stack-for-small > *:first-child, .button-group.radius.stack-for-small > *:first-child > a, .button-group.radius.stack-for-small > *:first-child > button, .button-group.radius.stack-for-small > *:first-child > .button { - -webkit-top-left-radius: 3px; - -webkit-top-right-radius: 3px; - border-top-left-radius: 3px; - border-top-right-radius: 3px; } - .button-group.radius.stack-for-small > *:last-child, .button-group.radius.stack-for-small > *:last-child > a, .button-group.radius.stack-for-small > *:last-child > button, .button-group.radius.stack-for-small > *:last-child > .button { - -webkit-bottom-left-radius: 3px; - -webkit-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; - border-bottom-right-radius: 3px; } } - .button-group.round > * { - margin: 0 -2px; - float: left; - display: inline-block; } - .button-group.round > * > button, .button-group.round > * .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.round > *:first-child button, .button-group.round > *:first-child .button { - border-left: 0; } - .button-group.round > *, .button-group.round > * > a, .button-group.round > * > button, .button-group.round > * > .button { - border-radius: 0; } - .button-group.round > *:first-child, .button-group.round > *:first-child > a, .button-group.round > *:first-child > button, .button-group.round > *:first-child > .button { - -webkit-border-bottom-left-radius: 1000px; - -webkit-border-top-left-radius: 1000px; - border-bottom-left-radius: 1000px; - border-top-left-radius: 1000px; } - .button-group.round > *:last-child, .button-group.round > *:last-child > a, .button-group.round > *:last-child > button, .button-group.round > *:last-child > .button { - -webkit-border-bottom-right-radius: 1000px; - -webkit-border-top-right-radius: 1000px; - border-bottom-right-radius: 1000px; - border-top-right-radius: 1000px; } - .button-group.round.stack > * { - margin: 0 -2px; - float: left; - display: inline-block; - display: block; - margin: 0; } - .button-group.round.stack > * > button, .button-group.round.stack > * .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.round.stack > *:first-child button, .button-group.round.stack > *:first-child .button { - border-left: 0; } - .button-group.round.stack > * > button, .button-group.round.stack > * .button { - border-top: 1px solid; - border-color: rgba(255, 255, 255, 0.5); - border-left-width: 0px; - margin: 0; - display: block; } - .button-group.round.stack > *:first-child button, .button-group.round.stack > *:first-child .button { - border-top: 0; } - .button-group.round.stack > *, .button-group.round.stack > * > a, .button-group.round.stack > * > button, .button-group.round.stack > * > .button { - border-radius: 0; } - .button-group.round.stack > *:first-child, .button-group.round.stack > *:first-child > a, .button-group.round.stack > *:first-child > button, .button-group.round.stack > *:first-child > .button { - -webkit-top-left-radius: 1rem; - -webkit-top-right-radius: 1rem; - border-top-left-radius: 1rem; - border-top-right-radius: 1rem; } - .button-group.round.stack > *:last-child, .button-group.round.stack > *:last-child > a, .button-group.round.stack > *:last-child > button, .button-group.round.stack > *:last-child > .button { - -webkit-bottom-left-radius: 1rem; - -webkit-bottom-right-radius: 1rem; - border-bottom-left-radius: 1rem; - border-bottom-right-radius: 1rem; } - @media only screen and (min-width: 40.063em) { - .button-group.round.stack-for-small > * { - margin: 0 -2px; - float: left; - display: inline-block; } - .button-group.round.stack-for-small > * > button, .button-group.round.stack-for-small > * .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.round.stack-for-small > *:first-child button, .button-group.round.stack-for-small > *:first-child .button { - border-left: 0; } - .button-group.round.stack-for-small > *, .button-group.round.stack-for-small > * > a, .button-group.round.stack-for-small > * > button, .button-group.round.stack-for-small > * > .button { - border-radius: 0; } - .button-group.round.stack-for-small > *:first-child, .button-group.round.stack-for-small > *:first-child > a, .button-group.round.stack-for-small > *:first-child > button, .button-group.round.stack-for-small > *:first-child > .button { - -webkit-border-bottom-left-radius: 1000px; - -webkit-border-top-left-radius: 1000px; - border-bottom-left-radius: 1000px; - border-top-left-radius: 1000px; } - .button-group.round.stack-for-small > *:last-child, .button-group.round.stack-for-small > *:last-child > a, .button-group.round.stack-for-small > *:last-child > button, .button-group.round.stack-for-small > *:last-child > .button { - -webkit-border-bottom-right-radius: 1000px; - -webkit-border-top-right-radius: 1000px; - border-bottom-right-radius: 1000px; - border-top-right-radius: 1000px; } } - @media only screen and (max-width: 40em) { - .button-group.round.stack-for-small > * { - margin: 0 -2px; - float: left; - display: inline-block; - display: block; - margin: 0; } - .button-group.round.stack-for-small > * > button, .button-group.round.stack-for-small > * .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.round.stack-for-small > *:first-child button, .button-group.round.stack-for-small > *:first-child .button { - border-left: 0; } - .button-group.round.stack-for-small > * > button, .button-group.round.stack-for-small > * .button { - border-top: 1px solid; - border-color: rgba(255, 255, 255, 0.5); - border-left-width: 0px; - margin: 0; - display: block; } - .button-group.round.stack-for-small > *:first-child button, .button-group.round.stack-for-small > *:first-child .button { - border-top: 0; } - .button-group.round.stack-for-small > *, .button-group.round.stack-for-small > * > a, .button-group.round.stack-for-small > * > button, .button-group.round.stack-for-small > * > .button { - border-radius: 0; } - .button-group.round.stack-for-small > *:first-child, .button-group.round.stack-for-small > *:first-child > a, .button-group.round.stack-for-small > *:first-child > button, .button-group.round.stack-for-small > *:first-child > .button { - -webkit-top-left-radius: 1rem; - -webkit-top-right-radius: 1rem; - border-top-left-radius: 1rem; - border-top-right-radius: 1rem; } - .button-group.round.stack-for-small > *:last-child, .button-group.round.stack-for-small > *:last-child > a, .button-group.round.stack-for-small > *:last-child > button, .button-group.round.stack-for-small > *:last-child > .button { - -webkit-bottom-left-radius: 1rem; - -webkit-bottom-right-radius: 1rem; - border-bottom-left-radius: 1rem; - border-bottom-right-radius: 1rem; } } - .button-group.even-2 li { - margin: 0 -2px; - float: left; - display: inline-block; - width: 50%; } - .button-group.even-2 li > button, .button-group.even-2 li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.even-2 li:first-child button, .button-group.even-2 li:first-child .button { - border-left: 0; } - .button-group.even-2 li button, .button-group.even-2 li .button { - width: 100%; } - .button-group.even-3 li { - margin: 0 -2px; - float: left; - display: inline-block; - width: 33.33333%; } - .button-group.even-3 li > button, .button-group.even-3 li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.even-3 li:first-child button, .button-group.even-3 li:first-child .button { - border-left: 0; } - .button-group.even-3 li button, .button-group.even-3 li .button { - width: 100%; } - .button-group.even-4 li { - margin: 0 -2px; - float: left; - display: inline-block; - width: 25%; } - .button-group.even-4 li > button, .button-group.even-4 li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.even-4 li:first-child button, .button-group.even-4 li:first-child .button { - border-left: 0; } - .button-group.even-4 li button, .button-group.even-4 li .button { - width: 100%; } - .button-group.even-5 li { - margin: 0 -2px; - float: left; - display: inline-block; - width: 20%; } - .button-group.even-5 li > button, .button-group.even-5 li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.even-5 li:first-child button, .button-group.even-5 li:first-child .button { - border-left: 0; } - .button-group.even-5 li button, .button-group.even-5 li .button { - width: 100%; } - .button-group.even-6 li { - margin: 0 -2px; - float: left; - display: inline-block; - width: 16.66667%; } - .button-group.even-6 li > button, .button-group.even-6 li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.even-6 li:first-child button, .button-group.even-6 li:first-child .button { - border-left: 0; } - .button-group.even-6 li button, .button-group.even-6 li .button { - width: 100%; } - .button-group.even-7 li { - margin: 0 -2px; - float: left; - display: inline-block; - width: 14.28571%; } - .button-group.even-7 li > button, .button-group.even-7 li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.even-7 li:first-child button, .button-group.even-7 li:first-child .button { - border-left: 0; } - .button-group.even-7 li button, .button-group.even-7 li .button { - width: 100%; } - .button-group.even-8 li { - margin: 0 -2px; - float: left; - display: inline-block; - width: 12.5%; } - .button-group.even-8 li > button, .button-group.even-8 li .button { - border-left: 1px solid; - border-color: rgba(255, 255, 255, 0.5); } - .button-group.even-8 li:first-child button, .button-group.even-8 li:first-child .button { - border-left: 0; } - .button-group.even-8 li button, .button-group.even-8 li .button { - width: 100%; } - -.button-bar:before, .button-bar:after { - content: " "; - display: table; } -.button-bar:after { - clear: both; } -.button-bar .button-group { - float: left; - margin-right: 0.625rem; } - .button-bar .button-group div { - overflow: hidden; } - -/* Clearing Styles */ -.clearing-thumbs, [data-clearing] { - margin-bottom: 0; - margin-left: 0; - list-style: none; } - .clearing-thumbs:before, .clearing-thumbs:after, [data-clearing]:before, [data-clearing]:after { - content: " "; - display: table; } - .clearing-thumbs:after, [data-clearing]:after { - clear: both; } - .clearing-thumbs li, [data-clearing] li { - float: left; - margin-right: 10px; } - .clearing-thumbs[class*="block-grid-"] li, [data-clearing][class*="block-grid-"] li { - margin-right: 0; } - -.clearing-blackout { - background: #333333; - position: fixed; - width: 100%; - height: 100%; - top: 0; - left: 0; - z-index: 998; } - .clearing-blackout .clearing-close { - display: block; } - -.clearing-container { - position: relative; - z-index: 998; - height: 100%; - overflow: hidden; - margin: 0; } - -.clearing-touch-label { - position: absolute; - top: 50%; - left: 50%; - color: #aaaaaa; - font-size: 0.6em; } - -.visible-img { - height: 95%; - position: relative; } - .visible-img img { - position: absolute; - left: 50%; - top: 50%; - margin-left: -50%; - max-height: 100%; - max-width: 100%; } - -.clearing-caption { - color: #cccccc; - font-size: 0.875em; - line-height: 1.3; - margin-bottom: 0; - text-align: center; - bottom: 0; - background: #333333; - width: 100%; - padding: 10px 30px 20px; - position: absolute; - left: 0; } - -.clearing-close { - z-index: 999; - padding-left: 20px; - padding-top: 10px; - font-size: 30px; - line-height: 1; - color: #cccccc; - display: none; } - .clearing-close:hover, .clearing-close:focus { - color: #cccccc; } - -.clearing-assembled .clearing-container { - height: 100%; } - .clearing-assembled .clearing-container .carousel > ul { - display: none; } - -.clearing-feature li { - display: none; } - .clearing-feature li.clearing-featured-img { - display: block; } - -@media only screen and (min-width: 40.063em) { - .clearing-main-prev, - .clearing-main-next { - position: absolute; - height: 100%; - width: 40px; - top: 0; } - .clearing-main-prev > span, - .clearing-main-next > span { - position: absolute; - top: 50%; - display: block; - width: 0; - height: 0; - border: solid 12px; } - .clearing-main-prev > span:hover, - .clearing-main-next > span:hover { - opacity: 0.8; } - - .clearing-main-prev { - left: 0; } - .clearing-main-prev > span { - left: 5px; - border-color: transparent; - border-right-color: #cccccc; } - - .clearing-main-next { - right: 0; } - .clearing-main-next > span { - border-color: transparent; - border-left-color: #cccccc; } - - .clearing-main-prev.disabled, - .clearing-main-next.disabled { - opacity: 0.3; } - - .clearing-assembled .clearing-container .carousel { - background: rgba(51, 51, 51, 0.8); - height: 120px; - margin-top: 10px; - text-align: center; } - .clearing-assembled .clearing-container .carousel > ul { - display: inline-block; - z-index: 999; - height: 100%; - position: relative; - float: none; } - .clearing-assembled .clearing-container .carousel > ul li { - display: block; - width: 120px; - min-height: inherit; - float: left; - overflow: hidden; - margin-right: 0; - padding: 0; - position: relative; - cursor: pointer; - opacity: 0.4; - clear: none; } - .clearing-assembled .clearing-container .carousel > ul li.fix-height img { - height: 100%; - max-width: none; } - .clearing-assembled .clearing-container .carousel > ul li a.th { - border: none; - box-shadow: none; - display: block; } - .clearing-assembled .clearing-container .carousel > ul li img { - cursor: pointer !important; - width: 100% !important; } - .clearing-assembled .clearing-container .carousel > ul li.visible { - opacity: 1; } - .clearing-assembled .clearing-container .carousel > ul li:hover { - opacity: 0.8; } - .clearing-assembled .clearing-container .visible-img { - background: #333333; - overflow: hidden; - height: 85%; } - - .clearing-close { - position: absolute; - top: 10px; - right: 20px; - padding-left: 0; - padding-top: 0; } } -/* Foundation Dropdowns */ -.f-dropdown { - position: absolute; - left: -9999px; - list-style: none; - margin-left: 0; - width: 100%; - max-height: none; - height: auto; - background: white; - border: solid 1px #cccccc; - font-size: 0.875rem; - z-index: 89; - margin-top: 2px; - max-width: 200px; } - .f-dropdown > *:first-child { - margin-top: 0; } - .f-dropdown > *:last-child { - margin-bottom: 0; } - .f-dropdown:before { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 6px; - border-color: transparent transparent white transparent; - border-bottom-style: solid; - position: absolute; - top: -12px; - left: 10px; - z-index: 89; } - .f-dropdown:after { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 7px; - border-color: transparent transparent #cccccc transparent; - border-bottom-style: solid; - position: absolute; - top: -14px; - left: 9px; - z-index: 88; } - .f-dropdown.right:before { - left: auto; - right: 10px; } - .f-dropdown.right:after { - left: auto; - right: 9px; } - .f-dropdown.drop-right { - position: absolute; - left: -9999px; - list-style: none; - margin-left: 0; - width: 100%; - max-height: none; - height: auto; - background: white; - border: solid 1px #cccccc; - font-size: 0.875rem; - z-index: 89; - margin-top: 0; - margin-left: 2px; - max-width: 200px; } - .f-dropdown.drop-right > *:first-child { - margin-top: 0; } - .f-dropdown.drop-right > *:last-child { - margin-bottom: 0; } - .f-dropdown.drop-right:before { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 6px; - border-color: transparent white transparent transparent; - border-right-style: solid; - position: absolute; - top: 10px; - left: -12px; - z-index: 89; } - .f-dropdown.drop-right:after { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 7px; - border-color: transparent #cccccc transparent transparent; - border-right-style: solid; - position: absolute; - top: 9px; - left: -14px; - z-index: 88; } - .f-dropdown.drop-left { - position: absolute; - left: -9999px; - list-style: none; - margin-left: 0; - width: 100%; - max-height: none; - height: auto; - background: white; - border: solid 1px #cccccc; - font-size: 0.875rem; - z-index: 89; - margin-top: 0; - margin-left: -2px; - max-width: 200px; } - .f-dropdown.drop-left > *:first-child { - margin-top: 0; } - .f-dropdown.drop-left > *:last-child { - margin-bottom: 0; } - .f-dropdown.drop-left:before { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 6px; - border-color: transparent transparent transparent white; - border-left-style: solid; - position: absolute; - top: 10px; - right: -12px; - left: auto; - z-index: 89; } - .f-dropdown.drop-left:after { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 7px; - border-color: transparent transparent transparent #cccccc; - border-left-style: solid; - position: absolute; - top: 9px; - right: -14px; - left: auto; - z-index: 88; } - .f-dropdown.drop-top { - position: absolute; - left: -9999px; - list-style: none; - margin-left: 0; - width: 100%; - max-height: none; - height: auto; - background: white; - border: solid 1px #cccccc; - font-size: 0.875rem; - z-index: 89; - margin-top: -2px; - margin-left: 0; - max-width: 200px; } - .f-dropdown.drop-top > *:first-child { - margin-top: 0; } - .f-dropdown.drop-top > *:last-child { - margin-bottom: 0; } - .f-dropdown.drop-top:before { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 6px; - border-color: white transparent transparent transparent; - border-top-style: solid; - position: absolute; - top: auto; - bottom: -12px; - left: 10px; - right: auto; - z-index: 89; } - .f-dropdown.drop-top:after { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 7px; - border-color: #cccccc transparent transparent transparent; - border-top-style: solid; - position: absolute; - top: auto; - bottom: -14px; - left: 9px; - right: auto; - z-index: 88; } - .f-dropdown li { - font-size: 0.875rem; - cursor: pointer; - line-height: 1.125rem; - margin: 0; } - .f-dropdown li:hover, .f-dropdown li:focus { - background: #eeeeee; } - .f-dropdown li.radius { - border-radius: 3px; } - .f-dropdown li a { - display: block; - padding: 0.5rem; - color: #555555; } - .f-dropdown.content { - position: absolute; - left: -9999px; - list-style: none; - margin-left: 0; - padding: 1.25rem; - width: 100%; - height: auto; - max-height: none; - background: white; - border: solid 1px #cccccc; - font-size: 0.875rem; - z-index: 89; - max-width: 200px; } - .f-dropdown.content > *:first-child { - margin-top: 0; } - .f-dropdown.content > *:last-child { - margin-bottom: 0; } - .f-dropdown.tiny { - max-width: 200px; } - .f-dropdown.small { - max-width: 300px; } - .f-dropdown.medium { - max-width: 500px; } - .f-dropdown.large { - max-width: 800px; } - .f-dropdown.mega { - width: 100% !important; - max-width: 100% !important; } - .f-dropdown.mega.open { - left: 0 !important; } - -.dropdown.button, button.dropdown { - position: relative; - padding-right: 3.5625rem; } - .dropdown.button:after, button.dropdown:after { - position: absolute; - content: ""; - width: 0; - height: 0; - display: block; - border-style: solid; - border-color: white transparent transparent transparent; - top: 50%; } - .dropdown.button:after, button.dropdown:after { - border-width: 0.375rem; - right: 1.40625rem; - margin-top: -0.15625rem; } - .dropdown.button:after, button.dropdown:after { - border-color: white transparent transparent transparent; } - .dropdown.button.tiny, button.dropdown.tiny { - padding-right: 2.625rem; } - .dropdown.button.tiny:before, button.dropdown.tiny:before { - border-width: 0.375rem; - right: 1.125rem; - margin-top: -0.125rem; } - .dropdown.button.tiny:after, button.dropdown.tiny:after { - border-color: white transparent transparent transparent; } - .dropdown.button.small, button.dropdown.small { - padding-right: 3.0625rem; } - .dropdown.button.small:after, button.dropdown.small:after { - border-width: 0.4375rem; - right: 1.3125rem; - margin-top: -0.15625rem; } - .dropdown.button.small:after, button.dropdown.small:after { - border-color: white transparent transparent transparent; } - .dropdown.button.large, button.dropdown.large { - padding-right: 3.625rem; } - .dropdown.button.large:after, button.dropdown.large:after { - border-width: 0.3125rem; - right: 1.71875rem; - margin-top: -0.15625rem; } - .dropdown.button.large:after, button.dropdown.large:after { - border-color: white transparent transparent transparent; } - .dropdown.button.secondary:after, button.dropdown.secondary:after { - border-color: #333333 transparent transparent transparent; } - -.flex-video { - position: relative; - padding-top: 1.5625rem; - padding-bottom: 67.5%; - height: 0; - margin-bottom: 1rem; - overflow: hidden; } - .flex-video.widescreen { - padding-bottom: 56.34%; } - .flex-video.vimeo { - padding-top: 0; } - .flex-video iframe, - .flex-video object, - .flex-video embed, - .flex-video video { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; } - -/* Standard Forms */ -form { - margin: 0 0 1rem; } - -/* Using forms within rows, we need to set some defaults */ -form .row .row { - margin: 0 -0.5rem; } - form .row .row .column, - form .row .row .columns { - padding: 0 0.5rem; } - form .row .row.collapse { - margin: 0; } - form .row .row.collapse .column, - form .row .row.collapse .columns { - padding: 0; } - form .row .row.collapse input { - -webkit-border-bottom-right-radius: 0; - -webkit-border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-top-right-radius: 0; } -form .row input.column, -form .row input.columns, -form .row textarea.column, -form .row textarea.columns { - padding-left: 0.5rem; } - -/* Label Styles */ -label { - font-size: 0.875rem; - color: #4d4d4d; - cursor: pointer; - display: block; - font-weight: normal; - line-height: 1.5; - margin-bottom: 0; - /* Styles for required inputs */ } - label.right { - float: none !important; - text-align: right; } - label.inline { - margin: 0 0 1rem 0; - padding: 0.5625rem 0; } - label small { - text-transform: capitalize; - color: #676767; } - -select::-ms-expand { - display: none; } - -/* Attach elements to the beginning or end of an input */ -.prefix, -.postfix { - display: block; - position: relative; - z-index: 2; - text-align: center; - width: 100%; - padding-top: 0; - padding-bottom: 0; - border-style: solid; - border-width: 1px; - overflow: hidden; - font-size: 0.875rem; - height: 2.3125rem; - line-height: 2.3125rem; } - -/* Adjust padding, alignment and radius if pre/post element is a button */ -.postfix.button { - padding-left: 0; - padding-right: 0; - padding-top: 0; - padding-bottom: 0; - text-align: center; - line-height: 2.125rem; - border: none; } - -.prefix.button { - padding-left: 0; - padding-right: 0; - padding-top: 0; - padding-bottom: 0; - text-align: center; - line-height: 2.125rem; - border: none; } - -.prefix.button.radius { - border-radius: 0; - -webkit-border-bottom-left-radius: 3px; - -webkit-border-top-left-radius: 3px; - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; } - -.postfix.button.radius { - border-radius: 0; - -webkit-border-bottom-right-radius: 3px; - -webkit-border-top-right-radius: 3px; - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; } - -.prefix.button.round { - border-radius: 0; - -webkit-border-bottom-left-radius: 1000px; - -webkit-border-top-left-radius: 1000px; - border-bottom-left-radius: 1000px; - border-top-left-radius: 1000px; } - -.postfix.button.round { - border-radius: 0; - -webkit-border-bottom-right-radius: 1000px; - -webkit-border-top-right-radius: 1000px; - border-bottom-right-radius: 1000px; - border-top-right-radius: 1000px; } - -/* Separate prefix and postfix styles when on span or label so buttons keep their own */ -span.prefix, label.prefix { - background: #f2f2f2; - border-right: none; - color: #333333; - border-color: #cccccc; } - -span.postfix, label.postfix { - background: #f2f2f2; - border-left: none; - color: #333333; - border-color: #cccccc; } - -/* We use this to get basic styling on all basic form elements */ -input[type="text"], -input[type="password"], -input[type="date"], -input[type="datetime"], -input[type="datetime-local"], -input[type="month"], -input[type="week"], -input[type="email"], -input[type="number"], -input[type="search"], -input[type="tel"], -input[type="time"], -input[type="url"], -input[type="color"], -textarea { - -webkit-appearance: none; - -webkit-border-radius: 0px; - background-color: white; - font-family: inherit; - border: 1px solid #cccccc; - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - color: rgba(0, 0, 0, 0.75); - display: block; - font-size: 0.875rem; - margin: 0 0 1rem 0; - padding: 0.5rem; - height: 2.3125rem; - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - transition: box-shadow 0.45s, border-color 0.45s ease-in-out; } - input[type="text"]:focus, - input[type="password"]:focus, - input[type="date"]:focus, - input[type="datetime"]:focus, - input[type="datetime-local"]:focus, - input[type="month"]:focus, - input[type="week"]:focus, - input[type="email"]:focus, - input[type="number"]:focus, - input[type="search"]:focus, - input[type="tel"]:focus, - input[type="time"]:focus, - input[type="url"]:focus, - input[type="color"]:focus, - textarea:focus { - box-shadow: 0 0 5px #999999; - border-color: #999999; } - input[type="text"]:focus, - input[type="password"]:focus, - input[type="date"]:focus, - input[type="datetime"]:focus, - input[type="datetime-local"]:focus, - input[type="month"]:focus, - input[type="week"]:focus, - input[type="email"]:focus, - input[type="number"]:focus, - input[type="search"]:focus, - input[type="tel"]:focus, - input[type="time"]:focus, - input[type="url"]:focus, - input[type="color"]:focus, - textarea:focus { - background: #fafafa; - border-color: #999999; - outline: none; } - input[type="text"]:disabled, - input[type="password"]:disabled, - input[type="date"]:disabled, - input[type="datetime"]:disabled, - input[type="datetime-local"]:disabled, - input[type="month"]:disabled, - input[type="week"]:disabled, - input[type="email"]:disabled, - input[type="number"]:disabled, - input[type="search"]:disabled, - input[type="tel"]:disabled, - input[type="time"]:disabled, - input[type="url"]:disabled, - input[type="color"]:disabled, - textarea:disabled { - background-color: #dddddd; - cursor: default; } - input[type="text"][disabled], input[type="text"][readonly], fieldset[disabled] input[type="text"], - input[type="password"][disabled], - input[type="password"][readonly], fieldset[disabled] - input[type="password"], - input[type="date"][disabled], - input[type="date"][readonly], fieldset[disabled] - input[type="date"], - input[type="datetime"][disabled], - input[type="datetime"][readonly], fieldset[disabled] - input[type="datetime"], - input[type="datetime-local"][disabled], - input[type="datetime-local"][readonly], fieldset[disabled] - input[type="datetime-local"], - input[type="month"][disabled], - input[type="month"][readonly], fieldset[disabled] - input[type="month"], - input[type="week"][disabled], - input[type="week"][readonly], fieldset[disabled] - input[type="week"], - input[type="email"][disabled], - input[type="email"][readonly], fieldset[disabled] - input[type="email"], - input[type="number"][disabled], - input[type="number"][readonly], fieldset[disabled] - input[type="number"], - input[type="search"][disabled], - input[type="search"][readonly], fieldset[disabled] - input[type="search"], - input[type="tel"][disabled], - input[type="tel"][readonly], fieldset[disabled] - input[type="tel"], - input[type="time"][disabled], - input[type="time"][readonly], fieldset[disabled] - input[type="time"], - input[type="url"][disabled], - input[type="url"][readonly], fieldset[disabled] - input[type="url"], - input[type="color"][disabled], - input[type="color"][readonly], fieldset[disabled] - input[type="color"], - textarea[disabled], - textarea[readonly], fieldset[disabled] - textarea { - background-color: #dddddd; - cursor: default; } - input[type="text"].radius, - input[type="password"].radius, - input[type="date"].radius, - input[type="datetime"].radius, - input[type="datetime-local"].radius, - input[type="month"].radius, - input[type="week"].radius, - input[type="email"].radius, - input[type="number"].radius, - input[type="search"].radius, - input[type="tel"].radius, - input[type="time"].radius, - input[type="url"].radius, - input[type="color"].radius, - textarea.radius { - border-radius: 3px; } - -form .row .prefix-radius.row.collapse input, -form .row .prefix-radius.row.collapse textarea, -form .row .prefix-radius.row.collapse select { - border-radius: 0; - -webkit-border-bottom-right-radius: 3px; - -webkit-border-top-right-radius: 3px; - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; } -form .row .prefix-radius.row.collapse .prefix { - border-radius: 0; - -webkit-border-bottom-left-radius: 3px; - -webkit-border-top-left-radius: 3px; - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; } -form .row .postfix-radius.row.collapse input, -form .row .postfix-radius.row.collapse textarea, -form .row .postfix-radius.row.collapse select { - border-radius: 0; - -webkit-border-bottom-left-radius: 3px; - -webkit-border-top-left-radius: 3px; - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; } -form .row .postfix-radius.row.collapse .postfix { - border-radius: 0; - -webkit-border-bottom-right-radius: 3px; - -webkit-border-top-right-radius: 3px; - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; } -form .row .prefix-round.row.collapse input, -form .row .prefix-round.row.collapse textarea, -form .row .prefix-round.row.collapse select { - border-radius: 0; - -webkit-border-bottom-right-radius: 1000px; - -webkit-border-top-right-radius: 1000px; - border-bottom-right-radius: 1000px; - border-top-right-radius: 1000px; } -form .row .prefix-round.row.collapse .prefix { - border-radius: 0; - -webkit-border-bottom-left-radius: 1000px; - -webkit-border-top-left-radius: 1000px; - border-bottom-left-radius: 1000px; - border-top-left-radius: 1000px; } -form .row .postfix-round.row.collapse input, -form .row .postfix-round.row.collapse textarea, -form .row .postfix-round.row.collapse select { - border-radius: 0; - -webkit-border-bottom-left-radius: 1000px; - -webkit-border-top-left-radius: 1000px; - border-bottom-left-radius: 1000px; - border-top-left-radius: 1000px; } -form .row .postfix-round.row.collapse .postfix { - border-radius: 0; - -webkit-border-bottom-right-radius: 1000px; - -webkit-border-top-right-radius: 1000px; - border-bottom-right-radius: 1000px; - border-top-right-radius: 1000px; } - -input[type="submit"] { - -webkit-appearance: none; - -webkit-border-radius: 0px; } - -/* Respect enforced amount of rows for textarea */ -textarea[rows] { - height: auto; } - -/* Add height value for select elements to match text input height */ -select { - -webkit-appearance: none !important; - -webkit-border-radius: 0px; - background-color: #fafafa; - background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+); - background-position: 100% center; - background-repeat: no-repeat; - border: 1px solid #cccccc; - padding: 0.5rem; - font-size: 0.875rem; - font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; - color: rgba(0, 0, 0, 0.75); - line-height: normal; - border-radius: 0; - height: 2.3125rem; } - select.radius { - border-radius: 3px; } - select:hover { - background-color: #f3f3f3; - border-color: #999999; } - select:disabled { - background-color: #dddddd; - cursor: default; } - -/* Adjust margin for form elements below */ -input[type="file"], -input[type="checkbox"], -input[type="radio"], -select { - margin: 0 0 1rem 0; } - -input[type="checkbox"] + label, -input[type="radio"] + label { - display: inline-block; - margin-left: 0.5rem; - margin-right: 1rem; - margin-bottom: 0; - vertical-align: baseline; } - -/* Normalize file input width */ -input[type="file"] { - width: 100%; } - -/* HTML5 Number spinners settings */ -/* We add basic fieldset styling */ -fieldset { - border: 1px solid #dddddd; - padding: 1.25rem; - margin: 1.125rem 0; } - fieldset legend { - font-weight: bold; - background: white; - padding: 0 0.1875rem; - margin: 0; - margin-left: -0.1875rem; } - -/* Error Handling */ -[data-abide] .error small.error, [data-abide] .error span.error, [data-abide] span.error, [data-abide] small.error { - display: block; - padding: 0.375rem 0.5625rem 0.5625rem; - margin-top: -1px; - margin-bottom: 1rem; - font-size: 0.75rem; - font-weight: normal; - font-style: italic; - background: #f04124; - color: white; } -[data-abide] span.error, [data-abide] small.error { - display: none; } - -span.error, small.error { - display: block; - padding: 0.375rem 0.5625rem 0.5625rem; - margin-top: -1px; - margin-bottom: 1rem; - font-size: 0.75rem; - font-weight: normal; - font-style: italic; - background: #f04124; - color: white; } - -.error input, -.error textarea, -.error select { - margin-bottom: 0; } -.error input[type="checkbox"], -.error input[type="radio"] { - margin-bottom: 1rem; } -.error label, -.error label.error { - color: #f04124; } -.error small.error { - display: block; - padding: 0.375rem 0.5625rem 0.5625rem; - margin-top: -1px; - margin-bottom: 1rem; - font-size: 0.75rem; - font-weight: normal; - font-style: italic; - background: #f04124; - color: white; } -.error > label > small { - color: #676767; - background: transparent; - padding: 0; - text-transform: capitalize; - font-style: normal; - font-size: 60%; - margin: 0; - display: inline; } -.error span.error-message { - display: block; } - -input.error, -textarea.error, -select.error { - margin-bottom: 0; } - -label.error { - color: #f04124; } - -.icon-bar { - width: 100%; - font-size: 0; - display: inline-block; - background: #333333; } - .icon-bar > * { - text-align: center; - font-size: 1rem; - width: 25%; - margin: 0 auto; - display: block; - padding: 1.25rem; - float: left; } - .icon-bar > * i, .icon-bar > * img { - display: block; - margin: 0 auto; } - .icon-bar > * i + label, .icon-bar > * img + label { - margin-top: .0625rem; } - .icon-bar > * i { - font-size: 1.875rem; - vertical-align: middle; } - .icon-bar > * img { - width: 1.875rem; - height: 1.875rem; } - .icon-bar.label-right > * i, .icon-bar.label-right > * img { - margin: 0 .0625rem 0 0; - display: inline-block; } - .icon-bar.label-right > * i + label, .icon-bar.label-right > * img + label { - margin-top: 0; } - .icon-bar.label-right > * label { - display: inline-block; } - .icon-bar.vertical.label-right > * { - text-align: left; } - .icon-bar.vertical, .icon-bar.small-vertical { - height: 100%; - width: auto; } - .icon-bar.vertical .item, .icon-bar.small-vertical .item { - width: auto; - margin: auto; - float: none; } - @media only screen and (min-width: 40.063em) { - .icon-bar.medium-vertical { - height: 100%; - width: auto; } - .icon-bar.medium-vertical .item { - width: auto; - margin: auto; - float: none; } } - @media only screen and (min-width: 64.063em) { - .icon-bar.large-vertical { - height: 100%; - width: auto; } - .icon-bar.large-vertical .item { - width: auto; - margin: auto; - float: none; } } - .icon-bar > * { - font-size: 1rem; - padding: 1.25rem; } - .icon-bar > * i + label, .icon-bar > * img + label { - margin-top: .0625rem; } - .icon-bar > * i { - font-size: 1.875rem; } - .icon-bar > * img { - width: 1.875rem; - height: 1.875rem; } - .icon-bar > *:hover { - background: #008cba; } - .icon-bar > * label { - color: white; } - .icon-bar > * i { - color: white; } - -.icon-bar.two-up .item { - width: 50%; } -.icon-bar.two-up.vertical .item, .icon-bar.two-up.small-vertical .item { - width: auto; } -@media only screen and (min-width: 40.063em) { - .icon-bar.two-up.medium-vertical .item { - width: auto; } } -@media only screen and (min-width: 64.063em) { - .icon-bar.two-up.large-vertical .item { - width: auto; } } -.icon-bar.three-up .item { - width: 33.3333%; } -.icon-bar.three-up.vertical .item, .icon-bar.three-up.small-vertical .item { - width: auto; } -@media only screen and (min-width: 40.063em) { - .icon-bar.three-up.medium-vertical .item { - width: auto; } } -@media only screen and (min-width: 64.063em) { - .icon-bar.three-up.large-vertical .item { - width: auto; } } -.icon-bar.four-up .item { - width: 25%; } -.icon-bar.four-up.vertical .item, .icon-bar.four-up.small-vertical .item { - width: auto; } -@media only screen and (min-width: 40.063em) { - .icon-bar.four-up.medium-vertical .item { - width: auto; } } -@media only screen and (min-width: 64.063em) { - .icon-bar.four-up.large-vertical .item { - width: auto; } } -.icon-bar.five-up .item { - width: 20%; } -.icon-bar.five-up.vertical .item, .icon-bar.five-up.small-vertical .item { - width: auto; } -@media only screen and (min-width: 40.063em) { - .icon-bar.five-up.medium-vertical .item { - width: auto; } } -@media only screen and (min-width: 64.063em) { - .icon-bar.five-up.large-vertical .item { - width: auto; } } -.icon-bar.six-up .item { - width: 16.66667%; } -.icon-bar.six-up.vertical .item, .icon-bar.six-up.small-vertical .item { - width: auto; } -@media only screen and (min-width: 40.063em) { - .icon-bar.six-up.medium-vertical .item { - width: auto; } } -@media only screen and (min-width: 64.063em) { - .icon-bar.six-up.large-vertical .item { - width: auto; } } - -.inline-list { - margin: 0 auto 1.0625rem auto; - margin-left: -1.375rem; - margin-right: 0; - padding: 0; - list-style: none; - overflow: hidden; } - .inline-list > li { - list-style: none; - float: left; - margin-left: 1.375rem; - display: block; } - .inline-list > li > * { - display: block; } - -/* Foundation Joyride */ -.joyride-list { - display: none; } - -/* Default styles for the container */ -.joyride-tip-guide { - display: none; - position: absolute; - background: #333333; - color: white; - z-index: 101; - top: 0; - left: 2.5%; - font-family: inherit; - font-weight: normal; - width: 95%; } - -.lt-ie9 .joyride-tip-guide { - max-width: 800px; - left: 50%; - margin-left: -400px; } - -.joyride-content-wrapper { - width: 100%; - padding: 1.125rem 1.25rem 1.5rem; } - .joyride-content-wrapper .button { - margin-bottom: 0 !important; } - .joyride-content-wrapper .joyride-prev-tip { - margin-right: 10px; } - -/* Add a little css triangle pip, older browser just miss out on the fanciness of it */ -.joyride-tip-guide .joyride-nub { - display: block; - position: absolute; - left: 22px; - width: 0; - height: 0; - border: 10px solid #333333; } - .joyride-tip-guide .joyride-nub.top { - border-top-style: solid; - border-color: #333333; - border-top-color: transparent !important; - border-left-color: transparent !important; - border-right-color: transparent !important; - top: -20px; } - .joyride-tip-guide .joyride-nub.bottom { - border-bottom-style: solid; - border-color: #333333 !important; - border-bottom-color: transparent !important; - border-left-color: transparent !important; - border-right-color: transparent !important; - bottom: -20px; } - .joyride-tip-guide .joyride-nub.right { - right: -20px; } - .joyride-tip-guide .joyride-nub.left { - left: -20px; } - -/* Typography */ -.joyride-tip-guide h1, -.joyride-tip-guide h2, -.joyride-tip-guide h3, -.joyride-tip-guide h4, -.joyride-tip-guide h5, -.joyride-tip-guide h6 { - line-height: 1.25; - margin: 0; - font-weight: bold; - color: white; } - -.joyride-tip-guide p { - margin: 0 0 1.125rem 0; - font-size: 0.875rem; - line-height: 1.3; } - -.joyride-timer-indicator-wrap { - width: 50px; - height: 3px; - border: solid 1px #555555; - position: absolute; - right: 1.0625rem; - bottom: 1rem; } - -.joyride-timer-indicator { - display: block; - width: 0; - height: inherit; - background: #666666; } - -.joyride-close-tip { - position: absolute; - right: 12px; - top: 10px; - color: #777777 !important; - text-decoration: none; - font-size: 24px; - font-weight: normal; - line-height: .5 !important; } - .joyride-close-tip:hover, .joyride-close-tip:focus { - color: #eeeeee !important; } - -.joyride-modal-bg { - position: fixed; - height: 100%; - width: 100%; - background: transparent; - background: rgba(0, 0, 0, 0.5); - z-index: 100; - display: none; - top: 0; - left: 0; - cursor: pointer; } - -.joyride-expose-wrapper { - background-color: white; - position: absolute; - border-radius: 3px; - z-index: 102; - box-shadow: 0 0 15px white; } - -.joyride-expose-cover { - background: transparent; - border-radius: 3px; - position: absolute; - z-index: 9999; - top: 0; - left: 0; } - -/* Styles for screens that are at least 768px; */ -@media only screen and (min-width: 40.063em) { - .joyride-tip-guide { - width: 300px; - left: inherit; } - .joyride-tip-guide .joyride-nub.bottom { - border-color: #333333 !important; - border-bottom-color: transparent !important; - border-left-color: transparent !important; - border-right-color: transparent !important; - bottom: -20px; } - .joyride-tip-guide .joyride-nub.right { - border-color: #333333 !important; - border-top-color: transparent !important; - border-right-color: transparent !important; - border-bottom-color: transparent !important; - top: 22px; - left: auto; - right: -20px; } - .joyride-tip-guide .joyride-nub.left { - border-color: #333333 !important; - border-top-color: transparent !important; - border-left-color: transparent !important; - border-bottom-color: transparent !important; - top: 22px; - left: -20px; - right: auto; } } -.keystroke, -kbd { - background-color: #ededed; - border-color: #dddddd; - color: #222222; - border-style: solid; - border-width: 1px; - margin: 0; - font-family: "Consolas", "Menlo", "Courier", monospace; - font-size: inherit; - padding: 0.125rem 0.25rem 0; - border-radius: 3px; } - -.label { - font-weight: normal; - font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; - text-align: center; - text-decoration: none; - line-height: 1; - white-space: nowrap; - display: inline-block; - position: relative; - margin-bottom: inherit; - padding: 0.25rem 0.5rem 0.25rem; - font-size: 0.6875rem; - background-color: #008cba; - color: white; } - .label.radius { - border-radius: 3px; } - .label.round { - border-radius: 1000px; } - .label.alert { - background-color: #f04124; - color: white; } - .label.warning { - background-color: #f08a24; - color: white; } - .label.success { - background-color: #43ac6a; - color: white; } - .label.secondary { - background-color: #e7e7e7; - color: #333333; } - .label.info { - background-color: #a0d3e8; - color: #333333; } - -[data-magellan-expedition], [data-magellan-expedition-clone] { - background: white; - z-index: 50; - min-width: 100%; - padding: 10px; } - [data-magellan-expedition] .sub-nav, [data-magellan-expedition-clone] .sub-nav { - margin-bottom: 0; } - [data-magellan-expedition] .sub-nav dd, [data-magellan-expedition-clone] .sub-nav dd { - margin-bottom: 0; } - [data-magellan-expedition] .sub-nav a, [data-magellan-expedition-clone] .sub-nav a { - line-height: 1.8em; } - -@-webkit-keyframes rotate { - from { - -webkit-transform: rotate(0deg); } - - to { - -webkit-transform: rotate(360deg); } } -@-moz-keyframes rotate { - from { - -moz-transform: rotate(0deg); } - - to { - -moz-transform: rotate(360deg); } } -@-o-keyframes rotate { - from { - -o-transform: rotate(0deg); } - - to { - -o-transform: rotate(360deg); } } -@keyframes rotate { - from { - transform: rotate(0deg); } - - to { - transform: rotate(360deg); } } -/* Orbit Graceful Loading */ -.slideshow-wrapper { - position: relative; } - .slideshow-wrapper ul { - list-style-type: none; - margin: 0; } - .slideshow-wrapper ul li, - .slideshow-wrapper ul li .orbit-caption { - display: none; } - .slideshow-wrapper ul li:first-child { - display: block; } - .slideshow-wrapper .orbit-container { - background-color: transparent; } - .slideshow-wrapper .orbit-container li { - display: block; } - .slideshow-wrapper .orbit-container li .orbit-caption { - display: block; } - .slideshow-wrapper .orbit-container .orbit-bullets li { - display: inline-block; } - .slideshow-wrapper .preloader { - display: block; - width: 40px; - height: 40px; - position: absolute; - top: 50%; - left: 50%; - margin-top: -20px; - margin-left: -20px; - border: solid 3px; - border-color: #555555 white; - border-radius: 1000px; - animation-name: rotate; - animation-duration: 1.5s; - animation-iteration-count: infinite; - animation-timing-function: linear; } - -.orbit-container { - overflow: hidden; - width: 100%; - position: relative; - background: none; } - .orbit-container .orbit-slides-container { - list-style: none; - margin: 0; - padding: 0; - position: relative; - -webkit-transform: translateZ(0); } - .orbit-container .orbit-slides-container img { - display: block; - max-width: 100%; } - .orbit-container .orbit-slides-container > * { - position: absolute; - top: 0; - width: 100%; - margin-left: 100%; } - .orbit-container .orbit-slides-container > *:first-child { - margin-left: 0%; } - .orbit-container .orbit-slides-container > * .orbit-caption { - position: absolute; - bottom: 0; - background-color: rgba(51, 51, 51, 0.8); - color: white; - width: 100%; - padding: 0.625rem 0.875rem; - font-size: 0.875rem; } - .orbit-container .orbit-slide-number { - position: absolute; - top: 10px; - left: 10px; - font-size: 12px; - color: white; - background: transparent; - z-index: 10; } - .orbit-container .orbit-slide-number span { - font-weight: 700; - padding: 0.3125rem; } - .orbit-container .orbit-timer { - position: absolute; - top: 12px; - right: 10px; - height: 6px; - width: 100px; - z-index: 10; } - .orbit-container .orbit-timer .orbit-progress { - height: 3px; - background-color: rgba(255, 255, 255, 0.3); - display: block; - width: 0%; - position: relative; - right: 20px; - top: 5px; } - .orbit-container .orbit-timer > span { - display: none; - position: absolute; - top: 0px; - right: 0; - width: 11px; - height: 14px; - border: solid 4px white; - border-top: none; - border-bottom: none; } - .orbit-container .orbit-timer.paused > span { - right: -4px; - top: 0px; - width: 11px; - height: 14px; - border: inset 8px; - border-left-style: solid; - border-color: transparent; - border-left-color: white; } - .orbit-container .orbit-timer.paused > span.dark { - border-left-color: #333333; } - .orbit-container:hover .orbit-timer > span { - display: block; } - .orbit-container .orbit-prev, - .orbit-container .orbit-next { - position: absolute; - top: 45%; - margin-top: -25px; - width: 36px; - height: 60px; - line-height: 50px; - color: white; - background-color: transparent; - text-indent: -9999px !important; - z-index: 10; } - .orbit-container .orbit-prev:hover, - .orbit-container .orbit-next:hover { - background-color: rgba(0, 0, 0, 0.3); } - .orbit-container .orbit-prev > span, - .orbit-container .orbit-next > span { - position: absolute; - top: 50%; - margin-top: -10px; - display: block; - width: 0; - height: 0; - border: inset 10px; } - .orbit-container .orbit-prev { - left: 0; } - .orbit-container .orbit-prev > span { - border-right-style: solid; - border-color: transparent; - border-right-color: white; } - .orbit-container .orbit-prev:hover > span { - border-right-color: white; } - .orbit-container .orbit-next { - right: 0; } - .orbit-container .orbit-next > span { - border-color: transparent; - border-left-style: solid; - border-left-color: white; - left: 50%; - margin-left: -4px; } - .orbit-container .orbit-next:hover > span { - border-left-color: white; } - -.orbit-bullets-container { - text-align: center; } - -.orbit-bullets { - margin: 0 auto 30px auto; - overflow: hidden; - position: relative; - top: 10px; - float: none; - text-align: center; - display: block; } - .orbit-bullets li { - cursor: pointer; - display: inline-block; - width: 0.5625rem; - height: 0.5625rem; - background: #cccccc; - float: none; - margin-right: 6px; - border-radius: 1000px; } - .orbit-bullets li.active { - background: #999999; } - .orbit-bullets li:last-child { - margin-right: 0; } - -.touch .orbit-container .orbit-prev, -.touch .orbit-container .orbit-next { - display: none; } -.touch .orbit-bullets { - display: none; } - -@media only screen and (min-width: 40.063em) { - .touch .orbit-container .orbit-prev, - .touch .orbit-container .orbit-next { - display: inherit; } - .touch .orbit-bullets { - display: block; } } -@media only screen and (max-width: 40em) { - .orbit-stack-on-small .orbit-slides-container { - height: auto !important; } - .orbit-stack-on-small .orbit-slides-container > * { - position: relative; - margin: 0% !important; - opacity: 1 !important; } - .orbit-stack-on-small .orbit-slide-number { - display: none; } - - .orbit-timer { - display: none; } - - .orbit-next, .orbit-prev { - display: none; } - - .orbit-bullets { - display: none; } } -ul.pagination { - display: block; - min-height: 1.5rem; - margin-left: -0.3125rem; } - ul.pagination li { - height: 1.5rem; - color: #222222; - font-size: 0.875rem; - margin-left: 0.3125rem; } - ul.pagination li a, ul.pagination li button { - display: block; - padding: 0.0625rem 0.625rem 0.0625rem; - color: #999999; - background: none; - border-radius: 3px; - font-weight: normal; - font-size: 1em; - line-height: inherit; - transition: background-color 300ms ease-out; } - ul.pagination li:hover a, - ul.pagination li a:focus, ul.pagination li:hover button, - ul.pagination li button:focus { - background: #e6e6e6; } - ul.pagination li.unavailable a, ul.pagination li.unavailable button { - cursor: default; - color: #999999; } - ul.pagination li.unavailable:hover a, ul.pagination li.unavailable a:focus, ul.pagination li.unavailable:hover button, ul.pagination li.unavailable button:focus { - background: transparent; } - ul.pagination li.current a, ul.pagination li.current button { - background: #008cba; - color: white; - font-weight: bold; - cursor: default; } - ul.pagination li.current a:hover, ul.pagination li.current a:focus, ul.pagination li.current button:hover, ul.pagination li.current button:focus { - background: #008cba; } - ul.pagination li { - float: left; - display: block; } - -/* Pagination centred wrapper */ -.pagination-centered { - text-align: center; } - .pagination-centered ul.pagination li { - float: none; - display: inline-block; } - -/* Panels */ -.panel { - border-style: solid; - border-width: 1px; - border-color: #d8d8d8; - margin-bottom: 1.25rem; - padding: 1.25rem; - background: #f2f2f2; - color: #333333; } - .panel > :first-child { - margin-top: 0; } - .panel > :last-child { - margin-bottom: 0; } - .panel h1, .panel h2, .panel h3, .panel h4, .panel h5, .panel h6, .panel p, .panel li, .panel dl { - color: #333333; } - .panel h1, .panel h2, .panel h3, .panel h4, .panel h5, .panel h6 { - line-height: 1; - margin-bottom: 0.625rem; } - .panel h1.subheader, .panel h2.subheader, .panel h3.subheader, .panel h4.subheader, .panel h5.subheader, .panel h6.subheader { - line-height: 1.4; } - .panel.callout { - border-style: solid; - border-width: 1px; - border-color: #b6edff; - margin-bottom: 1.25rem; - padding: 1.25rem; - background: #ecfaff; - color: #333333; } - .panel.callout > :first-child { - margin-top: 0; } - .panel.callout > :last-child { - margin-bottom: 0; } - .panel.callout h1, .panel.callout h2, .panel.callout h3, .panel.callout h4, .panel.callout h5, .panel.callout h6, .panel.callout p, .panel.callout li, .panel.callout dl { - color: #333333; } - .panel.callout h1, .panel.callout h2, .panel.callout h3, .panel.callout h4, .panel.callout h5, .panel.callout h6 { - line-height: 1; - margin-bottom: 0.625rem; } - .panel.callout h1.subheader, .panel.callout h2.subheader, .panel.callout h3.subheader, .panel.callout h4.subheader, .panel.callout h5.subheader, .panel.callout h6.subheader { - line-height: 1.4; } - .panel.callout a:not(.button) { - color: #008cba; } - .panel.radius { - border-radius: 3px; } - -/* Pricing Tables */ -.pricing-table { - border: solid 1px #dddddd; - margin-left: 0; - margin-bottom: 1.25rem; } - .pricing-table * { - list-style: none; - line-height: 1; } - .pricing-table .title { - background-color: #333333; - padding: 0.9375rem 1.25rem; - text-align: center; - color: #eeeeee; - font-weight: normal; - font-size: 1rem; - font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; } - .pricing-table .price { - background-color: #f6f6f6; - padding: 0.9375rem 1.25rem; - text-align: center; - color: #333333; - font-weight: normal; - font-size: 2rem; - font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; } - .pricing-table .description { - background-color: white; - padding: 0.9375rem; - text-align: center; - color: #777777; - font-size: 0.75rem; - font-weight: normal; - line-height: 1.4; - border-bottom: dotted 1px #dddddd; } - .pricing-table .bullet-item { - background-color: white; - padding: 0.9375rem; - text-align: center; - color: #333333; - font-size: 0.875rem; - font-weight: normal; - border-bottom: dotted 1px #dddddd; } - .pricing-table .cta-button { - background-color: white; - text-align: center; - padding: 1.25rem 1.25rem 0; } - -/* Progress Bar */ -.progress { - background-color: #f6f6f6; - height: 1.5625rem; - border: 1px solid white; - padding: 0.125rem; - margin-bottom: 0.625rem; } - .progress .meter { - background: #008cba; - height: 100%; - display: block; } - .progress.secondary .meter { - background: #e7e7e7; - height: 100%; - display: block; } - .progress.success .meter { - background: #43ac6a; - height: 100%; - display: block; } - .progress.alert .meter { - background: #f04124; - height: 100%; - display: block; } - .progress.radius { - border-radius: 3px; } - .progress.radius .meter { - border-radius: 2px; } - .progress.round { - border-radius: 1000px; } - .progress.round .meter { - border-radius: 999px; } - -.range-slider { - display: block; - position: relative; - width: 100%; - height: 1rem; - border: 1px solid #dddddd; - margin: 1.25rem 0; - -ms-touch-action: none; - touch-action: none; - background: #fafafa; } - .range-slider.vertical-range { - display: block; - position: relative; - width: 100%; - height: 1rem; - border: 1px solid #dddddd; - margin: 1.25rem 0; - -ms-touch-action: none; - touch-action: none; - display: inline-block; - width: 1rem; - height: 12.5rem; } - .range-slider.vertical-range .range-slider-handle { - margin-top: 0; - margin-left: -0.5rem; - position: absolute; - bottom: -10.5rem; } - .range-slider.vertical-range .range-slider-active-segment { - width: 0.875rem; - height: auto; - bottom: 0; } - .range-slider.radius { - background: #fafafa; - border-radius: 3px; } - .range-slider.radius .range-slider-handle { - background: #008cba; - border-radius: 3px; } - .range-slider.radius .range-slider-handle:hover { - background: #007ba4; } - .range-slider.round { - background: #fafafa; - border-radius: 1000px; } - .range-slider.round .range-slider-handle { - background: #008cba; - border-radius: 1000px; } - .range-slider.round .range-slider-handle:hover { - background: #007ba4; } - .range-slider.disabled, .range-slider[disabled] { - background: #fafafa; - cursor: default; - opacity: 0.7; } - .range-slider.disabled .range-slider-handle, .range-slider[disabled] .range-slider-handle { - background: #008cba; - cursor: default; - opacity: 0.7; } - .range-slider.disabled .range-slider-handle:hover, .range-slider[disabled] .range-slider-handle:hover { - background: #007ba4; } - -.range-slider-active-segment { - display: inline-block; - position: absolute; - height: 0.875rem; - background: #e5e5e5; } - -.range-slider-handle { - display: inline-block; - position: absolute; - z-index: 1; - top: -0.3125rem; - width: 2rem; - height: 1.375rem; - border: 1px solid none; - cursor: pointer; - -ms-touch-action: manipulation; - touch-action: manipulation; - background: #008cba; } - .range-slider-handle:hover { - background: #007ba4; } - -.reveal-modal-bg { - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; - background: black; - background: rgba(0, 0, 0, 0.45); - z-index: 1004; - display: none; - left: 0; } - -.reveal-modal, dialog { - visibility: hidden; - display: none; - position: absolute; - z-index: 1005; - width: 100vw; - top: 0; - border-radius: 3px; - left: 0; - background-color: white; - padding: 1.25rem; - border: solid 1px #666666; - box-shadow: 0 0 10px rgba(0, 0, 0, 0.4); - padding: 1.875rem; } - @media only screen and (max-width: 40em) { - .reveal-modal, dialog { - min-height: 100vh; } } - .reveal-modal .column, dialog .column, .reveal-modal .columns, dialog .columns { - min-width: 0; } - .reveal-modal > :first-child, dialog > :first-child { - margin-top: 0; } - .reveal-modal > :last-child, dialog > :last-child { - margin-bottom: 0; } - @media only screen and (min-width: 40.063em) { - .reveal-modal, dialog { - width: 80%; - max-width: 62.5rem; - left: 0; - right: 0; - margin: 0 auto; } } - @media only screen and (min-width: 40.063em) { - .reveal-modal, dialog { - top: 6.25rem; } } - .reveal-modal.radius, dialog.radius { - border-radius: 3px; } - .reveal-modal.round, dialog.round { - border-radius: 1000px; } - .reveal-modal.collapse, dialog.collapse { - padding: 0; } - @media only screen and (min-width: 40.063em) { - .reveal-modal.tiny, dialog.tiny { - width: 30%; - max-width: 62.5rem; - left: 0; - right: 0; - margin: 0 auto; } } - @media only screen and (min-width: 40.063em) { - .reveal-modal.small, dialog.small { - width: 40%; - max-width: 62.5rem; - left: 0; - right: 0; - margin: 0 auto; } } - @media only screen and (min-width: 40.063em) { - .reveal-modal.medium, dialog.medium { - width: 60%; - max-width: 62.5rem; - left: 0; - right: 0; - margin: 0 auto; } } - @media only screen and (min-width: 40.063em) { - .reveal-modal.large, dialog.large { - width: 70%; - max-width: 62.5rem; - left: 0; - right: 0; - margin: 0 auto; } } - @media only screen and (min-width: 40.063em) { - .reveal-modal.xlarge, dialog.xlarge { - width: 95%; - max-width: 62.5rem; - left: 0; - right: 0; - margin: 0 auto; } } - .reveal-modal.full, dialog.full { - top: 0; - left: 0; - height: 100%; - height: 100vh; - min-height: 100vh; - margin-left: 0 !important; } - @media only screen and (min-width: 40.063em) { - .reveal-modal.full, dialog.full { - width: 100vw; - max-width: 62.5rem; - left: 0; - right: 0; - margin: 0 auto; } } - .reveal-modal .close-reveal-modal, dialog .close-reveal-modal { - font-size: 2.5rem; - line-height: 1; - position: absolute; - top: 0.5rem; - right: 0.6875rem; - color: #aaaaaa; - font-weight: bold; - cursor: pointer; } - -dialog { - display: none; } - dialog::backdrop, dialog + .backdrop { - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; - background: black; - background: rgba(0, 0, 0, 0.45); - z-index: auto; - display: none; - left: 0; } - dialog[open] { - display: block; } - -@media print { - dialog, .reveal-modal, dialog { - display: none; - background: white !important; } } -.side-nav { - display: block; - margin: 0; - padding: 0.875rem 0; - list-style-type: none; - list-style-position: outside; - font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; } - .side-nav li { - margin: 0 0 0.4375rem 0; - font-size: 0.875rem; - font-weight: normal; } - .side-nav li a:not(.button) { - display: block; - color: #008cba; - margin: 0; - padding: 0.4375rem 0.875rem; } - .side-nav li a:not(.button):hover, .side-nav li a:not(.button):focus { - background: rgba(0, 0, 0, 0.025); - color: #1cc7ff; } - .side-nav li.active > a:first-child:not(.button) { - color: #1cc7ff; - font-weight: normal; - font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; } - .side-nav li.divider { - border-top: 1px solid; - height: 0; - padding: 0; - list-style: none; - border-top-color: white; } - .side-nav li.heading { - color: #008cba; - font-size: 0.875rem; - font-weight: bold; - text-transform: uppercase; } - -.split.button { - position: relative; - padding-right: 5.0625rem; } - .split.button span { - display: block; - height: 100%; - position: absolute; - right: 0; - top: 0; - border-left: solid 1px; } - .split.button span:after { - position: absolute; - content: ""; - width: 0; - height: 0; - display: block; - border-style: inset; - top: 50%; - left: 50%; } - .split.button span:active { - background-color: rgba(0, 0, 0, 0.1); } - .split.button span { - border-left-color: rgba(255, 255, 255, 0.5); } - .split.button span { - width: 3.09375rem; } - .split.button span:after { - border-top-style: solid; - border-width: 0.375rem; - top: 48%; - margin-left: -0.375rem; } - .split.button span:after { - border-color: white transparent transparent transparent; } - .split.button.secondary span { - border-left-color: rgba(255, 255, 255, 0.5); } - .split.button.secondary span:after { - border-color: white transparent transparent transparent; } - .split.button.alert span { - border-left-color: rgba(255, 255, 255, 0.5); } - .split.button.success span { - border-left-color: rgba(255, 255, 255, 0.5); } - .split.button.tiny { - padding-right: 3.75rem; } - .split.button.tiny span { - width: 2.25rem; } - .split.button.tiny span:after { - border-top-style: solid; - border-width: 0.375rem; - top: 48%; - margin-left: -0.375rem; } - .split.button.small { - padding-right: 4.375rem; } - .split.button.small span { - width: 2.625rem; } - .split.button.small span:after { - border-top-style: solid; - border-width: 0.4375rem; - top: 48%; - margin-left: -0.375rem; } - .split.button.large { - padding-right: 5.5rem; } - .split.button.large span { - width: 3.4375rem; } - .split.button.large span:after { - border-top-style: solid; - border-width: 0.3125rem; - top: 48%; - margin-left: -0.375rem; } - .split.button.expand { - padding-left: 2rem; } - .split.button.secondary span:after { - border-color: #333333 transparent transparent transparent; } - .split.button.radius span { - -webkit-border-bottom-right-radius: 3px; - -webkit-border-top-right-radius: 3px; - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; } - .split.button.round span { - -webkit-border-bottom-right-radius: 1000px; - -webkit-border-top-right-radius: 1000px; - border-bottom-right-radius: 1000px; - border-top-right-radius: 1000px; } - -.sub-nav { - display: block; - width: auto; - overflow: hidden; - margin: -0.25rem 0 1.125rem; - padding-top: 0.25rem; - margin-right: 0; - margin-left: -0.75rem; } - .sub-nav dt { - text-transform: uppercase; } - .sub-nav dt, - .sub-nav dd, - .sub-nav li { - float: left; - display: inline; - margin-left: 1rem; - margin-bottom: 0.625rem; - font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; - font-weight: normal; - font-size: 0.875rem; - color: #999999; } - .sub-nav dt a, - .sub-nav dd a, - .sub-nav li a { - text-decoration: none; - color: #999999; - padding: 0.1875rem 1rem; } - .sub-nav dt a:hover, - .sub-nav dd a:hover, - .sub-nav li a:hover { - color: #737373; } - .sub-nav dt.active a, - .sub-nav dd.active a, - .sub-nav li.active a { - border-radius: 3px; - font-weight: normal; - background: #008cba; - padding: 0.1875rem 1rem; - cursor: default; - color: white; } - .sub-nav dt.active a:hover, - .sub-nav dd.active a:hover, - .sub-nav li.active a:hover { - background: #0078a0; } - -.switch { - padding: 0; - border: none; - position: relative; } - .switch label { - display: block; - margin-bottom: 1rem; - position: relative; - color: transparent; - background: #dddddd; - text-indent: 100%; - width: 4rem; - height: 2rem; - cursor: pointer; - transition: left 0.15s ease-out; } - .switch input { - opacity: 0; - position: absolute; - top: 9px; - left: 10px; - padding: 0; } - .switch input + label { - margin-left: 0; - margin-right: 0; } - .switch label:after { - content: ""; - display: block; - background: white; - position: absolute; - top: .25rem; - left: .25rem; - width: 1.5rem; - height: 1.5rem; - -webkit-transition: left 0.15s ease-out; - -moz-transition: left 0.15s ease-out; - transition: left 0.15s ease-out; - -webkit-transform: translate3d(0, 0, 0); - -moz-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); } - .switch input:checked + label { - background: #008cba; } - .switch input:checked + label:after { - left: 2.25rem; } - .switch label { - width: 4rem; - height: 2rem; } - .switch label:after { - width: 1.5rem; - height: 1.5rem; } - .switch input:checked + label:after { - left: 2.25rem; } - .switch label { - color: transparent; - background: #dddddd; } - .switch label:after { - background: white; } - .switch input:checked + label { - background: #008cba; } - .switch.large label { - width: 5rem; - height: 2.5rem; } - .switch.large label:after { - width: 2rem; - height: 2rem; } - .switch.large input:checked + label:after { - left: 2.75rem; } - .switch.small label { - width: 3.5rem; - height: 1.75rem; } - .switch.small label:after { - width: 1.25rem; - height: 1.25rem; } - .switch.small input:checked + label:after { - left: 2rem; } - .switch.tiny label { - width: 3rem; - height: 1.5rem; } - .switch.tiny label:after { - width: 1rem; - height: 1rem; } - .switch.tiny input:checked + label:after { - left: 1.75rem; } - .switch.radius label { - border-radius: 4px; } - .switch.radius label:after { - border-radius: 3px; } - .switch.round { - border-radius: 1000px; } - .switch.round label { - border-radius: 2rem; } - .switch.round label:after { - border-radius: 2rem; } - -table { - background: white; - margin-bottom: 1.25rem; - border: solid 1px #dddddd; - table-layout: auto; } - table caption { - background: transparent; - color: #222222; - font-size: 1rem; - font-weight: bold; } - table thead { - background: whitesmoke; } - table thead tr th, - table thead tr td { - padding: 0.5rem 0.625rem 0.625rem; - font-size: 0.875rem; - font-weight: bold; - color: #222222; } - table tfoot { - background: whitesmoke; } - table tfoot tr th, - table tfoot tr td { - padding: 0.5rem 0.625rem 0.625rem; - font-size: 0.875rem; - font-weight: bold; - color: #222222; } - table tr th, - table tr td { - padding: 0.5625rem 0.625rem; - font-size: 0.875rem; - color: #222222; - text-align: left; } - table tr.even, table tr.alt, table tr:nth-of-type(even) { - background: #f9f9f9; } - table thead tr th, - table tfoot tr th, - table tfoot tr td, - table tbody tr th, - table tbody tr td, - table tr td { - display: table-cell; - line-height: 1.125rem; } - -.text-left { - text-align: left !important; } - -.text-right { - text-align: right !important; } - -.text-center { - text-align: center !important; } - -.text-justify { - text-align: justify !important; } - -@media only screen and (max-width: 40em) { - .small-only-text-left { - text-align: left !important; } - - .small-only-text-right { - text-align: right !important; } - - .small-only-text-center { - text-align: center !important; } - - .small-only-text-justify { - text-align: justify !important; } } -@media only screen { - .small-text-left { - text-align: left !important; } - - .small-text-right { - text-align: right !important; } - - .small-text-center { - text-align: center !important; } - - .small-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 40.063em) and (max-width: 64em) { - .medium-only-text-left { - text-align: left !important; } - - .medium-only-text-right { - text-align: right !important; } - - .medium-only-text-center { - text-align: center !important; } - - .medium-only-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 40.063em) { - .medium-text-left { - text-align: left !important; } - - .medium-text-right { - text-align: right !important; } - - .medium-text-center { - text-align: center !important; } - - .medium-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 64.063em) and (max-width: 90em) { - .large-only-text-left { - text-align: left !important; } - - .large-only-text-right { - text-align: right !important; } - - .large-only-text-center { - text-align: center !important; } - - .large-only-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 64.063em) { - .large-text-left { - text-align: left !important; } - - .large-text-right { - text-align: right !important; } - - .large-text-center { - text-align: center !important; } - - .large-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 90.063em) and (max-width: 120em) { - .xlarge-only-text-left { - text-align: left !important; } - - .xlarge-only-text-right { - text-align: right !important; } - - .xlarge-only-text-center { - text-align: center !important; } - - .xlarge-only-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 90.063em) { - .xlarge-text-left { - text-align: left !important; } - - .xlarge-text-right { - text-align: right !important; } - - .xlarge-text-center { - text-align: center !important; } - - .xlarge-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 120.063em) and (max-width: 99999999em) { - .xxlarge-only-text-left { - text-align: left !important; } - - .xxlarge-only-text-right { - text-align: right !important; } - - .xxlarge-only-text-center { - text-align: center !important; } - - .xxlarge-only-text-justify { - text-align: justify !important; } } -@media only screen and (min-width: 120.063em) { - .xxlarge-text-left { - text-align: left !important; } - - .xxlarge-text-right { - text-align: right !important; } - - .xxlarge-text-center { - text-align: center !important; } - - .xxlarge-text-justify { - text-align: justify !important; } } -/* Typography resets */ -div, -dl, -dt, -dd, -ul, -ol, -li, -h1, -h2, -h3, -h4, -h5, -h6, -pre, -form, -p, -blockquote, -th, -td { - margin: 0; - padding: 0; } - -/* Default Link Styles */ -a { - color: #008cba; - text-decoration: none; - line-height: inherit; } - a:hover, a:focus { - color: #0078a0; } - a img { - border: none; } - -/* Default paragraph styles */ -p { - font-family: inherit; - font-weight: normal; - font-size: 1rem; - line-height: 1.6; - margin-bottom: 1.25rem; - text-rendering: optimizeLegibility; } - p.lead { - font-size: 1.21875rem; - line-height: 1.6; } - p aside { - font-size: 0.875rem; - line-height: 1.35; - font-style: italic; } - -/* Default header styles */ -h1, h2, h3, h4, h5, h6 { - font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; - font-weight: normal; - font-style: normal; - color: #222222; - text-rendering: optimizeLegibility; - margin-top: 0.2rem; - margin-bottom: 0.5rem; - line-height: 1.4; } - h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { - font-size: 60%; - color: #6f6f6f; - line-height: 0; } - -h1 { - font-size: 2.125rem; } - -h2 { - font-size: 1.6875rem; } - -h3 { - font-size: 1.375rem; } - -h4 { - font-size: 1.125rem; } - -h5 { - font-size: 1.125rem; } - -h6 { - font-size: 1rem; } - -.subheader { - line-height: 1.4; - color: #6f6f6f; - font-weight: normal; - margin-top: 0.2rem; - margin-bottom: 0.5rem; } - -hr { - border: solid #dddddd; - border-width: 1px 0 0; - clear: both; - margin: 1.25rem 0 1.1875rem; - height: 0; } - -/* Helpful Typography Defaults */ -em, -i { - font-style: italic; - line-height: inherit; } - -strong, -b { - font-weight: bold; - line-height: inherit; } - -small { - font-size: 60%; - line-height: inherit; } - -code { - font-family: Consolas, "Liberation Mono", Courier, monospace; - font-weight: normal; - color: #333333; - background-color: #f8f8f8; - border-width: 1px; - border-style: solid; - border-color: #dfdfdf; - padding: 0.125rem 0.3125rem 0.0625rem; } - -/* Lists */ -ul, -ol, -dl { - font-size: 1rem; - line-height: 1.6; - margin-bottom: 1.25rem; - list-style-position: outside; - font-family: inherit; } - -ul { - margin-left: 1.1rem; } - ul.no-bullet { - margin-left: 0; } - ul.no-bullet li ul, - ul.no-bullet li ol { - margin-left: 1.25rem; - margin-bottom: 0; - list-style: none; } - -/* Unordered Lists */ -ul li ul, -ul li ol { - margin-left: 1.25rem; - margin-bottom: 0; } -ul.square li ul, ul.circle li ul, ul.disc li ul { - list-style: inherit; } -ul.square { - list-style-type: square; - margin-left: 1.1rem; } -ul.circle { - list-style-type: circle; - margin-left: 1.1rem; } -ul.disc { - list-style-type: disc; - margin-left: 1.1rem; } -ul.no-bullet { - list-style: none; } - -/* Ordered Lists */ -ol { - margin-left: 1.4rem; } - ol li ul, - ol li ol { - margin-left: 1.25rem; - margin-bottom: 0; } - -/* Definition Lists */ -dl dt { - margin-bottom: 0.3rem; - font-weight: bold; } -dl dd { - margin-bottom: 0.75rem; } - -/* Abbreviations */ -abbr, -acronym { - text-transform: uppercase; - font-size: 90%; - color: #222222; - cursor: help; } - -abbr { - text-transform: none; } - abbr[title] { - border-bottom: 1px dotted #dddddd; } - -/* Blockquotes */ -blockquote { - margin: 0 0 1.25rem; - padding: 0.5625rem 1.25rem 0 1.1875rem; - border-left: 1px solid #dddddd; } - blockquote cite { - display: block; - font-size: 0.8125rem; - color: #555555; } - blockquote cite:before { - content: "\2014 \0020"; } - blockquote cite a, - blockquote cite a:visited { - color: #555555; } - -blockquote, -blockquote p { - line-height: 1.6; - color: #6f6f6f; } - -/* Microformats */ -.vcard { - display: inline-block; - margin: 0 0 1.25rem 0; - border: 1px solid #dddddd; - padding: 0.625rem 0.75rem; } - .vcard li { - margin: 0; - display: block; } - .vcard .fn { - font-weight: bold; - font-size: 0.9375rem; } - -.vevent .summary { - font-weight: bold; } -.vevent abbr { - cursor: default; - text-decoration: none; - font-weight: bold; - border: none; - padding: 0 0.0625rem; } - -@media only screen and (min-width: 40.063em) { - h1, h2, h3, h4, h5, h6 { - line-height: 1.4; } - - h1 { - font-size: 2.75rem; } - - h2 { - font-size: 2.3125rem; } - - h3 { - font-size: 1.6875rem; } - - h4 { - font-size: 1.4375rem; } - - h5 { - font-size: 1.125rem; } - - h6 { - font-size: 1rem; } } -/* - * Print styles. - * - * Inlined to avoid required HTTP connection: www.phpied.com/delay-loading-your-print-css/ - * Credit to Paul Irish and HTML5 Boilerplate (html5boilerplate.com) -*/ -.print-only { - display: none !important; } - -@media print { - * { - background: transparent !important; - color: black !important; - /* Black prints faster: h5bp.com/s */ - box-shadow: none !important; - text-shadow: none !important; } - - a, - a:visited { - text-decoration: underline; } - - a[href]:after { - content: " (" attr(href) ")"; } - - abbr[title]:after { - content: " (" attr(title) ")"; } - - .ir a:after, - a[href^="javascript:"]:after, - a[href^="#"]:after { - content: ""; } - - pre, - blockquote { - border: 1px solid #999999; - page-break-inside: avoid; } - - thead { - display: table-header-group; - /* h5bp.com/t */ } - - tr, - img { - page-break-inside: avoid; } - - img { - max-width: 100% !important; } - - @page { - margin: 0.5cm; } - p, - h2, - h3 { - orphans: 3; - widows: 3; } - - h2, - h3 { - page-break-after: avoid; } - - .hide-on-print { - display: none !important; } - - .print-only { - display: block !important; } - - .hide-for-print { - display: none !important; } - - .show-for-print { - display: inherit !important; } } -.tabs { - margin-bottom: 0 !important; - margin-left: 0; } - .tabs:before, .tabs:after { - content: " "; - display: table; } - .tabs:after { - clear: both; } - .tabs dd, .tabs .tab-title { - position: relative; - margin-bottom: 0 !important; - list-style: none; - float: left; } - .tabs dd > a, .tabs .tab-title > a { - display: block; - background-color: #efefef; - color: #222222; - padding: 1rem 2rem; - font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; - font-size: 1rem; } - .tabs dd > a:hover, .tabs .tab-title > a:hover { - background-color: #e1e1e1; } - .tabs dd.active a, .tabs .tab-title.active a { - background-color: white; - color: #222222; } - .tabs.radius dd:first-child a, .tabs.radius .tab:first-child a { - -webkit-border-bottom-left-radius: 3px; - -webkit-border-top-left-radius: 3px; - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; } - .tabs.radius dd:last-child a, .tabs.radius .tab:last-child a { - -webkit-border-bottom-right-radius: 3px; - -webkit-border-top-right-radius: 3px; - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; } - .tabs.vertical dd, .tabs.vertical .tab-title { - position: inherit; - float: none; - display: block; - top: auto; } - -.tabs-content { - margin-bottom: 1.5rem; - width: 100%; } - .tabs-content:before, .tabs-content:after { - content: " "; - display: table; } - .tabs-content:after { - clear: both; } - .tabs-content > .content { - display: none; - float: left; - padding: 0.9375rem 0; - width: 100%; } - .tabs-content > .content.active { - display: block; - float: none; } - .tabs-content > .content.contained { - padding: 0.9375rem; } - .tabs-content.vertical { - display: block; } - .tabs-content.vertical > .content { - padding: 0 0.9375rem; } - -@media only screen and (min-width: 40.063em) { - .tabs.vertical { - width: 20%; - max-width: 20%; - float: left; - margin: 0 0 1.25rem; } - - .tabs-content.vertical { - width: 80%; - max-width: 80%; - float: left; - margin-left: -1px; - padding-left: 1rem; } } -.no-js .tabs-content > .content { - display: block; - float: none; } - -/* Image Thumbnails */ -.th { - line-height: 0; - display: inline-block; - border: solid 4px white; - max-width: 100%; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); - transition: all 200ms ease-out; } - .th:hover, .th:focus { - box-shadow: 0 0 6px 1px rgba(0, 140, 186, 0.5); } - .th.radius { - border-radius: 3px; } - -/* Tooltips */ -.has-tip { - border-bottom: dotted 1px #cccccc; - cursor: help; - font-weight: bold; - color: #333333; } - .has-tip:hover, .has-tip:focus { - border-bottom: dotted 1px #003f54; - color: #008cba; } - .has-tip.tip-left, .has-tip.tip-right { - float: none !important; } - -.tooltip { - display: none; - position: absolute; - z-index: 1006; - font-weight: normal; - font-size: 0.875rem; - line-height: 1.3; - padding: 0.75rem; - max-width: 300px; - left: 50%; - width: 100%; - color: white; - background: #333333; } - .tooltip > .nub { - display: block; - left: 5px; - position: absolute; - width: 0; - height: 0; - border: solid 5px; - border-color: transparent transparent #333333 transparent; - top: -10px; - pointer-events: none; } - .tooltip > .nub.rtl { - left: auto; - right: 5px; } - .tooltip.radius { - border-radius: 3px; } - .tooltip.round { - border-radius: 1000px; } - .tooltip.round > .nub { - left: 2rem; } - .tooltip.opened { - color: #008cba !important; - border-bottom: dotted 1px #003f54 !important; } - -.tap-to-close { - display: block; - font-size: 0.625rem; - color: #777777; - font-weight: normal; } - -@media only screen and (min-width: 40.063em) { - .tooltip > .nub { - border-color: transparent transparent #333333 transparent; - top: -10px; } - .tooltip.tip-top > .nub { - border-color: #333333 transparent transparent transparent; - top: auto; - bottom: -10px; } - .tooltip.tip-left, .tooltip.tip-right { - float: none !important; } - .tooltip.tip-left > .nub { - border-color: transparent transparent transparent #333333; - right: -10px; - left: auto; - top: 50%; - margin-top: -5px; } - .tooltip.tip-right > .nub { - border-color: transparent #333333 transparent transparent; - right: auto; - left: -10px; - top: 50%; - margin-top: -5px; } } -meta.foundation-mq-topbar { - font-family: "/only screen and (min-width:40.063em)/"; - width: 40.063em; } - -/* Wrapped around .top-bar to contain to grid width */ -.contain-to-grid { - width: 100%; - background: #333333; } - .contain-to-grid .top-bar { - margin-bottom: 0; } - -.fixed { - width: 100%; - left: 0; - position: fixed; - top: 0; - z-index: 99; } - .fixed.expanded:not(.top-bar) { - overflow-y: auto; - height: auto; - width: 100%; - max-height: 100%; } - .fixed.expanded:not(.top-bar) .title-area { - position: fixed; - width: 100%; - z-index: 99; } - .fixed.expanded:not(.top-bar) .top-bar-section { - z-index: 98; - margin-top: 45px; } - -.top-bar { - overflow: hidden; - height: 45px; - line-height: 45px; - position: relative; - background: #333333; - margin-bottom: 0; } - .top-bar ul { - margin-bottom: 0; - list-style: none; } - .top-bar .row { - max-width: none; } - .top-bar form, - .top-bar input { - margin-bottom: 0; } - .top-bar input { - height: 1.8rem; - padding-top: .35rem; - padding-bottom: .35rem; - font-size: 0.75rem; } - .top-bar .button, .top-bar button { - padding-top: 0.4125rem; - padding-bottom: 0.4125rem; - margin-bottom: 0; - font-size: 0.75rem; } - @media only screen and (max-width: 40em) { - .top-bar .button, .top-bar button { - position: relative; - top: -1px; } } - .top-bar .title-area { - position: relative; - margin: 0; } - .top-bar .name { - height: 45px; - margin: 0; - font-size: 16px; } - .top-bar .name h1 { - line-height: 45px; - font-size: 1.0625rem; - margin: 0; } - .top-bar .name h1 a { - font-weight: normal; - color: white; - width: 75%; - display: block; - padding: 0 15px; } - .top-bar .toggle-topbar { - position: absolute; - right: 0; - top: 0; } - .top-bar .toggle-topbar a { - color: white; - text-transform: uppercase; - font-size: 0.8125rem; - font-weight: bold; - position: relative; - display: block; - padding: 0 15px; - height: 45px; - line-height: 45px; } - .top-bar .toggle-topbar.menu-icon { - top: 50%; - margin-top: -16px; } - .top-bar .toggle-topbar.menu-icon a { - height: 34px; - line-height: 33px; - padding: 0 40px 0 15px; - color: white; - position: relative; } - .top-bar .toggle-topbar.menu-icon a span::after { - content: ""; - position: absolute; - display: block; - height: 0; - top: 50%; - margin-top: -8px; - right: 15px; - box-shadow: 0 0px 0 1px white, 0 7px 0 1px white, 0 14px 0 1px white; - width: 16px; } - .top-bar .toggle-topbar.menu-icon a span:hover:after { - box-shadow: 0 0px 0 1px white, 0 7px 0 1px white, 0 14px 0 1px white; } - .top-bar.expanded { - height: auto; - background: transparent; } - .top-bar.expanded .title-area { - background: #333333; } - .top-bar.expanded .toggle-topbar a { - color: #888888; } - .top-bar.expanded .toggle-topbar a::after { - box-shadow: 0 10px 0 1px #888888, 0 16px 0 1px #888888, 0 22px 0 1px #888888; } - -.top-bar-section { - left: 0; - position: relative; - width: auto; - transition: left 300ms ease-out; } - .top-bar-section ul { - padding: 0; - width: 100%; - height: auto; - display: block; - font-size: 16px; - margin: 0; } - .top-bar-section .divider, - .top-bar-section [role="separator"] { - border-top: solid 1px #1a1a1a; - clear: both; - height: 1px; - width: 100%; } - .top-bar-section ul li { - background: #333333; } - .top-bar-section ul li > a { - display: block; - width: 100%; - color: white; - padding: 12px 0 12px 0; - padding-left: 15px; - font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; - font-size: 0.8125rem; - font-weight: normal; - text-transform: none; } - .top-bar-section ul li > a.button { - font-size: 0.8125rem; - padding-right: 15px; - padding-left: 15px; - background-color: #008cba; - border-color: #007095; - color: white; } - .top-bar-section ul li > a.button:hover, .top-bar-section ul li > a.button:focus { - background-color: #007095; } - .top-bar-section ul li > a.button:hover, .top-bar-section ul li > a.button:focus { - color: white; } - .top-bar-section ul li > a.button.secondary { - background-color: #e7e7e7; - border-color: #b9b9b9; - color: #333333; } - .top-bar-section ul li > a.button.secondary:hover, .top-bar-section ul li > a.button.secondary:focus { - background-color: #b9b9b9; } - .top-bar-section ul li > a.button.secondary:hover, .top-bar-section ul li > a.button.secondary:focus { - color: #333333; } - .top-bar-section ul li > a.button.success { - background-color: #43ac6a; - border-color: #368a55; - color: white; } - .top-bar-section ul li > a.button.success:hover, .top-bar-section ul li > a.button.success:focus { - background-color: #368a55; } - .top-bar-section ul li > a.button.success:hover, .top-bar-section ul li > a.button.success:focus { - color: white; } - .top-bar-section ul li > a.button.alert { - background-color: #f04124; - border-color: #cf2a0e; - color: white; } - .top-bar-section ul li > a.button.alert:hover, .top-bar-section ul li > a.button.alert:focus { - background-color: #cf2a0e; } - .top-bar-section ul li > a.button.alert:hover, .top-bar-section ul li > a.button.alert:focus { - color: white; } - .top-bar-section ul li > button { - font-size: 0.8125rem; - padding-right: 15px; - padding-left: 15px; - background-color: #008cba; - border-color: #007095; - color: white; } - .top-bar-section ul li > button:hover, .top-bar-section ul li > button:focus { - background-color: #007095; } - .top-bar-section ul li > button:hover, .top-bar-section ul li > button:focus { - color: white; } - .top-bar-section ul li > button.secondary { - background-color: #e7e7e7; - border-color: #b9b9b9; - color: #333333; } - .top-bar-section ul li > button.secondary:hover, .top-bar-section ul li > button.secondary:focus { - background-color: #b9b9b9; } - .top-bar-section ul li > button.secondary:hover, .top-bar-section ul li > button.secondary:focus { - color: #333333; } - .top-bar-section ul li > button.success { - background-color: #43ac6a; - border-color: #368a55; - color: white; } - .top-bar-section ul li > button.success:hover, .top-bar-section ul li > button.success:focus { - background-color: #368a55; } - .top-bar-section ul li > button.success:hover, .top-bar-section ul li > button.success:focus { - color: white; } - .top-bar-section ul li > button.alert { - background-color: #f04124; - border-color: #cf2a0e; - color: white; } - .top-bar-section ul li > button.alert:hover, .top-bar-section ul li > button.alert:focus { - background-color: #cf2a0e; } - .top-bar-section ul li > button.alert:hover, .top-bar-section ul li > button.alert:focus { - color: white; } - .top-bar-section ul li:hover:not(.has-form) > a { - background-color: #555555; - background: #272727; - color: white; } - .top-bar-section ul li.active > a { - background: #008cba; - color: white; } - .top-bar-section ul li.active > a:hover { - background: #0078a0; - color: white; } - .top-bar-section .has-form { - padding: 15px; } - .top-bar-section .has-dropdown { - position: relative; } - .top-bar-section .has-dropdown > a:after { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 5px; - border-color: transparent transparent transparent rgba(255, 255, 255, 0.4); - border-left-style: solid; - margin-right: 15px; - margin-top: -4.5px; - position: absolute; - top: 50%; - right: 0; } - .top-bar-section .has-dropdown.moved { - position: static; } - .top-bar-section .has-dropdown.moved > .dropdown { - display: block; - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; - position: absolute !important; - width: 100%; } - .top-bar-section .has-dropdown.moved > a:after { - display: none; } - .top-bar-section .dropdown { - padding: 0; - position: absolute; - left: 100%; - top: 0; - z-index: 99; - display: block; - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); } - .top-bar-section .dropdown li { - width: 100%; - height: auto; } - .top-bar-section .dropdown li a { - font-weight: normal; - padding: 8px 15px; } - .top-bar-section .dropdown li a.parent-link { - font-weight: normal; } - .top-bar-section .dropdown li.title h5, .top-bar-section .dropdown li.parent-link { - margin-bottom: 0; - margin-top: 0; - font-size: 1.125rem; } - .top-bar-section .dropdown li.title h5 a, .top-bar-section .dropdown li.parent-link a { - color: white; - display: block; } - .top-bar-section .dropdown li.title h5 a:hover, .top-bar-section .dropdown li.parent-link a:hover { - background: none; } - .top-bar-section .dropdown li.has-form { - padding: 8px 15px; } - .top-bar-section .dropdown li .button, .top-bar-section .dropdown li button { - top: auto; } - .top-bar-section .dropdown label { - padding: 8px 15px 2px; - margin-bottom: 0; - text-transform: uppercase; - color: #777777; - font-weight: bold; - font-size: 0.625rem; } - -.js-generated { - display: block; } - -@media only screen and (min-width: 40.063em) { - .top-bar { - background: #333333; - overflow: visible; } - .top-bar:before, .top-bar:after { - content: " "; - display: table; } - .top-bar:after { - clear: both; } - .top-bar .toggle-topbar { - display: none; } - .top-bar .title-area { - float: left; } - .top-bar .name h1 a { - width: auto; } - .top-bar input, - .top-bar .button, - .top-bar button { - font-size: 0.875rem; - position: relative; - top: 7px; } - .top-bar.expanded { - background: #333333; } - - .contain-to-grid .top-bar { - max-width: 62.5rem; - margin: 0 auto; - margin-bottom: 0; } - - .top-bar-section { - transition: none 0 0; - left: 0 !important; } - .top-bar-section ul { - width: auto; - height: auto !important; - display: inline; } - .top-bar-section ul li { - float: left; } - .top-bar-section ul li .js-generated { - display: none; } - .top-bar-section li.hover > a:not(.button) { - background-color: #555555; - background: #272727; - color: white; } - .top-bar-section li:not(.has-form) a:not(.button) { - padding: 0 15px; - line-height: 45px; - background: #333333; } - .top-bar-section li:not(.has-form) a:not(.button):hover { - background-color: #555555; - background: #272727; } - .top-bar-section li.active:not(.has-form) a:not(.button) { - padding: 0 15px; - line-height: 45px; - color: white; - background: #008cba; } - .top-bar-section li.active:not(.has-form) a:not(.button):hover { - background: #0078a0; - color: white; } - .top-bar-section .has-dropdown > a { - padding-right: 35px !important; } - .top-bar-section .has-dropdown > a:after { - content: ""; - display: block; - width: 0; - height: 0; - border: inset 5px; - border-color: rgba(255, 255, 255, 0.4) transparent transparent transparent; - border-top-style: solid; - margin-top: -2.5px; - top: 22.5px; } - .top-bar-section .has-dropdown.moved { - position: relative; } - .top-bar-section .has-dropdown.moved > .dropdown { - display: block; - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); } - .top-bar-section .has-dropdown.hover > .dropdown, .top-bar-section .has-dropdown.not-click:hover > .dropdown { - display: block; - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; - position: absolute !important; } - .top-bar-section .has-dropdown > a:focus + .dropdown { - display: block; - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; - position: absolute !important; } - .top-bar-section .has-dropdown .dropdown li.has-dropdown > a:after { - border: none; - content: "\00bb"; - top: 1rem; - margin-top: -1px; - right: 5px; - line-height: 1.2; } - .top-bar-section .dropdown { - left: 0; - top: auto; - background: transparent; - min-width: 100%; } - .top-bar-section .dropdown li a { - color: white; - line-height: 45px; - white-space: nowrap; - padding: 12px 15px; - background: #333333; } - .top-bar-section .dropdown li:not(.has-form):not(.active) > a:not(.button) { - color: white; - background: #333333; } - .top-bar-section .dropdown li:not(.has-form):not(.active):hover > a:not(.button) { - color: white; - background-color: #555555; - background: #272727; } - .top-bar-section .dropdown li label { - white-space: nowrap; - background: #333333; } - .top-bar-section .dropdown li .dropdown { - left: 100%; - top: 0; } - .top-bar-section > ul > .divider, .top-bar-section > ul > [role="separator"] { - border-bottom: none; - border-top: none; - border-right: solid 1px #4e4e4e; - clear: none; - height: 45px; - width: 0; } - .top-bar-section .has-form { - background: #333333; - padding: 0 15px; - height: 45px; } - .top-bar-section .right li .dropdown { - left: auto; - right: 0; } - .top-bar-section .right li .dropdown li .dropdown { - right: 100%; } - .top-bar-section .left li .dropdown { - right: auto; - left: 0; } - .top-bar-section .left li .dropdown li .dropdown { - left: 100%; } - - .no-js .top-bar-section ul li:hover > a { - background-color: #555555; - background: #272727; - color: white; } - .no-js .top-bar-section ul li:active > a { - background: #008cba; - color: white; } - .no-js .top-bar-section .has-dropdown:hover > .dropdown { - display: block; - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; - position: absolute !important; } - .no-js .top-bar-section .has-dropdown > a:focus + .dropdown { - display: block; - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; - position: absolute !important; } } -.off-canvas-wrap { - -webkit-backface-visibility: hidden; - position: relative; - width: 100%; - overflow: hidden; } - .off-canvas-wrap.move-right, .off-canvas-wrap.move-left { - min-height: 100%; - -webkit-overflow-scrolling: touch; } - -.inner-wrap { - -webkit-backface-visibility: hidden; - position: relative; - width: 100%; - -webkit-transition: -webkit-transform 500ms ease; - -moz-transition: -moz-transform 500ms ease; - -ms-transition: -ms-transform 500ms ease; - -o-transition: -o-transform 500ms ease; - transition: transform 500ms ease; } - .inner-wrap:before, .inner-wrap:after { - content: " "; - display: table; } - .inner-wrap:after { - clear: both; } - -.tab-bar { - -webkit-backface-visibility: hidden; - background: #333333; - color: white; - height: 2.8125rem; - line-height: 2.8125rem; - position: relative; } - .tab-bar h1, .tab-bar h2, .tab-bar h3, .tab-bar h4, .tab-bar h5, .tab-bar h6 { - color: white; - font-weight: bold; - line-height: 2.8125rem; - margin: 0; } - .tab-bar h1, .tab-bar h2, .tab-bar h3, .tab-bar h4 { - font-size: 1.125rem; } - -.left-small { - width: 2.8125rem; - height: 2.8125rem; - position: absolute; - top: 0; - border-right: solid 1px #1a1a1a; - left: 0; } - -.right-small { - width: 2.8125rem; - height: 2.8125rem; - position: absolute; - top: 0; - border-left: solid 1px #1a1a1a; - right: 0; } - -.tab-bar-section { - padding: 0 0.625rem; - position: absolute; - text-align: center; - height: 2.8125rem; - top: 0; } - @media only screen and (min-width: 40.063em) { - .tab-bar-section.left, .tab-bar-section.right { - text-align: left; } } - .tab-bar-section.left { - left: 0; - right: 2.8125rem; } - .tab-bar-section.right { - left: 2.8125rem; - right: 0; } - .tab-bar-section.middle { - left: 2.8125rem; - right: 2.8125rem; } - -.tab-bar .menu-icon { - text-indent: 2.1875rem; - width: 2.8125rem; - height: 2.8125rem; - display: block; - padding: 0; - color: white; - position: relative; - transform: translate3d(0, 0, 0); } - .tab-bar .menu-icon span::after { - content: ""; - position: absolute; - display: block; - height: 0; - top: 50%; - margin-top: -0.5rem; - left: 0.90625rem; - box-shadow: 0 0px 0 1px white, 0 7px 0 1px white, 0 14px 0 1px white; - width: 1rem; } - .tab-bar .menu-icon span:hover:after { - box-shadow: 0 0px 0 1px #b3b3b3, 0 7px 0 1px #b3b3b3, 0 14px 0 1px #b3b3b3; } - -.left-off-canvas-menu { - -webkit-backface-visibility: hidden; - width: 15.625rem; - top: 0; - bottom: 0; - position: absolute; - overflow-x: hidden; - overflow-y: auto; - background: #333333; - z-index: 1001; - box-sizing: content-box; - transition: transform 500ms ease 0s; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; - -ms-transform: translate(-100.5%, 0); - -webkit-transform: translate3d(-100.5%, 0, 0); - -moz-transform: translate3d(-100.5%, 0, 0); - -ms-transform: translate3d(-100.5%, 0, 0); - -o-transform: translate3d(-100.5%, 0, 0); - transform: translate3d(-100.5%, 0, 0); - left: 0; } - .left-off-canvas-menu * { - -webkit-backface-visibility: hidden; } - -.right-off-canvas-menu { - -webkit-backface-visibility: hidden; - width: 15.625rem; - top: 0; - bottom: 0; - position: absolute; - overflow-x: hidden; - overflow-y: auto; - background: #333333; - z-index: 1001; - box-sizing: content-box; - transition: transform 500ms ease 0s; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; - -ms-transform: translate(100.5%, 0); - -webkit-transform: translate3d(100.5%, 0, 0); - -moz-transform: translate3d(100.5%, 0, 0); - -ms-transform: translate3d(100.5%, 0, 0); - -o-transform: translate3d(100.5%, 0, 0); - transform: translate3d(100.5%, 0, 0); - right: 0; } - .right-off-canvas-menu * { - -webkit-backface-visibility: hidden; } - -ul.off-canvas-list { - list-style-type: none; - padding: 0; - margin: 0; } - ul.off-canvas-list li label { - display: block; - padding: 0.3rem 0.9375rem; - color: #999999; - text-transform: uppercase; - font-size: 0.75rem; - font-weight: bold; - background: #444444; - border-top: 1px solid #5e5e5e; - border-bottom: none; - margin: 0; } - ul.off-canvas-list li a { - display: block; - padding: 0.66667rem; - color: rgba(255, 255, 255, 0.7); - border-bottom: 1px solid #262626; - transition: background 300ms ease; } - ul.off-canvas-list li a:hover { - background: #242424; } - -.move-right > .inner-wrap { - -ms-transform: translate(15.625rem, 0); - -webkit-transform: translate3d(15.625rem, 0, 0); - -moz-transform: translate3d(15.625rem, 0, 0); - -ms-transform: translate3d(15.625rem, 0, 0); - -o-transform: translate3d(15.625rem, 0, 0); - transform: translate3d(15.625rem, 0, 0); } -.move-right .exit-off-canvas { - -webkit-backface-visibility: hidden; - transition: background 300ms ease; - cursor: pointer; - box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); - display: block; - position: absolute; - background: rgba(255, 255, 255, 0.2); - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 1002; - -webkit-tap-highlight-color: transparent; } - @media only screen and (min-width: 40.063em) { - .move-right .exit-off-canvas:hover { - background: rgba(255, 255, 255, 0.05); } } - -.move-left > .inner-wrap { - -ms-transform: translate(-15.625rem, 0); - -webkit-transform: translate3d(-15.625rem, 0, 0); - -moz-transform: translate3d(-15.625rem, 0, 0); - -ms-transform: translate3d(-15.625rem, 0, 0); - -o-transform: translate3d(-15.625rem, 0, 0); - transform: translate3d(-15.625rem, 0, 0); } -.move-left .exit-off-canvas { - -webkit-backface-visibility: hidden; - transition: background 300ms ease; - cursor: pointer; - box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); - display: block; - position: absolute; - background: rgba(255, 255, 255, 0.2); - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 1002; - -webkit-tap-highlight-color: transparent; } - @media only screen and (min-width: 40.063em) { - .move-left .exit-off-canvas:hover { - background: rgba(255, 255, 255, 0.05); } } - -.offcanvas-overlap .left-off-canvas-menu, .offcanvas-overlap .right-off-canvas-menu { - -ms-transform: none; - -webkit-transform: none; - -moz-transform: none; - -o-transform: none; - transform: none; - z-index: 1003; } -.offcanvas-overlap .exit-off-canvas { - -webkit-backface-visibility: hidden; - transition: background 300ms ease; - cursor: pointer; - box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); - display: block; - position: absolute; - background: rgba(255, 255, 255, 0.2); - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 1002; - -webkit-tap-highlight-color: transparent; } - @media only screen and (min-width: 40.063em) { - .offcanvas-overlap .exit-off-canvas:hover { - background: rgba(255, 255, 255, 0.05); } } - -.offcanvas-overlap-left .right-off-canvas-menu { - -ms-transform: none; - -webkit-transform: none; - -moz-transform: none; - -o-transform: none; - transform: none; - z-index: 1003; } -.offcanvas-overlap-left .exit-off-canvas { - -webkit-backface-visibility: hidden; - transition: background 300ms ease; - cursor: pointer; - box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); - display: block; - position: absolute; - background: rgba(255, 255, 255, 0.2); - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 1002; - -webkit-tap-highlight-color: transparent; } - @media only screen and (min-width: 40.063em) { - .offcanvas-overlap-left .exit-off-canvas:hover { - background: rgba(255, 255, 255, 0.05); } } - -.offcanvas-overlap-right .left-off-canvas-menu { - -ms-transform: none; - -webkit-transform: none; - -moz-transform: none; - -o-transform: none; - transform: none; - z-index: 1003; } -.offcanvas-overlap-right .exit-off-canvas { - -webkit-backface-visibility: hidden; - transition: background 300ms ease; - cursor: pointer; - box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); - display: block; - position: absolute; - background: rgba(255, 255, 255, 0.2); - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 1002; - -webkit-tap-highlight-color: transparent; } - @media only screen and (min-width: 40.063em) { - .offcanvas-overlap-right .exit-off-canvas:hover { - background: rgba(255, 255, 255, 0.05); } } - -.no-csstransforms .left-off-canvas-menu { - left: -15.625rem; } -.no-csstransforms .right-off-canvas-menu { - right: -15.625rem; } -.no-csstransforms .move-left > .inner-wrap { - right: 15.625rem; } -.no-csstransforms .move-right > .inner-wrap { - left: 15.625rem; } - -.left-submenu { - -webkit-backface-visibility: hidden; - width: 15.625rem; - top: 0; - bottom: 0; - position: absolute; - margin: 0; - overflow-x: hidden; - overflow-y: auto; - background: #333333; - z-index: 1002; - box-sizing: content-box; - -webkit-overflow-scrolling: touch; - -ms-transform: translate(-100%, 0); - -webkit-transform: translate3d(-100%, 0, 0); - -moz-transform: translate3d(-100%, 0, 0); - -ms-transform: translate3d(-100%, 0, 0); - -o-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - left: 0; - -webkit-transition: -webkit-transform 500ms ease; - -moz-transition: -moz-transform 500ms ease; - -ms-transition: -ms-transform 500ms ease; - -o-transition: -o-transform 500ms ease; - transition: transform 500ms ease; } - .left-submenu * { - -webkit-backface-visibility: hidden; } - .left-submenu .back > a { - padding: 0.3rem 0.9375rem; - color: #999999; - text-transform: uppercase; - font-weight: bold; - background: #444444; - border-top: 1px solid #5e5e5e; - border-bottom: none; - margin: 0; } - .left-submenu .back > a:hover { - background: #303030; - border-top: 1px solid #5e5e5e; - border-bottom: none; } - .left-submenu .back > a:before { - content: "\AB"; - margin-right: 0.5rem; - display: inline; } - .left-submenu.move-right { - -ms-transform: translate(0%, 0); - -webkit-transform: translate3d(0%, 0, 0); - -moz-transform: translate3d(0%, 0, 0); - -ms-transform: translate3d(0%, 0, 0); - -o-transform: translate3d(0%, 0, 0); - transform: translate3d(0%, 0, 0); } - -.right-submenu { - -webkit-backface-visibility: hidden; - width: 15.625rem; - top: 0; - bottom: 0; - position: absolute; - margin: 0; - overflow-x: hidden; - overflow-y: auto; - background: #333333; - z-index: 1002; - box-sizing: content-box; - -webkit-overflow-scrolling: touch; - -ms-transform: translate(100%, 0); - -webkit-transform: translate3d(100%, 0, 0); - -moz-transform: translate3d(100%, 0, 0); - -ms-transform: translate3d(100%, 0, 0); - -o-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - right: 0; - -webkit-transition: -webkit-transform 500ms ease; - -moz-transition: -moz-transform 500ms ease; - -ms-transition: -ms-transform 500ms ease; - -o-transition: -o-transform 500ms ease; - transition: transform 500ms ease; } - .right-submenu * { - -webkit-backface-visibility: hidden; } - .right-submenu .back > a { - padding: 0.3rem 0.9375rem; - color: #999999; - text-transform: uppercase; - font-weight: bold; - background: #444444; - border-top: 1px solid #5e5e5e; - border-bottom: none; - margin: 0; } - .right-submenu .back > a:hover { - background: #303030; - border-top: 1px solid #5e5e5e; - border-bottom: none; } - .right-submenu .back > a:after { - content: "\BB"; - margin-left: 0.5rem; - display: inline; } - .right-submenu.move-left { - -ms-transform: translate(0%, 0); - -webkit-transform: translate3d(0%, 0, 0); - -moz-transform: translate3d(0%, 0, 0); - -ms-transform: translate3d(0%, 0, 0); - -o-transform: translate3d(0%, 0, 0); - transform: translate3d(0%, 0, 0); } - -.left-off-canvas-menu ul.off-canvas-list li.has-submenu > a:after { - content: "\BB"; - margin-left: 0.5rem; - display: inline; } - -.right-off-canvas-menu ul.off-canvas-list li.has-submenu > a:before { - content: "\AB"; - margin-right: 0.5rem; - display: inline; } - -/* small displays */ -@media only screen { - .show-for-small-only, .show-for-small-up, .show-for-small, .show-for-small-down, .hide-for-medium-only, .hide-for-medium-up, .hide-for-medium, .show-for-medium-down, .hide-for-large-only, .hide-for-large-up, .hide-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xxlarge-only, .hide-for-xxlarge-up { - display: inherit !important; } - - .hide-for-small-only, .hide-for-small-up, .hide-for-small, .hide-for-small-down, .show-for-medium-only, .show-for-medium-up, .show-for-medium, .hide-for-medium-down, .show-for-large-only, .show-for-large-up, .show-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .show-for-xxlarge-only, .show-for-xxlarge-up { - display: none !important; } - - .visible-for-small-only, .visible-for-small-up, .visible-for-small, .visible-for-small-down, .hidden-for-medium-only, .hidden-for-medium-up, .hidden-for-medium, .visible-for-medium-down, .hidden-for-large-only, .hidden-for-large-up, .hidden-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up { - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; } - - .hidden-for-small-only, .hidden-for-small-up, .hidden-for-small, .hidden-for-small-down, .visible-for-medium-only, .visible-for-medium-up, .visible-for-medium, .hidden-for-medium-down, .visible-for-large-only, .visible-for-large-up, .visible-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xxlarge-only, .visible-for-xxlarge-up { - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); } - - table.show-for-small-only, table.show-for-small-up, table.show-for-small, table.show-for-small-down, table.hide-for-medium-only, table.hide-for-medium-up, table.hide-for-medium, table.show-for-medium-down, table.hide-for-large-only, table.hide-for-large-up, table.hide-for-large, table.show-for-large-down, table.hide-for-xlarge-only, table.hide-for-xlarge-up, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up { - display: table; } - - thead.show-for-small-only, thead.show-for-small-up, thead.show-for-small, thead.show-for-small-down, thead.hide-for-medium-only, thead.hide-for-medium-up, thead.hide-for-medium, thead.show-for-medium-down, thead.hide-for-large-only, thead.hide-for-large-up, thead.hide-for-large, thead.show-for-large-down, thead.hide-for-xlarge-only, thead.hide-for-xlarge-up, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up { - display: table-header-group !important; } - - tbody.show-for-small-only, tbody.show-for-small-up, tbody.show-for-small, tbody.show-for-small-down, tbody.hide-for-medium-only, tbody.hide-for-medium-up, tbody.hide-for-medium, tbody.show-for-medium-down, tbody.hide-for-large-only, tbody.hide-for-large-up, tbody.hide-for-large, tbody.show-for-large-down, tbody.hide-for-xlarge-only, tbody.hide-for-xlarge-up, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up { - display: table-row-group !important; } - - tr.show-for-small-only, tr.show-for-small-up, tr.show-for-small, tr.show-for-small-down, tr.hide-for-medium-only, tr.hide-for-medium-up, tr.hide-for-medium, tr.show-for-medium-down, tr.hide-for-large-only, tr.hide-for-large-up, tr.hide-for-large, tr.show-for-large-down, tr.hide-for-xlarge-only, tr.hide-for-xlarge-up, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up { - display: table-row !important; } - - th.show-for-small-only, td.show-for-small-only, th.show-for-small-up, td.show-for-small-up, th.show-for-small, td.show-for-small, th.show-for-small-down, td.show-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.hide-for-medium-up, td.hide-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.show-for-medium-down, td.show-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.hide-for-large-up, td.hide-for-large-up, th.hide-for-large, td.hide-for-large, th.show-for-large-down, td.show-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.hide-for-xlarge-up, td.hide-for-xlarge-up, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up { - display: table-cell !important; } } -/* medium displays */ -@media only screen and (min-width: 40.063em) { - .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .show-for-medium-only, .show-for-medium-up, .show-for-medium, .show-for-medium-down, .hide-for-large-only, .hide-for-large-up, .hide-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xxlarge-only, .hide-for-xxlarge-up { - display: inherit !important; } - - .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .hide-for-medium-only, .hide-for-medium-up, .hide-for-medium, .hide-for-medium-down, .show-for-large-only, .show-for-large-up, .show-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .show-for-xxlarge-only, .show-for-xxlarge-up { - display: none !important; } - - .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .visible-for-medium-only, .visible-for-medium-up, .visible-for-medium, .visible-for-medium-down, .hidden-for-large-only, .hidden-for-large-up, .hidden-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up { - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; } - - .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .hidden-for-medium-only, .hidden-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .visible-for-large-only, .visible-for-large-up, .visible-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xxlarge-only, .visible-for-xxlarge-up { - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); } - - table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.show-for-medium-only, table.show-for-medium-up, table.show-for-medium, table.show-for-medium-down, table.hide-for-large-only, table.hide-for-large-up, table.hide-for-large, table.show-for-large-down, table.hide-for-xlarge-only, table.hide-for-xlarge-up, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up { - display: table; } - - thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.show-for-medium-only, thead.show-for-medium-up, thead.show-for-medium, thead.show-for-medium-down, thead.hide-for-large-only, thead.hide-for-large-up, thead.hide-for-large, thead.show-for-large-down, thead.hide-for-xlarge-only, thead.hide-for-xlarge-up, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up { - display: table-header-group !important; } - - tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.show-for-medium-only, tbody.show-for-medium-up, tbody.show-for-medium, tbody.show-for-medium-down, tbody.hide-for-large-only, tbody.hide-for-large-up, tbody.hide-for-large, tbody.show-for-large-down, tbody.hide-for-xlarge-only, tbody.hide-for-xlarge-up, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up { - display: table-row-group !important; } - - tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.show-for-medium-only, tr.show-for-medium-up, tr.show-for-medium, tr.show-for-medium-down, tr.hide-for-large-only, tr.hide-for-large-up, tr.hide-for-large, tr.show-for-large-down, tr.hide-for-xlarge-only, tr.hide-for-xlarge-up, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up { - display: table-row !important; } - - th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.show-for-medium-only, td.show-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.show-for-medium, td.show-for-medium, th.show-for-medium-down, td.show-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.hide-for-large-up, td.hide-for-large-up, th.hide-for-large, td.hide-for-large, th.show-for-large-down, td.show-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.hide-for-xlarge-up, td.hide-for-xlarge-up, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up { - display: table-cell !important; } } -/* large displays */ -@media only screen and (min-width: 64.063em) { - .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .hide-for-medium-only, .show-for-medium-up, .hide-for-medium, .hide-for-medium-down, .show-for-large-only, .show-for-large-up, .show-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xxlarge-only, .hide-for-xxlarge-up { - display: inherit !important; } - - .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .show-for-medium-only, .hide-for-medium-up, .show-for-medium, .show-for-medium-down, .hide-for-large-only, .hide-for-large-up, .hide-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .show-for-xxlarge-only, .show-for-xxlarge-up { - display: none !important; } - - .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .hidden-for-medium-only, .visible-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .visible-for-large-only, .visible-for-large-up, .visible-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up { - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; } - - .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .visible-for-medium-only, .hidden-for-medium-up, .visible-for-medium, .visible-for-medium-down, .hidden-for-large-only, .hidden-for-large-up, .hidden-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xxlarge-only, .visible-for-xxlarge-up { - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); } - - table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.hide-for-medium-only, table.show-for-medium-up, table.hide-for-medium, table.hide-for-medium-down, table.show-for-large-only, table.show-for-large-up, table.show-for-large, table.show-for-large-down, table.hide-for-xlarge-only, table.hide-for-xlarge-up, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up { - display: table; } - - thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.hide-for-medium-only, thead.show-for-medium-up, thead.hide-for-medium, thead.hide-for-medium-down, thead.show-for-large-only, thead.show-for-large-up, thead.show-for-large, thead.show-for-large-down, thead.hide-for-xlarge-only, thead.hide-for-xlarge-up, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up { - display: table-header-group !important; } - - tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.hide-for-medium-only, tbody.show-for-medium-up, tbody.hide-for-medium, tbody.hide-for-medium-down, tbody.show-for-large-only, tbody.show-for-large-up, tbody.show-for-large, tbody.show-for-large-down, tbody.hide-for-xlarge-only, tbody.hide-for-xlarge-up, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up { - display: table-row-group !important; } - - tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.hide-for-medium-only, tr.show-for-medium-up, tr.hide-for-medium, tr.hide-for-medium-down, tr.show-for-large-only, tr.show-for-large-up, tr.show-for-large, tr.show-for-large-down, tr.hide-for-xlarge-only, tr.hide-for-xlarge-up, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up { - display: table-row !important; } - - th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.hide-for-medium-down, td.hide-for-medium-down, th.show-for-large-only, td.show-for-large-only, th.show-for-large-up, td.show-for-large-up, th.show-for-large, td.show-for-large, th.show-for-large-down, td.show-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.hide-for-xlarge-up, td.hide-for-xlarge-up, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up { - display: table-cell !important; } } -/* xlarge displays */ -@media only screen and (min-width: 90.063em) { - .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .hide-for-medium-only, .show-for-medium-up, .hide-for-medium, .hide-for-medium-down, .hide-for-large-only, .show-for-large-up, .hide-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .hide-for-xxlarge-only, .hide-for-xxlarge-up { - display: inherit !important; } - - .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .show-for-medium-only, .hide-for-medium-up, .show-for-medium, .show-for-medium-down, .show-for-large-only, .hide-for-large-up, .show-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .show-for-xxlarge-only, .show-for-xxlarge-up { - display: none !important; } - - .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .hidden-for-medium-only, .visible-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .hidden-for-large-only, .visible-for-large-up, .hidden-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up { - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; } - - .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .visible-for-medium-only, .hidden-for-medium-up, .visible-for-medium, .visible-for-medium-down, .visible-for-large-only, .hidden-for-large-up, .visible-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .visible-for-xxlarge-only, .visible-for-xxlarge-up { - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); } - - table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.hide-for-medium-only, table.show-for-medium-up, table.hide-for-medium, table.hide-for-medium-down, table.hide-for-large-only, table.show-for-large-up, table.hide-for-large, table.hide-for-large-down, table.show-for-xlarge-only, table.show-for-xlarge-up, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up { - display: table; } - - thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.hide-for-medium-only, thead.show-for-medium-up, thead.hide-for-medium, thead.hide-for-medium-down, thead.hide-for-large-only, thead.show-for-large-up, thead.hide-for-large, thead.hide-for-large-down, thead.show-for-xlarge-only, thead.show-for-xlarge-up, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up { - display: table-header-group !important; } - - tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.hide-for-medium-only, tbody.show-for-medium-up, tbody.hide-for-medium, tbody.hide-for-medium-down, tbody.hide-for-large-only, tbody.show-for-large-up, tbody.hide-for-large, tbody.hide-for-large-down, tbody.show-for-xlarge-only, tbody.show-for-xlarge-up, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up { - display: table-row-group !important; } - - tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.hide-for-medium-only, tr.show-for-medium-up, tr.hide-for-medium, tr.hide-for-medium-down, tr.hide-for-large-only, tr.show-for-large-up, tr.hide-for-large, tr.hide-for-large-down, tr.show-for-xlarge-only, tr.show-for-xlarge-up, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up { - display: table-row !important; } - - th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.hide-for-medium-down, td.hide-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.show-for-large-up, td.show-for-large-up, th.hide-for-large, td.hide-for-large, th.hide-for-large-down, td.hide-for-large-down, th.show-for-xlarge-only, td.show-for-xlarge-only, th.show-for-xlarge-up, td.show-for-xlarge-up, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up { - display: table-cell !important; } } -/* xxlarge displays */ -@media only screen and (min-width: 120.063em) { - .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .hide-for-medium-only, .show-for-medium-up, .hide-for-medium, .hide-for-medium-down, .hide-for-large-only, .show-for-large-up, .hide-for-large, .hide-for-large-down, .hide-for-xlarge-only, .show-for-xlarge-up, .show-for-xxlarge-only, .show-for-xxlarge-up { - display: inherit !important; } - - .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .show-for-medium-only, .hide-for-medium-up, .show-for-medium, .show-for-medium-down, .show-for-large-only, .hide-for-large-up, .show-for-large, .show-for-large-down, .show-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xxlarge-only, .hide-for-xxlarge-up { - display: none !important; } - - .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .hidden-for-medium-only, .visible-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .hidden-for-large-only, .visible-for-large-up, .hidden-for-large, .hidden-for-large-down, .hidden-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xxlarge-only, .visible-for-xxlarge-up { - position: static !important; - height: auto; - width: auto; - overflow: visible; - clip: auto; } - - .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .visible-for-medium-only, .hidden-for-medium-up, .visible-for-medium, .visible-for-medium-down, .visible-for-large-only, .hidden-for-large-up, .visible-for-large, .visible-for-large-down, .visible-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up { - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); } - - table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.hide-for-medium-only, table.show-for-medium-up, table.hide-for-medium, table.hide-for-medium-down, table.hide-for-large-only, table.show-for-large-up, table.hide-for-large, table.hide-for-large-down, table.hide-for-xlarge-only, table.show-for-xlarge-up, table.show-for-xxlarge-only, table.show-for-xxlarge-up { - display: table; } - - thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.hide-for-medium-only, thead.show-for-medium-up, thead.hide-for-medium, thead.hide-for-medium-down, thead.hide-for-large-only, thead.show-for-large-up, thead.hide-for-large, thead.hide-for-large-down, thead.hide-for-xlarge-only, thead.show-for-xlarge-up, thead.show-for-xxlarge-only, thead.show-for-xxlarge-up { - display: table-header-group !important; } - - tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.hide-for-medium-only, tbody.show-for-medium-up, tbody.hide-for-medium, tbody.hide-for-medium-down, tbody.hide-for-large-only, tbody.show-for-large-up, tbody.hide-for-large, tbody.hide-for-large-down, tbody.hide-for-xlarge-only, tbody.show-for-xlarge-up, tbody.show-for-xxlarge-only, tbody.show-for-xxlarge-up { - display: table-row-group !important; } - - tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.hide-for-medium-only, tr.show-for-medium-up, tr.hide-for-medium, tr.hide-for-medium-down, tr.hide-for-large-only, tr.show-for-large-up, tr.hide-for-large, tr.hide-for-large-down, tr.hide-for-xlarge-only, tr.show-for-xlarge-up, tr.show-for-xxlarge-only, tr.show-for-xxlarge-up { - display: table-row !important; } - - th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.hide-for-medium-down, td.hide-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.show-for-large-up, td.show-for-large-up, th.hide-for-large, td.hide-for-large, th.hide-for-large-down, td.hide-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.show-for-xlarge-up, td.show-for-xlarge-up, th.show-for-xxlarge-only, td.show-for-xxlarge-only, th.show-for-xxlarge-up, td.show-for-xxlarge-up { - display: table-cell !important; } } -/* Orientation targeting */ -.show-for-landscape, -.hide-for-portrait { - display: inherit !important; } - -.hide-for-landscape, -.show-for-portrait { - display: none !important; } - -/* Specific visibility for tables */ -table.hide-for-landscape, table.show-for-portrait { - display: table; } - -thead.hide-for-landscape, thead.show-for-portrait { - display: table-header-group !important; } - -tbody.hide-for-landscape, tbody.show-for-portrait { - display: table-row-group !important; } - -tr.hide-for-landscape, tr.show-for-portrait { - display: table-row !important; } - -td.hide-for-landscape, td.show-for-portrait, -th.hide-for-landscape, -th.show-for-portrait { - display: table-cell !important; } - -@media only screen and (orientation: landscape) { - .show-for-landscape, - .hide-for-portrait { - display: inherit !important; } - - .hide-for-landscape, - .show-for-portrait { - display: none !important; } - - /* Specific visibility for tables */ - table.show-for-landscape, table.hide-for-portrait { - display: table; } - - thead.show-for-landscape, thead.hide-for-portrait { - display: table-header-group !important; } - - tbody.show-for-landscape, tbody.hide-for-portrait { - display: table-row-group !important; } - - tr.show-for-landscape, tr.hide-for-portrait { - display: table-row !important; } - - td.show-for-landscape, td.hide-for-portrait, - th.show-for-landscape, - th.hide-for-portrait { - display: table-cell !important; } } -@media only screen and (orientation: portrait) { - .show-for-portrait, - .hide-for-landscape { - display: inherit !important; } - - .hide-for-portrait, - .show-for-landscape { - display: none !important; } - - /* Specific visibility for tables */ - table.show-for-portrait, table.hide-for-landscape { - display: table; } - - thead.show-for-portrait, thead.hide-for-landscape { - display: table-header-group !important; } - - tbody.show-for-portrait, tbody.hide-for-landscape { - display: table-row-group !important; } - - tr.show-for-portrait, tr.hide-for-landscape { - display: table-row !important; } - - td.show-for-portrait, td.hide-for-landscape, - th.show-for-portrait, - th.hide-for-landscape { - display: table-cell !important; } } -/* Touch-enabled device targeting */ -.show-for-touch { - display: none !important; } - -.hide-for-touch { - display: inherit !important; } - -.touch .show-for-touch { - display: inherit !important; } - -.touch .hide-for-touch { - display: none !important; } - -/* Specific visibility for tables */ -table.hide-for-touch { - display: table; } - -.touch table.show-for-touch { - display: table; } - -thead.hide-for-touch { - display: table-header-group !important; } - -.touch thead.show-for-touch { - display: table-header-group !important; } - -tbody.hide-for-touch { - display: table-row-group !important; } - -.touch tbody.show-for-touch { - display: table-row-group !important; } - -tr.hide-for-touch { - display: table-row !important; } - -.touch tr.show-for-touch { - display: table-row !important; } - -td.hide-for-touch { - display: table-cell !important; } - -.touch td.show-for-touch { - display: table-cell !important; } - -th.hide-for-touch { - display: table-cell !important; } - -.touch th.show-for-touch { - display: table-cell !important; } - -/* Print visibility */ -@media print { - .show-for-print { - display: block; } - - .hide-for-print { - display: none; } - - table.show-for-print { - display: table; } - - thead.show-for-print { - display: table-header-group !important; } - - tbody.show-for-print { - display: table-row-group !important; } - - tr.show-for-print { - display: table-row !important; } - - td.show-for-print { - display: table-cell !important; } - - th.show-for-print { - display: table-cell !important; } } diff --git a/ShoalShell.Plugins.HtmlHelpServer/Resources/gpl.txt b/ShoalShell.Plugins.HtmlHelpServer/Resources/gpl.txt deleted file mode 100644 index 94a9ed024..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/Resources/gpl.txt +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/ShoalShell.Plugins.HtmlHelpServer/Resources/index.html b/ShoalShell.Plugins.HtmlHelpServer/Resources/index.html deleted file mode 100644 index c23b02bc6..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/Resources/index.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - - {Title} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -
    - -
    - -
    -{doc} -
    - - - - - - - - - \ No newline at end of file diff --git a/ShoalShell.Plugins.HtmlHelpServer/ShoalHttpServer.vb b/ShoalShell.Plugins.HtmlHelpServer/ShoalHttpServer.vb deleted file mode 100644 index 3265a3ad7..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/ShoalHttpServer.vb +++ /dev/null @@ -1,66 +0,0 @@ -Imports ShoalShell.Plugins.HtmlHelpServer.HttpInternal -Imports System.IO -Imports System.Net.Sockets - -Public Class ShoalHttpServer : Inherits HttpServer - - Dim _InternalShoalWikiServer As Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.ScriptEngine = - New Scripting.ShoalShell.Runtime.ScriptEngine - - Public Sub New(port As Integer) - Call MyBase.New(port) - End Sub - - Public Overrides Sub handleGETRequest(p As HttpProcessor) - - If String.Equals(p.http_url, "/") Then - ' Call p.writeSuccess() - Call p.outputStream.WriteLine(FileIO.FileSystem.ReadAllText(Scripting.ShoalShell.HTML.RequestHtml("index"))) - Return - - Else - - - End If - - 'If p.http_url.Equals("/Test.png") Then - ' Dim fs As Stream = File.Open("../../Test.png", FileMode.Open) - - ' p.writeSuccess("image/png") - ' fs.CopyTo(p.outputStream.BaseStream) - ' p.outputStream.BaseStream.Flush() - 'End If - - 'Console.WriteLine("request: {0}", p.http_url) - 'p.writeSuccess() - 'p.outputStream.WriteLine("

    Shoal SystemsBiology Shell Language

    ") - 'p.outputStream.WriteLine("Current Time: " & DateTime.Now.ToString()) - 'p.outputStream.WriteLine("url : {0}", p.http_url) - - 'p.outputStream.WriteLine("
    ") - 'p.outputStream.WriteLine("") - 'p.outputStream.WriteLine("") - 'p.outputStream.WriteLine("
    ") - End Sub - - Public Overrides Sub handlePOSTRequest(p As HttpProcessor, inputData As StreamReader) - Console.WriteLine("POST request: {0}", p.http_url) - Dim data As String = inputData.ReadToEnd() - - data = System.Text.RegularExpressions.Regex.Match(data, "SearchValue=.+?&Invoker=", Text.RegularExpressions.RegexOptions.IgnoreCase).Value - data = Mid(data, 13) - data = Mid(data, 1, Len(data) - 9) - - p.writeSuccess() - p.outputStream.WriteLine("

    Shoal SystemsBiology Shell Language

    ") - p.outputStream.WriteLine(">>> HOME

    ") - p.outputStream.WriteLine("=====================================================================================

    Search results for ""{0}""
    ", data) - - Dim ChunkBuffer = _InternalShoalWikiServer.GetHelpInfo(data, False) - p.outputStream.WriteLine("
    {0}
    ", ChunkBuffer) - End Sub - - Protected Overrides Function __httpProcessor(client As TcpClient) As HttpProcessor - Return New HttpProcessor(client, Me) With {._404Page = My.Resources._404} - End Function -End Class \ No newline at end of file diff --git a/ShoalShell.Plugins.HtmlHelpServer/ShoalShell.Plugins.HtmlHelpServer.vbproj b/ShoalShell.Plugins.HtmlHelpServer/ShoalShell.Plugins.HtmlHelpServer.vbproj deleted file mode 100644 index 56ad668cd..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/ShoalShell.Plugins.HtmlHelpServer.vbproj +++ /dev/null @@ -1,239 +0,0 @@ - - - - - Debug - AnyCPU - {D712E0A2-8AB1-4665-B7B5-D2FCE09188AE} - Library - ShoalShell.Plugins.HtmlHelpServer - ShoalShell.Plugins.HtmlHelpServer - 512 - Windows - v4.6 - - - - true - full - true - true - ..\..\GCModeller\bin-Debug\ - ShoalShell.Plugins.HtmlHelpServer.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - pdbonly - false - true - true - ..\..\GCModeller\GCModeller\ - ShoalShell.Plugins.HtmlHelpServer.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - On - - - Binary - - - Off - - - On - - - true - true - true - ..\..\GCModeller\bin-Debug\ - ShoalShell.Plugins.HtmlHelpServer.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x64 - MinimumRecommendedRules.ruleset - - - true - ..\..\GCModeller\GCModeller-x64\ - ShoalShell.Plugins.HtmlHelpServer.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - API_EXPORT=1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - True - Application.myapp - - - True - True - Resources.resx - - - True - Settings.settings - True - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - VbMyResourcesResXFileCodeGenerator - Resources.Designer.vb - My.Resources - Designer - - - - - - MyApplicationCodeGenerator - Application.Designer.vb - - - SettingsSingleFileGenerator - My - Settings.Designer.vb - - - - - {2dd4be80-ddc3-4767-94a7-10f1c3395716} - DocumentFormat.HTML - - - {fecce1fd-e1d4-49e3-a668-60bb5e7aed99} - +Microsoft.VisualBasic.Architecture.Framework - - - {2c34a044-1bde-44e8-a86e-e9971c87da21} - LibMySQL - - - {2f80136c-0e1e-429f-a905-eb0927b0a82c} - EndNoteLite - - - {a7cb16ff-75c6-4746-8449-86c121d723c4} - ShoalShell_Core.v2 - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ShoalShell.Plugins.HtmlHelpServer/SimpleHttpServer.vb b/ShoalShell.Plugins.HtmlHelpServer/SimpleHttpServer.vb deleted file mode 100644 index 298a010a2..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/SimpleHttpServer.vb +++ /dev/null @@ -1,236 +0,0 @@ -Imports System.Collections -Imports System.IO -Imports System.Net -Imports System.Net.Sockets -Imports System.Threading - -' offered to the public domain for any use with no restriction -' and also with no warranty of any kind, please enjoy. - David Jeske. - -' simple HTTP explanation -' http://www.jmarshall.com/easy/http/ - -Namespace Bend.Util - - Public Class HttpProcessor - Public socket As TcpClient - Public srv As HttpServer - - Dim _InternalInputStream As Stream - - Public outputStream As StreamWriter - - Public http_method As [String] - Public http_url As [String] - Public http_protocol_versionstring As [String] - Public httpHeaders As New Hashtable() - - ''' - ''' 10MB - ''' - ''' - Const MAX_POST_SIZE As Integer = 10 * 1024 * 1024 - - Public Sub New(s As TcpClient, srv As HttpServer) - Me.socket = s - Me.srv = srv - End Sub - - Private Function InternalStreamReadLine(InputStream As Stream) As String - Dim NextChar As Integer - Dim ChunkBuffer As New List(Of Char) - - While True - NextChar = InputStream.ReadByte() - If NextChar = Asc(ControlChars.Lf) Then - Exit While - End If - If NextChar = Asc(ControlChars.Cr) Then - Continue While - End If - If NextChar = -1 Then - Call Thread.Sleep(1) - Continue While - End If - - Call ChunkBuffer.Add(Convert.ToChar(NextChar)) - End While - - Return New String(ChunkBuffer.ToArray) - End Function - - Public Sub Process() - ' we can't use a StreamReader for input, because it buffers up extra data on us inside it's - ' "processed" view of the world, and we want the data raw after the headers - _InternalInputStream = New BufferedStream(socket.GetStream()) - - ' we probably shouldn't be using a streamwriter for all output from handlers either - outputStream = New StreamWriter(New BufferedStream(socket.GetStream())) - Try - parseRequest() - readHeaders() - If http_method.Equals("GET") Then - handleGETRequest() - ElseIf http_method.Equals("POST") Then - HandlePOSTRequest() - End If - Catch e As Exception - Console.WriteLine("Exception: " & e.ToString()) - writeFailure() - End Try - outputStream.Flush() - ' bs.Flush(); // flush any remaining output - _InternalInputStream = Nothing - outputStream = Nothing - ' bs = null; - socket.Close() - End Sub - - Public Sub parseRequest() - Dim request As [String] = InternalStreamReadLine(_InternalInputStream) - Dim tokens As String() = request.Split(" "c) - If tokens.Length <> 3 Then - Throw New Exception("invalid http request line") - End If - http_method = tokens(0).ToUpper() - http_url = tokens(1) - http_protocol_versionstring = tokens(2) - - Console.WriteLine("starting: " & request) - End Sub - - Public Sub readHeaders() - Console.WriteLine("readHeaders()") - Dim line As [String] = "" - While (InlineAssignHelper(line, InternalStreamReadLine(_InternalInputStream))) IsNot Nothing - If line.Equals("") Then - Console.WriteLine("got headers") - Return - End If - - Dim separator As Integer = line.IndexOf(":"c) - If separator = -1 Then - Throw New Exception("invalid http header line: " & line) - End If - Dim name As [String] = line.Substring(0, separator) - Dim pos As Integer = separator + 1 - While (pos < line.Length) AndAlso (line(pos) = " "c) - ' strip any spaces - pos += 1 - End While - - Dim value As String = line.Substring(pos, line.Length - pos) - Console.WriteLine("header: {0}:{1}", name, value) - httpHeaders(name) = value - End While - End Sub - - Public Sub handleGETRequest() - srv.handleGETRequest(Me) - End Sub - - Private Const BUF_SIZE As Integer = 4096 - - ''' - ''' This post data processing just reads everything into a memory stream. - ''' this is fine for smallish things, but for large stuff we should really - ''' hand an input stream to the request processor. However, the input stream - ''' we hand him needs to let him see the "end of the stream" at this content - ''' length, because otherwise he won't know when he's seen it all! - ''' - ''' - Public Sub HandlePOSTRequest() - - Call Console.WriteLine("get post data start") - - Dim content_len As Integer = 0 - Dim ms As New MemoryStream() - - If Me.httpHeaders.ContainsKey("Content-Length") Then - content_len = Convert.ToInt32(Me.httpHeaders("Content-Length")) - If content_len > MAX_POST_SIZE Then - Throw New Exception([String].Format("POST Content-Length({0}) too big for this simple server", content_len)) - End If - Dim buf As Byte() = New Byte(BUF_SIZE - 1) {} - Dim to_read As Integer = content_len - While to_read > 0 - Console.WriteLine("starting Read, to_read={0}", to_read) - - Dim numread As Integer = Me._InternalInputStream.Read(buf, 0, Math.Min(BUF_SIZE, to_read)) - Console.WriteLine("read finished, numread={0}", numread) - If numread = 0 Then - If to_read = 0 Then - Exit While - Else - Throw New Exception("client disconnected during post") - End If - End If - to_read -= numread - ms.Write(buf, 0, numread) - End While - ms.Seek(0, SeekOrigin.Begin) - End If - - Call Console.WriteLine("get post data end") - Call srv.handlePOSTRequest(Me, New StreamReader(ms)) - End Sub - - Public Sub writeSuccess(Optional content_type As String = "text/html") - ' this is the successful HTTP response line - outputStream.WriteLine("HTTP/1.0 200 OK") - ' these are the HTTP headers... - outputStream.WriteLine("Content-Type: " & content_type) - outputStream.WriteLine("Connection: close") - ' ..add your own headers here if you like - - outputStream.WriteLine("") - ' this terminates the HTTP headers.. everything after this is HTTP body.. - End Sub - - Public Sub writeFailure() - ' this is an http 404 failure response - outputStream.WriteLine("HTTP/1.0 404 File not found") - ' these are the HTTP headers - outputStream.WriteLine("Connection: close") - ' ..add your own headers here - - outputStream.WriteLine("") - ' this terminates the HTTP headers. - End Sub - Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, value As T) As T - target = value - Return value - End Function - End Class - - Public MustInherit Class HttpServer - - Protected _LocalPort As Integer - - Dim _InternalListener As TcpListener - Dim Is_active As Boolean = True - - Public Sub New(port As Integer) - Me._LocalPort = port - End Sub - - Public Sub Listen() - _InternalListener = New TcpListener(Net.IPAddress.Any, _LocalPort) - _InternalListener.Start() - - While Is_active - Dim s As TcpClient = _InternalListener.AcceptTcpClient() - Dim processor As New HttpProcessor(s, Me) - Dim thread__1 As New Thread(New ThreadStart(AddressOf processor.Process)) - Call thread__1.Start() - Call Thread.Sleep(1) - End While - End Sub - - Public MustOverride Sub handleGETRequest(p As HttpProcessor) - Public MustOverride Sub handlePOSTRequest(p As HttpProcessor, inputData As StreamReader) - End Class -End Namespace - - - diff --git a/ShoalShell.Plugins.HtmlHelpServer/Test.vb b/ShoalShell.Plugins.HtmlHelpServer/Test.vb deleted file mode 100644 index c461ea2cb..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/Test.vb +++ /dev/null @@ -1,11 +0,0 @@ -Imports Oracle.LinuxCompatibility.MySQL - -Module Test - - Sub Main() - Dim linqTest As Wiki.MySQL.lib_wikiarchive() = ( - From x As Wiki.MySQL.lib_wikiarchive - In "https://127.0.0.1:3306/client?user=oWZwI0JCsf4Z6SDzIKjVXg==%password=f5DGNogWz0se2ScJ2rsu5Q==%database=PX9nLOBmuJkV700zowzCeQ==".AsDBI(Of Wiki.MySQL.lib_wikiarchive) <= "SELECT * FROM wiki.lib_wikiarchive;" - Select x).ToArray - End Sub -End Module diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiarchive.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiarchive.vb deleted file mode 100644 index e0cf7c8f7..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiarchive.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikicategory.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikicategory.vb deleted file mode 100644 index 2030e8080..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikicategory.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikicategorylinks.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikicategorylinks.vb deleted file mode 100644 index 52abdc3d0..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikicategorylinks.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikichange_tag.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikichange_tag.vb deleted file mode 100644 index 34dc302a8..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikichange_tag.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiexternallinks.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiexternallinks.vb deleted file mode 100644 index 79f79e2e9..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiexternallinks.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikifilearchive.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikifilearchive.vb deleted file mode 100644 index 3f06206ae..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikifilearchive.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiimage.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiimage.vb deleted file mode 100644 index c27191b8f..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiimage.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiimagelinks.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiimagelinks.vb deleted file mode 100644 index 32afa2be1..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiimagelinks.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiinterwiki.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiinterwiki.vb deleted file mode 100644 index e44a68b9e..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiinterwiki.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiipblocks.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiipblocks.vb deleted file mode 100644 index bf4835f10..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiipblocks.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiiwlinks.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiiwlinks.vb deleted file mode 100644 index 19b6f3738..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiiwlinks.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikijob.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikijob.vb deleted file mode 100644 index 7e343f8af..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikijob.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikil10n_cache.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikil10n_cache.vb deleted file mode 100644 index a68efedda..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikil10n_cache.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikilanglinks.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikilanglinks.vb deleted file mode 100644 index cb66e847b..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikilanglinks.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikilog_search.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikilog_search.vb deleted file mode 100644 index 213f843a3..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikilog_search.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikilogging.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikilogging.vb deleted file mode 100644 index 421af9060..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikilogging.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikimodule_deps.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikimodule_deps.vb deleted file mode 100644 index aec42a9a2..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikimodule_deps.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikimsg_resource.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikimsg_resource.vb deleted file mode 100644 index 4b40bf2f3..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikimsg_resource.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikimsg_resource_links.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikimsg_resource_links.vb deleted file mode 100644 index 03721427b..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikimsg_resource_links.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiobjectcache.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiobjectcache.vb deleted file mode 100644 index fae26a2df..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiobjectcache.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikioldimage.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikioldimage.vb deleted file mode 100644 index 90ac918d8..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikioldimage.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikipage.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikipage.vb deleted file mode 100644 index 6f05d2422..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikipage.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikipage_props.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikipage_props.vb deleted file mode 100644 index a4a506e77..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikipage_props.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikipage_restrictions.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikipage_restrictions.vb deleted file mode 100644 index 305361a77..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikipage_restrictions.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikipagelinks.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikipagelinks.vb deleted file mode 100644 index 33db57be0..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikipagelinks.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiprotected_titles.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiprotected_titles.vb deleted file mode 100644 index e92c09955..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiprotected_titles.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiquerycache.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiquerycache.vb deleted file mode 100644 index ee5c383f7..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiquerycache.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiquerycache_info.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiquerycache_info.vb deleted file mode 100644 index e913eff72..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiquerycache_info.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiquerycachetwo.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiquerycachetwo.vb deleted file mode 100644 index ffbd277b5..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiquerycachetwo.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikirecentchanges.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikirecentchanges.vb deleted file mode 100644 index 0e43ed3e7..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikirecentchanges.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiredirect.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiredirect.vb deleted file mode 100644 index 07630d8a1..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiredirect.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikirevision.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikirevision.vb deleted file mode 100644 index 2264202bb..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikirevision.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikisearchindex.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikisearchindex.vb deleted file mode 100644 index bce9b690e..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikisearchindex.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikisite_identifiers.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikisite_identifiers.vb deleted file mode 100644 index 431bd0e03..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikisite_identifiers.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikisite_stats.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikisite_stats.vb deleted file mode 100644 index f39bb916b..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikisite_stats.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikisites.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikisites.vb deleted file mode 100644 index c4303e653..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikisites.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikitag_summary.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikitag_summary.vb deleted file mode 100644 index 6cede894c..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikitag_summary.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikitemplatelinks.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikitemplatelinks.vb deleted file mode 100644 index 2d4a20d8a..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikitemplatelinks.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikitext.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikitext.vb deleted file mode 100644 index 671c9f4eb..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikitext.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikitranscache.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikitranscache.vb deleted file mode 100644 index 4e18aac33..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikitranscache.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiupdatelog.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiupdatelog.vb deleted file mode 100644 index 5c3cace55..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiupdatelog.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiuploadstash.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiuploadstash.vb deleted file mode 100644 index 666a25ae8..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiuploadstash.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiuser.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiuser.vb deleted file mode 100644 index d140ea480..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiuser.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiuser_former_groups.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiuser_former_groups.vb deleted file mode 100644 index 48edcf164..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiuser_former_groups.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiuser_groups.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiuser_groups.vb deleted file mode 100644 index 2d64dcb75..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiuser_groups.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiuser_newtalk.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiuser_newtalk.vb deleted file mode 100644 index 3a41cb8c1..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiuser_newtalk.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiuser_properties.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiuser_properties.vb deleted file mode 100644 index 82adc04e6..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiuser_properties.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikivalid_tag.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikivalid_tag.vb deleted file mode 100644 index 0a3e1804d..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikivalid_tag.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiwatchlist.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiwatchlist.vb deleted file mode 100644 index b83de94d7..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/MySQL/lib_wikiwatchlist.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki.sql b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki.sql deleted file mode 100644 index 29ee150eb..000000000 --- a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki.sql +++ /dev/null @@ -1,1070 +0,0 @@ -CREATE DATABASE IF NOT EXISTS `wiki` /*!40100 DEFAULT CHARACTER SET utf8 */; -USE `wiki`; --- MySQL dump 10.13 Distrib 5.6.13, for Win32 (x86) --- --- Host: localhost Database: wiki --- ------------------------------------------------------ --- Server version 5.6.17 - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - --- --- Table structure for table `lib_wikiarchive` --- - -DROP TABLE IF EXISTS `lib_wikiarchive`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikiarchive` ( - `ar_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `ar_namespace` int(11) NOT NULL DEFAULT '0', - `ar_title` varbinary(255) NOT NULL DEFAULT '', - `ar_text` mediumblob NOT NULL, - `ar_comment` varbinary(767) NOT NULL, - `ar_user` int(10) unsigned NOT NULL DEFAULT '0', - `ar_user_text` varbinary(255) NOT NULL, - `ar_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0', - `ar_minor_edit` tinyint(4) NOT NULL DEFAULT '0', - `ar_flags` tinyblob NOT NULL, - `ar_rev_id` int(10) unsigned DEFAULT NULL, - `ar_text_id` int(10) unsigned DEFAULT NULL, - `ar_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0', - `ar_len` int(10) unsigned DEFAULT NULL, - `ar_page_id` int(10) unsigned DEFAULT NULL, - `ar_parent_id` int(10) unsigned DEFAULT NULL, - `ar_sha1` varbinary(32) NOT NULL DEFAULT '', - `ar_content_model` varbinary(32) DEFAULT NULL, - `ar_content_format` varbinary(64) DEFAULT NULL, - PRIMARY KEY (`ar_id`), - KEY `name_title_timestamp` (`ar_namespace`,`ar_title`,`ar_timestamp`), - KEY `usertext_timestamp` (`ar_user_text`,`ar_timestamp`), - KEY `ar_revid` (`ar_rev_id`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikicategory` --- - -DROP TABLE IF EXISTS `lib_wikicategory`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikicategory` ( - `cat_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `cat_title` varbinary(255) NOT NULL, - `cat_pages` int(11) NOT NULL DEFAULT '0', - `cat_subcats` int(11) NOT NULL DEFAULT '0', - `cat_files` int(11) NOT NULL DEFAULT '0', - PRIMARY KEY (`cat_id`), - UNIQUE KEY `cat_title` (`cat_title`), - KEY `cat_pages` (`cat_pages`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikicategorylinks` --- - -DROP TABLE IF EXISTS `lib_wikicategorylinks`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikicategorylinks` ( - `cl_from` int(10) unsigned NOT NULL DEFAULT '0', - `cl_to` varbinary(255) NOT NULL DEFAULT '', - `cl_sortkey` varbinary(230) NOT NULL DEFAULT '', - `cl_sortkey_prefix` varbinary(255) NOT NULL DEFAULT '', - `cl_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `cl_collation` varbinary(32) NOT NULL DEFAULT '', - `cl_type` enum('page','subcat','file') NOT NULL DEFAULT 'page', - UNIQUE KEY `cl_from` (`cl_from`,`cl_to`), - KEY `cl_sortkey` (`cl_to`,`cl_type`,`cl_sortkey`,`cl_from`), - KEY `cl_timestamp` (`cl_to`,`cl_timestamp`), - KEY `cl_collation` (`cl_collation`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikichange_tag` --- - -DROP TABLE IF EXISTS `lib_wikichange_tag`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikichange_tag` ( - `ct_rc_id` int(11) DEFAULT NULL, - `ct_log_id` int(11) DEFAULT NULL, - `ct_rev_id` int(11) DEFAULT NULL, - `ct_tag` varbinary(255) NOT NULL, - `ct_params` blob, - UNIQUE KEY `change_tag_rc_tag` (`ct_rc_id`,`ct_tag`), - UNIQUE KEY `change_tag_log_tag` (`ct_log_id`,`ct_tag`), - UNIQUE KEY `change_tag_rev_tag` (`ct_rev_id`,`ct_tag`), - KEY `change_tag_tag_id` (`ct_tag`,`ct_rc_id`,`ct_rev_id`,`ct_log_id`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikiexternallinks` --- - -DROP TABLE IF EXISTS `lib_wikiexternallinks`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikiexternallinks` ( - `el_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `el_from` int(10) unsigned NOT NULL DEFAULT '0', - `el_to` blob NOT NULL, - `el_index` blob NOT NULL, - PRIMARY KEY (`el_id`), - KEY `el_from` (`el_from`,`el_to`(40)), - KEY `el_to` (`el_to`(60),`el_from`), - KEY `el_index` (`el_index`(60)) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikifilearchive` --- - -DROP TABLE IF EXISTS `lib_wikifilearchive`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikifilearchive` ( - `fa_id` int(11) NOT NULL AUTO_INCREMENT, - `fa_name` varbinary(255) NOT NULL DEFAULT '', - `fa_archive_name` varbinary(255) DEFAULT '', - `fa_storage_group` varbinary(16) DEFAULT NULL, - `fa_storage_key` varbinary(64) DEFAULT '', - `fa_deleted_user` int(11) DEFAULT NULL, - `fa_deleted_timestamp` binary(14) DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0', - `fa_deleted_reason` varbinary(767) DEFAULT '', - `fa_size` int(10) unsigned DEFAULT '0', - `fa_width` int(11) DEFAULT '0', - `fa_height` int(11) DEFAULT '0', - `fa_metadata` mediumblob, - `fa_bits` int(11) DEFAULT '0', - `fa_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL, - `fa_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart','chemical') DEFAULT 'unknown', - `fa_minor_mime` varbinary(100) DEFAULT 'unknown', - `fa_description` varbinary(767) DEFAULT NULL, - `fa_user` int(10) unsigned DEFAULT '0', - `fa_user_text` varbinary(255) DEFAULT NULL, - `fa_timestamp` binary(14) DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0', - `fa_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0', - `fa_sha1` varbinary(32) NOT NULL DEFAULT '', - PRIMARY KEY (`fa_id`), - KEY `fa_name` (`fa_name`,`fa_timestamp`), - KEY `fa_storage_group` (`fa_storage_group`,`fa_storage_key`), - KEY `fa_deleted_timestamp` (`fa_deleted_timestamp`), - KEY `fa_user_timestamp` (`fa_user_text`,`fa_timestamp`), - KEY `fa_sha1` (`fa_sha1`(10)) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikiimage` --- - -DROP TABLE IF EXISTS `lib_wikiimage`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikiimage` ( - `img_name` varbinary(255) NOT NULL DEFAULT '', - `img_size` int(10) unsigned NOT NULL DEFAULT '0', - `img_width` int(11) NOT NULL DEFAULT '0', - `img_height` int(11) NOT NULL DEFAULT '0', - `img_metadata` mediumblob NOT NULL, - `img_bits` int(11) NOT NULL DEFAULT '0', - `img_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL, - `img_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart','chemical') NOT NULL DEFAULT 'unknown', - `img_minor_mime` varbinary(100) NOT NULL DEFAULT 'unknown', - `img_description` varbinary(767) NOT NULL, - `img_user` int(10) unsigned NOT NULL DEFAULT '0', - `img_user_text` varbinary(255) NOT NULL, - `img_timestamp` varbinary(14) NOT NULL DEFAULT '', - `img_sha1` varbinary(32) NOT NULL DEFAULT '', - PRIMARY KEY (`img_name`), - KEY `img_usertext_timestamp` (`img_user_text`,`img_timestamp`), - KEY `img_size` (`img_size`), - KEY `img_timestamp` (`img_timestamp`), - KEY `img_sha1` (`img_sha1`(10)), - KEY `img_media_mime` (`img_media_type`,`img_major_mime`,`img_minor_mime`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikiimagelinks` --- - -DROP TABLE IF EXISTS `lib_wikiimagelinks`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikiimagelinks` ( - `il_from` int(10) unsigned NOT NULL DEFAULT '0', - `il_from_namespace` int(11) NOT NULL DEFAULT '0', - `il_to` varbinary(255) NOT NULL DEFAULT '', - UNIQUE KEY `il_from` (`il_from`,`il_to`), - KEY `il_to` (`il_to`,`il_from`), - KEY `il_backlinks_namespace` (`il_to`,`il_from_namespace`,`il_from`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikiinterwiki` --- - -DROP TABLE IF EXISTS `lib_wikiinterwiki`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikiinterwiki` ( - `iw_prefix` varbinary(32) NOT NULL, - `iw_url` blob NOT NULL, - `iw_api` blob NOT NULL, - `iw_wikiid` varbinary(64) NOT NULL, - `iw_local` tinyint(1) NOT NULL, - `iw_trans` tinyint(4) NOT NULL DEFAULT '0', - UNIQUE KEY `iw_prefix` (`iw_prefix`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikiipblocks` --- - -DROP TABLE IF EXISTS `lib_wikiipblocks`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikiipblocks` ( - `ipb_id` int(11) NOT NULL AUTO_INCREMENT, - `ipb_address` tinyblob NOT NULL, - `ipb_user` int(10) unsigned NOT NULL DEFAULT '0', - `ipb_by` int(10) unsigned NOT NULL DEFAULT '0', - `ipb_by_text` varbinary(255) NOT NULL DEFAULT '', - `ipb_reason` varbinary(767) NOT NULL, - `ipb_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0', - `ipb_auto` tinyint(1) NOT NULL DEFAULT '0', - `ipb_anon_only` tinyint(1) NOT NULL DEFAULT '0', - `ipb_create_account` tinyint(1) NOT NULL DEFAULT '1', - `ipb_enable_autoblock` tinyint(1) NOT NULL DEFAULT '1', - `ipb_expiry` varbinary(14) NOT NULL DEFAULT '', - `ipb_range_start` tinyblob NOT NULL, - `ipb_range_end` tinyblob NOT NULL, - `ipb_deleted` tinyint(1) NOT NULL DEFAULT '0', - `ipb_block_email` tinyint(1) NOT NULL DEFAULT '0', - `ipb_allow_usertalk` tinyint(1) NOT NULL DEFAULT '0', - `ipb_parent_block_id` int(11) DEFAULT NULL, - PRIMARY KEY (`ipb_id`), - UNIQUE KEY `ipb_address` (`ipb_address`(255),`ipb_user`,`ipb_auto`,`ipb_anon_only`), - KEY `ipb_user` (`ipb_user`), - KEY `ipb_range` (`ipb_range_start`(8),`ipb_range_end`(8)), - KEY `ipb_timestamp` (`ipb_timestamp`), - KEY `ipb_expiry` (`ipb_expiry`), - KEY `ipb_parent_block_id` (`ipb_parent_block_id`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikiiwlinks` --- - -DROP TABLE IF EXISTS `lib_wikiiwlinks`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikiiwlinks` ( - `iwl_from` int(10) unsigned NOT NULL DEFAULT '0', - `iwl_prefix` varbinary(20) NOT NULL DEFAULT '', - `iwl_title` varbinary(255) NOT NULL DEFAULT '', - UNIQUE KEY `iwl_from` (`iwl_from`,`iwl_prefix`,`iwl_title`), - KEY `iwl_prefix_title_from` (`iwl_prefix`,`iwl_title`,`iwl_from`), - KEY `iwl_prefix_from_title` (`iwl_prefix`,`iwl_from`,`iwl_title`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikijob` --- - -DROP TABLE IF EXISTS `lib_wikijob`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikijob` ( - `job_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `job_cmd` varbinary(60) NOT NULL DEFAULT '', - `job_namespace` int(11) NOT NULL, - `job_title` varbinary(255) NOT NULL, - `job_timestamp` varbinary(14) DEFAULT NULL, - `job_params` blob NOT NULL, - `job_random` int(10) unsigned NOT NULL DEFAULT '0', - `job_attempts` int(10) unsigned NOT NULL DEFAULT '0', - `job_token` varbinary(32) NOT NULL DEFAULT '', - `job_token_timestamp` varbinary(14) DEFAULT NULL, - `job_sha1` varbinary(32) NOT NULL DEFAULT '', - PRIMARY KEY (`job_id`), - KEY `job_sha1` (`job_sha1`), - KEY `job_cmd_token` (`job_cmd`,`job_token`,`job_random`), - KEY `job_cmd_token_id` (`job_cmd`,`job_token`,`job_id`), - KEY `job_cmd` (`job_cmd`,`job_namespace`,`job_title`,`job_params`(128)), - KEY `job_timestamp` (`job_timestamp`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikil10n_cache` --- - -DROP TABLE IF EXISTS `lib_wikil10n_cache`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikil10n_cache` ( - `lc_lang` varbinary(32) NOT NULL, - `lc_key` varbinary(255) NOT NULL, - `lc_value` mediumblob NOT NULL, - KEY `lc_lang_key` (`lc_lang`,`lc_key`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikilanglinks` --- - -DROP TABLE IF EXISTS `lib_wikilanglinks`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikilanglinks` ( - `ll_from` int(10) unsigned NOT NULL DEFAULT '0', - `ll_lang` varbinary(20) NOT NULL DEFAULT '', - `ll_title` varbinary(255) NOT NULL DEFAULT '', - UNIQUE KEY `ll_from` (`ll_from`,`ll_lang`), - KEY `ll_lang` (`ll_lang`,`ll_title`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikilog_search` --- - -DROP TABLE IF EXISTS `lib_wikilog_search`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikilog_search` ( - `ls_field` varbinary(32) NOT NULL, - `ls_value` varbinary(255) NOT NULL, - `ls_log_id` int(10) unsigned NOT NULL DEFAULT '0', - UNIQUE KEY `ls_field_val` (`ls_field`,`ls_value`,`ls_log_id`), - KEY `ls_log_id` (`ls_log_id`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikilogging` --- - -DROP TABLE IF EXISTS `lib_wikilogging`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikilogging` ( - `log_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `log_type` varbinary(32) NOT NULL DEFAULT '', - `log_action` varbinary(32) NOT NULL DEFAULT '', - `log_timestamp` binary(14) NOT NULL DEFAULT '19700101000000', - `log_user` int(10) unsigned NOT NULL DEFAULT '0', - `log_user_text` varbinary(255) NOT NULL DEFAULT '', - `log_namespace` int(11) NOT NULL DEFAULT '0', - `log_title` varbinary(255) NOT NULL DEFAULT '', - `log_page` int(10) unsigned DEFAULT NULL, - `log_comment` varbinary(767) NOT NULL DEFAULT '', - `log_params` blob NOT NULL, - `log_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`log_id`), - KEY `type_time` (`log_type`,`log_timestamp`), - KEY `user_time` (`log_user`,`log_timestamp`), - KEY `page_time` (`log_namespace`,`log_title`,`log_timestamp`), - KEY `times` (`log_timestamp`), - KEY `log_user_type_time` (`log_user`,`log_type`,`log_timestamp`), - KEY `log_page_id_time` (`log_page`,`log_timestamp`), - KEY `type_action` (`log_type`,`log_action`,`log_timestamp`), - KEY `log_user_text_type_time` (`log_user_text`,`log_type`,`log_timestamp`), - KEY `log_user_text_time` (`log_user_text`,`log_timestamp`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikimodule_deps` --- - -DROP TABLE IF EXISTS `lib_wikimodule_deps`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikimodule_deps` ( - `md_module` varbinary(255) NOT NULL, - `md_skin` varbinary(32) NOT NULL, - `md_deps` mediumblob NOT NULL, - UNIQUE KEY `md_module_skin` (`md_module`,`md_skin`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikimsg_resource` --- - -DROP TABLE IF EXISTS `lib_wikimsg_resource`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikimsg_resource` ( - `mr_resource` varbinary(255) NOT NULL, - `mr_lang` varbinary(32) NOT NULL, - `mr_blob` mediumblob NOT NULL, - `mr_timestamp` binary(14) NOT NULL, - UNIQUE KEY `mr_resource_lang` (`mr_resource`,`mr_lang`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikimsg_resource_links` --- - -DROP TABLE IF EXISTS `lib_wikimsg_resource_links`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikimsg_resource_links` ( - `mrl_resource` varbinary(255) NOT NULL, - `mrl_message` varbinary(255) NOT NULL, - UNIQUE KEY `mrl_message_resource` (`mrl_message`,`mrl_resource`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikiobjectcache` --- - -DROP TABLE IF EXISTS `lib_wikiobjectcache`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikiobjectcache` ( - `keyname` varbinary(255) NOT NULL DEFAULT '', - `value` mediumblob, - `exptime` datetime DEFAULT NULL, - PRIMARY KEY (`keyname`), - KEY `exptime` (`exptime`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikioldimage` --- - -DROP TABLE IF EXISTS `lib_wikioldimage`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikioldimage` ( - `oi_name` varbinary(255) NOT NULL DEFAULT '', - `oi_archive_name` varbinary(255) NOT NULL DEFAULT '', - `oi_size` int(10) unsigned NOT NULL DEFAULT '0', - `oi_width` int(11) NOT NULL DEFAULT '0', - `oi_height` int(11) NOT NULL DEFAULT '0', - `oi_bits` int(11) NOT NULL DEFAULT '0', - `oi_description` varbinary(767) NOT NULL, - `oi_user` int(10) unsigned NOT NULL DEFAULT '0', - `oi_user_text` varbinary(255) NOT NULL, - `oi_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0', - `oi_metadata` mediumblob NOT NULL, - `oi_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL, - `oi_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart','chemical') NOT NULL DEFAULT 'unknown', - `oi_minor_mime` varbinary(100) NOT NULL DEFAULT 'unknown', - `oi_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0', - `oi_sha1` varbinary(32) NOT NULL DEFAULT '', - KEY `oi_usertext_timestamp` (`oi_user_text`,`oi_timestamp`), - KEY `oi_name_timestamp` (`oi_name`,`oi_timestamp`), - KEY `oi_name_archive_name` (`oi_name`,`oi_archive_name`(14)), - KEY `oi_sha1` (`oi_sha1`(10)) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikipage` --- - -DROP TABLE IF EXISTS `lib_wikipage`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikipage` ( - `page_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `page_namespace` int(11) NOT NULL, - `page_title` varbinary(255) NOT NULL, - `page_restrictions` tinyblob NOT NULL, - `page_is_redirect` tinyint(3) unsigned NOT NULL DEFAULT '0', - `page_is_new` tinyint(3) unsigned NOT NULL DEFAULT '0', - `page_random` double unsigned NOT NULL, - `page_touched` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0', - `page_links_updated` varbinary(14) DEFAULT NULL, - `page_latest` int(10) unsigned NOT NULL, - `page_len` int(10) unsigned NOT NULL, - `page_content_model` varbinary(32) DEFAULT NULL, - `page_lang` varbinary(35) DEFAULT NULL, - PRIMARY KEY (`page_id`), - UNIQUE KEY `name_title` (`page_namespace`,`page_title`), - KEY `page_random` (`page_random`), - KEY `page_len` (`page_len`), - KEY `page_redirect_namespace_len` (`page_is_redirect`,`page_namespace`,`page_len`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikipage_props` --- - -DROP TABLE IF EXISTS `lib_wikipage_props`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikipage_props` ( - `pp_page` int(11) NOT NULL, - `pp_propname` varbinary(60) NOT NULL, - `pp_value` blob NOT NULL, - `pp_sortkey` float DEFAULT NULL, - UNIQUE KEY `pp_page_propname` (`pp_page`,`pp_propname`), - UNIQUE KEY `pp_propname_page` (`pp_propname`,`pp_page`), - UNIQUE KEY `pp_propname_sortkey_page` (`pp_propname`,`pp_sortkey`,`pp_page`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikipage_restrictions` --- - -DROP TABLE IF EXISTS `lib_wikipage_restrictions`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikipage_restrictions` ( - `pr_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `pr_page` int(11) NOT NULL, - `pr_type` varbinary(60) NOT NULL, - `pr_level` varbinary(60) NOT NULL, - `pr_cascade` tinyint(4) NOT NULL, - `pr_user` int(11) DEFAULT NULL, - `pr_expiry` varbinary(14) DEFAULT NULL, - PRIMARY KEY (`pr_id`), - UNIQUE KEY `pr_pagetype` (`pr_page`,`pr_type`), - KEY `pr_typelevel` (`pr_type`,`pr_level`), - KEY `pr_level` (`pr_level`), - KEY `pr_cascade` (`pr_cascade`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikipagelinks` --- - -DROP TABLE IF EXISTS `lib_wikipagelinks`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikipagelinks` ( - `pl_from` int(10) unsigned NOT NULL DEFAULT '0', - `pl_from_namespace` int(11) NOT NULL DEFAULT '0', - `pl_namespace` int(11) NOT NULL DEFAULT '0', - `pl_title` varbinary(255) NOT NULL DEFAULT '', - UNIQUE KEY `pl_from` (`pl_from`,`pl_namespace`,`pl_title`), - KEY `pl_namespace` (`pl_namespace`,`pl_title`,`pl_from`), - KEY `pl_backlinks_namespace` (`pl_namespace`,`pl_title`,`pl_from_namespace`,`pl_from`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikiprotected_titles` --- - -DROP TABLE IF EXISTS `lib_wikiprotected_titles`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikiprotected_titles` ( - `pt_namespace` int(11) NOT NULL, - `pt_title` varbinary(255) NOT NULL, - `pt_user` int(10) unsigned NOT NULL, - `pt_reason` varbinary(767) DEFAULT NULL, - `pt_timestamp` binary(14) NOT NULL, - `pt_expiry` varbinary(14) NOT NULL DEFAULT '', - `pt_create_perm` varbinary(60) NOT NULL, - UNIQUE KEY `pt_namespace_title` (`pt_namespace`,`pt_title`), - KEY `pt_timestamp` (`pt_timestamp`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikiquerycache` --- - -DROP TABLE IF EXISTS `lib_wikiquerycache`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikiquerycache` ( - `qc_type` varbinary(32) NOT NULL, - `qc_value` int(10) unsigned NOT NULL DEFAULT '0', - `qc_namespace` int(11) NOT NULL DEFAULT '0', - `qc_title` varbinary(255) NOT NULL DEFAULT '', - KEY `qc_type` (`qc_type`,`qc_value`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikiquerycache_info` --- - -DROP TABLE IF EXISTS `lib_wikiquerycache_info`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikiquerycache_info` ( - `qci_type` varbinary(32) NOT NULL DEFAULT '', - `qci_timestamp` binary(14) NOT NULL DEFAULT '19700101000000', - UNIQUE KEY `qci_type` (`qci_type`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikiquerycachetwo` --- - -DROP TABLE IF EXISTS `lib_wikiquerycachetwo`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikiquerycachetwo` ( - `qcc_type` varbinary(32) NOT NULL, - `qcc_value` int(10) unsigned NOT NULL DEFAULT '0', - `qcc_namespace` int(11) NOT NULL DEFAULT '0', - `qcc_title` varbinary(255) NOT NULL DEFAULT '', - `qcc_namespacetwo` int(11) NOT NULL DEFAULT '0', - `qcc_titletwo` varbinary(255) NOT NULL DEFAULT '', - KEY `qcc_type` (`qcc_type`,`qcc_value`), - KEY `qcc_title` (`qcc_type`,`qcc_namespace`,`qcc_title`), - KEY `qcc_titletwo` (`qcc_type`,`qcc_namespacetwo`,`qcc_titletwo`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikirecentchanges` --- - -DROP TABLE IF EXISTS `lib_wikirecentchanges`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikirecentchanges` ( - `rc_id` int(11) NOT NULL AUTO_INCREMENT, - `rc_timestamp` varbinary(14) NOT NULL DEFAULT '', - `rc_user` int(10) unsigned NOT NULL DEFAULT '0', - `rc_user_text` varbinary(255) NOT NULL, - `rc_namespace` int(11) NOT NULL DEFAULT '0', - `rc_title` varbinary(255) NOT NULL DEFAULT '', - `rc_comment` varbinary(767) NOT NULL DEFAULT '', - `rc_minor` tinyint(3) unsigned NOT NULL DEFAULT '0', - `rc_bot` tinyint(3) unsigned NOT NULL DEFAULT '0', - `rc_new` tinyint(3) unsigned NOT NULL DEFAULT '0', - `rc_cur_id` int(10) unsigned NOT NULL DEFAULT '0', - `rc_this_oldid` int(10) unsigned NOT NULL DEFAULT '0', - `rc_last_oldid` int(10) unsigned NOT NULL DEFAULT '0', - `rc_type` tinyint(3) unsigned NOT NULL DEFAULT '0', - `rc_source` varbinary(16) NOT NULL DEFAULT '', - `rc_patrolled` tinyint(3) unsigned NOT NULL DEFAULT '0', - `rc_ip` varbinary(40) NOT NULL DEFAULT '', - `rc_old_len` int(11) DEFAULT NULL, - `rc_new_len` int(11) DEFAULT NULL, - `rc_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0', - `rc_logid` int(10) unsigned NOT NULL DEFAULT '0', - `rc_log_type` varbinary(255) DEFAULT NULL, - `rc_log_action` varbinary(255) DEFAULT NULL, - `rc_params` blob, - PRIMARY KEY (`rc_id`), - KEY `rc_timestamp` (`rc_timestamp`), - KEY `rc_namespace_title` (`rc_namespace`,`rc_title`), - KEY `rc_cur_id` (`rc_cur_id`), - KEY `new_name_timestamp` (`rc_new`,`rc_namespace`,`rc_timestamp`), - KEY `rc_ip` (`rc_ip`), - KEY `rc_ns_usertext` (`rc_namespace`,`rc_user_text`), - KEY `rc_user_text` (`rc_user_text`,`rc_timestamp`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikiredirect` --- - -DROP TABLE IF EXISTS `lib_wikiredirect`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikiredirect` ( - `rd_from` int(10) unsigned NOT NULL DEFAULT '0', - `rd_namespace` int(11) NOT NULL DEFAULT '0', - `rd_title` varbinary(255) NOT NULL DEFAULT '', - `rd_interwiki` varbinary(32) DEFAULT NULL, - `rd_fragment` varbinary(255) DEFAULT NULL, - PRIMARY KEY (`rd_from`), - KEY `rd_ns_title` (`rd_namespace`,`rd_title`,`rd_from`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikirevision` --- - -DROP TABLE IF EXISTS `lib_wikirevision`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikirevision` ( - `rev_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `rev_page` int(10) unsigned NOT NULL, - `rev_text_id` int(10) unsigned NOT NULL, - `rev_comment` varbinary(767) NOT NULL, - `rev_user` int(10) unsigned NOT NULL DEFAULT '0', - `rev_user_text` varbinary(255) NOT NULL DEFAULT '', - `rev_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0', - `rev_minor_edit` tinyint(3) unsigned NOT NULL DEFAULT '0', - `rev_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0', - `rev_len` int(10) unsigned DEFAULT NULL, - `rev_parent_id` int(10) unsigned DEFAULT NULL, - `rev_sha1` varbinary(32) NOT NULL DEFAULT '', - `rev_content_model` varbinary(32) DEFAULT NULL, - `rev_content_format` varbinary(64) DEFAULT NULL, - PRIMARY KEY (`rev_id`), - UNIQUE KEY `rev_page_id` (`rev_page`,`rev_id`), - KEY `rev_timestamp` (`rev_timestamp`), - KEY `page_timestamp` (`rev_page`,`rev_timestamp`), - KEY `user_timestamp` (`rev_user`,`rev_timestamp`), - KEY `usertext_timestamp` (`rev_user_text`,`rev_timestamp`), - KEY `page_user_timestamp` (`rev_page`,`rev_user`,`rev_timestamp`) -) ENGINE=InnoDB DEFAULT CHARSET=binary MAX_ROWS=10000000 AVG_ROW_LENGTH=1024; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikisearchindex` --- - -DROP TABLE IF EXISTS `lib_wikisearchindex`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikisearchindex` ( - `si_page` int(10) unsigned NOT NULL, - `si_title` varchar(255) NOT NULL DEFAULT '', - `si_text` mediumtext NOT NULL, - UNIQUE KEY `si_page` (`si_page`), - FULLTEXT KEY `si_title` (`si_title`), - FULLTEXT KEY `si_text` (`si_text`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikisite_identifiers` --- - -DROP TABLE IF EXISTS `lib_wikisite_identifiers`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikisite_identifiers` ( - `si_site` int(10) unsigned NOT NULL, - `si_type` varbinary(32) NOT NULL, - `si_key` varbinary(32) NOT NULL, - UNIQUE KEY `site_ids_type` (`si_type`,`si_key`), - KEY `site_ids_site` (`si_site`), - KEY `site_ids_key` (`si_key`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikisite_stats` --- - -DROP TABLE IF EXISTS `lib_wikisite_stats`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikisite_stats` ( - `ss_row_id` int(10) unsigned NOT NULL, - `ss_total_edits` bigint(20) unsigned DEFAULT '0', - `ss_good_articles` bigint(20) unsigned DEFAULT '0', - `ss_total_pages` bigint(20) DEFAULT '-1', - `ss_users` bigint(20) DEFAULT '-1', - `ss_active_users` bigint(20) DEFAULT '-1', - `ss_images` int(11) DEFAULT '0', - UNIQUE KEY `ss_row_id` (`ss_row_id`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikisites` --- - -DROP TABLE IF EXISTS `lib_wikisites`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikisites` ( - `site_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `site_global_key` varbinary(32) NOT NULL, - `site_type` varbinary(32) NOT NULL, - `site_group` varbinary(32) NOT NULL, - `site_source` varbinary(32) NOT NULL, - `site_language` varbinary(32) NOT NULL, - `site_protocol` varbinary(32) NOT NULL, - `site_domain` varbinary(255) NOT NULL, - `site_data` blob NOT NULL, - `site_forward` tinyint(1) NOT NULL, - `site_config` blob NOT NULL, - PRIMARY KEY (`site_id`), - UNIQUE KEY `sites_global_key` (`site_global_key`), - KEY `sites_type` (`site_type`), - KEY `sites_group` (`site_group`), - KEY `sites_source` (`site_source`), - KEY `sites_language` (`site_language`), - KEY `sites_protocol` (`site_protocol`), - KEY `sites_domain` (`site_domain`), - KEY `sites_forward` (`site_forward`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikitag_summary` --- - -DROP TABLE IF EXISTS `lib_wikitag_summary`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikitag_summary` ( - `ts_rc_id` int(11) DEFAULT NULL, - `ts_log_id` int(11) DEFAULT NULL, - `ts_rev_id` int(11) DEFAULT NULL, - `ts_tags` blob NOT NULL, - UNIQUE KEY `tag_summary_rc_id` (`ts_rc_id`), - UNIQUE KEY `tag_summary_log_id` (`ts_log_id`), - UNIQUE KEY `tag_summary_rev_id` (`ts_rev_id`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikitemplatelinks` --- - -DROP TABLE IF EXISTS `lib_wikitemplatelinks`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikitemplatelinks` ( - `tl_from` int(10) unsigned NOT NULL DEFAULT '0', - `tl_from_namespace` int(11) NOT NULL DEFAULT '0', - `tl_namespace` int(11) NOT NULL DEFAULT '0', - `tl_title` varbinary(255) NOT NULL DEFAULT '', - UNIQUE KEY `tl_from` (`tl_from`,`tl_namespace`,`tl_title`), - KEY `tl_namespace` (`tl_namespace`,`tl_title`,`tl_from`), - KEY `tl_backlinks_namespace` (`tl_namespace`,`tl_title`,`tl_from_namespace`,`tl_from`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikitext` --- - -DROP TABLE IF EXISTS `lib_wikitext`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikitext` ( - `old_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `old_text` mediumblob NOT NULL, - `old_flags` tinyblob NOT NULL, - PRIMARY KEY (`old_id`) -) ENGINE=InnoDB DEFAULT CHARSET=binary MAX_ROWS=10000000 AVG_ROW_LENGTH=10240; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikitranscache` --- - -DROP TABLE IF EXISTS `lib_wikitranscache`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikitranscache` ( - `tc_url` varbinary(255) NOT NULL, - `tc_contents` blob, - `tc_time` binary(14) NOT NULL, - UNIQUE KEY `tc_url_idx` (`tc_url`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikiupdatelog` --- - -DROP TABLE IF EXISTS `lib_wikiupdatelog`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikiupdatelog` ( - `ul_key` varbinary(255) NOT NULL, - `ul_value` blob, - PRIMARY KEY (`ul_key`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikiuploadstash` --- - -DROP TABLE IF EXISTS `lib_wikiuploadstash`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikiuploadstash` ( - `us_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `us_user` int(10) unsigned NOT NULL, - `us_key` varbinary(255) NOT NULL, - `us_orig_path` varbinary(255) NOT NULL, - `us_path` varbinary(255) NOT NULL, - `us_source_type` varbinary(50) DEFAULT NULL, - `us_timestamp` varbinary(14) NOT NULL, - `us_status` varbinary(50) NOT NULL, - `us_chunk_inx` int(10) unsigned DEFAULT NULL, - `us_props` blob, - `us_size` int(10) unsigned NOT NULL, - `us_sha1` varbinary(31) NOT NULL, - `us_mime` varbinary(255) DEFAULT NULL, - `us_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL, - `us_image_width` int(10) unsigned DEFAULT NULL, - `us_image_height` int(10) unsigned DEFAULT NULL, - `us_image_bits` smallint(5) unsigned DEFAULT NULL, - PRIMARY KEY (`us_id`), - UNIQUE KEY `us_key` (`us_key`), - KEY `us_user` (`us_user`), - KEY `us_timestamp` (`us_timestamp`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikiuser` --- - -DROP TABLE IF EXISTS `lib_wikiuser`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikiuser` ( - `user_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `user_name` varbinary(255) NOT NULL DEFAULT '', - `user_real_name` varbinary(255) NOT NULL DEFAULT '', - `user_password` tinyblob NOT NULL, - `user_newpassword` tinyblob NOT NULL, - `user_newpass_time` binary(14) DEFAULT NULL, - `user_email` tinyblob NOT NULL, - `user_touched` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0', - `user_token` binary(32) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0', - `user_email_authenticated` binary(14) DEFAULT NULL, - `user_email_token` binary(32) DEFAULT NULL, - `user_email_token_expires` binary(14) DEFAULT NULL, - `user_registration` binary(14) DEFAULT NULL, - `user_editcount` int(11) DEFAULT NULL, - `user_password_expires` varbinary(14) DEFAULT NULL, - PRIMARY KEY (`user_id`), - UNIQUE KEY `user_name` (`user_name`), - KEY `user_email_token` (`user_email_token`), - KEY `user_email` (`user_email`(50)) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikiuser_former_groups` --- - -DROP TABLE IF EXISTS `lib_wikiuser_former_groups`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikiuser_former_groups` ( - `ufg_user` int(10) unsigned NOT NULL DEFAULT '0', - `ufg_group` varbinary(255) NOT NULL DEFAULT '', - UNIQUE KEY `ufg_user_group` (`ufg_user`,`ufg_group`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikiuser_groups` --- - -DROP TABLE IF EXISTS `lib_wikiuser_groups`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikiuser_groups` ( - `ug_user` int(10) unsigned NOT NULL DEFAULT '0', - `ug_group` varbinary(255) NOT NULL DEFAULT '', - UNIQUE KEY `ug_user_group` (`ug_user`,`ug_group`), - KEY `ug_group` (`ug_group`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikiuser_newtalk` --- - -DROP TABLE IF EXISTS `lib_wikiuser_newtalk`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikiuser_newtalk` ( - `user_id` int(10) unsigned NOT NULL DEFAULT '0', - `user_ip` varbinary(40) NOT NULL DEFAULT '', - `user_last_timestamp` varbinary(14) DEFAULT NULL, - KEY `user_id` (`user_id`), - KEY `user_ip` (`user_ip`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikiuser_properties` --- - -DROP TABLE IF EXISTS `lib_wikiuser_properties`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikiuser_properties` ( - `up_user` int(11) NOT NULL, - `up_property` varbinary(255) NOT NULL, - `up_value` blob, - UNIQUE KEY `user_properties_user_property` (`up_user`,`up_property`), - KEY `user_properties_property` (`up_property`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikivalid_tag` --- - -DROP TABLE IF EXISTS `lib_wikivalid_tag`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikivalid_tag` ( - `vt_tag` varbinary(255) NOT NULL, - PRIMARY KEY (`vt_tag`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `lib_wikiwatchlist` --- - -DROP TABLE IF EXISTS `lib_wikiwatchlist`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `lib_wikiwatchlist` ( - `wl_user` int(10) unsigned NOT NULL, - `wl_namespace` int(11) NOT NULL DEFAULT '0', - `wl_title` varbinary(255) NOT NULL DEFAULT '', - `wl_notificationtimestamp` varbinary(14) DEFAULT NULL, - UNIQUE KEY `wl_user` (`wl_user`,`wl_namespace`,`wl_title`), - KEY `namespace_title` (`wl_namespace`,`wl_title`), - KEY `wl_user_notificationtimestamp` (`wl_user`,`wl_notificationtimestamp`) -) ENGINE=InnoDB DEFAULT CHARSET=binary; -/*!40101 SET character_set_client = @saved_cs_client */; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2015-12-03 20:20:08 diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiarchive.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiarchive.vb deleted file mode 100644 index e0cf7c8f7..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiarchive.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikicategory.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikicategory.vb deleted file mode 100644 index 2030e8080..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikicategory.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikicategorylinks.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikicategorylinks.vb deleted file mode 100644 index 52abdc3d0..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikicategorylinks.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikichange_tag.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikichange_tag.vb deleted file mode 100644 index 34dc302a8..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikichange_tag.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiexternallinks.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiexternallinks.vb deleted file mode 100644 index 79f79e2e9..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiexternallinks.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikifilearchive.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikifilearchive.vb deleted file mode 100644 index 3f06206ae..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikifilearchive.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiimage.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiimage.vb deleted file mode 100644 index c27191b8f..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiimage.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiimagelinks.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiimagelinks.vb deleted file mode 100644 index 32afa2be1..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiimagelinks.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiinterwiki.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiinterwiki.vb deleted file mode 100644 index e44a68b9e..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiinterwiki.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiipblocks.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiipblocks.vb deleted file mode 100644 index bf4835f10..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiipblocks.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiiwlinks.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiiwlinks.vb deleted file mode 100644 index 19b6f3738..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiiwlinks.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikijob.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikijob.vb deleted file mode 100644 index 7e343f8af..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikijob.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikil10n_cache.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikil10n_cache.vb deleted file mode 100644 index a68efedda..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikil10n_cache.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikilanglinks.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikilanglinks.vb deleted file mode 100644 index cb66e847b..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikilanglinks.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikilog_search.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikilog_search.vb deleted file mode 100644 index 213f843a3..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikilog_search.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikilogging.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikilogging.vb deleted file mode 100644 index 421af9060..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikilogging.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikimodule_deps.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikimodule_deps.vb deleted file mode 100644 index aec42a9a2..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikimodule_deps.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikimsg_resource.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikimsg_resource.vb deleted file mode 100644 index 4b40bf2f3..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikimsg_resource.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikimsg_resource_links.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikimsg_resource_links.vb deleted file mode 100644 index 03721427b..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikimsg_resource_links.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiobjectcache.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiobjectcache.vb deleted file mode 100644 index fae26a2df..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiobjectcache.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikioldimage.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikioldimage.vb deleted file mode 100644 index 90ac918d8..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikioldimage.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikipage.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikipage.vb deleted file mode 100644 index 6f05d2422..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikipage.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikipage_props.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikipage_props.vb deleted file mode 100644 index a4a506e77..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikipage_props.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikipage_restrictions.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikipage_restrictions.vb deleted file mode 100644 index 305361a77..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikipage_restrictions.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikipagelinks.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikipagelinks.vb deleted file mode 100644 index 33db57be0..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikipagelinks.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiprotected_titles.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiprotected_titles.vb deleted file mode 100644 index e92c09955..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiprotected_titles.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiquerycache.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiquerycache.vb deleted file mode 100644 index ee5c383f7..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiquerycache.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiquerycache_info.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiquerycache_info.vb deleted file mode 100644 index e913eff72..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiquerycache_info.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiquerycachetwo.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiquerycachetwo.vb deleted file mode 100644 index ffbd277b5..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiquerycachetwo.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikirecentchanges.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikirecentchanges.vb deleted file mode 100644 index 0e43ed3e7..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikirecentchanges.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiredirect.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiredirect.vb deleted file mode 100644 index 07630d8a1..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiredirect.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikirevision.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikirevision.vb deleted file mode 100644 index 2264202bb..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikirevision.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikisearchindex.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikisearchindex.vb deleted file mode 100644 index bce9b690e..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikisearchindex.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikisite_identifiers.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikisite_identifiers.vb deleted file mode 100644 index 431bd0e03..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikisite_identifiers.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikisite_stats.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikisite_stats.vb deleted file mode 100644 index f39bb916b..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikisite_stats.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikisites.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikisites.vb deleted file mode 100644 index c4303e653..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikisites.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikitag_summary.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikitag_summary.vb deleted file mode 100644 index 6cede894c..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikitag_summary.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikitemplatelinks.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikitemplatelinks.vb deleted file mode 100644 index 2d4a20d8a..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikitemplatelinks.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikitext.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikitext.vb deleted file mode 100644 index 671c9f4eb..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikitext.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikitranscache.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikitranscache.vb deleted file mode 100644 index 4e18aac33..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikitranscache.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiupdatelog.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiupdatelog.vb deleted file mode 100644 index 5c3cace55..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiupdatelog.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiuploadstash.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiuploadstash.vb deleted file mode 100644 index 666a25ae8..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiuploadstash.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiuser.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiuser.vb deleted file mode 100644 index ef0f6eee5..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiuser.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiuser_former_groups.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiuser_former_groups.vb deleted file mode 100644 index 48edcf164..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiuser_former_groups.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiuser_groups.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiuser_groups.vb deleted file mode 100644 index 2d64dcb75..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiuser_groups.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiuser_newtalk.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiuser_newtalk.vb deleted file mode 100644 index 3a41cb8c1..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiuser_newtalk.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiuser_properties.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiuser_properties.vb deleted file mode 100644 index 82adc04e6..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiuser_properties.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikivalid_tag.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikivalid_tag.vb deleted file mode 100644 index 0a3e1804d..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikivalid_tag.vb and /dev/null differ diff --git a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiwatchlist.vb b/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiwatchlist.vb deleted file mode 100644 index b83de94d7..000000000 Binary files a/ShoalShell.Plugins.HtmlHelpServer/Wiki/libwiki/lib_wikiwatchlist.vb and /dev/null differ diff --git a/ShoalShell.Plugins.Runtime.Environment/My Project/Application.Designer.vb b/ShoalShell.Plugins.Runtime.Environment/My Project/Application.Designer.vb deleted file mode 100644 index 88dd01c78..000000000 --- a/ShoalShell.Plugins.Runtime.Environment/My Project/Application.Designer.vb +++ /dev/null @@ -1,13 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - diff --git a/ShoalShell.Plugins.Runtime.Environment/My Project/Application.myapp b/ShoalShell.Plugins.Runtime.Environment/My Project/Application.myapp deleted file mode 100644 index 758895def..000000000 --- a/ShoalShell.Plugins.Runtime.Environment/My Project/Application.myapp +++ /dev/null @@ -1,10 +0,0 @@ - - - false - false - 0 - true - 0 - 1 - true - diff --git a/ShoalShell.Plugins.Runtime.Environment/My Project/AssemblyInfo.vb b/ShoalShell.Plugins.Runtime.Environment/My Project/AssemblyInfo.vb deleted file mode 100644 index 96e9e4cca..000000000 --- a/ShoalShell.Plugins.Runtime.Environment/My Project/AssemblyInfo.vb +++ /dev/null @@ -1,35 +0,0 @@ -Imports System -Imports System.Reflection -Imports System.Runtime.InteropServices - -' General Information about an assembly is controlled through the following -' set of attributes. Change these attribute values to modify the information -' associated with an assembly. - -' Review the values of the assembly attributes - - - - - - - - - - -'The following GUID is for the ID of the typelib if this project is exposed to COM - - -' Version information for an assembly consists of the following four values: -' -' Major Version -' Minor Version -' Build Number -' Revision -' -' You can specify all the values or you can default the Build and Revision Numbers -' by using the '*' as shown below: -' - - - diff --git a/ShoalShell.Plugins.Runtime.Environment/My Project/Resources.Designer.vb b/ShoalShell.Plugins.Runtime.Environment/My Project/Resources.Designer.vb deleted file mode 100644 index 47b49b8a6..000000000 --- a/ShoalShell.Plugins.Runtime.Environment/My Project/Resources.Designer.vb +++ /dev/null @@ -1,93 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - -Imports System - -Namespace My.Resources - - 'This class was auto-generated by the StronglyTypedResourceBuilder - 'class via a tool like ResGen or Visual Studio. - 'To add or remove a member, edit your .ResX file then rerun ResGen - 'with the /str option, or rebuild your VS project. - ''' - ''' A strongly-typed resource class, for looking up localized strings, etc. - ''' - _ - Friend Module Resources - - Private resourceMan As Global.System.Resources.ResourceManager - - Private resourceCulture As Global.System.Globalization.CultureInfo - - ''' - ''' Returns the cached ResourceManager instance used by this class. - ''' - _ - Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager - Get - If Object.ReferenceEquals(resourceMan, Nothing) Then - Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("ShoalShell.Plugins.Runtime.Environment.Resources", GetType(Resources).Assembly) - resourceMan = temp - End If - Return resourceMan - End Get - End Property - - ''' - ''' Overrides the current thread's CurrentUICulture property for all - ''' resource lookups using this strongly typed resource class. - ''' - _ - Friend Property Culture() As Global.System.Globalization.CultureInfo - Get - Return resourceCulture - End Get - Set - resourceCulture = value - End Set - End Property - - ''' - ''' Looks up a localized resource of type System.Byte[]. - ''' - Friend ReadOnly Property shl() As Byte() - Get - Dim obj As Object = ResourceManager.GetObject("shl", resourceCulture) - Return CType(obj,Byte()) - End Get - End Property - - ''' - ''' Looks up a localized resource of type System.Byte[]. - ''' - Friend ReadOnly Property Shoal() As Byte() - Get - Dim obj As Object = ResourceManager.GetObject("Shoal", resourceCulture) - Return CType(obj,Byte()) - End Get - End Property - - ''' - ''' Looks up a localized resource of type System.Byte[]. - ''' - Friend ReadOnly Property ShoalEx() As Byte() - Get - Dim obj As Object = ResourceManager.GetObject("ShoalEx", resourceCulture) - Return CType(obj,Byte()) - End Get - End Property - End Module -End Namespace diff --git a/ShoalShell.Plugins.Runtime.Environment/My Project/Resources.resx b/ShoalShell.Plugins.Runtime.Environment/My Project/Resources.resx deleted file mode 100644 index 75345c540..000000000 --- a/ShoalShell.Plugins.Runtime.Environment/My Project/Resources.resx +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - ..\Resources\shl.res_bin;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ..\Resources\Shoal.res_bin;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ..\ShoalEx\ShoalEx.res_exe;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/ShoalShell.Plugins.Runtime.Environment/My Project/Settings.Designer.vb b/ShoalShell.Plugins.Runtime.Environment/My Project/Settings.Designer.vb deleted file mode 100644 index c3449378e..000000000 --- a/ShoalShell.Plugins.Runtime.Environment/My Project/Settings.Designer.vb +++ /dev/null @@ -1,73 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - - -Namespace My - - _ - Partial Friend NotInheritable Class MySettings - Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) - -#Region "My.Settings Auto-Save Functionality" -#If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean - - Private Shared addedHandlerLockObject As New Object - - _ - Private Shared Sub AutoSaveSettings( sender As Global.System.Object, e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub -#End If -#End Region - - Public Shared ReadOnly Property [Default]() As MySettings - Get - -#If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If -#End If - Return defaultInstance - End Get - End Property - End Class -End Namespace - -Namespace My - - _ - Friend Module MySettingsProperty - - _ - Friend ReadOnly Property Settings() As Global.ShoalShell.Plugins.Runtime.Environment.My.MySettings - Get - Return Global.ShoalShell.Plugins.Runtime.Environment.My.MySettings.Default - End Get - End Property - End Module -End Namespace diff --git a/ShoalShell.Plugins.Runtime.Environment/My Project/Settings.settings b/ShoalShell.Plugins.Runtime.Environment/My Project/Settings.settings deleted file mode 100644 index 85b890b3c..000000000 --- a/ShoalShell.Plugins.Runtime.Environment/My Project/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/ShoalShell.Plugins.Runtime.Environment/Resources/Shoal.res_bin b/ShoalShell.Plugins.Runtime.Environment/Resources/Shoal.res_bin deleted file mode 100644 index 043d8d988..000000000 Binary files a/ShoalShell.Plugins.Runtime.Environment/Resources/Shoal.res_bin and /dev/null differ diff --git a/ShoalShell.Plugins.Runtime.Environment/Resources/shl.res_bin b/ShoalShell.Plugins.Runtime.Environment/Resources/shl.res_bin deleted file mode 100644 index ed1287c59..000000000 Binary files a/ShoalShell.Plugins.Runtime.Environment/Resources/shl.res_bin and /dev/null differ diff --git a/ShoalShell.Plugins.Runtime.Environment/RuntimeEnvironmentHandler.vb b/ShoalShell.Plugins.Runtime.Environment/RuntimeEnvironmentHandler.vb deleted file mode 100644 index 05be625b2..000000000 --- a/ShoalShell.Plugins.Runtime.Environment/RuntimeEnvironmentHandler.vb +++ /dev/null @@ -1,65 +0,0 @@ -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports Microsoft.VisualBasic.Scripting.ShoalShell.SPM -Imports Microsoft.Win32 - -''' -''' å‡è‹¥å°†æœ¬æ¨¡å—直接集æˆåœ¨Shoal的主程åºä¹‹ä¸­ï¼Œåˆ™åœ¨Windows 7或者更高版本的Windows之中,å‡è‹¥å¼€å¯äº†UACçš„è¯ï¼Œåˆ™ç¨‹åºæ¯ä¸€æ¬¡æ‰§è¡Œéƒ½å¿…é¡»è¦ç®¡ç†å‘˜æƒé™äº†ï¼Œæ‰€ä»¥çŽ°åœ¨å°†æ¶‰åŠåˆ°ç³»ç»Ÿåº•层的æ“作都放在一个模å—之中以é¿å…这个问题 -''' -''' -''' -<[Namespace]("Shoal.Runtime")> -Public Module RuntimeEnvironmentHandler - - Const UAC_EXCEPTION As String = "UAC is turn on on your windows, you should run Shoal As Administrator and then using this command to associate the script file!" - - - Public Function FileAssociations() As Boolean - Try - - Dim IconPath As String = FileIO.FileSystem.GetFileInfo(My.Application.Info.DirectoryPath & "/icons/shl.ico").FullName - Dim InteropPath As String = My.Application.Info.DirectoryPath & "/icons/shoalex.exe" - Dim ShoalPath As String = FileIO.FileSystem.GetFileInfo(String.Format("{0}/{1}.exe", My.Application.Info.DirectoryPath, My.Application.Info.AssemblyName)).FullName - Dim argvs As String = String.Format("""{0}"" ""{1}""", ShoalPath, IconPath) - - Call My.Resources.Shoal.FlushStream(IconPath) - Call My.Resources.ShoalEx.FlushStream(InteropPath) - Call Process.Start(InteropPath, argvs) - Call Threading.Thread.Sleep(100) - Call FileIO.FileSystem.DeleteFile(InteropPath, FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.DeletePermanently) - - Catch ex As Exception - Call App.LogException(ex) - Call Console.WriteLine(UAC_EXCEPTION) - End Try - - Return True - End Function - - - Public Function ScanPlugIns(DIR As String, Optional ext As String = "*.*") As PackageModuleDb - ext = If(String.IsNullOrEmpty(ext), "*.*", ext) - - Dim FilesForScan = FileIO.FileSystem.GetFiles(DIR, FileIO.SearchOption.SearchTopLevelOnly, ext) - Dim SPMgrDb As PackageModuleDb = PackageModuleDb.LoadDefault - - Using SMgr As New ShoalPackageMgr(SPMgrDb) - For Each File As String In FilesForScan - Call SMgr.Imports(File) - Next - End Using - - Return SPMgrDb - End Function - - Const WMIC_PATH_CMD As String = "ENVIRONMENT where ""name='path' and username=''"" set VariableValue=""%path%;{0}""" - - - Public Function SetupEnvironmentVariable() As Boolean - Dim path As String = My.Application.Info.DirectoryPath - Dim cmdl As String = String.Format(WMIC_PATH_CMD, path) - Dim Process = System.Diagnostics.Process.Start("wmic", cmdl) - Call Process.WaitForExit() - - Return Process.ExitCode = 0 - End Function -End Module diff --git a/ShoalShell.Plugins.Runtime.Environment/ShoalEx/FileEx.bas b/ShoalShell.Plugins.Runtime.Environment/ShoalEx/FileEx.bas deleted file mode 100644 index 0dffdc0d7..000000000 --- a/ShoalShell.Plugins.Runtime.Environment/ShoalEx/FileEx.bas +++ /dev/null @@ -1,73 +0,0 @@ -Attribute VB_Name = "modFileEx" - -Public Const REG_SZ As Long = 1 -Public Const REG_DWORD As Long = 4 -Public Const HKEY_CLASSES_ROOT = &H80000000 -Public Const HKEY_CURRENT_USER = &H80000001 -Public Const HKEY_LOCAL_MACHINE = &H80000002 -Public Const HKEY_USERS = &H80000003 -Public Const ERROR_NONE = 0 -Public Const ERROR_BADDB = 1 -Public Const ERROR_BADKEY = 2 -Public Const ERROR_CANTOPEN = 3 -Public Const ERROR_CANTREAD = 4 -Public Const ERROR_CANTWRITE = 5 -Public Const ERROR_OUTOFMEMORY = 6 -Public Const ERROR_INVALID_PARAMETER = 7 -Public Const ERROR_ACCESS_DENIED = 8 -Public Const ERROR_INVALID_PARAMETERS = 87 -Public Const ERROR_NO_MORE_ITEMS = 259 -Public Const KEY_ALL_ACCESS = &H3F -Public Const REG_OPTION_NON_VOLATILE = 0 - -Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long -Public Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, ByVal lpSecurityAttributes As Long, phkResult As Long, lpdwDisposition As Long) As Long -Public Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long -Public Declare Function RegSetValueExString Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpValue As String, ByVal cbData As Long) As Long -Public Declare Function RegSetValueExLong Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpValue As Long, ByVal cbData As Long) As Long - -Public Sub CreateAssociation(strAsso As String, strDescription As String, strExeName As String, strIcon As String) - Dim sPath As String - - CreateNewKey strAsso, HKEY_CLASSES_ROOT - SetKeyValue strAsso, "", strDescription, REG_SZ - - CreateNewKey strDescription & "\shell\open\command", HKEY_CLASSES_ROOT - SetKeyValue strDescription, "", strDescription, REG_SZ - sPath = strExeName & " %1" - SetKeyValue strDescription & "\shell\open\command", "", sPath, REG_SZ - - CreateNewKey strDescription & "\DefaultIcon", HKEY_CLASSES_ROOT - SetKeyValue strDescription & "\DefaultIcon", "", strIcon, REG_SZ -End Sub - -Public Function SetValueEx(ByVal hKey As Long, sValueName As String, lType As Long, vValue As Variant) As Long - Dim nValue As Long - Dim sValue As String - - Select Case lType - Case REG_SZ - sValue = vValue & Chr$(0) - SetValueEx = RegSetValueExString(hKey, sValueName, 0&, lType, sValue, Len(sValue)) - Case REG_DWORD - nValue = vValue - SetValueEx = RegSetValueExLong(hKey, sValueName, 0&, lType, nValue, 4) - End Select -End Function - -Public Sub CreateNewKey(sNewKeyName As String, lPredefinedKey As Long) - Dim hKey As Long - Dim r As Long - - r = RegCreateKeyEx(lPredefinedKey, sNewKeyName, 0&, vbNullString, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0&, hKey, r) - Call RegCloseKey(hKey) -End Sub - -Public Sub SetKeyValue(sKeyName As String, sValueName As String, vValueSetting As Variant, lValueType As Long) - Dim r As Long - Dim hKey As Long - - r = RegOpenKeyEx(HKEY_CLASSES_ROOT, sKeyName, 0, KEY_ALL_ACCESS, hKey) - r = SetValueEx(hKey, sValueName, lValueType, vValueSetting) - Call RegCloseKey(hKey) -End Sub diff --git a/ShoalShell.Plugins.Runtime.Environment/ShoalEx/ShoalEx.res_exe b/ShoalShell.Plugins.Runtime.Environment/ShoalEx/ShoalEx.res_exe deleted file mode 100644 index a67d5c9ac..000000000 Binary files a/ShoalShell.Plugins.Runtime.Environment/ShoalEx/ShoalEx.res_exe and /dev/null differ diff --git a/ShoalShell.Plugins.Runtime.Environment/ShoalEx/ShoalEx.vbp b/ShoalShell.Plugins.Runtime.Environment/ShoalEx/ShoalEx.vbp deleted file mode 100644 index 901126d49..000000000 --- a/ShoalShell.Plugins.Runtime.Environment/ShoalEx/ShoalEx.vbp +++ /dev/null @@ -1,34 +0,0 @@ -Type=Exe -Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\Windows\system32\stdole2.tlb#OLE Automation -Module=modProgram; modProgram.bas -Module=modFileEx; FileEx.bas -Startup="Sub Main" -HelpFile="" -Title="ShoalEx" -ExeName32="ShoalEx.exe" -Command32="" -Name="ShoalEx" -HelpContextID="0" -CompatibleMode="0" -MajorVer=1 -MinorVer=0 -RevisionVer=10 -AutoIncrementVer=1 -ServerSupportFiles=0 -VersionCompanyName="aaaa" -CompilationType=0 -OptimizationType=0 -FavorPentiumPro(tm)=-1 -CodeViewDebugInfo=-1 -NoAliasing=-1 -BoundsCheck=-1 -OverflowCheck=-1 -FlPointCheck=-1 -FDIVCheck=-1 -UnroundedFP=-1 -StartMode=0 -Unattended=0 -Retained=0 -ThreadPerObject=0 -MaxNumberOfThreads=1 -DebugStartupOption=0 diff --git a/ShoalShell.Plugins.Runtime.Environment/ShoalEx/ShoalEx.vbw b/ShoalShell.Plugins.Runtime.Environment/ShoalEx/ShoalEx.vbw deleted file mode 100644 index 3bd3775af..000000000 --- a/ShoalShell.Plugins.Runtime.Environment/ShoalEx/ShoalEx.vbw +++ /dev/null @@ -1,2 +0,0 @@ -modProgram = 44, 44, 1149, 775, Z -modFileEx = 22, 22, 1127, 753, diff --git a/ShoalShell.Plugins.Runtime.Environment/ShoalEx/modProgram.bas b/ShoalShell.Plugins.Runtime.Environment/ShoalEx/modProgram.bas deleted file mode 100644 index b025ddff2..000000000 --- a/ShoalShell.Plugins.Runtime.Environment/ShoalEx/modProgram.bas +++ /dev/null @@ -1,24 +0,0 @@ -Attribute VB_Name = "modProgram" -Sub Main() - - If Len(Command) = 0 Then - MsgBox "Program Argument Error!", vbCritical - Exit Sub - End If - - Dim ChunkBuffer() As String, Cmdl As String - - Cmdl = Command - ChunkBuffer = Split(Cmdl, """ """) - - Dim ProgramPath As String, IconPath As String - - ProgramPath = ChunkBuffer(0) - IconPath = ChunkBuffer(1) - - ProgramPath = Mid(ProgramPath, 2) - IconPath = Mid(IconPath, 1, Len(IconPath) - 1) - - Call CreateAssociation(".shl", "Shoal Shell Script File", ProgramPath, IconPath) - -End Sub diff --git a/ShoalShell.Plugins.Runtime.Environment/ShoalShell.Plugins.Runtime.Environment.vbproj b/ShoalShell.Plugins.Runtime.Environment/ShoalShell.Plugins.Runtime.Environment.vbproj deleted file mode 100644 index 89ee4173e..000000000 --- a/ShoalShell.Plugins.Runtime.Environment/ShoalShell.Plugins.Runtime.Environment.vbproj +++ /dev/null @@ -1,228 +0,0 @@ - - - - - Debug - AnyCPU - {4863E23A-8E58-4E10-9A77-8DBA4D4BB586} - Library - ShoalShell.Plugins.Runtime.Environment - ShoalShell.Plugins.Runtime.Environment - 512 - Windows - v4.6 - - - - true - full - true - true - ..\ShoalShell\bin\Debug\ - ShoalShell.Plugins.Runtime.Environment.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - pdbonly - false - true - true - ..\..\GCModeller\GCModeller\ - ShoalShell.Plugins.Runtime.Environment.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - On - - - Binary - - - Off - - - On - - - true - true - true - bin\x64\Debug\ - ShoalShell.Plugins.Runtime.Environment.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x64 - MinimumRecommendedRules.ruleset - - - true - ..\..\GCModeller\GCModeller-x64\ - ShoalShell.Plugins.Runtime.Environment.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - bin\Publish\ - ShoalShell.Plugins.Runtime.Environment.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - AnyCPU - MinimumRecommendedRules.ruleset - - - true - bin\x64\Publish\ - ShoalShell.Plugins.Runtime.Environment.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - true - true - bin\x86\Debug\ - ShoalShell.Plugins.Runtime.Environment.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x86 - MinimumRecommendedRules.ruleset - - - true - bin\x86\Release\ - ShoalShell.Plugins.Runtime.Environment.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - true - bin\x86\Publish\ - ShoalShell.Plugins.Runtime.Environment.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - true - bin\docs\ - ShoalShell.Plugins.Runtime.Environment.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - AnyCPU - MinimumRecommendedRules.ruleset - - - true - bin\x64\docs\ - ShoalShell.Plugins.Runtime.Environment.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - bin\x86\docs\ - ShoalShell.Plugins.Runtime.Environment.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - - True - Application.myapp - - - True - True - Resources.resx - - - True - Settings.settings - True - - - - - VbMyResourcesResXFileCodeGenerator - Resources.Designer.vb - My.Resources - Designer - - - - - MyApplicationCodeGenerator - Application.Designer.vb - - - SettingsSingleFileGenerator - My - Settings.Designer.vb - - - - - - - {fecce1fd-e1d4-49e3-a668-60bb5e7aed99} - +Microsoft.VisualBasic.Architecture.Framework - - - {a7cb16ff-75c6-4746-8449-86c121d723c4} - ShoalShell_Core.v2 - - - - - - - - \ No newline at end of file diff --git a/ShoalShell.Plugins.SQLDatabaseInterface/My Project/Application.Designer.vb b/ShoalShell.Plugins.SQLDatabaseInterface/My Project/Application.Designer.vb deleted file mode 100644 index 88dd01c78..000000000 --- a/ShoalShell.Plugins.SQLDatabaseInterface/My Project/Application.Designer.vb +++ /dev/null @@ -1,13 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - diff --git a/ShoalShell.Plugins.SQLDatabaseInterface/My Project/Application.myapp b/ShoalShell.Plugins.SQLDatabaseInterface/My Project/Application.myapp deleted file mode 100644 index 758895def..000000000 --- a/ShoalShell.Plugins.SQLDatabaseInterface/My Project/Application.myapp +++ /dev/null @@ -1,10 +0,0 @@ - - - false - false - 0 - true - 0 - 1 - true - diff --git a/ShoalShell.Plugins.SQLDatabaseInterface/My Project/AssemblyInfo.vb b/ShoalShell.Plugins.SQLDatabaseInterface/My Project/AssemblyInfo.vb deleted file mode 100644 index 3de4761bd..000000000 --- a/ShoalShell.Plugins.SQLDatabaseInterface/My Project/AssemblyInfo.vb +++ /dev/null @@ -1,35 +0,0 @@ -Imports System -Imports System.Reflection -Imports System.Runtime.InteropServices - -' General Information about an assembly is controlled through the following -' set of attributes. Change these attribute values to modify the information -' associated with an assembly. - -' Review the values of the assembly attributes - - - - - - - - - - -'The following GUID is for the ID of the typelib if this project is exposed to COM - - -' Version information for an assembly consists of the following four values: -' -' Major Version -' Minor Version -' Build Number -' Revision -' -' You can specify all the values or you can default the Build and Revision Numbers -' by using the '*' as shown below: -' - - - diff --git a/ShoalShell.Plugins.SQLDatabaseInterface/My Project/Resources.Designer.vb b/ShoalShell.Plugins.SQLDatabaseInterface/My Project/Resources.Designer.vb deleted file mode 100644 index f85e5fa7b..000000000 --- a/ShoalShell.Plugins.SQLDatabaseInterface/My Project/Resources.Designer.vb +++ /dev/null @@ -1,63 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - -Imports System - -Namespace My.Resources - - 'This class was auto-generated by the StronglyTypedResourceBuilder - 'class via a tool like ResGen or Visual Studio. - 'To add or remove a member, edit your .ResX file then rerun ResGen - 'with the /str option, or rebuild your VS project. - ''' - ''' A strongly-typed resource class, for looking up localized strings, etc. - ''' - _ - Friend Module Resources - - Private resourceMan As Global.System.Resources.ResourceManager - - Private resourceCulture As Global.System.Globalization.CultureInfo - - ''' - ''' Returns the cached ResourceManager instance used by this class. - ''' - _ - Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager - Get - If Object.ReferenceEquals(resourceMan, Nothing) Then - Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("ShoalShell.Plugins.SQLDatabaseInterface.Resources", GetType(Resources).Assembly) - resourceMan = temp - End If - Return resourceMan - End Get - End Property - - ''' - ''' Overrides the current thread's CurrentUICulture property for all - ''' resource lookups using this strongly typed resource class. - ''' - _ - Friend Property Culture() As Global.System.Globalization.CultureInfo - Get - Return resourceCulture - End Get - Set - resourceCulture = value - End Set - End Property - End Module -End Namespace diff --git a/ShoalShell.Plugins.SQLDatabaseInterface/My Project/Resources.resx b/ShoalShell.Plugins.SQLDatabaseInterface/My Project/Resources.resx deleted file mode 100644 index af7dbebba..000000000 --- a/ShoalShell.Plugins.SQLDatabaseInterface/My Project/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/ShoalShell.Plugins.SQLDatabaseInterface/My Project/Settings.Designer.vb b/ShoalShell.Plugins.SQLDatabaseInterface/My Project/Settings.Designer.vb deleted file mode 100644 index 395b1001d..000000000 --- a/ShoalShell.Plugins.SQLDatabaseInterface/My Project/Settings.Designer.vb +++ /dev/null @@ -1,73 +0,0 @@ -'------------------------------------------------------------------------------ -' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 -' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - - -Namespace My - - _ - Partial Friend NotInheritable Class MySettings - Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) - -#Region "My.Settings Auto-Save Functionality" -#If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean - - Private Shared addedHandlerLockObject As New Object - - _ - Private Shared Sub AutoSaveSettings( sender As Global.System.Object, e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub -#End If -#End Region - - Public Shared ReadOnly Property [Default]() As MySettings - Get - -#If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If -#End If - Return defaultInstance - End Get - End Property - End Class -End Namespace - -Namespace My - - _ - Friend Module MySettingsProperty - - _ - Friend ReadOnly Property Settings() As Global.ShoalShell.Plugins.SQLDatabaseInterface.My.MySettings - Get - Return Global.ShoalShell.Plugins.SQLDatabaseInterface.My.MySettings.Default - End Get - End Property - End Module -End Namespace diff --git a/ShoalShell.Plugins.SQLDatabaseInterface/My Project/Settings.settings b/ShoalShell.Plugins.SQLDatabaseInterface/My Project/Settings.settings deleted file mode 100644 index 85b890b3c..000000000 --- a/ShoalShell.Plugins.SQLDatabaseInterface/My Project/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/ShoalShell.Plugins.SQLDatabaseInterface/SQLite.vb b/ShoalShell.Plugins.SQLDatabaseInterface/SQLite.vb deleted file mode 100644 index cd90a7274..000000000 --- a/ShoalShell.Plugins.SQLDatabaseInterface/SQLite.vb +++ /dev/null @@ -1,117 +0,0 @@ -Imports Microsoft.VisualBasic.CommandLine.Reflection -Imports Microsoft.VisualBasic.DocumentFormat.Csv.Extensions -Imports Microsoft.VisualBasic.Scripting.MetaData -Imports Microsoft.VisualBasic.Scripting.ShoalShell -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime -Imports Microsoft.VisualBasic.Scripting.ShoalShell.Runtime.HybridsScripting -Imports Microsoft.VisualBasic.ComponentModel.DataSourceModel.SchemaMaps -Imports System.Data.SQLite.Linq.DataMapping.Interface -Imports System.Data.SQLite.Linq - - -<[PackageNamespace]("DBI.SQLite", - Publisher:="xie.guigang@gmail.com", - Category:=APICategories.SoftwareTools, - Url:="", - Description:="Language for query local configuration database.")> -Public Module SQLite - -#Region "Shoal shell hybrid scripting interface API" - - Dim SQLiteEngine As SQLProcedure - - ''' - ''' Gets or set the SQLite database file for the API. - ''' - ''' - ''' - ''' - - Public Property DataSource As String - Get - If SQLiteEngine Is Nothing Then - Return "" - Else - Return SQLiteEngine.URL - End If - End Get - Set(value As String) - SQLite.SQLiteEngine = SQLProcedure.CreateSQLTransaction(value) - End Set - End Property - - - - Public Function Exec(SQL As String) As Object - Dim DbReader = SQLiteEngine.Execute(SQL) - If DbReader Is Nothing Then - Return Nothing - Else - Return DbReader.DataFrame - End If - End Function - - - - Public Function InsertOrUpdate(Table As String, obj As Object) As Boolean - If Reflector.RecordExists(SQLiteEngine, obj) Then - Return Reflector.Update(SQLiteEngine, obj) - Else - Return Reflector.Insert(SQLiteEngine, obj) - End If - End Function -#End Region - - - Public Function Connect(url As String) As SQLProcedure - SQLiteEngine = SQLProcedure.CreateSQLTransaction(url) - Return SQLiteEngine - End Function - - - Public Function Exec(DBI As SQLProcedure, SQL As String) As Object - Return DBI.Execute(SQL) - End Function - - - Public Function Insert(DBI As SQLProcedure, obj As Object) As Boolean - Return Reflector.Insert(DBI, obj:=obj) - End Function - - - Public Function Delete(DBI As SQLProcedure, obj As Object) As Boolean - Return Reflector.Delete(DBI, obj) - End Function - - - Public Function CreateTable(DBI As SQLProcedure, Table As Type, Optional Delete_Exists As Boolean = False) As String - If DBI.ExistsTable(Table) Then - If Delete_Exists Then - Call DBI.DeleteTable(Table) - Else - Return "" - End If - End If - - Return DBI.CreateTableFor(Table) - End Function - - - Public Function GetTableName(Schema As Type) As String - Return DataMapping.Interface.GetTableName(type:=Schema) - End Function - - - Public Function TableExists(DBI As SQLProcedure, Table As String) As Boolean - Return DBI.ExistsTable(Table) - End Function - - - Public Function QueryTable(DBI As SQLProcedure, Schema As Type) As Object() - Dim ChunkBuffer = Reflector.Load(DBI, Schema) - Dim LQuery = (From row In ChunkBuffer Select s = row.ToString).ToArray - Call Console.WriteLine(String.Join(vbCrLf, LQuery)) - Return ChunkBuffer - End Function -End Module diff --git a/ShoalShell.Plugins.SQLDatabaseInterface/ShoalShell.Plugins.SQLDatabaseInterface.vbproj b/ShoalShell.Plugins.SQLDatabaseInterface/ShoalShell.Plugins.SQLDatabaseInterface.vbproj deleted file mode 100644 index 1d6738275..000000000 --- a/ShoalShell.Plugins.SQLDatabaseInterface/ShoalShell.Plugins.SQLDatabaseInterface.vbproj +++ /dev/null @@ -1,230 +0,0 @@ - - - - - Debug - AnyCPU - {75B2A52A-F76B-4912-AAC2-CAC4AE56A001} - Library - ShoalShell.Plugins.SQLDatabaseInterface - ShoalShell.Plugins.SQLDatabaseInterface - 512 - Windows - v4.6 - - - - true - full - true - true - ..\ShoalShell\bin\Debug\ - ShoalShell.Plugins.SQLDatabaseInterface.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - pdbonly - false - true - true - ..\..\GCModeller\GCModeller\ - ShoalShell.Plugins.SQLDatabaseInterface.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - - - On - - - Binary - - - Off - - - On - - - true - true - true - bin\x64\Debug\ - ShoalShell.Plugins.SQLDatabaseInterface.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x64 - MinimumRecommendedRules.ruleset - - - true - ..\..\GCModeller\GCModeller-x64\ - ShoalShell.Plugins.SQLDatabaseInterface.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - bin\Publish\ - ShoalShell.Plugins.SQLDatabaseInterface.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - AnyCPU - MinimumRecommendedRules.ruleset - - - true - bin\x64\Publish\ - ShoalShell.Plugins.SQLDatabaseInterface.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - true - true - bin\x86\Debug\ - ShoalShell.Plugins.SQLDatabaseInterface.xml - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - full - x86 - MinimumRecommendedRules.ruleset - - - true - bin\x86\Release\ - ShoalShell.Plugins.SQLDatabaseInterface.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - true - bin\x86\Publish\ - ShoalShell.Plugins.SQLDatabaseInterface.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - true - bin\docs\ - ShoalShell.Plugins.SQLDatabaseInterface.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - AnyCPU - MinimumRecommendedRules.ruleset - - - true - bin\x64\docs\ - ShoalShell.Plugins.SQLDatabaseInterface.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x64 - MinimumRecommendedRules.ruleset - - - true - bin\x86\docs\ - ShoalShell.Plugins.SQLDatabaseInterface.xml - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - pdbonly - x86 - MinimumRecommendedRules.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - True - Application.myapp - - - True - True - Resources.resx - - - True - Settings.settings - True - - - - - VbMyResourcesResXFileCodeGenerator - Resources.Designer.vb - My.Resources - Designer - - - - - MyApplicationCodeGenerator - Application.Designer.vb - - - SettingsSingleFileGenerator - My - Settings.Designer.vb - - - - - {ec288ffe-8fee-4e89-88c1-cd68f92f75bc} - SQLite_Interface - - - {7283c179-f852-4ead-8d8f-b82ef2cbd7db} - +VB_Tabular.DataFrame - - - {fecce1fd-e1d4-49e3-a668-60bb5e7aed99} - +Microsoft.VisualBasic.Architecture.Framework - - - {a7cb16ff-75c6-4746-8449-86c121d723c4} - ShoalShell_Core.v2 - - - - - \ No newline at end of file diff --git a/gpl.txt b/gpl.txt deleted file mode 100644 index 94a9ed024..000000000 --- a/gpl.txt +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/index.html b/index.html deleted file mode 100644 index 7d8165337..000000000 --- a/index.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - Shoal - - - - - -
    -
    - View on GitHub - -

    Shoal

    -

    Shoal Shell Language for GCModeller Virtual Cell Programming

    - -
    - Download this project as a .zip file - Download this project as a tar.gz file -
    -
    -
    - - -
    -
    -

    -Welcome to GitHub Pages.

    - -

    This automatic page generator is the easiest way to create beautiful pages for all of your projects. Author your page content here using GitHub Flavored Markdown, select a template crafted by a designer, and publish. After your page is generated, you can check out the new gh-pages branch locally. If you’re using GitHub Desktop, simply sync your repository and you’ll see the new branch.

    - -

    -Designer Templates

    - -

    We’ve crafted some handsome templates for you to use. Go ahead and click 'Continue to layouts' to browse through them. You can easily go back to edit your page before publishing. After publishing your page, you can revisit the page generator and switch to another theme. Your Page content will be preserved.

    - -

    -Creating pages manually

    - -

    If you prefer to not use the automatic generator, push a branch named gh-pages to your repository to create a page manually. In addition to supporting regular HTML content, GitHub Pages support Jekyll, a simple, blog aware static site generator. Jekyll makes it easy to create site-wide headers and footers without having to copy them across every page. It also offers intelligent blog support and other advanced templating features.

    - -

    -Authors and Contributors

    - -

    You can @mention a GitHub username to generate a link to their profile. The resulting <a> element will link to the contributor’s GitHub Profile. For example: In 2007, Chris Wanstrath (@defunkt), PJ Hyett (@pjhyett), and Tom Preston-Werner (@mojombo) founded GitHub.

    - -

    -Support or Contact

    - -

    Having trouble with Pages? Check out our documentation or contact support and we’ll help you sort it out.

    -
    -
    - - - - - - - - diff --git a/license.txt b/license.txt deleted file mode 100644 index da76ca0a9..000000000 --- a/license.txt +++ /dev/null @@ -1,12 +0,0 @@ -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . \ No newline at end of file diff --git a/params.json b/params.json deleted file mode 100644 index c75a48fd7..000000000 --- a/params.json +++ /dev/null @@ -1 +0,0 @@ -{"name":"Shoal","tagline":"Shoal Shell Language for GCModeller Virtual Cell Programming","body":"### Welcome to GitHub Pages.\r\nThis automatic page generator is the easiest way to create beautiful pages for all of your projects. Author your page content here [using GitHub Flavored Markdown](https://guides.github.com/features/mastering-markdown/), select a template crafted by a designer, and publish. After your page is generated, you can check out the new `gh-pages` branch locally. If you’re using GitHub Desktop, simply sync your repository and you’ll see the new branch.\r\n\r\n### Designer Templates\r\nWe’ve crafted some handsome templates for you to use. Go ahead and click 'Continue to layouts' to browse through them. You can easily go back to edit your page before publishing. After publishing your page, you can revisit the page generator and switch to another theme. Your Page content will be preserved.\r\n\r\n### Creating pages manually\r\nIf you prefer to not use the automatic generator, push a branch named `gh-pages` to your repository to create a page manually. In addition to supporting regular HTML content, GitHub Pages support Jekyll, a simple, blog aware static site generator. Jekyll makes it easy to create site-wide headers and footers without having to copy them across every page. It also offers intelligent blog support and other advanced templating features.\r\n\r\n### Authors and Contributors\r\nYou can @mention a GitHub username to generate a link to their profile. The resulting `` element will link to the contributor’s GitHub Profile. For example: In 2007, Chris Wanstrath (@defunkt), PJ Hyett (@pjhyett), and Tom Preston-Werner (@mojombo) founded GitHub.\r\n\r\n### Support or Contact\r\nHaving trouble with Pages? Check out our [documentation](https://help.github.com/pages) or [contact support](https://github.com/contact) and we’ll help you sort it out.\r\n","google":"","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file