Skip to content

Instantly share code, notes, and snippets.

@pinecones-sx
Last active June 15, 2019 03:53
Show Gist options
  • Save pinecones-sx/a988e31edd804882931e2d483d906f00 to your computer and use it in GitHub Desktop.
Save pinecones-sx/a988e31edd804882931e2d483d906f00 to your computer and use it in GitHub Desktop.
powershell based gui frontend for appx package uninstallation (to remove windows apps from all existing and new profiles)
<# to do:
- sort apps by name in GUI
- add check-boxes in main form to change results (see next two items)
- include programs and features apps
- include optional listing of built-in MS apps
- see if you can straighten out naming and icons for AppX apps (so it looks nicer)
#>
# Functions & libs
##################
If (-not ($env:WinFormsAssemblyLoaded)){
[void][Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')
[void][Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms')
[void][Reflection.Assembly]::LoadWithPartialName('System.Drawing')
$env:WinFormsAssemblyLoaded = $true
}
function Read-PopUpInput{
param($Message,$Title)
$capturedInput = [Microsoft.VisualBasic.Interaction]::InputBox($Message, $Title)
return $capturedInput
}
function Read-PopUpButtons{
param($Message,$Title,$ButtonType)
If (-not $ButtonType){$ButtonType = 4} #defaults to Yes/No
$capturedInput = [Microsoft.VisualBasic.Interaction]::MsgBox($Message,$ButtonType,$Title)
return $capturedInput
}
$global:logoScales = @(
'scale-100',
'scale-125',
'scale-150',
'scale-200',
'scale-400'
)
$global:badNamesStartWithFilter = 'ms-resource:*'
function Get-FriendlyAppxInfo{
param([switch]$FilterGarbage)
$return = (
Get-AppxPackage -AllUsers | <# ?{$_.Name -eq 'SpotifyAB.SpotifyMusic'} | #>
ForEach{
$thisAppx = $_
$thisManifest = $_ | Get-AppxPackageManifest
$thisLogoRoot = ''
$thisSubPath = ''
$thisLogoBaseName = ''
$thisLogo = ''
$thisLogoFiles = ''
$thisLogoFilesFinder = ''
$thisFriendlyName = $thisManifest.Package.Properties.DisplayName | Select -First 1
If ($thisFriendlyName -like $global:badNamesStartWithFilter){
$thisFriendlyName = ($thisAppx.Name | Select -First 1) -replace 'Microsoft.',''
}
# Normalize logo sub-path
If ($thisManifest.Package.Properties.logo -like '*\*'){
$thisSubPath = $thisManifest.Package.Properties.logo -replace '(.*\\).*','$1'
}
# strip extension from logo basename
If ($thisManifest.Package.Properties.logo -like '*.*'){
$thisLogoBaseName = $thisManifest.Package.Properties.logo -replace '.*\\' -replace '\..*'
}
$thisLogoRoot = Join-Path $thisAppx.InstallLocation $thisSubPath
# find a logo
$thisLogo = Get-Item (Join-Path $thisLogoRoot ($thisLogoBaseName + '.PNG')) -ErrorAction Ignore
If (-not $thisLogo){
$thisLogoFiles = Get-ChildItem $thisLogoRoot -ErrorAction Ignore | Where {$_.Extension -eq '.PNG'}
If ($thisLogoFiles){
$thisLogoFilesFinder = $thisLogoFiles | Where {$_.BaseName -like ('*' + $thisLogoBaseName + '*')}
If ($thisLogoFilesFinder){
ForEach ($scale in $global:logoScales){
$thisLogo = $thisLogoFilesFinder | Where {$_.BaseName -like ('*' + $scale + '*')}
If ($thisLogo){break}
}
If (-not $thisLogo) {$thisLogo = $thisLogoFilesFinder | Select -First 1}
}
Else{$thisLogo = $thisLogoFiles | Select -First 1}
}
}
[pscustomobject]@{
FriendlyName = $thisFriendlyName
Description = $thisManifest.Package.Properties.Description | Select -First 1
IdName = $thisManifest.Package.Applications.Application.Id | Select -First 1
AppxName = $thisAppx.Name | Select -First 1
PackageFullName = $_.PackageFullName
RootDirectory = $thisAppx.InstallLocation | Select -First 1
DisplayName = $thisManifest.Package.Applications.Application.VisualElements.DisplayName | Select -First 1
LogoRoot = $thisLogoRoot
LogoUNC = $thisLogo.FullName | Select -First 1
LogoBaseName = $thisLogoBaseName
UniqueID = (($thisAppx.Name | Select -First 1) + (-join ((48..57) + (97..122) | Get-Random -Count 32 | % {[char]$_})))
}
}
)
If ($FilterGarbage){
$return = (
$return |
Where {$_.DisplayName -notlike 'ms-resource:*'} |
Where {$_.FriendlyName -notlike 'Microsoft .Net Native Framework Package*'} |
Where {$_.FriendlyName -notlike 'Microsoft Visual C++*'}
)
}
return $return
}
function New-AppUninstallPanel {
param([ref]$TargetForm,$FilterProps)
###STUB $FilterProps is a stub to replace later to effect filtering of appxapps
$global:appxApps = Get-FriendlyAppxInfo -FilterGarbage
# scrollable panel
# https://stackoverflow.com/questions/730376/how-do-you-add-a-scrollbar-to-a-panel-control-with-many-controls-in-windows-form
$mainPanel = New-Object System.Windows.Forms.Panel
$mainPanel.Name = 'UninstallPanel'
$mainPanel.Anchor = [System.Windows.Forms.AnchorStyles]::Top
$mainPanel.Size = [System.Drawing.Size]::new(
($TargetForm.Value.ClientSize.Width - 50),
($TargetForm.Value.ClientSize.Height - 100)
)
$mainPanel.Location = [System.Drawing.Point]::new(
(25),
(25)
)
$mainPanel.AutoScroll = $true
$mainPanel.BackColor = [System.Drawing.Color]::AliceBlue
$TargetForm.Value.Controls.Add($mainPanel)
$mainPanel.BringToFront()
# Apps to display
###STUB
###need to add variable to keep track of the bottom of the last panel added, then use that to set the top of each new panel
$subPanelPlacement = 0
ForEach ($appXApp in $global:appxApps){
$subPanelAppx = New-Object System.Windows.Forms.Panel
$subPanelAppx.Anchor = [System.Windows.Forms.AnchorStyles]::Top
$subPanelAppx.Size = [System.Drawing.Size]::new($mainPanel.Width,75)
$subPanelAppx.Location = [System.Drawing.Point]::new(0,$subPanelPlacement)
$subPanelAppx.AutoScroll = $false
$subPanelAppx.BackColor = [System.Drawing.Color]::White
$subPanelAppx.Name = $appXApp.UniqueID
$subPanelAppx.Add_Click({
$findControl = 'Checkbox_' + $this.Name
$foundControl = ($this.FindForm()).Controls.Find($findControl,$true)
$foundControl[0].Checked = -not ($foundControl[0].Checked)
})
$mainPanel.Controls.Add($subPanelAppx)
# Checkbox
$subPanelAppxCheckBox = New-Object System.Windows.Forms.CheckBox
$subPanelAppxCheckBox.Location = [System.Drawing.Point]::new(
($subPanelAppx.Width - ($formMargin + 15)),(($subPanelAppx.Height - $subPanelAppxCheckBox.Height) / 2)
)
$subPanelAppxCheckBox.Name = ('Checkbox_' + $appXApp.UniqueID)
$subPanelAppx.Controls.Add($subPanelAppxCheckBox)
# Picture panel
$subPanelAppxPicture = New-Object System.Windows.Forms.PictureBox
$subPanelAppxPicture.BackColor = [System.Drawing.Color]::DodgerBlue
If ($appXApp.LogoUNC){
$subPanelAppxPicture.Image = [System.Drawing.Image]::Fromfile($appXApp.LogoUNC)
}
$subPanelAppxPicture.BorderStyle = [System.Windows.Forms.BorderStyle]::FixedSingle
$subPanelAppxPicture.SizeMode = 'StretchImage'
$subPanelAppxPicture.Width = 55
$subPanelAppxPicture.Height = 55
$subPanelAppxPicture.Location = [System.Drawing.Point]::new(
($formMargin),(($subPanelAppx.Height - $subPanelAppxPicture.Height) / 2)
)
$subPanelAppxPicture.Name = ('Picture_' + $appXApp.UniqueID)
$subPanelAppxPicture.Add_Click({
$findControl = $this.Name -replace 'Picture_','Checkbox_'
$foundControl = ($this.FindForm()).Controls.Find($findControl,$true)
$foundControl[0].Checked = -not ($foundControl[0].Checked)
})
$subPanelAppx.Controls.Add($subPanelAppxPicture)
# Name label
$subPanelAppxLabelName = New-Object System.Windows.Forms.Label
$subPanelAppxLabelName.AutoSize = $true
$subPanelAppxLabelName.Text = $appXApp.FriendlyName
$subPanelAppxLabelName.Font = [System.Drawing.Font]::new($subPanelAppxLabelName.Font,[System.Drawing.FontStyle]::Bold)
$subPanelAppxLabelName.Location = [System.Drawing.Point]::new(
($subPanelAppxPicture.Right + $formMargin),
(10)
)
$subPanelAppxLabelName.Name = ('Name_' + $appXApp.UniqueID)
$subPanelAppxLabelName.Add_Click({
$findControl = $this.Name -replace 'Name_','Checkbox_'
$foundControl = ($this.FindForm()).Controls.Find($findControl,$true)
$foundControl[0].Checked = -not ($foundControl[0].Checked)
})
$subPanelAppx.Controls.Add($subPanelAppxLabelName)
# Description label
$subPanelAppxLabelDescription = New-Object System.Windows.Forms.Label
$subPanelAppxLabelDescription.AutoSize = $true
$subPanelAppxLabelDescription.Text = $appXApp.Description
$subPanelAppxLabelDescription.Location = [System.Drawing.Point]::new(
($subPanelAppxLabelName.Left),
($subPanelAppxLabelName.Bottom + 5)
)
$subPanelAppxLabelDescription.Name = ('Description_' + $appXApp.UniqueID)
$subPanelAppxLabelDescription.Add_Click({
$findControl = $this.Name -replace 'Description_','Checkbox_'
$foundControl = ($this.FindForm()).Controls.Find($findControl,$true)
$foundControl[0].Checked = -not ($foundControl[0].Checked)
})
$subPanelAppx.Controls.Add($subPanelAppxLabelDescription)
$subPanelPlacement = $subPanelAppx.Bottom + 1
}
}
#################
## GUI SECTION ##
#################
# Main form
$formAR = New-Object System.Windows.Forms.Form
$formAR.Name = 'Form-PS-UninstallAppX'
$formAR.ClientSize = [System.Drawing.Size]::new(700,600)
$formAR.StartPosition = 'CenterScreen'
$formAR.FormBorderStyle = 'Fixed3D'
$formAR.SizeGripStyle = 'Hide'
$formAR.MaximizeBox = $false
$formAR.ShowInTaskbar = $true
$icoBinary = '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+f8pHvn/KR/5/ycf+f8mH/n/JB75/yAc+f8mJPn/W1r6/7u7/P/4+P/////////////o5/7/eHv7/x0k+v8yOfr/hYn8/+Hh/v/////////////////l5f7/hIz8/yM2+/8iN/v/g4z8/+Tk/v/////////////////////////////////////////////////////////////////////////////////////////////////29///tb78/1xx8P8mRdX/FDOx6hMlfbIFEDxeW0zEV2lV5cdpVfv/fnH8/8fC/f/5+P/////////////o6P3/f3n6/y8j+f8qHfn/KR75/ykf+f8nH/n/Jh/5/yUe+f8gHPn/JiT5/1xb+v+8vPz/+Pj/////////////6Of+/3h7+/8dI/r/Mjn6/4WJ/P/h4f7/////////////////5eX+/4SL/P8jNfr/Ijb7/4OM/P/k5f7/////////////////////////////////////////////////////////////////////////////////////////////////+Pr//7fB/P9dcvD/JkXV/xQzseoTJX2yBRA8XltMxFdpVeXHaVX7/31w/P/GwP3/9/b/////////////5ub9/354+v8vI/n/Kh35/yke+f8pH/n/Jx/5/yYf+f8lHvn/IBz5/yYk+f9bWvr/urr8//b2/////////////+bl/v93evv/HSP6/zI4+v+Eh/z/39/+/////////////////+Pj/v+Divz/IzX6/yI2+/+Ci/z/4uP+//////////////////39///4+f//9vf+//X3/v/29/7/9vf+//b3///29///9vf///b3///29///9vf///b3///3+f//9/n//+rv//+suPz/WG/w/yZF1f8VM7HqEyV9sgUQPF5eTMRXalXlx2pV+/9+cPz/xsD9//f2/////////////+bm/f9+ePr/LyP5/yod+f8qHvn/Kh/5/ygf+f8nH/n/JR75/yEc+f8nJPn/W1r6/7q6/P/29v/////////////m5f7/d3r7/x0j+v8yOPr/hIf8/9/f/v/////////////////j4/7/g4r8/yM1+v8iNvv/gov8/+Lj/v/////////////////y8v//0db+/7rB/f+0vP3/tr79/7a//f+2v/3/tr/+/7a//v+2wP7/tsH+/7bB/v+2wf7/t8P+/7jE/v+wvf7/hJf7/0Zi7/8jRNT/FjSx6hMlfbIFEDxeXkzEV2pV5cdqVfv/f3D8/8bA/f/39v/////////////m5v3/fnj6/y8j+P8rHfn/Kx75/ysf+f8pH/n/KB/5/yYe+f8iHPn/JyT5/1ta+v+6uvz/9vb/////////////5uX+/3d5+/8dIvr/Mjf6/4SH/P/f3/7/////////////////4+P+/4OK/P8jNPr/IjX7/4KL/P/i4/7/////////////////4+T+/5yl/P9kc/v/VWb7/1pq+/9aa/v/Wm37/1pt/P9abvz/Wm/8/1pw/P9acfz/WnH8/1pz/P9ac/z/V3H9/0Rj+/8sUO//IULU/xs2seoTJX2yBRA8Xl5MxFdsVeXHa1X7/39w/P/GwP3/9/b/////////////5ub9/394+v8wI/j/LB35/yse+f8rH/n/KR/5/ygf+f8nHvn/Ixz5/ygk+f9cWvr/u7r8//b2/////////////+bm/v93efv/HSH6/zI2+v+Eh/z/39/+/////////////////+Pj/v+Divz/IzT6/yI0+v+Civz/4uP+/////////////////+Hj/v+Yovz/YnH7/1Rk+/9Zafv/WWr7/1lr+/9ZbPz/WWz8/1lt/P9Zbvz/WW/8/1px/P9Ubfz/QV/8/y1S/f8iS/v/IEnv/yBC1P8cNrHqEyV9sgUQPF5eTMRXbFXlx2tV+/9/cPz/xsD9//f2/////////////+bm/f9/ePr/MCP4/ywd+f8rHvn/Kx/5/ykf+f8oH/n/Jx75/yMc+f8pJPn/XFr6/7u6/P/29v/////////////m5v7/d3n7/x0h+v8yNvr/hIf8/9/f/v/////////////////j4/7/g4r8/yM0+v8iNPr/gor8/+Lj/v/////////////////u7/7/yM3+/6+2/f+osf3/q7P9/6uz/f+rtP3/q7X9/6u1/f+rtf3/q7X9/6u2/f+uuf3/nq39/26G/P82XP3/HEn7/x9J7/8gQtT/HDax6hMlfbIFEDxeXkzEV2xV5cdrVfv/f3D8/8bA/f/39v/////////////m5v3/f3j6/zAj+P8sHfj/LB75/ywf+f8qH/n/KR/5/yce+f8jHPn/KST5/1xa+v+7uvz/9vb/////////////5ub+/3d5+/8dIfr/MjX6/4SH/P/f3/7/////////////////4+P+/4OK/P8jM/r/IjT6/4KK/P/i4/7//////////////////Pz///X1///x8f7/7/L+//Dy/v/w8v7/8PL+//Dy/v/w8v7/8PL+//Dy/v/x8v7/8/b+/9/k/v+aqv3/Rmf9/x1J+/8fSe//IELU/xw2seoTJX2yBRA8Xl5MxFdsVeXHa1X7/4Bw/P/GwP3/9/b/////////////5ub9/4B4+v8xI/j/LR34/y0e+f8tH/n/Kx/5/yof+f8oHvn/JBz5/yok+f9dWvr/u7r8//b2/////////////+bm/v93ePv/HSD6/zI1+v+Eh/z/39/+/////////////////+Pj/v+Divz/IzP6/yIz+v+Cifz/4uL+///////////////////////////////////////////////////////////////////////////////////////v8f//pbP9/0pq/f8dSPv/H0jv/yBC1P8cNrHqEyV9sgUQPF5eTMRXbFXlx2xV+/+AcPz/x8D9//f2/////////////+bm/f+AePr/MSP4/y0d+P8tHvj/LR/5/ysf+f8qH/n/KR75/yUc+f8qJPn/XVr6/7u6/P/29v/////////////m5v7/d3n7/x0g+v8yNPr/hIf8/9/f/v/////////////////j4/7/g4r8/yMy+v8iM/r/gon8/+Li/v//////////////////////////////////////////////////////////////////////////////////////8fP//6e1/f9La/3/HUj7/x9I7/8gQtT/HDax6hMlfbIFEDxeXkzEV2xV5cdsVfv/gHD8/8fA/f/39v/////////////m5v3/gHj6/zEj+P8tHfj/LR74/y0f+f8rH/n/Kh/5/yke+f8lHPn/KiT5/11a+v+7uvz/9vb/////////////5ub+/3d5+/8dIPr/MjT6/4aH/P/i4v7/////////////////5uX+/4SK/P8jMvr/IjP6/4KJ/P/i4v7//////////////////f3///j4///29/7/9vf+//b3/v/19/7/9ff+//X3/v/19/7/9ff///X3///29///+Pn//+Tp//+erf3/SGn9/x1I+/8fSO//IELU/xw2seoTJX2yBRA8Xl5MxFdsVeXHbFX7/4Bw/P/HwP3/9/b/////////////5ub9/4B4+v8xIvj/LRz4/ywd+P8sHvn/Kx75/yoe+f8oHfn/JBv5/ykj+f9dWfr/u7r8//b2/////////////+bm/v93ePv/HR/6/zAy+v+Bgvz/2Nn+//z8///7+///+fn//9zc/f9/hfv/IzH6/yIy+v+Cifz/4uL+//////////////////Ly///S1v7/vcL9/7e9/f+4v/3/ucD9/7nA/f+5wf3/ucH9/7nC/v+5wv7/ucP+/7zF/v+suP7/eI39/zte/f8eSPv/H0nv/yBC1P8cNrHqEyV9sgUQPF5eTMRXbFXlx21V+/+AcPz/x8D9//f2/////////////+bm/f9/d/r/MSH4/y0b+P8sHPj/LB35/yod+f8pHfn/KBz5/yQa+f8pIvn/XFj6/7u5/P/29v/////////////m5v3/eHj6/x8g+f8rLfr/aGr7/6yu/P/Ky/3/ycr9/8fJ/f+wsv3/aG/7/yAu+v8kMvr/gon8/+Li/v/////////////////j5P7/nKP8/2Rw+/9TYvv/WGf7/1lo+/9Zavv/WWr7/1lq+/9Za/v/WWz8/1lt/P9ab/z/U2r8/z1c/P8nT/3/HUn7/x9J7/8gQtT/HDax6hMlfbIFEDxeXkzEV2xV5cdtVfv/gXD8/8fA/f/39v/////////////l5f3/f3f6/zMk+P8wIfj/LyL4/y8j+f8vI/n/LiP5/y0j+f8pIPn/LCb5/1xY+v+6ufz/9vb+////////////5ub9/3h4+v8iIvn/IiP5/zg7+v9SVfv/XWD7/1xg+/9bYfv/Ulj7/zhB+v8cKvr/JjT6/4KJ/P/i4v7/////////////////3d7+/4OM/P84Sfv/Ijb7/yg9+/8oPvv/KUD7/ylB+/8pQvv/KUP7/ylE+/8pRfz/KUb8/yhH/P8lR/z/Ikn9/yBK+/8gSO//IELU/xw2seoTJX2yBRA8Xl5MxFdsVeXHbVX7/4Fw/P/HwP3/9/b/////////////7ez+/66o+/9/d/r/fnf6/353+v9+ePr/fnj6/314+v99ePr/e3f6/3t4+v+Wlfv/0dH+//j4/v///////////+bm/f94ePr/IyP5/xsc+f8cH/r/LjH6/0FE+v9GTPr/QUj6/y82+f8gKfr/GSb6/yY0+v+Cifz/4uL+/////////////////+jp/v+us/3/f4n8/3F+/P91gvz/dYP8/3WE/P91hfz/dYb8/3WG/P91h/z/dYj9/3WI/f92iv3/eIv9/3KI/v9YdPv/NVbv/yJD1P8ZNbHqEyV9sgUQPF5eTMRXbFXlx21V+/+BcPz/x8D9//f2//////////////r5///u7f7/5uX9/+bm/f/m5v3/5ub9/+bm/f/m5v3/5ub9/+bm/f/l5f3/6en+//Pz///9/f/////////////m5v3/eHj6/yEi+f8gIfn/OTv6/2xu+/+Ymvz/pKf8/5uf/P93e/v/R0z6/yMu+v8mM/r/goj8/+Li/v/////////////////4+f//7O3+/+bn/v/k5f7/5eb+/+Xm/v/l5v7/5ef+/+Xn/v/l5/7/5ef+/+Xn/v/l5/7/5uj+/+bo/v/a3v//oa38/1Nr8P8lRNX/FTOx6hMlfbIFEDxeXkzEV2xV5cduVfv/gXD8/8fA/f/49///////////////////////////////////////////////////////////////////////////////////////////////////5ub9/3d3+v8hIfn/MzT5/3R2+/++v/3/5+j//+/w///r7f7/09T9/5CS/P9BSfr/Kjb6/4CG/P/j4/7/////////////////////////////////////////////////////////////////////////////////////////////////9vf//7W+/P9ccfD/JkXV/xQzseoTJX2yBRA8XmFMxFduVeXHblX7/4Jw/P/Jwv3/+fn//////////////////////////////////////////////////////////////////////////////////////////////////+jo/f93d/r/JSX4/0xN+f+oqfz/7u7+///////////////////////Gx/3/Z237/zM9+v9/hfv/5OT9//////////////////////////////////////////////////////////////////////////////////////////////////j5//+3wPz/XXLw/yZF1f8UM7HqEyV9sgUQPF5hTMRXblXlx21V+/9/bPz/wrn9/+/t///4+P//9/b///f2///29v//9vb///b2///39v//9/b///f2///29v//9vb///b2///29v//9vb///b2///29v//+Pf///f3///d3P3/cXD6/ygn+P9bW/n/vr78//r6////////////////////////09T+/3Z7+/82QPr/d377/9na/f/39/7/9/j+//b3/v/29/7/9vf+//b2/v/29v7/9vb+//b3/v/29/7/9vf+//b3/v/29/7/9vf+//b3/v/29/7/9/j///f4///q7v//rLf8/1ht8P8mRNX/FTOx6hMlfbIFEDxeYUzEV25V5cdtVPv/dF/7/56Q/P+7tPz/wrz8/8C6/P/Auvz/v7r8/7+6/P++uvz/vrr8/766/P++uvz/vbr8/726/P+9uvz/vbr8/7y6/P+8uvz/vLr8/728/P+8u/z/qKf8/1hX+v8lI/j/U1L5/7Gx/P/y8v//////////////////9vb//7q7/f9gZvv/Ljf6/11k+/+kp/3/ur79/7vA/f+6vv3/ur79/7q+/f+6vv3/ur/9/7q//f+6wP3/usD9/7rB/f+6wf3/usH9/7rB/f+6wv3/usL9/7vD/v+7w/7/sbz+/4SV+/9GYO//I0PU/xYzseoTJX2yBRA8XmFMxFdvWOXHb1X7/2RM+v9kT/n/Z1j5/2lb+f9oWvn/Z1r5/2Za+f9mWvn/ZVr5/2Ra+f9jWvn/Y1r5/2Ja+f9hWvr/YVr6/2Fa+v9gWvr/X1r6/15a+v9eW/r/XVr6/1NR+f80Mvn/Hhz5/z08+f+Ghvv/zMz8/+np/v/r6/7/5+f+/83O/f+Gifv/PEL6/yIr+v81Pfr/UFf6/1pi+v9bY/r/WmP6/1pj+v9aZPv/WmX7/1pm+/9aZvv/Wmf7/1pp+/9aavv/Wmr7/1tr+/9ba/v/W2z7/1tt+/9bbvv/W2/8/1dt/f9EX/v/LE3v/yFA1P8bNbHqEyV9sgUQPF5hTMRXb1jlx3BW+/9dQ/r/Si/5/z4k+P88I/j/PCP4/zoj+P85JPj/OST4/zgk+P82JPj/NST4/zQk+P8zJPj/MiT4/zAk+f8vJPn/LiT5/ywk+f8rJPn/KyT5/yok+f8mI/n/Ix/5/x4c+f8nJvn/R0f6/3N0+/+Njvv/kJH8/4uM/P9ydfv/Rkv6/yUs+v8eKPr/ISv6/yMv+v8lMfr/JTL6/yU0+v8lNPr/JTX6/yU3+/8lOPv/JTn7/yU6+/8lPPv/JT37/yU++/8lP/v/JkH7/yZC+/8mRPv/JkX7/yZG/P8lR/3/I0b7/yBE7/8gQNT/HDax6hMlfbIFEDxeYUzEV29Y5cdwVvv/XkP6/0os+f88Hfj/ORr4/zkb+P83G/j/Nhz4/zUc+P80HPj/Mhz4/zEc+P8vHPj/Lhz4/ywc+P8rHPn/Khz5/ykc+f8nHPn/Jhz5/yQc+f8jHPn/Ihz5/yMe+f8hH/n/Hx75/yEh+f8sLfn/Njj5/zk6+v82Ofr/LDH6/yIp+v8fJ/r/Hyn6/x8q+v8eK/r/HSv6/x0t+v8dLvr/HTD6/x0x+v8dMvv/HTP7/x00+/8dNvv/HTj7/x05+/8dO/v/HTz7/x4++/8eP/v/HkH7/x5C+/8eQ/z/HkT9/x9F+/8hRe//IEDU/xw2seoTJX2yBRA8XmRMxFdvWOXHcVb7/19D+v9MLvj/PyD4/zsc+P87Hfj/Oh34/zkf+P83H/j/Nh74/zUe+P80Hvj/Mh74/zEe+P8vHvj/Lh75/y0e+f8sHvn/Kh75/yke+f8nHvn/Jh75/yUf+f8kH/n/Ih/5/yEf+f8eHvn/HR35/x0f+f8eIPr/HiL6/x4j+v8fJvr/ICj6/yAp+v8gKvr/ICz6/yAs+v8fLvr/IC/6/yAx+v8gMvr/IDP7/yA0+/8gNvv/IDj7/yA6+/8gO/v/IDv7/x88+/8gP/v/IUD7/yFC+/8hQ/v/IUT7/yFF/P8hRvv/IUXv/yBA1P8cNrHqEyV9sgUQPF5kTMRXb1jlx3FW+/9fQ/r/TC74/0Ag+P89Hfj/PB74/zoe+P85H/j/OB/4/zcf+P82H/j/NB/4/zMf+P8yH/j/MB/4/y8f+P8tH/j/LB/5/ysf+f8qH/n/KB/5/ycf+f8lH/n/JB/5/yMf+f8iH/n/Hx75/x0d+f8dHvn/Hh/6/x4h+v8fI/r/Hyb6/yAn+v8gKfr/ICr6/yAr+v8gLPr/IC76/yAv+v8gMfr/IDL6/yAz+/8gNPv/IDb7/yA3+/8gOfv/IDr7/yA7+/8gPPv/ID77/yE/+/8hQfv/IUL7/yFE+/8hRfz/IUb6/yFF7/8gP9X/HDWx6hMlfbIFEDxeZEzEV29Y5cdyVvv/YEP6/00u+P9AIPj/PB34/zwe+P87Hvj/Oh74/zke+P84H/j/Nh/4/zUf+P8zH/j/Mh/4/zAf+P8vH/j/Lh/4/y0f+f8sH/n/Kx/5/ykf+f8oH/n/Jh/5/yUf+f8jH/n/Ih/5/yAf+f8fH/n/HyD5/yAh+v8gIvr/ICP6/yAl+v8gJvr/ICj6/yAp+v8gK/r/ICz6/yAu+v8gL/r/IDD6/yAx+v8gM/v/IDT7/yA1+/8gNvv/IDj7/yA5+/8gO/v/IDz7/yA++/8hP/v/IUH7/yFC+/8hQ/v/IUT8/yFF+v8hRO//ID7V/xw1seoTJX2yBRA8XmRMxFdvWOXHclb7/2BD+v9NLvj/QCD4/z0d+P88Hvj/Ox74/zoe+P85Hvj/OB/4/zYf+P81H/j/Mx/4/zIf+P8wH/j/Lx/4/y4f+P8tH/n/LB/5/ysf+f8pH/n/KB/5/yYf+f8lH/n/Ix/5/yIf+f8gH/n/Hx/5/x8g+f8gIfr/ICL6/yAj+v8gJfr/ICb6/yAo+v8gKfr/ICv6/yAs+v8gLvr/IC/6/yAw+v8gMfr/IDP7/yA0+/8gNfv/IDb7/yA4+/8gOfv/IDv7/yA8+/8gPvv/IT/7/yFB+/8hQvv/IUP7/yFE/P8hRfr/IUTv/yA+1f8cNbHqEyV9sgUQPF5kTMRXcljlx3NW+/9hQ/r/Ti74/0Eg9/8+Hff/PR74/zse+P86Hvj/OR74/zgf+P83H/j/Nh/4/zQf+P8zH/j/MR/4/zAf+P8uH/j/LR/5/ywf+f8rH/n/KR/5/ygf+f8nH/n/Jh/5/yQf+f8jH/n/IR/5/yAf+f8fH/n/HyD5/yAi+v8gI/r/ICX6/yAm+v8gKPr/ICn6/yAq+v8gK/r/IC36/yAu+v8gMPr/IDH6/yAy+v8gM/v/IDT7/yA1+/8gN/v/IDj7/yA6+/8gO/v/ID37/yE++/8hQPv/IUH7/yFD+/8hRPz/IUT6/yFD7/8gPtX/HDWx6hMlfbIFEDxeZEzEV3JY5cdzVvv/YUP6/04u+P9BIPf/Ph33/z4e+P88Hvj/Ox74/zoe+P85H/j/OB/4/zcf+P81H/j/NB/4/zIf+P8xH/j/Lx/4/y4f+P8tH/n/LB/5/yof+f8pH/n/Jx/5/yYf+f8lH/n/JB/5/yIf+f8hH/n/Hx/5/x8g+f8gIfr/ICL6/yAk+v8gJfr/ICf6/yAo+v8gKfr/ICr6/yAs+v8gLfr/IC/6/yAw+v8gMvr/IDP7/yA0+/8gNfv/IDb7/yA4+/8gOvv/IDv7/yA8+/8gPfv/ID/7/yFA+/8hQvv/IUP8/yFE+v8hQ+//ID3V/xw0seoTJX2yBRA8XmdMxFdyWOXHdFf7/2JE+v9OLvj/QSD3/z4d9/8+Hvf/PR74/zwe+P87Hvj/Oh74/zgf+P83H/j/NR/4/zQf+P8zH/j/MR/4/zAf+P8vH/j/LR/5/ywf+f8rH/n/Kh/5/ygf+f8nH/n/JR/5/yQf+f8jH/n/Ih/5/yAf+f8fH/n/HyD5/yAh+v8gI/r/ICT6/yAm+v8gJ/r/ICn6/yAq+v8gLPr/IC36/yAu+v8gL/r/IDH6/yAy+/8gM/v/IDT7/yA2+/8gN/v/IDn7/yA6+/8gO/v/IDz7/yA++/8hQPv/IUL7/yFD/P8hQ/r/IULv/yA81f8cNLHqEyJ9sgUQPF5nUsRXdVzlx3da+/9kRfr/Ty74/0Ig9/8+Hff/Ph73/z0e+P88Hvj/Ox74/zoe+P84H/j/Nx/4/zUf+P80H/j/Mx/4/zEf+P8wH/j/Lx/4/y0f+f8sH/n/Kx/5/yof+f8oH/n/Jx/5/yUf+f8kH/n/Ix/5/yIf+f8gH/n/Hx/5/x8g+f8gIfr/ICP6/yAk+v8gJvr/ICf6/yAp+v8gKvr/ICz6/yAt+v8gLvr/IC/6/yAx+v8gMvv/IDP7/yA0+/8gNvv/IDf7/yA5+/8gOvv/IDv7/yA8+/8gPvv/IUD7/yFC+/8hQ/z/IUP6/yFC7/8gPNf/HDSz6hMifrIFEDxebFvEV35l6ceAY/z/akz6/1My+P9EIff/Px33/z8e9/89Hvj/PB74/zse+P86Hvj/OR/4/zgf+P82H/j/NR/4/zMf+P8yH/j/MB/4/y8f+P8uH/j/LR/5/ywf+f8rH/n/KR/5/ygf+f8mH/n/JR/5/yMf+f8iH/n/IR/5/yAf+f8fIPn/ICH6/yAj+v8gJPr/ICX6/yAn+v8gKPr/ICn6/yAr+v8gLPr/IC76/yAv+v8gMPr/IDH6/yAz+v8gNPv/IDX7/yA2+/8gOPv/IDr7/yA7+/8gO/v/ID37/yE/+/8hQfv/IUL8/yFD+v8hQvD/ID3Y/xw0ueoTJYKyBRA+XnJgwFWJc+fDi3H6/3dc+/9dPvj/SCb3/z8d9/8/Hff/PR34/zwd+P87Hfj/Oh34/zke+P84H/j/Nh/4/zUf+P8zH/j/Mh/4/zAf+P8vH/j/Lh/4/y0f+f8sH/n/Kx/5/ykf+f8oH/n/Jh/5/yUf+f8jH/n/Ih/5/yEf+f8gH/n/Hh/5/x8g+f8fIvn/ICP6/yAk+v8gJvr/ICf6/yAo+v8gKvr/ICv6/yAt+v8gLvr/IDD6/yAx+v8gMvr/IDP7/yA1+/8gNvv/IDf7/yA4+/8gOvv/IDv7/yA9+/8gPvv/IUD7/yFC/P8hQ/r/IULy/yA93P8bNL3oFSaFrgYOPlpwXqtJj37csJeF8/WNdvv/clb6/1Q19/9EI/f/Px/3/z4e9/89Hvj/PB74/zse+P85Hfj/OB/4/zcf+P82H/j/NB/4/zMf+P8xH/j/MB/4/y8f+P8uH/n/LB/5/ysf+f8qH/n/KR/5/ycf+f8mH/n/JB/5/yMf+f8hH/n/IB/5/x8f+f8eH/n/HiH5/yAi+v8gI/r/ICT6/yAm+v8gJ/r/ICn6/yAq+v8gLPr/IC36/yAv+v8gMPr/IDH6/yAy+v8gNPv/IDX7/yA2+/8gN/v/IDn7/yA6+/8gPPv/ID37/yE/+/8kQ/v/JUb6/yNE9v8gPeH+HDfG3hUlh6ADBi9RV019NY6BxYyllurcpZH3/pF6/f9wVPn/WDr4/08x+P9LLff/Si34/0kt+P9ILfj/Ry34/0Yu+P9FLvj/RC74/0Iu+P9BLvj/Py74/z4u+P89Lvj/PC75/zsu+f86Lvn/OS75/zgu+f82Lvn/NS75/zQu+f8zLvn/MS75/zAu+f8uLvn/Li75/y4v+f8vMPr/LzH6/y8y+v8vNPr/LzX6/y83+v8vOPr/Lzr6/y87+v8vPPr/Lz36/y8++v8vP/r/L0D7/y9B+/8vQvv/L0P7/y9G+/8vR/v/L0j7/y9I+/8wTPv/M1D7/zNR/P8uTfv/JD/p/Rk1zdIQI4OMBAASRSgoOCB5cZ5hqpzbtren9fOvnv7/lYD9/3tj+v9vV/r/aVH5/2hQ+v9oUPr/Z1D6/2ZQ+v9kUPr/ZFD6/2NQ+v9iUPr/YVD6/2BQ+v9fUPr/XlD6/11Q+v9cUPr/W1D7/1pQ+/9ZUPv/WFD7/1dQ+/9WUPv/VVD7/1RQ+/9TUPv/UVD7/1FR+/9RUfv/UVL8/1FT/P9RVPz/UVb8/1FX/P9RWPz/UVn8/1Fa/P9RW/z/UVz8/1Fd/P9RXvz/UV/8/1Fg/P9RYfz/UWH8/1Fi/P9RZPz/UWX8/1Fl/P9RZfz/UWj8/1Fp/f9MZv//PVr6/ypH6O8cNMK5CxtvcwAAADYAAAASTExnOZ2UwIW6rujUvbL0+bOk/v+gjv3/lIH8/456/P+MePz/jHj8/4t4/P+KePz/iXn8/4l5/P+Hefz/hnn8/4V5/P+Fefz/hHn8/4N5/P+Cef3/gnn9/4F5/f+Aef3/f3n9/395/f9+ef3/fXn9/3x5/f98ef3/e3n9/3p5/f95ef3/eXn9/3l6/f95e/7/eXz+/3l8/v95ff7/eX7+/3l//v95f/7/eYD+/3mB/v95gv7/eYL+/3mD/v95hP7/eYX+/3mF/v95hv7/eYj+/3mJ/v95if7/eIn+/3WH/v9wg///Ynj+/0lk8fIxStbJFiyXjAMNPFEAAAAmAAAABxMcHBt1co1Mp5/GlLix4869tPXzu638/7Si/f+tnP3/qpn8/6qZ/P+pmfz/qJn8/6ia/P+omvz/p5r8/6Sa/P+kmvz/pJr8/6Oa/P+imvz/oZr9/6Ga/f+hmv3/oJr9/5+a/f+fmv3/npr9/52a/f+cmv3/nJr9/5ua/f+bmv3/mpr9/5qa/f+amv3/mpv+/5qc/v+anP7/mp3+/5qe/v+an/7/mp/+/5qf/v+aoP7/mqH+/5qh/v+aov//mqL//5qj//+ao///mqT//5ql//+ap///mqb//5im//+Sof7/gpL1/mx97e1QY9LILkCijwsXTFoAAAoyAAAAFYCAgAIaGgAKMDA4IG9rg0ybkbaCsKjVsrKq5cusoeXPqJzlz6aY4c+mmOHPppjhz6WY4c+lmOHPpZjhz6OY4c+hmOHPo5jhz6OY4c+gmOHPoJjhz5yY4c+cmOHPnJjlz5yY5c+cmOXPnJjlz5yY5c+cmOXPm5jlz5uY5c+YmOXPmJjlz5iY5c+YmOXPmJjlz5iY5c+Ym+XPmJvlz5ib5c+YnOXPmJzlz5ic5c+YnOXPmJzlz5ic5c+YnOXPmKDmz5ig5s+YoObPmKDmz5ih5s+YoebPmKPmz5ij5s+Yo+jPkJzlz3+M3sZlcseuQ06ahh0jT1cAAAUzAAAAGiAgIAj///8BqqpVAwAAAAscHCYbV1JlNYR+oU+VirdgjYa7ZY2Du2WIgbtliIG7ZYiBu2WIgbtliIG7ZYiBu2WIgbtliIG7ZYiBu2WIgbtlhoG7ZYaBu2WGgbtlhoG7ZYaBu2WDgbtlg4G7ZYOBu2WDgbtlg4G7ZYOBu2WDgbtlgYG7ZYGBu2WBgbtlgYG7ZYGBu2WBgbtlgYG7ZYGBu2WBgbtlgYO7ZYGDu2WBg7tlgYO7ZYGGu2WBhrtlgYa7ZYGGu2WBhrtlgYa7ZYGGu2WBiLtlgYi7ZYGIu2WBiLtlgYi7ZXmBuGVpc6xfSFSJUiQoST8GBhIrAAAAGBoaGgr///8CKAAAACAAAABAAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsrAAYAAAAuDgIzahIHRIoRB0KLDwdDig8HQ4oPB0OKDwlDig8LQ4oPC0OKDwtDig8LQ4oPD0OKDw9Dig8PQ4oPD0OKERFDihESQ4oREkSKERFEihEURIoRFESKERZEihEWRIoRFkSKERZEihEURIsPEzyIBwkfbAAAAEENDQAUAAAAIBcLbIciEJPkIRKS+h4SkPobEo/6GxOQ+hsUkPobF5D6GxiQ+hsZkPobG5D6GxyQ+hsekPobH5D6GyCQ+hsikPocJZD6HCaQ+hwnkfocKZH6HCuR+hwskfocLpH6HC6R+hwukfocLpH6HC6R+hwrhvkZIGXaCw0riAAAADoNB2FMJBa92ysb2v8nHNr/Ixvb/yAb2v8fHNv/IB7b/yAh2/8gI9v/ICbb/yAo2/8gKtv/ICzc/yAv3P8gMdz/IDTc/yA23P8hOdz/ITzc/yE+3P8hQN3/IUPd/yFE3f8hRN3/IUTd/yFE3f8hRN3/IUHS/yA1pv8ZImjVBQgWXTcryIE6LPD+LiH4/yce+f8lH/r/Ih/6/yAf+v8gIPv/ICT7/yAn+/8gKfv/ICv7/yAv+/8gMfv/IDT8/yA3/P8gOfz/IDz8/yA+/P8hQvz/IUT8/yFG/f8hSv3/IUz9/yFN/f8hTf3/IU39/yFN/f8hTfv/IUbi/x0wnfUPF0l7Vk3hkVVI//8zJvv/Jx76/yYf+v8kH/r/IB/6/x8g+v8gIvv/ICb7/yAo+/8gKvv/IC77/yAw+/8gM/v/IDX8/yA4/P8gO/z/ID38/yFB/P8hQ/z/IUX9/yFI/f8hS/3/IU39/yFN/f8hTf3/IU39/yFO//8hTPf/HDq6+g8dYYZkV92PXlD//zUn+v8pHfn/Jx/5/yQf+f8hH/n/Hx/5/x8h+f8gJPr/ICf6/yAq+v8gLPr/IC/6/yAy+v8gNPv/IDf7/yA5+/8gPPv/IUD7/yFC+/8hRfz/IUf8/yFK/P8hTPz/IU38/yFN/P8hTfz/IU3+/yFM+P8cO8H5Dx1mhWZX3Y9fT///NSj6/ykd+f8oH/n/Jh/5/yIf+f8fH/n/HyD5/yAj+v8gJvr/ICn6/yAs+v8gLvr/IDH6/yAz+/8gNvv/IDn7/yA8+/8hPvv/IUL7/yFE+/8hR/z/IUn8/yFM/P8hTfz/IU38/yFN/P8hTf7/IUz4/xw7wfkPHWaFZlfdj2BP//82KPr/Kx35/ykf+f8mH/n/Ix/5/yAf+f8fIPn/ICL6/yAl+v8gKPr/ICv6/yAt+v8gMPr/IDP7/yA1+/8gOPv/IDr7/yA9+/8hQfv/IUP7/yFF+/8hR/z/IUv8/yFN/P8hTfz/IU38/yFN/v8hTPj/HDvB+Q8dZoVnV92PYE///zco+v8rHfn/Kh/5/ygf+f8kH/n/IR/5/yAf+f8gIfr/ICP6/yAn+v8gKvr/ICz6/yAv+v8gMvv/IDT7/yA2+/8gOfv/IDz7/yE/+/8hQvv/IUX7/yFH/P8hSfz/IU38/yFN/P8hTfz/IU3+/yFM+P8cO8H5Dx1mhWdX3Y9hT///Nyf5/yob+f8qHvn/KR/5/yUf+f8jH/n/IB/5/x8g+f8eIfr/HiT6/x8n+v8gKvr/Hy36/x4u+v8eMvr/IDX7/yA5+/8eOfv/Hjz7/x9A+/8fQ/v/H0X8/x9H/P8fSvz/H0z8/x9M/P8fTP7/IEz4/xw7wfkPHWaFaVfdj2FO//81JPn/KRr4/ykc+f8qH/n/Jh/5/yQf+f8hH/n/Hh75/xwd+f8cIPr/HSX6/yAp+v8dKfr/HSr6/xwu+v8eM/v/Hjb7/xw1+/8cOPv/HTv7/x09+/8dQPz/HUL8/x1G/P8dSPz/HUj8/x1I/v8eSfj/HDvB+Q8dZoVkUt2PbVz//52W/P+4tPv/fXb6/ycc+f8nHvn/JR/5/x4b+f8yMvn/kpL7/7W2/f91ePv/ICj6/3l++/+0t/3/pKj8/ztM+/87Tfv/pKv8/6+1/f+stP3/rLX9/6y2/f+stv3/rLf9/6y4/f+uuf3/q7f//2B5+f8aOcH5DRtmhWBO3Y93Z///5OL///////+2svz/Jxz5/ygd+f8mH/n/HRn5/0JB+f/g4P3//////6+w/f8hKPr/trj9///////9/P7/T1z7/09e+//9/P7/////////////////////////////////////////////////j575/xg3wfkMG2aFYk7dj3hm///e2////////7Gt/P8oHPn/KR35/ycf+f8eGfn/QkD5/9nZ/f//////qqv9/yEn+v+xsv3///////X1//9NWvv/TVz7//X1/v//////7O7+/9HW/f/Q1v3/0df+/9HY/v/R2P7/09r+/9Tb//90ifj/GTjA+QwbZoViTt2PeGb//93a////////sKz7/ykc+P8qHfn/KB/5/x8Z+f9CQPn/2Nj9//////+pqv3/ISb6/7Cx/f//////9PT//01Z+/9NW/v/9PT+//////+9w/3/WWn7/1do+/9ZbPv/WW38/1lv/P9Zcfz/SWb+/y1T+P8bO8H5DR1mhWRO3Y95Zv//3dr///////+wrPv/Khz4/ysd+f8pH/n/IBn5/0NA+f/Y2P3//////6mq/f8hJfr/sLH9///////09P//TVn7/01a+//09P///////+jq///Jzv3/yc79/8nP/f/J0P7/y9L+/8XN/f9def7/GEX4/xw7wfkPHWaFZE7dj3lm///d2v///////7Cs+/8rHPj/LB35/yof+f8hGfn/RED5/9jY/f//////qan9/yEl+v+xsv3///////b2//9OWfv/TVn7//Tz/////////////////////////////////////////////3yT/v8ZRfj/GzvB+Q8dZoVkTt2Pemb//97a////////sKz7/yoa+P8qG/j/Kh35/yAX+f9DP/n/2Nj9//////+pqf3/ISP6/7Kz/f//////9/b+/05Y+v9NWPv/9PT////////t7v7/1tn+/9XZ/v/V2v7/1dv+/9fc/v/S2P7/ZYD+/xpF+P8cO8H5Dx1mhWZO3Y96Zv//3tr///////+uqfv/KBf4/yga+P8oHPn/Hxb5/0A7+f/X1v3//////6ur/P8eIPn/YmT7/5GT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/////////////////////////v7//01m5f8DGoGcXEbnp6yh////////lY/7/yAS+P8nHfn/GxX5/4yL+///////hIb8/1hc+///////1tj+/zRE+//T1v7//////6mx/f+DkPz/iZf8/4mY/f+LnP3/gJb//zNT5f8NIoGcXUbnp6yh////////lY/7/yES+P8pHfn/HBX5/42L+///////hIb8/1hb+///////1df+/zRD+v/S1f7//////7/F/v+lrf3/qbP9/6q1/f+os/3/RGX//xg/5P8UJoGcXUbnp62h////////lo/7/yER+P8pHPn/HRT5/42L+///////hIT8/1td+///////3N7+/zRC+v/Q0/7/////////////////////////////////aYX//xU85P8UJoGcX0bnp66h////////j4j7/xYE+P8eEPn/Egf5/4aE+///////hof7/0dJ+v/Nzv7/p6r8/zA9+v/T1v7//////6Kq/f94hPz/foz8/4CP/P99j/3/NFn//xlA5f8UJ4GcX0bnp66h////////ycX9/4+I+/+Ujvv/jYn7/8PC/f//////jI37/xwe+f9pbPv/Uln7/yo2+v/X2P7//////6iv/f9/i/z/hpL8/4aU/P+Il/3/gpb//zVU5f8NIoGcX0Xnp7Gj////////////////////////////////////////iIj7/2lp+//9/f//6+z+/1lf+//S1f7///////////////////////////////////7//01l5f8DGoGcZk/op4Bq//+WjPv/lYv7/5OL+/+Si/v/kYv7/4+L+/+Rj/v/S0n6/29u+//y8v//2dn+/0hO+/9udfv/jpX8/4uT/P+Llfz/i5f8/4yY/P+OnP3/gpT//zNQ5f8NIoGcb1nop1c5//8wEvf/LxT4/ywV+P8oFfj/JRX4/yEV+f8dFfn/HRn5/yUl+f9CQ/r/Nzv7/x0l+v8YJPr/Fif6/xYq+v8WLvv/FjL7/xY1+/8XOfv/GD7//x9B5f8UJ4Gcb1nop10+//86G/j/OR34/zYe+P8yHvj/Lh74/yse+f8nHvn/JR/5/x8d+f8XGPn/Gh76/yAn+v8fK/r/Hy76/x8x+v8fNfv/Hzn7/x88+/8gQPv/IEX//yFC5f8UJ4Gcb1fop149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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
$icoInMemory = [System.Drawing.Icon]::new([System.IO.MemoryStream]::new([Convert]::FromBase64String($icoBinary)))
Remove-Item Variable:\icoBinary
$formAR.Icon = $icoInMemory
Remove-Item Variable:\icoInMemory
$formAR.Text = 'Uninstall Appx Applications'
<# .bounds #>
$formMargin = 20
$hiddenMargin = 5
###STUB
# need to create "loading apps" label to hide under main uninstall panel
$loadingPanel = New-Object System.Windows.Forms.Panel
$loadingPanel.Name = 'loadingPanel'
$loadingPanel.Anchor = [System.Windows.Forms.AnchorStyles]::Top
$loadingPanel.Size = [System.Drawing.Size]::new(
($formAR.ClientSize.Width - 50),
($formAR.ClientSize.Height - 100)
)
$loadingPanel.Location = [System.Drawing.Point]::new(25,25)
$loadingPanel.AutoScroll = $true
$loadingPanel.BackColor = [System.Drawing.Color]::AliceBlue
$formAR.Controls.Add($loadingPanel)
# STILL NEED TO ADD LABEL
$loadingPanelLabel = New-Object System.Windows.Forms.Label
$loadingPanelLabel.AutoSize = $true
$loadingPanelLabel.Name = 'LoadingPanelLabel'
$loadingPanelLabel.Text = 'Loading installed apps...'
$loadingPanelLabel.Font = [System.Drawing.Font]::new($loadingPanelLabel.Font,[System.Drawing.FontStyle]::Bold)
$loadingPanelLabel.Location = [System.Drawing.Point]::new(
(($loadingPanel.ClientSize.Width / 2) - ($loadingPanelLabel.Width / 2)),
(($loadingPanel.ClientSize.Height / 2) - ($loadingPanelLabel.Height / 2))
)
$loadingPanel.Controls.Add($loadingPanelLabel)
### STILL NEED TO MAKE LABEL FONT BIGGER!
###endstub
# Create main panel
New-AppUninstallPanel ([ref]$formAR)
#buttons at the bottom
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Text = 'Uninstall'
#$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$OKButton.Size = [System.Drawing.Size]::new(
($OKButton.Width + 20),
($OKButton.Height + 10)
)
$OKButton.Location = [System.Drawing.Point]::new(
((($formAR.ClientSize.Width / 2) - $OKButton.Width) / 2),
(((($formAR.ClientSize.Height - $loadingPanel.Bottom) - $OKButton.Height) / 2) + $loadingPanel.Bottom)
)
$OKButton.Add_Click({
$checkedBoxes = (
$formAR.Controls.Find('UninstallPanel',$true).Controls |
ForEach {$_.Controls} |
Where{$_.Checked} |
Select -ExpandProperty Name |
ForEach{$_ -replace 'Checkbox_'}
)
$selectedAppXs = $global:appxApps | Where {$checkedBoxes -contains $_.UniqueID}
$nl = [System.Environment]::NewLine
$uninstallConfirmMessage = 'Okay to uninstall the following?:' + $nl + $nl + ($selectedAppXs.FriendlyName -join $nl)
$uninstallYes = (Read-PopUpButtons -Message $uninstallConfirmMessage -Title 'OK to uninstall?') -eq 'Yes'
If ($uninstallYes){
$appxPackagesForRemoval = Get-AppxPackage -AllUsers | Where {$selectedAppXs.PackageFullName -contains $_.PackageFullName}
$appxProvisionedPackagesForRemoval = Get-AppxProvisionedPackage -Online | Where {$selectedAppXs.PackageFullName -contains $_.PackageName}
If ($appxPackagesForRemoval){$appxPackagesForRemoval | Remove-AppxPackage -AllUsers -Confirm:$false}
If ($appxProvisionedPackagesForRemoval){$appxProvisionedPackagesForRemoval | Remove-AppxProvisionedPackage -Online -AllUsers}
# remove & rebuild main uninstall panel
$foundControl = $formAR.Controls | Where {$_.Name -eq 'UninstallPanel'}
$formAR.Controls.Remove($foundControl)
$foundControl.Dispose()
New-AppUninstallPanel ([ref]$formAR)
}
})
$formAR.Controls.Add($OKButton)
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Text = 'Cancel'
$CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$CancelButton.Size = [System.Drawing.Size]::new(
($CancelButton.Width + 20),
($CancelButton.Height + 10)
)
$CancelButton.Location = [System.Drawing.Point]::new(
(((($formAR.ClientSize.Width / 2) - $CancelButton.Width) / 2) + ($formAR.ClientSize.Width / 2)),
(((($formAR.ClientSize.Height - $loadingPanel.Bottom) - $CancelButton.Height) / 2) + $loadingPanel.Bottom)
)
$formAR.CancelButton = $CancelButton
$formAR.Controls.Add($CancelButton)
# show form
$formAR.BringToFront()
$formAR.ShowDialog()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment