first commit

This commit is contained in:
Delido 2024-07-26 19:37:06 +02:00
commit a78bffee63
46 changed files with 71564 additions and 0 deletions

6
.gitignore vendored Normal file
View File

@ -0,0 +1,6 @@
!.gitignore
sqlite/*
log/*
tmp/*
export/*
config.ini

24
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,24 @@
{
// Verwendet IntelliSense zum Ermitteln möglicher Attribute.
// Zeigen Sie auf vorhandene Attribute, um die zugehörigen Beschreibungen anzuzeigen.
// Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "PowerShell",
"request": "launch",
"name": "PowerShell Launch Current File",
"script": "${file}",
"args": [],
"cwd": "${file}"
},
{
"type": "PowerShell",
"request": "launch",
"name": "PowerShell Launch Current File",
"script": "${file}",
"args": [],
"cwd": "${file}"
}
]
}

BIN
ews/EwsManagedApi.msi Normal file

Binary file not shown.

View File

@ -0,0 +1,145 @@
# Active Directory Modul laden
Import-Module ActiveDirectory
function SYNC-ADUser {
[CmdletBinding()]
param(
[Parameter(Position = 1, Mandatory = $true)]
$USERNAME,
[Parameter(Position = 2, Mandatory = $true)]
$Position,
[Parameter(Position = 3, Mandatory = $true)]
$Abteilung,
[Parameter(Position = 4, Mandatory = $true)]
$Tel,
[Parameter(Position = 5, Mandatory = $true)]
$Fax,
[Parameter(Position = 6, Mandatory = $false)]
$Manager,
[Parameter(Position = 7, Mandatory = $true)]
$Mobile,
[Parameter(Position = 8, Mandatory = $true)]
$HomeMobile
)
Begin {
Write-Verbose "Start SYNC-ADUser"
}
Process {
try {
$ADUSER = Get-AdUser $USERNAME -Properties Title, telephoneNumber, SamAccountName, OfficePhone, Manager, facsimileTelephoneNumber, Department, mehrkanalHomemobile, mobile, ipphone
if ($?) {
if ($ADUSER.Enabled -eq $true) {
if ($ADUSER.telephoneNumber -ne $Tel.trim()) {
if ($Tel.trim() -eq "") {
Set-ADuser -identity $USERNAME -Clear 'telephoneNumber'
}
else {
Set-ADuser -identity $USERNAME -Replace @{'telephoneNumber' = $Tel.trim()}
}
Write-Log -Message "$($USERNAME): Tel angepasst $($Tel.trim())" -Level Warn
}
if ($null -eq $ADUSER.ipphone) {
if ( $Tel -match "020127303-") {
$IPPHONE = $tel.Replace("020127303-", "")
Write-Log -Message "$($USERNAME): IPPhone angepasst $($IPPHONE.trim())" -Level Warn
Set-ADuser -identity $USERNAME -Replace @{'ipphone' = $IPPHONE.trim()}
}elseif ( $Tel -match "0201-27303-") {
$IPPHONE = $tel.Replace("0201-27303-", "")
Write-Log -Message "$($USERNAME): IPPhone angepasst $($IPPHONE.trim())" -Level Warn
Set-ADuser -identity $USERNAME -Replace @{'ipphone' = $IPPHONE.trim()}
}elseif ( $Tel -match "0201 27303-") {
$IPPHONE = $tel.Replace("0201 27303-", "")
Write-Log -Message "$($USERNAME): IPPhone angepasst $($IPPHONE.trim())" -Level Warn
Set-ADuser -identity $USERNAME -Replace @{'ipphone' = $IPPHONE.trim()}
}elseif ( $Tel -match "0201273034") {
$IPPHONE = $tel.Replace("020127303", "")
Write-Log -Message "$($USERNAME): IPPhone angepasst $($IPPHONE.trim())" -Level Warn
Set-ADuser -identity $USERNAME -Replace @{'ipphone' = $IPPHONE.trim()}
}
Write-Log -Message "$($USERNAME): IP-Phone angepasst $($Tel.trim())" -Level Warn
}
if ($ADUSER.facsimileTelephoneNumber -ne $Fax.trim()) {
if ($Fax.trim() -eq "") {
Set-ADuser -identity $USERNAME -Clear 'facsimileTelephoneNumber'
}
else {
Set-ADuser -identity $USERNAME -Replace @{'facsimileTelephoneNumber' = $Fax.trim()}
}
Write-Log -Message "$($USERNAME): Fax angepasst $($Fax.trim())" -Level Warn
}
if ($ADUSER.department -ne $Abteilung.trim()) {
if ($Abteilung.trim() -eq "") {
Set-ADuser -identity $USERNAME -Clear 'department'
}
else {
Set-ADuser -identity $USERNAME -Replace @{'department' = $Abteilung.trim()}
}
Write-Log -Message "$($USERNAME): Abteilung angepasst $($Abteilung.trim())" -Level Warn
}
if ($ADUSER.Title -ne $Position.trim()) {
if ($Position.trim() -eq "") {
Set-ADuser -identity $USERNAME -Clear 'Title'
Write-Log -Message "$($USERNAME): Position entfernt" -Level Warn
}
else {
Set-ADuser -identity $USERNAME -Replace @{'Title' = $Position.trim()}
Write-Log -Message "$($USERNAME): Position angepasst $($Position.trim())" -Level Warn
}
}
if ($MANAGER -ne $null) {
$GETCURMANAGER = (Get-ADUser $USERNAME -properties manager).manager
if ( $GETCURMANAGER -ne $null ){
$CURRENTMANAGER = $(Get-ADUser (Get-ADUser $USERNAME -properties manager).manager -ErrorAction SilentlyContinue).UserPrincipalName
}else{
$CURRENTMANAGER = ""
}
if ($CURRENTMANAGER -ne $MANAGER) {
$NEWMANAGERDN = $(Get-ADUser -filter { UserPrincipalName -eq $Manager }).distinguishedName
Set-ADuser -identity $USERNAME -Replace @{'Manager' = $NEWMANAGERDN}
Write-Log -Message "$($USERNAME): MANAGER angepasst $($NEWMANAGERDN)" -Level Warn
}
}
else {
Write-Log -Message "$($USERNAME): Kein MANAGER vorhanden" -Level Info
}
if ($ADUSER.mobile -ne $Mobile.trim()) {
if ($Mobile.trim() -eq "") {
Set-ADuser -identity $USERNAME -Clear 'mobile'
Write-Log -Message "$($USERNAME): Kein mobile vorhanden" -Level Info
}
else {
Set-ADuser -identity $USERNAME -Replace @{'mobile' = $Mobile.trim()}
Write-Log -Message "$($USERNAME): Mobile angepasst $($Mobile.trim())" -Level Warn
}
}
if ($ADUSER.mehrkanalHomemobile -ne $HomeMobile.trim()) {
if ( [string]$ADUSER.mehrkanalHomemobile -ne [string]$HomeMobile.trim()) {
if ($HomeMobile.trim() -eq "") {
Set-ADuser -identity $USERNAME -Clear 'mehrkanalHomemobile'
}
else {
Set-ADuser -identity $USERNAME -Replace @{'mehrkanalHomemobile' = $HomeMobile.trim()}
}
Write-Log -Message "$($USERNAME): HomeMobile angepasst $($HomeMobile.trim())" -Level Warn
}
}
}
#echo "$($USERNAME);$($ADUSER.telephoneNumber);$($Tel.trim());$($ADUSER.facsimileTelephoneNumber);$($Fax.trim());$($ADUSER.department);$($Abteilung.trim());$($ADUSER.Title);$($Position.trim());$($CURRENTMANAGER);$($Manager);$($ADUSER.mobile);$($Mobile.trim());$($ADUSER.mehrkanalHomemobile);$($HomeMobile.trim())"
# Return $true
}
}
catch {
Write-Log -Message "Error: $($_.Exception.Message) - SYNC-ADUser - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
Return $false
}
}
End {
Write-Verbose "Stop SYNC-ADUser"
}
}

View File

@ -0,0 +1,374 @@
function Create-ExMsalToken {
$msalParams = @{
ClientId = '#TOREPLACE#'
TenantId = '#TOREPLACE#'
ClientSecret = ('#TOREPLACE#' | ConvertTo-SecureString -AsPlainText -Force)
Scopes = "https://outlook.office.com/.default"
}
$script:TOKEN = Get-MsalToken @msalParams
$TOKENTEST = $TOKEN
#Write-Host "neuer Token - Expire $($token.ExpiresOn.LocalDatetime) Check $($(Get-Date).AddMinutes(-5))"
Return
}
function Get-ExMsalToken {
if($TOKEN -ne "") {
$DatePatternEX = "MM/dd/yyyy HH:mm:ss"
if ($( Get-Date ) -gt [datetime]::ParseExact($token.ExpiresOn.LocalDatetime, $DatePatternEX, $null).AddMinutes(-5)) {
$msalParams = @{
ClientId = '#TOREPLACE#'
TenantId = '#TOREPLACE#'
ClientSecret = ('#TOREPLACE#' | ConvertTo-SecureString -AsPlainText -Force)
Scopes = "https://outlook.office.com/.default"
}
Write-Host "refresh Token - Expire $($token.ExpiresOn.LocalDatetime) Check $(Get-Date)"
$script:TOKEN = Get-MsalToken @msalParams
Return $TOKEN
} else {
Write-Host "Alter Token - Expire $($token.ExpiresOn.LocalDatetime) Check $(Get-Date)"
Return $TOKEN
}
}else {
$msalParams = @{
ClientId = '#TOREPLACE#'
TenantId = '#TOREPLACE#'
ClientSecret = ('#TOREPLACE#' | ConvertTo-SecureString -AsPlainText -Force)
Scopes = "https://outlook.office.com/.default"
}
$script:TOKEN = Get-MsalToken @msalParams
Write-Host "neuer Token - Expire $($token.ExpiresOn.LocalDatetime) Check $(Get-Date)"
Return $TOKEN
}
}
function New-CalendarItem {
[CmdletBinding()]
param(
[Parameter(Position = 1, Mandatory = $true)]
$Subject,
[Parameter(Position = 2, Mandatory = $true)]
$Body,
[Parameter(Position = 3, Mandatory = $true)]
$Start,
[Parameter(Position = 4, Mandatory = $true)]
$End,
[Parameter(Position = 5, Mandatory = $false)]
$RequiredAttendees,
[Parameter(Position = 6, Mandatory = $false)]
$OptionalAttendees,
[Parameter(Position = 7, Mandatory = $false)]
$Location,
[Parameter(Position = 8, Mandatory = $false)]
$Impersonate,
[Parameter(Position = 9, Mandatory = $false)]
$AdminUser,
[Parameter(Position = 10, Mandatory = $false)]
$FreeBusyStatus = "Busy"
)
Begin {
Write-Verbose "New-CalendarItem"
}
Process {
try {
# Wenn der Server kein EWS / Exchange installiert hat, muss EwsManageApi.msi installiert werden....
Add-Type -Path "$($ScriptDir)\modules\ews\Microsoft.Exchange.WebServices.dll"
$Service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService -ArgumentList 'Exchange2013_SP1'
$Service.Url = 'https://outlook.office365.com/EWS/Exchange.asmx'
$Service.UseDefaultCredentials = $false
$token = Get-ExMsalToken
$Service.Credentials = [Microsoft.Exchange.WebServices.Data.OAuthCredentials]$token.AccessToken
$service.Url = new-object Uri("https://outlook.office365.com/EWS/Exchange.asmx");
$CleanGlobalObjectId = new-object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition([Microsoft.Exchange.WebServices.Data.DefaultExtendedPropertySet]::Meeting, 0x23, [Microsoft.Exchange.WebServices.Data.MapiPropertyType]::Binary);
$psPropSet = new-object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties);
$psPropSet.Add($CleanGlobalObjectId);
}catch {
Write-Log -Message "Error: $($_.Exception.Message) - New-CalendarItem - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
Return $false
}
try {
if ($Impersonate) {
$ImpersonatedUserId = New-Object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId -ArgumentList ([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress), $Impersonate
$service.ImpersonatedUserId = $ImpersonatedUserId
}
$appointment = New-Object Microsoft.Exchange.WebServices.Data.Appointment -ArgumentList $service
$appointment.Subject = $Subject
$appointment.Body = $Body
$appointment.LegacyFreeBusyStatus = $FreeBusyStatus
$appointment.Categories.Add('Personio')
$appointment.Start = $Start
$appointment.End = $End
if ($RequiredAttendees) {
$RequiredAttendees | % { [void]$appointment.RequiredAttendees.Add($_) }
}
if ($OptionalAttendees) {
$OptionalAttendees | % { [void]$appointment.RequiredAttendees.Add($_) }
}
if ($Location) {
$appointment.Location = $Location
}
######################################################################################
######################################################################################
# Schreibe Eindeutige ID im Kalendereintrag als Extendet Property
# und übergebe dies am Script
######################################################################################
######################################################################################
echo $appointment
$appointment.Save([Microsoft.Exchange.WebServices.Data.SendInvitationsMode]::SendToAllAndSaveCopy) | out-null
$appointment.Load($psPropSet);
$CalIdVal = $null;
$tmpvar = $appointment.TryGetProperty($CleanGlobalObjectId, [ref]$CalIdVal);
$CalIdVal64 = [Convert]::ToBase64String($CalIdVal) | Select -Last 1
Return "$($CalIdVal64)"
}
catch {
Write-Log -Message "Error: $($_.Exception.Message) - New-CalendarItem - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
Return $false
}
}
End {
Write-Verbose "Stop SET-UserVacationHelperTable"
}
}
function Send-ErrorMail {
[CmdletBinding()]
param(
[Parameter(Position = 1, Mandatory = $true)]
$Mail,
[Parameter(Position = 2, Mandatory = $true)]
$VACSTART,
[Parameter(Position = 3, Mandatory = $true)]
$VACENDE,
[Parameter(Position = 4, Mandatory = $true)]
$VACID
)
Begin {
Write-Verbose "Send-ErrorMail"
}
Process {
try {
$server = $ini.email.server
$from = $ini.email.from
$to = $ini.email.to
$subject = "Fehler bei der EWS-Schnittstelle - Personio"
$body = "Es ist ein Fehler passiert,<br><br>
<table>
<tr>
<th>Bezeichnung</th>
<th>Wert</th>
</tr>
<tr>
<td>Benutzer</td>
<td>$($Mail)</td>
</tr>
<tr>
<td>Urlaubsbeginn</td>
<td>$($VACSTART)</td>
</tr>
<tr>
<td>Urlaubsende</td>
<td>$($VACENDE)</td>
</tr>
<tr>
<td>UrlaubsID</td>
<td>$($VACID)</td>
</tr>
</table><br><br>
Bitte prüfen und korrigieren"
send-mailmessage -from $from -to $to -subject $subject -body $body -BodyAsHtml -smtpServer $server -Port 26
Return $true
}
catch {
Write-Log -Message "Error: $($_.Exception.Message) - Send-ErrorMail - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
Return $false
}
}
End {
Write-Verbose "Stop Send-ErrorMail"
}
}
function Remove-CalendarItem {
[CmdletBinding()]
param(
[Parameter(Position = 1, Mandatory = $true)]
$CALID,
[Parameter(Position = 2, Mandatory = $true)]
$Impersonate
)
Begin {
Write-Verbose "Remove-CalendarItem"
}
Process {
try {
# Wenn der Server kein EWS / Exchange installiert hat, muss EwsManageApi.msi installiert werden....
Add-Type -Path "$($ScriptDir)\modules\ews\Microsoft.Exchange.WebServices.dll"
$Service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService -ArgumentList 'Exchange2013_SP1'
$Service.Url = 'https://outlook.office365.com/EWS/Exchange.asmx'
$Service.UseDefaultCredentials = $false
$token = Get-ExMsalToken
$Service.Credentials = [Microsoft.Exchange.WebServices.Data.OAuthCredentials]$token.AccessToken
}catch {
Write-Log -Message "Error: $($_.Exception.Message) - New-CalendarItem - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
Return $false
}
try {
if ($Impersonate) {
$ImpersonatedUserId = New-Object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId -ArgumentList ([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress), $Impersonate
$service.ImpersonatedUserId = $ImpersonatedUserId
}
$folderid = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Calendar, "$($Impersonate)")
$Calendar = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service, $folderid)
Write-Host "CAL: $($CALID.Replace("Microsoft.Exchange.WebServices.Data.Appointment ",''))"
$CalIdVal64 = "$($CALID.Replace("Microsoft.Exchange.WebServices.Data.Appointment ",''))"
$CleanGlobalObjectId = new-object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition([Microsoft.Exchange.WebServices.Data.DefaultExtendedPropertySet]::Meeting, 0x23, [Microsoft.Exchange.WebServices.Data.MapiPropertyType]::Binary);
$ivItemView = New-Object Microsoft.Exchange.WebServices.Data.ItemView(1)
$sfSearchFilter = new-object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo($CleanGlobalObjectId, $CalIdVal64);
$fiResult = $Calendar.FindItems($sfSearchFilter, $ivItemView)
if ( ($fiResult.Items[0]).Categories -eq "Personio") {
$fiResult.Items[0].Delete([Microsoft.Exchange.WebServices.Data.DeleteMode]::SoftDelete)
}
Return $true
}
catch {
Write-Log -Message "Error: $($_.Exception.Message) - Line Number: $($_.InvocationInfo.ScriptLineNumber) - CALID: $([string]$CALID)" -Level Error
Return $false
}
}
End {
Write-Verbose "Stop Remove-CalendarItem"
}
}
function Remove-CalendarItemByDate {
[CmdletBinding()]
param(
[Parameter(Position = 1, Mandatory = $true)]
$Start,
[Parameter(Position = 2, Mandatory = $true)]
$End,
[Parameter(Position = 3, Mandatory = $true)]
$Impersonate
)
Begin {
Write-Verbose "Remove-CalendarItem"
}
Process {
try {
Add-Type -Path "$($ScriptDir)\modules\ews\Microsoft.Exchange.WebServices.dll"
$Service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService -ArgumentList 'Exchange2013_SP1'
$Service.Url = 'https://outlook.office365.com/EWS/Exchange.asmx'
$Service.UseDefaultCredentials = $false
$token = Get-ExMsalToken
$Service.Credentials = [Microsoft.Exchange.WebServices.Data.OAuthCredentials]$token.AccessToken
$service.Url = new-object Uri("https://outlook.office365.com/EWS/Exchange.asmx");
}
catch {
Write-Log -Message "Error: $($_.Exception.Message) - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
Return $false
}
try {
if ($Impersonate) {
$ImpersonatedUserId = New-Object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId -ArgumentList ([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress), $Impersonate
$service.ImpersonatedUserId = $ImpersonatedUserId
}
$folderid = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Calendar, "$($Impersonate)")
$Calendar = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service, $folderid)
$CalendarView = New-Object Microsoft.Exchange.WebServices.Data.CalendarView($Start, $End, 1000)
$fiItems = $service.FindAppointments($Calendar.Id, $CalendarView)
foreach ($Item in $fiItems.Items) {
if ($item.Categories -ccontains "Personio") {
"Start : " + $Item.Start
"Subject : " + $Item.Subject
$Item.Delete([Microsoft.Exchange.WebServices.Data.DeleteMode]::SoftDelete)
}
}
Return $true
}
catch {
Write-Log -Message "Error: $($_.Exception.Message) - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
Return $false
}
}
End {
Write-Verbose "Stop Remove-CalendarItem"
}
}
function Remove-DupCalendarItem {
[CmdletBinding()]
param(
[Parameter(Position = 1, Mandatory = $true)]
$START,
[Parameter(Position = 2, Mandatory = $true)]
$END,
[Parameter(Position = 3, Mandatory = $true)]
$Impersonate,
[Parameter(Position = 3, Mandatory = $true)]
$USERID
)
Begin {
Write-Verbose "Remove-DupCalendarItem"
}
Process {
try {
# Wenn der Server kein EWS / Exchange installiert hat, muss EwsManageApi.msi installiert werden....
Add-Type -Path "$($ScriptDir)\modules\ews\Microsoft.Exchange.WebServices.dll"
$Service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService -ArgumentList 'Exchange2013_SP1'
$Service.Url = 'https://outlook.office365.com/EWS/Exchange.asmx'
$Service.UseDefaultCredentials = $false
$token = Get-ExMsalToken
$Service.Credentials = [Microsoft.Exchange.WebServices.Data.OAuthCredentials]$token.AccessToken
$service.Url = new-object Uri("https://outlook.office365.com/EWS/Exchange.asmx");
}
catch {
Write-Log -Message "Error: $($_.Exception.Message) - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
Return $false
}
try {
if ($Impersonate) {
$ImpersonatedUserId = New-Object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId -ArgumentList ([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress), $Impersonate
$service.ImpersonatedUserId = $ImpersonatedUserId
}
$folderid = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Calendar, "$($Impersonate)")
$Calendar = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service, $folderid)
$CalendarView = New-Object Microsoft.Exchange.WebServices.Data.CalendarView($START, $END , 1000)
$fiItems = $service.FindAppointments($Calendar.Id, $CalendarView)
if ($($fiItems | where { $_.Categories -ccontains "Personio" -and $_.Start -eq $START -and $_.End -eq "$END" }).Count -gt 1) {
Write-Log -Message "Kalendereintrag: $($($START)) bis $($($END)) für $($USERID) Anzahl $($($fiItems | where { $_.Categories -ccontains "Personio" -and $_.Start -eq $START -and $_.End -eq "$END" }).Count) mehrfach vorhanden... delete wird anhand Datum durchgeführt" -Level WARN
foreach ($Item in $($fiItems.items | where { $_.Categories -ccontains "Personio" -and $_.Start -eq $START -and $_.End -eq "$END" })) {
$CalIdVal = $null;
$psPropSet = new-object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties);
$CleanGlobalObjectId = new-object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition([Microsoft.Exchange.WebServices.Data.DefaultExtendedPropertySet]::Meeting, 0x23, [Microsoft.Exchange.WebServices.Data.MapiPropertyType]::Binary);
$psPropSet.Add($CleanGlobalObjectId);
$ItemLoad = $item.Load($psPropSet);
$GetProp = $item.TryGetProperty($CleanGlobalObjectId, [ref]$CalIdVal);
$EXCHANGEID = [Convert]::ToBase64String($CalIdVal) | Select -Last 1
$EXPERID = $(GET-SQLITEByExID -USERID "$($USERID)" -EXID $EXCHANGEID).Id
if ( $EXPERID -eq $null ) {
$Item.Delete([Microsoft.Exchange.WebServices.Data.DeleteMode]::SoftDelete)
Write-Log -Message "Kalendereintrag: $($($Item.Start)) bis $($($Item.End)) für $($USERID) - $($EXCHANGEID) mehrfach vorhanden... delete wird anhand Datum durchgeführt" -Level WARN
}
}
}
}
catch {
Write-Log -Message "Error: $($_.Exception.Message) - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
Return $false
}
}
End {
Write-Verbose "Stop Remove-DupCalendarItem"
}
}

37
functions/functions.ps1 Normal file
View File

@ -0,0 +1,37 @@
[CmdletBinding()]
param (
[Parameter(Mandatory=$true,ValueFromPipeline=$true)]
[ValidateScript({ Test-Path -PathType:Leaf -Path:$_ })]
[string] $IniFile
)
begin {
Write-Verbose "$($MyInvocation.Line)"
$iniObj = @{}
}
process {
switch -regex -File $IniFile {
"^\[(.+)\]$" {
$section = $matches[1]
$iniObj[$section] = @{}
}
"(?<key>^[^\#\;\=]*)[=?](?<value>.+)" {
$key = $matches.key.Trim()
$value = $matches.value.Trim()
if ( ($value -like '$(*)') -or ($value -like '"*"') ) {
$value = Invoke-Expression $value
}
if ( $section ) {
$iniObj[$section][$key] = $value
} else {
$iniObj[$key] = $value
}
}
}
}
end {
return $iniObj
}

131
functions/json_function.ps1 Normal file
View File

@ -0,0 +1,131 @@
function ConvertFrom-Json2{
<#
.SYNOPSIS
The ConvertFrom-Json cmdlet converts a JSON-formatted string to a custom object (PSCustomObject) that has a property for each field in the JSON
.DESCRIPTION
The ConvertFrom-Json cmdlet converts a JSON-formatted string to a custom object (PSCustomObject) that has a property for each field in the JSON
.PARAMETER InputObject
Specifies the JSON strings to convert to JSON objects. Enter a variable that contains the string, or type a command or expression that gets the string. You can also pipe a string to ConvertFrom-Json.
.PARAMETER MaxJsonLength
Specifies the MaxJsonLength, can be used to extend the size of strings that are converted. This is the main feature of this cmdlet vs the native ConvertFrom-Json2
.EXAMPLE
Get-Date | Select-Object -Property * | ConvertTo-Json | ConvertFrom-Json
DisplayHint : 2
DateTime : Friday, January 13, 2012 8:06:31 PM
Date : 1/13/2012 8:00:00 AM
Day : 13
DayOfWeek : 5
DayOfYear : 13
Hour : 20
Kind : 2
Millisecond : 400
Minute : 6
Month : 1
Second : 31
Ticks : 634620819914009002
TimeOfDay : @{Ticks=723914009002; Days=0; Hours=20; Milliseconds=400; Minutes=6; Seconds=31; TotalDays=0.83786343634490734; TotalHours=20.108722472277776; TotalMilliseconds=72391400.900200009; TotalMinutes=1206.5233483366667;TotalSeconds=72391.4009002}
Year : 2012
This command uses the ConvertTo-Json and ConvertFrom-Json cmdlets to convert a DateTime object from the Get-Date cmdlet to a JSON object.
The command uses the Select-Object cmdlet to get all of the properties of the DateTime object. It uses the ConvertTo-Json cmdlet to convert the DateTime object to a JSON-formatted string and the ConvertFrom-Json cmdlet to convert the JSON-formatted string to a JSON object..
.EXAMPLE
PS C:\>$j = Invoke-WebRequest -Uri http://search.twitter.com/search.json?q=PowerShell | ConvertFrom-Json
This command uses the Invoke-WebRequest cmdlet to get JSON strings from a web service and then it uses the ConvertFrom-Json cmdlet to convert JSON content to objects that can be managed in Windows PowerShell.
You can also use the Invoke-RestMethod cmdlet, which automatically converts JSON content to objects.
Example 3
PS C:\>(Get-Content JsonFile.JSON) -join "`n" | ConvertFrom-Json
This example shows how to use the ConvertFrom-Json cmdlet to convert a JSON file to a Windows PowerShell custom object.
The command uses Get-Content cmdlet to get the strings in a JSON file. It uses the Join operator to join the strings in the file into a single string that is delimited by newline characters (`n). Then it uses the pipeline operator to send the delimited string to the ConvertFrom-Json cmdlet, which converts it to a custom object.
The Join operator is required, because the ConvertFrom-Json cmdlet expects a single string.
.NOTES
Author: Reddit
Version History:
1.0 - Initial release
Known Issues:
1.0 - Does not convert nested objects to psobjects
.LINK
#>
[CmdletBinding(SupportsShouldProcess=$true,ConfirmImpact='Low')]
param
(
[parameter(
ParameterSetName='object',
ValueFromPipeline=$true,
Mandatory=$true)]
[string]
$InputObject,
[parameter(
ParameterSetName='object',
ValueFromPipeline=$true,
Mandatory=$false)]
[int]
$MaxJsonLength = 204857600
)#end param
BEGIN
{
#Configure json deserializer to handle larger then average json conversion
[void][System.Reflection.Assembly]::LoadWithPartialName('System.Web.Extensions')
$jsonserial= New-Object -TypeName System.Web.Script.Serialization.JavaScriptSerializer
$jsonserial.MaxJsonLength = $MaxJsonLength
} #End BEGIN
PROCESS
{
if ($PSCmdlet.ParameterSetName -eq 'object')
{
$deserializedJson = $jsonserial.DeserializeObject($InputObject)
# Convert resulting dictionary objects to psobjects
foreach($desJsonObj in $deserializedJson){
$psObject = New-Object -TypeName psobject -Property $desJsonObj
$dicMembers = $psObject | Get-Member -MemberType NoteProperty
# Need to recursively go through members of the originating psobject that have a .GetType() Name of 'Dictionary`2'
# and convert to psobjects and replace the current member in the $psObject tree
$psObject
}
}
}#end PROCESS
END
{
}#end END
}

View File

@ -0,0 +1,56 @@
function Write-Log {
[CmdletBinding()]
Param
(
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true)]
[ValidateNotNullOrEmpty()]
[Alias("LogContent")]
[string]$Message,
[Parameter(Mandatory=$false)]
[Alias('LogPath')]
[string]$Path="$ScriptDir\log\$($LOGDATE)$($ini.general.logfile)",
[Parameter(Mandatory=$false)]
[ValidateSet("Error","Warn","Info")]
[string]$Level="Info",
[Parameter(Mandatory=$false)]
[switch]$NoClobber
)
Begin {
# Zeige Fehler in Konsole an
# $VerbosePreference = 'Continue'
}
Process {
$FormattedDate = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
switch ($Level) {
'Error' {
Write-Error $Message
$LevelText = "[$($OWNPID)] ERROR:"
}
'Warn' {
Write-Warning $Message
$LevelText = "[$($OWNPID)] WARNING:"
}
'Info' {
Write-Verbose $Message
$LevelText = "[$($OWNPID)] INFO:"
}
}
# Schreibe Log in $Path
if (!(Test-Path $Path)) {
"$FormattedDate $LevelText $Message" | Out-File -Encoding "UTF8" -FilePath $Path
} else {
"$FormattedDate $LevelText $Message" | Out-File -Encoding "UTF8" -FilePath $Path -Append
}
}
End {
}
}

133
functions/personio.ps1 Normal file
View File

@ -0,0 +1,133 @@
Function Get-Token
{
$creds = @{
client_id=$username
client_secret=$password
};
try
{
$response = Invoke-RestMethod "$application/v1/auth" -Method Post -Body $creds;
#Write-Host "$response"
$token = $response.data;
return $token;
}
catch
{
$result = $_.Exception.Response.GetResponseStream();
$reader = New-Object System.IO.StreamReader($result);
#Write-Host $($response)
$reader.BaseStream.Position = 0;
$reader.DiscardBufferedData();
$responseBody = $reader.ReadToEnd() | ConvertFrom-Json
Write-Host "ERROR: $($responseBody.errorCode) - $($responseBody.message)"
return;
}
}
Function GET-ExchangeSubject($VacationType = "") {
if ($VacationType -eq "57659"){
$Response=@{Name="Mutterschutz"; Status="Busy"}
}elseif ($VacationType -eq "37147") {
$Response=@{Name="Elternzeit"; Status="Busy"}
}elseif ($VacationType -eq "46191" -or $VacationType -eq "37135" -or $VacationType -eq "46188") {
$Response=@{Name="Urlaub"; Status="Busy"}
}elseif ($VacationType -eq "48771") {
$Response=@{Name="Homeoffice"; Status="Free"}
}elseif ($VacationType -eq "48780") {
$Response=@{Name="Dienstreise"; Status="Busy"}
}elseif ($VacationType -eq "37138" -or $VacationType -eq "44790" -or $VacationType -eq "48777" -or $VacationType -eq "48774") {
$Response=@{Name="Abwesend"; Status="Busy"}
}elseif ($VacationType -eq "44787") {
$Response=@{Name="Berufsschule"; Status="Busy"}
}elseif ($VacationType -eq "48825") {
$Response=@{Name="Weiterbildung"; Status="Busy"}
}else{
$Response=@{Name="Abwesend"; Status="Busy"}
}
Return $RESPONSE
}
Function Get-UserInfo
{
$Request = [System.UriBuilder]"$application/v1/company/employees"
# Setze TOKEN Header
$PERSONIO_TOKEN = Get-Token
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "Bearer $($PERSONIO_TOKEN.token)")
$GetUserResult = Invoke-WebRequest -UseBasicParsing -Uri $Request.Uri -Method GET -Headers $headers -ContentType "application/json"
Return $GetUserResult
}
Function Get-UserPicture{
[CmdletBinding()]
param(
[Parameter(Position = 1, Mandatory = $true)]
$PersonioID
)
Begin {
Write-Verbose "Get-UserPicture"
}
Process {
try {
$Request = [System.UriBuilder]"$application/v1/company/employees/$($PersonioID)/profile-picture/200"
# Setze TOKEN Header
$PERSONIO_TOKEN = Get-Token
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "Bearer $($PERSONIO_TOKEN.token)")
$headers.Add("accept", "image/png")
#Invoke-WebRequest -UseBasicParsing -Verbose -Debug -Uri $Request.Uri -Method GET -Headers $headers -ContentType "image/png" -OutFile "C:\testbild.jpg" | Select-Object *
$test = Invoke-WebRequest -UseBasicParsing -Uri $Request.Uri -Method GET -Headers $headers # -ContentType "image/png"
Return $test
}
catch {
Write-Log -Message "Error: $($_.Exception.Message) - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
Return $false
}
}
End {
Write-Verbose "Stop Get-UserPicture"
}
}
Function Get-UserVacation()
{
$STARTDATE="$((Get-Date).AddDays(-30).ToString('yyyy-MM-dd'))"
$DIFFDATE="$((Get-Date).AddDays(-1).ToString('yyyy-MM-dd'))"
$Request = [System.UriBuilder]"$application/v1/company/time-offs?start_date=$STARTDATE"
#$Requestoffset = [System.UriBuilder]"$application/v1/company/time-offs?start_date=$STARTDATE"
# Setze TOKEN Header
$PERSONIO_TOKEN = Get-Token
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "Bearer $($PERSONIO_TOKEN.token)")
#$GetVacationResult2 = Invoke-WebRequest -UseBasicParsing -Uri $Requestoffset.Uri -Method GET -Headers $headers -ContentType "application/json"
#$json = $GetVacationResult2 | ConvertFrom-Json
#$json
#($json.psobject.properties.Value).total_pages
#exit
$GetVacationResult = Invoke-WebRequest -UseBasicParsing -Uri $Request.Uri -Method GET -Headers $headers -ContentType "application/json"
Return $GetVacationResult
}
Function Get-DIFFUserVacation()
{
$STARTDATE="$((Get-Date).AddDays(-30).ToString('yyyy-MM-dd'))"
$DIFFDATE="$((Get-Date).AddDays(-1).ToString('yyyy-MM-dd'))"
$Request = [System.UriBuilder]"$application/v1/company/time-offs?start_date=$STARTDATE&updated_from=$DIFFDATE"
#$Requestoffset = [System.UriBuilder]"$application/v1/company/time-offs?start_date=$STARTDATE"
# Setze TOKEN Header
$PERSONIO_TOKEN = Get-Token
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "Bearer $($PERSONIO_TOKEN.token)")
$GetVacationResult = Invoke-WebRequest -UseBasicParsing -Uri $Request.Uri -Method GET -Headers $headers -ContentType "application/json"
Return $GetVacationResult
}

61
functions/sqlite.ps1 Normal file
View File

@ -0,0 +1,61 @@
Function CREATE-SQLITE($USERID = "") {
$db = "$($ScriptDir)\sqlite\$($USERID).db"
$query = "CREATE TABLE vacation (
Id INTEGER PRIMARY KEY NOT NULL,
Mail NVARCHAR(250) NOT NULL,
Userid NVARCHAR(250) NOT NULL,
Firstname NVARCHAR(250) NOT NULL,
Lastname NVARCHAR(250) NOT NULL,
Vacexchangeid NVARCHAR(250),
Vactype NVARCHAR(250) NOT NULL,
Vacstart NVARCHAR(250) NOT NULL,
Vacend NVARCHAR(250) NOT NULL
)"
# SQLite erstellt die Datei automatisch
Invoke-SqliteQuery -Query $query -DataSource $db
}
Function INSERT-SQLITE($USERID = "", $MAIL = "", $FIRSTNAME = "", $LASTNAME = "", $VACPERSONIOID = "", $VAEXCHANGEID = 0, $VACTYPE = "", $VACSTART = "", $VACEND = "") {
$db = "$($ScriptDir)\sqlite\$($USERID).db"
$query = "INSERT INTO vacation(id, Mail, Userid, Firstname, Lastname, Vacexchangeid, Vactype, Vacstart, Vacend) VALUES ( '$($VACPERSONIOID)', '$($MAIL)', '$($USERID)', '$($FIRSTNAME)', '$($LASTNAME)', '$($VAEXCHANGEID)', '$($VACTYPE)', '$($VACSTART)', '$($VACEND)' );"
Invoke-SqliteQuery -Query $query -DataSource $db
}
Function DELETE-SQLITE($USERID = "", $VACPERSONIOID = "" ) {
$db = "$($ScriptDir)\sqlite\$($USERID).db"
$query = "DELETE FROM vacation WHERE id LIKE '$($VACPERSONIOID)';"
Invoke-SqliteQuery -Query $query -DataSource $db
}
Function GET-SQLITEByExID($USERID = "", $EXID = "") {
$db = "$($ScriptDir)\sqlite\$($USERID).db"
$query = "SELECT Id FROM ``vacation`` WHERE Vacexchangeid LIKE '%$($EXID)';"
$RESPONSE = Invoke-SqliteQuery -Query $query -DataSource $db
Return $RESPONSE
}
Function DELETE-WRONGSQLITEDATA($USERID = "" ) {
$db = "$($ScriptDir)\sqlite\$($USERID).db"
$query = "DELETE FROM vacation WHERE Vacexchangeid LIKE 'False';"
Invoke-SqliteQuery -Query $query -DataSource $db
}
Function GET-SQLITE($USERID = "", $VACPERSONIOID = "") {
$db = "$($ScriptDir)\sqlite\$($USERID).db"
$query = "SELECT * FROM vacation WHERE id LIKE '$($VACPERSONIOID)';"
$RESPONSE = Invoke-SqliteQuery -Query $query -DataSource $db
Return $RESPONSE
}
Function GET-SQLITEUSERAPPOINTMENTS($USERID = "") {
$STARTDATE="$((Get-Date).AddDays(-28).ToString('yyyy-MM-dd'))"
$db = "$($ScriptDir)\sqlite\$($USERID).db"
# $query = "SELECT id FROM vacation WHERE Userid LIKE '$($USERID)';"
$query = "SELECT Id FROM ``vacation`` WHERE DATE(substr(Vacstart,7,4)||'-'||substr(Vacstart,1,2)||'-'||substr(Vacstart,4,2)) BETWEEN DATE('$($STARTDATE)') AND DATE('2222-12-31') AND Userid LIKE '$($USERID)';"
$RESPONSE = Invoke-SqliteQuery -Query $query -DataSource $db
Return $RESPONSE
}

1
mk.bat Normal file
View File

@ -0,0 +1 @@
pwsh.exe -executionpolicy bypass -noprofile -windowstyle hidden -nologo -ExecutionPolicy ByPass -command "& 'C:\Aufgaben\personio\start.ps1'"

1
mk.vbs Normal file
View File

@ -0,0 +1 @@
CreateObject("Wscript.Shell").Run ".\mk.bat", 0, True

View File

@ -0,0 +1,939 @@
{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff39\deff0\stshfdbch11\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033\themelang1033\themelangfe2052\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times};}
{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol{\*\falt Bookshelf Symbol 3};}
{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f11\fbidi \fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt ?l?r ??\'81\'66c};}
{\f13\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt ????\'a1\'a7???};}{\f13\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt ????\'a1\'a7???};}
{\f38\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0502040204020203}Segoe UI;}{\f39\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma{\*\falt ?l?r ??u!??I};}
{\f40\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0603020202020204}Trebuchet MS{\*\falt Arial};}{\f41\fbidi \fnil\fcharset134\fprq2{\*\panose 00000000000000000000}@SimSun;}{\f42\fbidi \fmodern\fcharset128\fprq1{\*\panose 00000000000000000000}@MS Mincho;}
{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times};}{\fdbmajor\f31501\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt ????\'a1\'a7???};}
{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times};}
{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times};}{\fdbminor\f31505\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt ????\'a1\'a7???};}
{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times};}
{\f44\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times};}{\f45\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times};}{\f47\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times};}
{\f48\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times};}{\f49\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times};}{\f50\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times};}
{\f51\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times};}{\f52\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times};}{\f64\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}
{\f65\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}{\f67\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f68\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f69\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}
{\f70\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f71\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f72\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}
{\f156\fbidi \fmodern\fcharset0\fprq1 MS Mincho Western{\*\falt ?l?r ??\'81\'66c};}{\f154\fbidi \fmodern\fcharset238\fprq1 MS Mincho CE{\*\falt ?l?r ??\'81\'66c};}{\f155\fbidi \fmodern\fcharset204\fprq1 MS Mincho Cyr{\*\falt ?l?r ??\'81\'66c};}
{\f157\fbidi \fmodern\fcharset161\fprq1 MS Mincho Greek{\*\falt ?l?r ??\'81\'66c};}{\f158\fbidi \fmodern\fcharset162\fprq1 MS Mincho Tur{\*\falt ?l?r ??\'81\'66c};}{\f161\fbidi \fmodern\fcharset186\fprq1 MS Mincho Baltic{\*\falt ?l?r ??\'81\'66c};}
{\f176\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt ????\'a1\'a7???};}{\f176\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt ????\'a1\'a7???};}{\f424\fbidi \fswiss\fcharset238\fprq2 Segoe UI CE;}
{\f425\fbidi \fswiss\fcharset204\fprq2 Segoe UI Cyr;}{\f427\fbidi \fswiss\fcharset161\fprq2 Segoe UI Greek;}{\f428\fbidi \fswiss\fcharset162\fprq2 Segoe UI Tur;}{\f429\fbidi \fswiss\fcharset177\fprq2 Segoe UI (Hebrew);}
{\f430\fbidi \fswiss\fcharset178\fprq2 Segoe UI (Arabic);}{\f431\fbidi \fswiss\fcharset186\fprq2 Segoe UI Baltic;}{\f432\fbidi \fswiss\fcharset163\fprq2 Segoe UI (Vietnamese);}{\f434\fbidi \fswiss\fcharset238\fprq2 Tahoma CE{\*\falt ?l?r ??u!??I};}
{\f435\fbidi \fswiss\fcharset204\fprq2 Tahoma Cyr{\*\falt ?l?r ??u!??I};}{\f437\fbidi \fswiss\fcharset161\fprq2 Tahoma Greek{\*\falt ?l?r ??u!??I};}{\f438\fbidi \fswiss\fcharset162\fprq2 Tahoma Tur{\*\falt ?l?r ??u!??I};}
{\f439\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew){\*\falt ?l?r ??u!??I};}{\f440\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic){\*\falt ?l?r ??u!??I};}{\f441\fbidi \fswiss\fcharset186\fprq2 Tahoma Baltic{\*\falt ?l?r ??u!??I};}
{\f442\fbidi \fswiss\fcharset163\fprq2 Tahoma (Vietnamese){\*\falt ?l?r ??u!??I};}{\f443\fbidi \fswiss\fcharset222\fprq2 Tahoma (Thai){\*\falt ?l?r ??u!??I};}{\f444\fbidi \fswiss\fcharset238\fprq2 Trebuchet MS CE{\*\falt Arial};}
{\f445\fbidi \fswiss\fcharset204\fprq2 Trebuchet MS Cyr{\*\falt Arial};}{\f447\fbidi \fswiss\fcharset161\fprq2 Trebuchet MS Greek{\*\falt Arial};}{\f448\fbidi \fswiss\fcharset162\fprq2 Trebuchet MS Tur{\*\falt Arial};}
{\f451\fbidi \fswiss\fcharset186\fprq2 Trebuchet MS Baltic{\*\falt Arial};}{\f456\fbidi \fnil\fcharset0\fprq2 @SimSun Western;}{\f466\fbidi \fmodern\fcharset0\fprq1 @MS Mincho Western;}{\f464\fbidi \fmodern\fcharset238\fprq1 @MS Mincho CE;}
{\f465\fbidi \fmodern\fcharset204\fprq1 @MS Mincho Cyr;}{\f467\fbidi \fmodern\fcharset161\fprq1 @MS Mincho Greek;}{\f468\fbidi \fmodern\fcharset162\fprq1 @MS Mincho Tur;}{\f471\fbidi \fmodern\fcharset186\fprq1 @MS Mincho Baltic;}
{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times};}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times};}
{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times};}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times};}
{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times};}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times};}
{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times};}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times};}
{\fdbmajor\f31520\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt ????\'a1\'a7???};}{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}
{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}
{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times};}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times};}
{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times};}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times};}
{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times};}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times};}
{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times};}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times};}
{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times};}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times};}
{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times};}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times};}
{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times};}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times};}
{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times};}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times};}
{\fdbminor\f31560\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt ????\'a1\'a7???};}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}
{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times};}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times};}
{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times};}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times};}
{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times};}{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times};}
{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times};}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times};}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp \fs22\dbch\af11 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{
\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
\snext0 \sautoupd \sqformat \spriority0 Normal;}{\s1\ql \fi-357\li357\ri0\sb120\sa120\widctlpar\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0
\b\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext1 \slink15 \sqformat heading 1;}{\s2\ql \fi-363\li720\ri0\sb120\sa120\widctlpar
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
\sbasedon0 \snext2 \slink16 \sqformat heading 2;}{\s3\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 \af39\afs19\alang1025
\ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext3 \slink17 \sqformat heading 3;}{\s4\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar
\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl3\outlinelevel3\adjustright\rin0\lin1435\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
\sbasedon0 \snext4 \slink18 \sqformat heading 4;}{\s5\ql \fi-357\li1792\ri0\sb120\sa120\widctlpar\tx1792\jclisttab\tx2155\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl4\outlinelevel4\adjustright\rin0\lin1792\itap0 \rtlch\fcs1 \af39\afs19\alang1025
\ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext5 \slink19 \sqformat heading 5;}{\s6\ql \fi-357\li2149\ri0\sb120\sa120\widctlpar
\jclisttab\tx2152\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl5\outlinelevel5\adjustright\rin0\lin2149\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
\sbasedon0 \snext6 \slink20 \sqformat heading 6;}{\s7\ql \fi-357\li2506\ri0\sb120\sa120\widctlpar\jclisttab\tx2509\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl6\outlinelevel6\adjustright\rin0\lin2506\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext7 \slink21 \sqformat heading 7;}{\s8\ql \fi-357\li2863\ri0\sb120\sa120\widctlpar
\jclisttab\tx2866\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl7\outlinelevel7\adjustright\rin0\lin2863\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
\sbasedon0 \snext8 \slink22 \sqformat heading 8;}{\s9\ql \fi-358\li3221\ri0\sb120\sa120\widctlpar\jclisttab\tx3223\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl8\outlinelevel8\adjustright\rin0\lin3221\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext9 \slink23 \sqformat heading 9;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}{\*
\cs15 \additive \rtlch\fcs1 \ab\af0\afs32 \ltrch\fcs0 \b\fs32\lang0\langfe1033\kerning32\loch\f31502\hich\af31502\dbch\af31501\langnp0\langfenp1033 \sbasedon10 \slink1 \slocked \spriority9 Heading 1 Char;}{\*\cs16 \additive \rtlch\fcs1 \ab\af39
\ltrch\fcs0 \b\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\langnp1033\langfenp1033 \sbasedon10 \slink2 \slocked Heading 2 Char;}{\*\cs17 \additive \rtlch\fcs1 \ab\af0\afs26 \ltrch\fcs0
\b\fs26\lang0\langfe1033\loch\f31502\hich\af31502\dbch\af31501\langnp0\langfenp1033 \sbasedon10 \slink3 \slocked \ssemihidden \spriority9 Heading 3 Char;}{\*\cs18 \additive \rtlch\fcs1 \ab\af0\afs28 \ltrch\fcs0
\b\fs28\lang0\langfe1033\loch\f31506\hich\af31506\dbch\af31505\langnp0\langfenp1033 \sbasedon10 \slink4 \slocked \ssemihidden \spriority9 Heading 4 Char;}{\*\cs19 \additive \rtlch\fcs1 \ab\ai\af0\afs26 \ltrch\fcs0
\b\i\fs26\lang0\langfe1033\loch\f31506\hich\af31506\dbch\af31505\langnp0\langfenp1033 \sbasedon10 \slink5 \slocked \ssemihidden \spriority9 Heading 5 Char;}{\*\cs20 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0
\b\lang0\langfe1033\loch\f31506\hich\af31506\dbch\af31505\langnp0\langfenp1033 \sbasedon10 \slink6 \slocked \ssemihidden \spriority9 Heading 6 Char;}{\*\cs21 \additive \rtlch\fcs1 \af0\afs24 \ltrch\fcs0
\fs24\lang0\langfe1033\loch\f31506\hich\af31506\dbch\af31505\langnp0\langfenp1033 \sbasedon10 \slink7 \slocked \ssemihidden \spriority9 Heading 7 Char;}{\*\cs22 \additive \rtlch\fcs1 \ai\af0\afs24 \ltrch\fcs0
\i\fs24\lang0\langfe1033\loch\f31506\hich\af31506\dbch\af31505\langnp0\langfenp1033 \sbasedon10 \slink8 \slocked \ssemihidden \spriority9 Heading 8 Char;}{\*\cs23 \additive \rtlch\fcs1 \af0 \ltrch\fcs0
\lang0\langfe1033\loch\f31502\hich\af31502\dbch\af31501\langnp0\langfenp1033 \sbasedon10 \slink9 \slocked \ssemihidden \spriority9 Heading 9 Char;}{\s24\ql \li357\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin357\itap0
\rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext24 Body 1;}{
\s25\ql \li720\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
\sbasedon0 \snext25 Body 2;}{\s26\ql \li1077\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext26 Body 3;}{\s27\ql \li1435\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1435\itap0 \rtlch\fcs1
\af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext27 Body 4;}{
\s28\ql \li1803\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1803\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
\sbasedon0 \snext28 Body 5;}{\s29\ql \li2160\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2160\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext29 Body 6;}{\s30\ql \li2506\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2506\itap0 \rtlch\fcs1
\af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext30 Body 7;}{
\s31\ql \li2863\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2863\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
\sbasedon0 \snext31 Body 8;}{\s32\ql \li3221\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin3221\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext32 Body 9;}{\s33\ql \fi-357\li357\ri0\sb120\sa120\widctlpar\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin357\itap0
\rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext33 Bullet 1;}{\s34\ql \fi-363\li720\ri0\sb120\sa120\widctlpar
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext34 Bullet 2;}{
\s35\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar\jclisttab\tx1080\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext35 Bullet 3;}{\s36\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0
\rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext36 Bullet 4;}{\s37\ql \fi-357\li1792\ri0\sb120\sa120\widctlpar
\jclisttab\tx1795\wrapdefault\aspalpha\aspnum\faauto\ls5\adjustright\rin0\lin1792\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext37 Bullet 5;}{
\s38\ql \fi-357\li2149\ri0\sb120\sa120\widctlpar\jclisttab\tx2152\wrapdefault\aspalpha\aspnum\faauto\ls6\adjustright\rin0\lin2149\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext38 Bullet 6;}{\s39\ql \fi-357\li2506\ri0\sb120\sa120\widctlpar\jclisttab\tx2509\wrapdefault\aspalpha\aspnum\faauto\ls7\adjustright\rin0\lin2506\itap0
\rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext39 Bullet 7;}{\s40\ql \fi-357\li2863\ri0\sb120\sa120\widctlpar
\jclisttab\tx2866\wrapdefault\aspalpha\aspnum\faauto\ls8\adjustright\rin0\lin2863\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext40 Bullet 8;}{
\s41\ql \fi-358\li3221\ri0\sb120\sa120\widctlpar\jclisttab\tx3223\wrapdefault\aspalpha\aspnum\faauto\ls9\adjustright\rin0\lin3221\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon32 \snext41 Bullet 9;}{\s42\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
\ab\af39\afs28\alang1025 \ltrch\fcs0 \b\fs28\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Heading EULA;}{\s43\ql \li0\ri0\sb120\sa120\widctlpar\brdrb\brdrs\brdrw10\brsp20
\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af39\afs28\alang1025 \ltrch\fcs0 \b\fs28\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Heading Software Title;}{
\s44\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
\sbasedon0 \snext44 Preamble;}{\s45\ql \li0\ri0\sb120\sa120\widctlpar\brdrb\brdrs\brdrw10\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0
\b\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext1 Preamble Border;}{\s46\qc \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
\ab\af39\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext46 Heading Warranty;}{\s47\ql \fi-360\li360\ri0\sb120\sa120\widctlpar
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls11\outlinelevel0\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0
Heading 1 Warranty;}{\s48\ql \fi-360\li720\ri0\sb120\sa120\widctlpar\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls11\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Heading 2 Warranty;}{\s49\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar
\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
\sbasedon3 \snext49 Heading 3 Bold;}{\s50\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
\fs19\ul\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon36 \snext50 Bullet 4 Underline;}{\s51\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
\af39\afs19\alang1025 \ltrch\fcs0 \fs19\ul\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon35 \snext51 Bullet 3 Underline;}{
\s52\ql \li720\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\ul\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
\sbasedon25 \snext52 Body 2 Underline;}{\s53\ql \li1077\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
\fs19\ul\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon26 \snext53 Body 3 Underline;}{\s54\ql \li0\ri0\sb120\sa120\sl480\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
\rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext54 \slink55 Body Text Indent;}{\*\cs55 \additive \rtlch\fcs1 \af39\afs19 \ltrch\fcs0
\f39\fs19\lang0\langfe1033\langnp0\langfenp1033 \sbasedon10 \slink54 \slocked \ssemihidden Body Text Indent Char;}{\s56\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0
\rtlch\fcs1 \ai\af39\afs19\alang1025 \ltrch\fcs0 \i\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon36 \snext56 Bullet 4 Italics;}{\*\cs57 \additive \rtlch\fcs1 \af39 \ltrch\fcs0
\f39\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 Body 2 Char;}{\*\cs58 \additive \rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 Body 3 Char;}{\*\cs59 \additive \rtlch\fcs1 \af39 \ltrch\fcs0
\f39\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 Body 4 Char;}{\*\cs60 \additive \rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 Body 1 Char;}{\s61\ql \li0\ri0\sb120\sa120\widctlpar\brdrt
\brdrs\brdrw10\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon44 \snext61
Preamble Border Above;}{\s62\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext62 \slink63 \ssemihidden footnote text;}{\*\cs63 \additive \rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang0\langfe1033\langnp0\langfenp1033
\sbasedon10 \slink62 \slocked \ssemihidden Footnote Text Char;}{\*\cs64 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \super \sbasedon10 \ssemihidden footnote reference;}{
\s65\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
\sbasedon0 \snext65 \slink66 \ssemihidden endnote text;}{\*\cs66 \additive \rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang0\langfe1033\langnp0\langfenp1033 \sbasedon10 \slink65 \slocked \ssemihidden Endnote Text Char;}{\*\cs67 \additive \rtlch\fcs1
\af0 \ltrch\fcs0 \super \sbasedon10 \ssemihidden endnote reference;}{\s68\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext68 \slink69 \ssemihidden annotation text;}{\*\cs69 \additive \rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang0\langfe1033\langnp0\langfenp1033
\sbasedon10 \slink68 \slocked \ssemihidden Comment Text Char;}{\*\cs70 \additive \rtlch\fcs1 \af0\afs16 \ltrch\fcs0 \fs16 \sbasedon10 \ssemihidden annotation reference;}{\s71\ql \li0\ri0\sa160\sl-240\slmult0
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext71 Char;}{
\s72\ql \li0\ri0\sa160\sl-240\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
\sbasedon0 \snext72 Char Char Char Char;}{\*\cs73 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf2 \sbasedon10 Hyperlink;}{\s74\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
\af39\afs16\alang1025 \ltrch\fcs0 \fs16\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext74 \slink75 \ssemihidden Balloon Text;}{\*\cs75 \additive \rtlch\fcs1 \af39\afs16 \ltrch\fcs0
\f39\fs16\lang0\langfe1033\langnp0\langfenp1033 \sbasedon10 \slink74 \slocked \ssemihidden Balloon Text Char;}{\*\cs76 \additive \rtlch\fcs1 \ab\af40 \ltrch\fcs0 \b\f40\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 Heading 2 Char1;}{\*\cs77
\additive \rtlch\fcs1 \af0 \ltrch\fcs0 \sbasedon10 page number;}{\s78\ql \li0\ri0\sa160\sl-240\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext78 Char Char Char Char1;}{\s79\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af39\afs19\alang1025
\ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \snext0 \styrsid8999754 Body 0 Bold;}{\s80\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
\af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \snext0 \styrsid8999754 Body 0;}{\s81\ql \li0\ri0\sb120\sa120\widctlpar
\tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
\sbasedon0 \snext81 \slink82 \styrsid11496811 header;}{\*\cs82 \additive \rtlch\fcs1 \af39\afs19 \ltrch\fcs0 \f39\fs19\lang0\langfe1033\langnp0\langfenp1033 \sbasedon10 \slink81 \slocked \ssemihidden Header Char;}{\s83\ql \li0\ri0\sb120\sa120\widctlpar
\tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
\sbasedon0 \snext83 \slink84 \styrsid11496811 footer;}{\*\cs84 \additive \rtlch\fcs1 \af39\afs19 \ltrch\fcs0 \f39\fs19\lang0\langfe1033\langnp0\langfenp1033 \sbasedon10 \slink83 \slocked \ssemihidden Footer Char;}{
\s85\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af39\afs20\alang1025 \ltrch\fcs0 \b\fs20\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
\sbasedon68 \snext68 \slink86 \ssemihidden \sunhideused \styrsid11557916 annotation subject;}{\*\cs86 \additive \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\f39\fs20\lang0\langfe1033\langnp0\langfenp1033
\sbasedon69 \slink85 \slocked \ssemihidden \styrsid11557916 Comment Subject Char;}{\s87\ql \li720\ri0\widctlpar\wrapdefault\faauto\rin0\lin720\itap0\contextualspace \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0
\fs24\lang1033\langfe1033\loch\f0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext87 \sqformat \spriority34 \styrsid10771046 List Paragraph;}{\s88\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
\rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 \snext88 \shidden \ssemihidden \styrsid11209574 Revision;}}{\*\listtable{\list\listtemplateid176468498\listhybrid{\listlevel
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid692200086\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s41\fi-358\li3221\jclisttab\tx3223\lin3221 }{\listlevel\levelnfc23\levelnfcn23
\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}
\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760
\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }
{\listname ;}\listid196815738}{\list\listtemplateid-1793664660{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af0 \ltrch\fcs0
\b\i0\fbias0 \s47\fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af0 \ltrch\fcs0 \b\i0\fbias0 \s48
\fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02);}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li1080
\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'03);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }
{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'04);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li1800\jclisttab\tx1800\lin1800 }{\listlevel\levelnfc2
\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'05);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li2520\jclisttab\tx2520\lin2520 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1
\levelspace0\levelindent0{\leveltext\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
{\leveltext\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li3240\jclisttab\tx3240\lin3240 }{\listname ;}\listid394402059}{\list\listtemplateid1928476992{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af40\afs20 \ltrch\fcs0 \b\i0\f40\fs20\fbias0 \fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af40\afs20 \ltrch\fcs0 \b\i0\f40\fs20\fbias0 \fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af39\afs20 \ltrch\fcs0 \b\i0\f39\fs20\fbias0 \s49\fi-357\li1077\jclisttab\tx1440\lin1077 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc1\levelnfcn1\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \fi-357\li1792\jclisttab\tx2155\lin1792 }{\listlevel\levelnfc0\levelnfcn0
\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc4\levelnfcn4
\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc255
\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02i.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc255
\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02A.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname
;}\listid398796681}{\list\listtemplateid789093748\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid-317712510\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s34
\fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23
\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691
\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid477573462}{\list\listtemplateid1948578256{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers
\'01;}\rtlch\fcs1 \ab\ai0\af40\afs20 \ltrch\fcs0 \b\i0\f40\fs20\fbias0 \fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}
\rtlch\fcs1 \ab\ai0\af0\afs20 \ltrch\fcs0 \b\i0\fs20\fbias0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1
\ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li1077\jclisttab\tx1440\lin1077 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1
\ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc1\levelnfcn1\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers
\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \fi-357\li1792\jclisttab\tx2155\lin1792 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
{\leveltext\'02i.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
{\leveltext\'02A.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname ;}\listid630479929}{\list\listtemplateid67698717{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00);}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
\levelindent0{\leveltext\'02\'01);}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
\'02\'02);}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'03);}{\levelnumbers\'02;}
\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'04);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0
\fi-360\li1800\jclisttab\tx1800\lin1800 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'05);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2160
\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2520\jclisttab\tx2520\lin2520 }{\listlevel
\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li3240\jclisttab\tx3240\lin3240 }{\listname ;}\listid700712945}{\list\listtemplateid-53848358{\listlevel\levelnfc0
\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af39\afs20 \ltrch\fcs0 \b\i0\f39\fs20\fbias0 \s1\fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc4
\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af39\afs20 \ltrch\fcs0 \b\i0\f39\fs20\fbias0 \s2\fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2
\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af39\afs20 \ltrch\fcs0 \b\i0\f39\fs20\fbias0 \s3\fi-357\li1077\jclisttab\tx1440\lin1077 }{\listlevel\levelnfc3
\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \s4\fi-358\li1435\jclisttab\tx1437\lin1435 }
{\listlevel\levelnfc1\levelnfcn1\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \s5\fi-357\li1792
\jclisttab\tx2155\lin1792 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \s6
\fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0
\s7\fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02i.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0
\s8\fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02A.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0
\s9\fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname ;}\listid752163927}{\list\listtemplateid2088029282{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}
\rtlch\fcs1 \ab\ai0\af40\afs20 \ltrch\fcs0 \b\i0\f40\fs20\fbias0 \fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}
\rtlch\fcs1 \ab\ai0\af40\afs20 \ltrch\fcs0 \b\i0\f40\fs20\fbias0 \fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}
\rtlch\fcs1 \ab\ai0\af39\afs20 \ltrch\fcs0 \b\i0\f39\fs20\fbias0 \fi-357\li1077\jclisttab\tx1440\lin1077 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}
\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc1\levelnfcn1\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \fi-357\li1792\jclisttab\tx2155\lin1792 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1
\levelspace0\levelindent0{\leveltext\'02i.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1
\levelspace0\levelindent0{\leveltext\'02A.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname ;}\listid800729109}{\list\listtemplateid-296591990\listhybrid{\listlevel
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s40\fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0
\fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23
\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480
\jclisttab\tx6480\lin6480 }{\listname ;}\listid810947713}{\list\listtemplateid1567531878{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1
\ab\ai0\af40\afs20 \ltrch\fcs0 \b\i0\f40\fs20\fbias0 \fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1
\ab\ai0\af40\afs20 \ltrch\fcs0 \b\i0\f40\fs20\fbias0 \fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1
\ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li1077\jclisttab\tx1440\lin1077 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1
\ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc1\levelnfcn1\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers
\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \fi-357\li1792\jclisttab\tx2155\lin1792 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
{\leveltext\'02i.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
{\leveltext\'02A.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname ;}\listid826823576}{\list\listtemplateid2088029282{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af40\afs20 \ltrch\fcs0 \b\i0\f40\fs20\fbias0 \fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af40\afs20 \ltrch\fcs0 \b\i0\f40\fs20\fbias0 \fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af39\afs20 \ltrch\fcs0 \b\i0\f39\fs20\fbias0 \fi-357\li1077\jclisttab\tx1440\lin1077 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc1\levelnfcn1
\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\strike0\f40\fs20\ulnone\fbias0 \fi-357\li1792\jclisttab\tx2155\lin1792 }{\listlevel
\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel
\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel
\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02i.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel
\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02A.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af40\afs20 \ltrch\fcs0 \b0\i0\f40\fs20\fbias0 \fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname
;}\listid974869818}{\list\listtemplateid-1813845996\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s39\fi-357\li2506
\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23
\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320
\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23
\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1219436735}{\list\listtemplateid-1921771298\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li1797\lin1797 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li2517\lin2517 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li3237\lin3237 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li3957\lin3957 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0
\fi-360\li4677\lin4677 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li5397\lin5397 }{\listlevel
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li6117\lin6117 }{\listlevel\levelnfc23\levelnfcn23\leveljc0
\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li6837\lin6837 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li7557\lin7557 }{\listname ;}\listid1229919144}{\list\listtemplateid1578168882\listhybrid{\listlevel\levelnfc23\levelnfcn23
\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0
{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689
\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0
\fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\lin4320 }{\listlevel
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0
\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1
\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\lin6480 }{\listname ;}\listid1451585775}{\list\listtemplateid-41362566\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0
\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s36\fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0
\fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname
;}\listid1559511898}{\list\listtemplateid-743794326\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid2033377338\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s35
\fi-357\li1077\jclisttab\tx1080\lin1077 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440
}{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23
\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691
\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1567649130}{\list\listtemplateid712936058{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers
\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\i0\fs20\fbias0 \fi-504\li504\lin504 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'04\'00.\'01.;}{\levelnumbers\'01\'03;}\rtlch\fcs1 \af0
\ltrch\fcs0 \b0\i0\fs20\fbias0 \fi-504\li504\jclisttab\tx720\lin504 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'02);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0
\fi-504\li1008\jclisttab\tx1440\lin1008 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'03);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-504\li1512
\jclisttab\tx2160\lin1512 }{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'04);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-504\li2016\lin2016 }{\listlevel\levelnfc2
\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'05);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li2520\lin2520 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
{\leveltext\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'08.;}{\levelnumbers\'01;}
\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li3240\lin3240 }{\listname ;}\listid1767579424}{\list\listtemplateid1363474438\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
\leveltemplateid-1175557160\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s37\fi-357\li1792\jclisttab\tx1795\lin1792 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691
\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880
\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23
\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1848404271}{\list\listtemplateid-1802592190\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid1229593488\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s38\fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691
\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040
\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1877695764}
{\list\listtemplateid1186249844\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid1637229796\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s33\fi-357\li357
\jclisttab\tx360\lin357 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel
\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23
\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691
\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}
\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid2054619191}{\list\listtemplateid273449538{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers
\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0
\fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2160
\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2880\jclisttab\tx2880\lin2880 }
{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc0
\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0
\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0
\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
\levelspace0\levelindent0{\leveltext\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid2107119353}}{\*\listoverridetable{\listoverride\listid2054619191\listoverridecount0\ls1}
{\listoverride\listid477573462\listoverridecount0\ls2}{\listoverride\listid1567649130\listoverridecount0\ls3}{\listoverride\listid1559511898\listoverridecount0\ls4}{\listoverride\listid1848404271\listoverridecount0\ls5}{\listoverride\listid1877695764
\listoverridecount0\ls6}{\listoverride\listid1219436735\listoverridecount0\ls7}{\listoverride\listid810947713\listoverridecount0\ls8}{\listoverride\listid196815738\listoverridecount0\ls9}{\listoverride\listid398796681\listoverridecount0\ls10}
{\listoverride\listid394402059\listoverridecount0\ls11}{\listoverride\listid700712945\listoverridecount0\ls12}{\listoverride\listid826823576\listoverridecount0\ls13}{\listoverride\listid630479929\listoverridecount0\ls14}{\listoverride\listid800729109
\listoverridecount0\ls15}{\listoverride\listid974869818\listoverridecount0\ls16}{\listoverride\listid752163927\listoverridecount0\ls17}{\listoverride\listid398796681\listoverridecount0\ls18}{\listoverride\listid398796681\listoverridecount0\ls19}
{\listoverride\listid477573462\listoverridecount0\ls20}{\listoverride\listid1767579424\listoverridecount0\ls21}{\listoverride\listid1848404271\listoverridecount0\ls22}{\listoverride\listid1559511898\listoverridecount0\ls23}{\listoverride\listid1229919144
\listoverridecount0\ls24}{\listoverride\listid2107119353\listoverridecount0\ls25}{\listoverride\listid1451585775\listoverridecount0\ls26}}{\*\pgptbl {\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp12\itap0\li0\ri0\sb0\sa0}
{\pgp\ipgp10\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp7\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp3\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp4\itap0\li180\ri0\sb0\sa0}{\pgp\ipgp9\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li30\ri30\sb0\sa0}{\pgp\ipgp6\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp8
\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp11\itap0\li180\ri0\sb0\sa0}}{\*\rsidtbl \rsid17701\rsid72953\rsid82666\rsid223714\rsid345491\rsid425915\rsid480810\rsid525483\rsid535495\rsid544803\rsid555183\rsid620899\rsid676065\rsid745150\rsid750735\rsid787759
\rsid807330\rsid880667\rsid919473\rsid946929\rsid986785\rsid1004580\rsid1009112\rsid1012355\rsid1069033\rsid1070219\rsid1122066\rsid1135203\rsid1182701\rsid1187942\rsid1197297\rsid1205521\rsid1206375\rsid1245853\rsid1267697\rsid1325026\rsid1342505
\rsid1378777\rsid1468244\rsid1528414\rsid1529837\rsid1591306\rsid1643586\rsid1715365\rsid1790012\rsid1798131\rsid1800865\rsid1835081\rsid1839655\rsid1845488\rsid1850770\rsid1901753\rsid1977117\rsid1988606\rsid2062722\rsid2173756\rsid2239916\rsid2362164
\rsid2508786\rsid2571685\rsid2584538\rsid2643617\rsid2765700\rsid2775782\rsid2781980\rsid2784514\rsid2818569\rsid2830425\rsid2962852\rsid2979707\rsid2981673\rsid3042060\rsid3107942\rsid3157470\rsid3160965\rsid3162620\rsid3163049\rsid3287741\rsid3302393
\rsid3344199\rsid3370445\rsid3411320\rsid3411753\rsid3416253\rsid3439038\rsid3475551\rsid3611186\rsid3614681\rsid3625590\rsid3625793\rsid3674371\rsid3689565\rsid3702164\rsid3739474\rsid3743028\rsid3806252\rsid3812462\rsid3829127\rsid3885798\rsid3933870
\rsid3944889\rsid3962253\rsid4007067\rsid4022155\rsid4023230\rsid4090382\rsid4144829\rsid4149390\rsid4259872\rsid4273837\rsid4287357\rsid4287841\rsid4399340\rsid4417569\rsid4538731\rsid4595328\rsid4619217\rsid4658030\rsid4738534\rsid4739523\rsid4793230
\rsid4814690\rsid4851597\rsid4865423\rsid4878548\rsid4995346\rsid5010248\rsid5058088\rsid5062678\rsid5130298\rsid5140435\rsid5143448\rsid5185544\rsid5194221\rsid5250241\rsid5254144\rsid5405299\rsid5450553\rsid5459775\rsid5519492\rsid5525537\rsid5531230
\rsid5572633\rsid5647608\rsid5648152\rsid5657583\rsid5660926\rsid5665904\rsid5718961\rsid5773282\rsid5788093\rsid5901771\rsid5930271\rsid5966239\rsid6033147\rsid6042923\rsid6045985\rsid6119652\rsid6167424\rsid6168127\rsid6184270\rsid6227403\rsid6231754
\rsid6253534\rsid6304161\rsid6365404\rsid6373957\rsid6425843\rsid6432951\rsid6449534\rsid6453852\rsid6492030\rsid6498245\rsid6506467\rsid6626724\rsid6630303\rsid6641698\rsid6647886\rsid6754884\rsid6758513\rsid6779584\rsid6816025\rsid6839373\rsid6885748
\rsid6888647\rsid6889714\rsid6899077\rsid6947081\rsid6971210\rsid7028642\rsid7080371\rsid7082672\rsid7094917\rsid7100767\rsid7150562\rsid7168632\rsid7226971\rsid7282236\rsid7290457\rsid7345747\rsid7349188\rsid7410421\rsid7411492\rsid7428746\rsid7433926
\rsid7438204\rsid7495929\rsid7554964\rsid7561267\rsid7619174\rsid7633705\rsid7692510\rsid7749226\rsid7754893\rsid7800249\rsid7825850\rsid7878867\rsid8004214\rsid8132403\rsid8197303\rsid8214982\rsid8259998\rsid8279099\rsid8324055\rsid8324805\rsid8325040
\rsid8414966\rsid8419363\rsid8458805\rsid8545132\rsid8552108\rsid8671477\rsid8674164\rsid8679719\rsid8728036\rsid8738620\rsid8745808\rsid8747943\rsid8810985\rsid8812012\rsid8857738\rsid8858237\rsid8877942\rsid8999754\rsid9071447\rsid9117302\rsid9118858
\rsid9124886\rsid9142100\rsid9203972\rsid9261549\rsid9321702\rsid9338710\rsid9526807\rsid9531088\rsid9534527\rsid9636049\rsid9649378\rsid9651656\rsid9664357\rsid9713399\rsid9778027\rsid9796909\rsid9837726\rsid9857610\rsid9860938\rsid9861873\rsid9964378
\rsid9971637\rsid10225876\rsid10252851\rsid10294454\rsid10637243\rsid10749433\rsid10771046\rsid10813938\rsid10825913\rsid10882308\rsid10955317\rsid10974855\rsid11015316\rsid11084414\rsid11142543\rsid11209574\rsid11347136\rsid11366838\rsid11432977
\rsid11496811\rsid11498068\rsid11548826\rsid11557916\rsid11618558\rsid11622420\rsid11672016\rsid11686297\rsid11695497\rsid11738865\rsid11754382\rsid11762159\rsid11807423\rsid11874088\rsid11878701\rsid11879370\rsid11882246\rsid11937164\rsid12000701
\rsid12015935\rsid12020896\rsid12065226\rsid12087087\rsid12199483\rsid12211886\rsid12222130\rsid12259781\rsid12345846\rsid12351848\rsid12402797\rsid12407360\rsid12459773\rsid12585274\rsid12596065\rsid12664082\rsid12667062\rsid12722678\rsid12792728
\rsid12797652\rsid12798176\rsid12865903\rsid12877409\rsid12913505\rsid12939214\rsid12980473\rsid13047462\rsid13060950\rsid13136677\rsid13174497\rsid13309404\rsid13334496\rsid13388123\rsid13566345\rsid13633438\rsid13700619\rsid13716329\rsid13729220
\rsid13769310\rsid13828315\rsid13832939\rsid13850683\rsid13896616\rsid13908819\rsid13975879\rsid14047826\rsid14103326\rsid14120228\rsid14168694\rsid14223456\rsid14288874\rsid14293847\rsid14297853\rsid14311761\rsid14380549\rsid14382435\rsid14443673
\rsid14488677\rsid14491415\rsid14576599\rsid14681098\rsid14705568\rsid14771509\rsid14825379\rsid14830971\rsid14887834\rsid14889524\rsid14894057\rsid14897950\rsid14943232\rsid14950041\rsid15007790\rsid15083187\rsid15094097\rsid15167242\rsid15217928
\rsid15284219\rsid15366065\rsid15407327\rsid15409103\rsid15425551\rsid15427736\rsid15472048\rsid15493712\rsid15495555\rsid15545976\rsid15601712\rsid15620787\rsid15799222\rsid15811431\rsid15822672\rsid15870357\rsid15872081\rsid15925451\rsid15941484
\rsid16016124\rsid16130586\rsid16141742\rsid16190136\rsid16202142\rsid16324238\rsid16385696\rsid16393193\rsid16395859\rsid16406536\rsid16450365\rsid16542934\rsid16599017\rsid16609818\rsid16661796\rsid16712132\rsid16716683\rsid16733644\rsid16735789}
{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\creatim\yr2014\mo1\dy21\hr9\min59}{\revtim\yr2014\mo4\dy17\hr13\min43}{\version1}{\edmins0}{\nofpages3}{\nofwords1282}
{\nofchars7312}{\nofcharsws8577}{\vern57435}}{\*\userprops {\propname db_build_version}\proptype30{\staticval 2.6}{\propname db_charger_document_reference}\proptype3{\staticval 30113}{\propname db_charger_client_name}\proptype30{\staticval tbc}
{\propname db_charger_matter_number}\proptype30{\staticval tbc}{\propname autosave}\proptype30{\staticval false}{\propname owner}\proptype30{\staticval REDMOND\'5cyingchi}{\propname db_master_reference}\proptype30{\staticval USETERMS_MAINB}{\propname db_m
aster_version}\proptype30{\staticval 20081105a}{\propname db_master_clock}\proptype3{\staticval 975}{\propname db_master_name}\proptype30{\staticval Retail/OEM Software License Terms - Main}{\propname db_master_description}\proptype30{\staticval }
{\propname db_output_filter_reference}\proptype30{\staticval }{\propname db_base_url}\proptype30{\staticval http://usetermassembly/dealbuilder_live/DealBuilderNET/dealbuilder.aspx}{\propname ProductVersion}\proptype30{\staticval 0}{\propname MScom}
\proptype11{\staticval 0}{\propname LanguageAll}\proptype30{\staticval English}{\propname CanadaAvail}\proptype11{\staticval 1}{\propname CanadaFrench}\proptype11{\staticval 0}{\propname FileFormat}\proptype11{\staticval 1}{\propname SoftwareType}
\proptype30{\staticval Free, Standalone Software}{\propname ProductName}\proptype30{\staticval Exchange Web Services Managed API 1.0}{\propname NumberOfCopies}\proptype30{\staticval Any number of copies}{\propname StandaloneUseRight}\proptype30
{\staticval Only to design, develop and test the user's programs}{\propname MediaElementsTemplates}\proptype11{\staticval 0}{\propname DistributableCode}\proptype11{\staticval 1}{\propname DistributableCodeType}\proptype30{\staticval Redist.txt}
{\propname InternalReassignment}\proptype11{\staticval 0}{\propname LicenseTransfer}\proptype11{\staticval 0}{\propname OtherMicrosoftPrograms}\proptype11{\staticval 0}{\propname PrereleaseCode}\proptype11{\staticval 0}{\propname ThirdPartyPrograms}
\proptype11{\staticval 0}{\propname Benchmarking}\proptype11{\staticval 0}{\propname MPEG}\proptype11{\staticval 0}{\propname InternetBasedServices}\proptype11{\staticval 0}{\propname InternetBasedServicesFeaturesDescOther}\proptype30{\staticval }
{\propname db_commit}\proptype30{\staticval ProductVersion}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl720\margr720\margt720\margb720\gutter0\ltrsect
\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting0\donotembedsysfont0\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1\noxlattoyen
\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\formshade\horzdoc\dgmargin\dghspace95\dgvspace180\dghorigin720\dgvorigin720\dghshow2\dgvshow1
\jexpand\viewkind1\viewscale204\viewzk2\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\rempersonalinfo
\allowfieldendsel\wrppunct\asianbrkrule\rsidroot10813938\newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal
\nouicompat \fet0{\*\wgrffmtfilter 013f}\nofeaturethrottle1\ilfomacatclnup0
{\*\docvar {db_xml}{<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>\'0d<!DOCTYPE Document SYSTEM "..\'5cDocument.DTD">\'0d<Document><Control NAME="db_base_url" TYPE="string"><Value>http://usetermassembly/dealbuilder_live/DealBuilderNET/dealbuilder.aspx</Value></Control><C
ontrol NAME="db_folder_form" TYPE="string"><Value>microsoft</Value></Control><Control NAME="db_folder_stylesheet" TYPE="string"><Value>microsoft</Value></Control><Control NAME="db_folder_image" TYPE="string"><Value>microsoft</Value></Control><Control NAME
="db_charger_dataset_reference" TYPE="numeric"><Value>30112</Value></Control><Control NAME="db_charger_client_name" TYPE="string"><Value>tbc</Value></Control><Control NAME="db_charger_matter_number" TYPE="string"><Value>tbc</Value></Control><Control NAME=
"db_master_reference" TYPE="string"><Value>USETERMS_MAINB</Value></Control><Control NAME="db_master_publish_build" TYPE="string"><Value>2.6</Value></Control><Control NAME="db_master_name" TYPE="string"><Value>Retail/OEM Software License Terms - Main</Valu
e></Control><Control NAME="db_master_description" TYPE="string"><Value> </Value></Control><Control NAME="db_master_version" TYPE="string"><Value>20081105a</Value></Control><Control NAME="db_master_clock" TYPE="numeric"><Value>975</Value></Control><Control
NAME="db_master_refresh" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_host_create_onload" TYPE="string"><Value></Value></Control><Control NAME="db_host_input_onload" TYPE="string"><Value></Value></Control><Control NAME="db_host_output_on
load" TYPE="string"><Value></Value></Control><Control NAME="db_host_exception_onload" TYPE="string"><Value></Value></Control><Control NAME="db_host_javascript" TYPE="string"><Value></Value></Control><Control NAME="db_transaction_generator" TYPE="string"><
Value>unique</Value></Control><Control NAME="db_transaction_prefix" TYPE="string"><Value></Value></Control><Control NAME="db_transaction_suffix" TYPE="string"><Value></Value></Control><Control NAME="db_evaluate" TYPE="boolean"><Value>true</Value></Control
><Control NAME="db_evaluate_logic" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_evaluate_repeat" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_evaluate_cross_reference" TYPE="boolean"><Value>true</Value></Control><Control
NAME="db_evaluate_calculation" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_evaluate_variable" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_evaluate_include" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_c
odeload_include" TYPE="string"><Value>lazy</Value></Control><Control NAME="db_locale_input_date_sequence" TYPE="string"><Value>day_month_year</Value></Control><Control NAME="db_locale_input_thousands_char" TYPE="string"><Value>,</Value></Control><Control
NAME="db_locale_input_decimalpoint_char" TYPE="string"><Value>.</Value></Control><Control NAME="db_locale_output_date_sequence" TYPE="string"><Value>day_month_year</Value></Control><Control NAME="db_locale_output_thousands_char" TYPE="string"><Value>,</Va
lue></Control><Control NAME="db_locale_output_decimalpoint_char" TYPE="string"><Value>.</Value></Control><Control NAME="db_output_hyperlink_target" TYPE="string"><Value>_blank</Value></Control><Control NAME="db_output_document_format" TYPE="string"><Value
>rtf</Value></Control><Control NAME="db_output_document_redline" TYPE="boolean"><Value>false</Value></Control><Control NAME="db_output_document_redline_cause" TYPE="string"><Value>drafting</Value></Control><Control NAME="db_output_document_drafting_notes"
TYPE="string"><Value>indefinite</Value></Control><Control NAME="db_output_document_properties" TYPE="string"><Value>true</Value></Control><Control NAME="db_output_document_property" TYPE="string"><Value>autosave|text|false</Value><Value>owner|text|REDMON
D\'5cyingchi</Value></Control><Control NAME="db_output_document_variable_xml" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_output_document_termsheet" TYPE="boolean"><Value>false</Value></Control><Control NAME="db_output_document_answers" TYP
E="boolean"><Value>true</Value></Control><Control NAME="db_output_document_answers_column" TYPE="string"><Value>prompt</Value><Value>value</Value></Control><Control NAME="db_output_document_answers_row" TYPE="string"><Value>page</Value><Value>group</Value
><Value>sure</Value><Value>unsure</Value><Value>unknown</Value><Value>deferred</Value></Control><Control NAME="db_output_document_answers_relaunch_transaction_hyperlink" TYPE="boolean"><Value>false</Value></Control><Control NAME="db_output_document_answer
s_relaunch_transaction_url" TYPE="string"><Value></Value></Control><Control NAME="db_output_filter_reference" TYPE="string"><Value></Value></Control><Control NAME="db_output_variable_as" TYPE="string"><Value>alias</Value></Control><Control NAME="db_output
_variable_highlights" TYPE="boolean"><Value>false</Value></Control><Control NAME="db_output_variable_sequence" TYPE="string"><Value>ascending</Value></Control><Control NAME="db_output_white_space" TYPE="boolean"><Value>false</Value></Control><Control NAME
="db_output_line_breaks" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_input_show_column_headings" TYPE="boolean"><Value>false</Value></Control><Control NAME="db_input_heading_repetition_column" TYPE="string"><Value>Repeat</Value></Control
><Control NAME="db_input_heading_highlight_column" TYPE="string"><Value>Check</Value></Control><Control NAME="db_input_heading_prompt_column" TYPE="string"><Value>Prompt</Value></Control><Control NAME="db_input_heading_question_column" TYPE="string"><Valu
e>Answer</Value></Control><Control NAME="db_input_heading_state_column" TYPE="string"><Value>Deferral</Value></Control><Control NAME="db_input_heading_guidance_column" TYPE="string"><Value>Guidance</Value></Control><Control NAME="db_input_heading_comment_
column" TYPE="string"><Value>Insert your comments below</Value></Control><Control NAME="db_input_heading_variable_name_column" TYPE="string"><Value>Variable</Value></Control><Control NAME="db_input_help_url" TYPE="string"><Value>/dealbuilder_live/help/dea
lbuilder/help.html</Value></Control><Control NAME="db_input_data_validation" TYPE="string"><Value>onsubmit</Value></Control><Control NAME="db_input_show_page_title" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_input_show_group_title" TYPE
="boolean"><Value>true</Value></Control><Control NAME="db_input_show_repetition_column" TYPE="boolean"><Value>false</Value></Control><Control NAME="db_input_show_state_column" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_input_show_variab
le_name_column" TYPE="boolean"><Value>false</Value></Control><Control NAME="db_input_show_committed" TYPE="boolean"><Value>false</Value></Control><Control NAME="db_input_show_group_state" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_input
_show_group_state_threshold" TYPE="numeric"><Value>2</Value></Control><Control NAME="db_input_state_display" TYPE="string"><Value>dropdown</Value></Control><Control NAME="db_input_state_preselect" TYPE="string"><Value>sure</Value></Control><Control NAME="
db_input_unknown_option" TYPE="string"><Value>Unknown</Value></Control><Control NAME="db_input_unknown_position" TYPE="string"><Value>first</Value></Control><Control NAME="db_input_other_option" TYPE="string"><Value>Other</Value></Control><Control NAME="d
b_input_other_position" TYPE="string"><Value>last</Value></Control><Control NAME="db_input_other_width_single" TYPE="numeric"><Value>20</Value></Control><Control NAME="db_input_other_width_multiple" TYPE="numeric"><Value>20</Value></Control><Control NAME=
"db_input_other_depth_multiple" TYPE="numeric"><Value>4</Value></Control><Control NAME="db_input_other_prompt_multiple" TYPE="string"><Value>Specify others:</Value></Control><Control NAME="db_input_other_prompt_single" TYPE="string"><Value>Specify other:<
/Value></Control><Control NAME="db_input_other_prompt_break_before" TYPE="numeric"><Value>1</Value></Control><Control NAME="db_input_other_prompt_break_after" TYPE="numeric"><Value>1</Value></Control><Control NAME="db_input_active_separator_sure_multiline
" TYPE="string"><Value>, </Value></Control><Control NAME="db_input_active_separator_sure_multiple" TYPE="string"><Value> and </Value></Control><Control NAME="db_input_active_separator_unsure_multiple" TYPE="string"><Value> and/or </Value></Control><Contro
l NAME="db_input_active_separator_unsure_single" TYPE="string"><Value> or </Value></Control><Control NAME="db_input_active_boolean_true" TYPE="string"><Value>Yes</Value></Control><Control NAME="db_input_active_boolean_false" TYPE="string"><Value>No</Value
></Control><Control NAME="db_input_repeat_navigation_prefix" TYPE="string"><Value>(%1 of %2)&amp\'3bnbsp\'3b</Value></Control><Control NAME="db_input_repeat_navigation_postfix" TYPE="string"><Value></Value></Control><Control NAME="db_input_repeat_navigation_por
trayal" TYPE="string"><Value>visible</Value></Control><Control NAME="db_input_repeat_format" TYPE="string"><Value>digits</Value></Control><Control NAME="db_input_repeat_prev" TYPE="string"><Value>Prev</Value></Control><Control NAME="db_input_repeat_next"
TYPE="string"><Value>Next</Value></Control><Control NAME="db_input_repeat_separator" TYPE="string"><Value>&amp\'3bnbsp\'3b|&amp\'3bnbsp\'3b</Value></Control><Control NAME="db_input_prompt_compulsory_symbol" TYPE="string"><Value>*</Value></Control><Control NAME="db_in
put_prompt_compulsory_symbol_location" TYPE="string"><Value>after</Value></Control><Control NAME="db_input_question_compulsory_symbol" TYPE="string"><Value></Value></Control><Control NAME="db_input_question_compulsory_symbol_location" TYPE="string"><Value
>after</Value></Control><Control NAME="db_input_disable_when_unknown_compulsory" TYPE="boolean"><Value>true</Value></Control><Control NAME="db_input_disable_when_unknown_non_compulsory" TYPE="boolean"><Value>false</Value></Control><Control NAME="db_input_
simple_alert" TYPE="string"><Value>client_side</Value></Control><Control NAME="db_input_warning_irrelevant_page" TYPE="string"><Value>&lt\'3bU&gt\'3bWARNING:&lt\'3b/U&gt\'3b That page is no longer relevant because of answers given on this page or a previous page!</Va
lue></Control><Control NAME="db_input_last_page_next_button" TYPE="string"><Value>enabled</Value></Control><Control NAME="db_input_page_goto_list_content" TYPE="string"><Value>relevant_pages</Value></Control><Variable NAME="ProductVersion" TYPE="string" S
TATUS="sure"><Value>0</Value></Variable><Variable NAME="MScom" TYPE="boolean" STATUS="sure"><Value>0</Value></Variable><Variable NAME="LanguageAll" TYPE="select" STATUS="sure"><Value>English</Value></Variable><Variable NAME="CanadaAvail" TYPE="boolean" ST
ATUS="sure"><Value>1</Value></Variable><Variable NAME="CanadaFrench" TYPE="boolean" STATUS="sure"><Value>0</Value></Variable><Variable NAME="FileFormat" TYPE="boolean" STATUS="sure"><Value>1</Value></Variable><Variable NAME="SoftwareType" TYPE="select" ST
ATUS="sure"><Value>Free, Standalone Software</Value></Variable><Variable NAME="ProductName" TYPE="string" STATUS="sure"><Value>Exchange Web Services Managed API 1.0</Value></Variable><Variable NAME="NumberOfCopies" TYPE="select" STATUS="sure"><Value>Any n
umber of copies</Value></Variable><Variable NAME="StandaloneUseRight" TYPE="select" STATUS="sure"><Value>Only to design, develop and test the user&apos\'3bs programs</Value></Variable><Variable NAME="MediaElementsTemplates" TYPE="boolean" STATUS="sure"><Valu
e>0</Value></Variable><Variable NAME="DistributableCode" TYPE="boolean" STATUS="sure"><Value>1</Value></Variable><Variable NAME="DistributableCodeType" TYPE="select" STATUS="sure"><Value>Redist.txt</Value></Variable><Variable NAME="InternalReassignment" T
YPE="boolean" STATUS="sure"><Value>0</Value></Variable><Variable NAME="LicenseTransfer" TYPE="boolean" STATUS="sure"><Value>0</Value></Variable><Variable NAME="OtherMicrosoftPrograms" TYPE="boolean" STATUS="sure"><Value>0</Value></Variable><Variable NAME=
"PrereleaseCode" TYPE="boolean" STATUS="sure"><Value>0</Value></Variable><Variable NAME="ThirdPartyPrograms" TYPE="boolean" STATUS="sure"><Value>0</Value></Variable><Variable NAME="Benchmarking" TYPE="boolean" STATUS="sure"><Value>0</Value></Variable><Var
iable NAME="MPEG" TYPE="boolean" STATUS="sure"><Value>0</Value></Variable><Variable NAME="InternetBasedServices" TYPE="boolean" STATUS="sure"><Value>0</Value></Variable></Document>}}{\*\ftnsep \ltrpar \pard\plain \ltrpar
\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0
\ltrch\fcs0 \insrsid2508786 \chftnsep
\par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2508786 \chftnsepc
\par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2508786 \chftnsep
\par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2508786 \chftnsepc
\par }}\ltrpar \sectd \ltrsect\psz1\linex0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid12797652\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3
\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}
{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar
\s42\ql \li0\ri0\sb120\sa120\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15409103 \rtlch\fcs1 \ab\af39\afs28\alang1025 \ltrch\fcs0
\b\fs28\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 MICROSOFT SOFTWARE LICENSE TERMS
\par }\pard\plain \ltrpar\s43\ql \li0\ri0\sb120\sa120\nowidctlpar\brdrb\brdrs\brdrw10\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid1205521 \rtlch\fcs1 \ab\af39\afs28\alang1025 \ltrch\fcs0
\b\fs28\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid5254144\charrsid1835081 \hich\af38\dbch\af13\loch\f38 MICROSOFT EXCHANGE }{\rtlch\fcs1
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid1197297 \hich\af38\dbch\af13\loch\f38 WEB SERVI}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid13700619 \hich\af38\dbch\af13\loch\f38 CES MANAGED API 2.}{
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid425915 \hich\af38\dbch\af13\loch\f38 2}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid5254144\charrsid1835081
\par }\pard\plain \ltrpar\s44\ql \li0\ri0\sb120\sa120\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9531088 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0
\b\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9531088\charrsid9531088 \hich\af38\dbch\af13\loch\f38
These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and You. Please read them. They apply to the software named above, which includes the media on which You received it,
\hich\af38\dbch\af13\loch\f38 if any. The terms also apply to any Microsoft
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9531088\charrsid9531088 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s34\ql \fi-360\li360\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin360\itap0\pararsid9531088 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9531088\charrsid9531088 \hich\af38\dbch\af13\loch\f38 updates,
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9531088\charrsid9531088 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38 supplements,
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9531088\charrsid9531088 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38 Internet-based services, and
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9531088\charrsid9531088 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38 support services
\par }\pard\plain \ltrpar\s44\ql \li0\ri0\sb120\sa120\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9531088 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0
\b\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9531088\charrsid9531088 \hich\af38\dbch\af13\loch\f38
for this software, unless other terms accompany those items. If so, those terms apply.
\par }\pard\plain \ltrpar\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4851597 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid4851597\charrsid1835081 \hich\af38\dbch\af11\loch\f38 BY INSTALLING, ACCESSING OR OTHERWISE USING THE }{
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 SOFTWARE}{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid4851597\charrsid1835081 \hich\af38\dbch\af11\loch\f38 , }{\rtlch\fcs1 \ab\af38\afs20
\ltrch\fcs0 \b\f38\fs20\cf1\insrsid10974855\charrsid1835081 \hich\af38\dbch\af11\loch\f38 YOU}{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid4851597\charrsid1835081 \hich\af38\dbch\af11\loch\f38 ACCEPT THE TERMS OF THIS LICENSE AGREEMENT}
{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid919473\charrsid1835081 .}{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid1468244\charrsid1835081 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0
\b\f38\fs20\cf1\insrsid4851597\charrsid1835081 \hich\af38\dbch\af11\loch\f38 IF }{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid10974855\charrsid1835081 \hich\af38\dbch\af11\loch\f38 YOU}{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0
\b\f38\fs20\cf1\insrsid4851597\charrsid1835081 \hich\af38\dbch\af11\loch\f38 DO NOT AGREE TO THE TERMS OF THIS LICENSE AGREEMENT, DO NOT INSTALL, ACCESS OR USE THE }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b\caps\f38\fs20\insrsid9531088
\hich\af38\dbch\af11\loch\f38 Software}{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid4851597\charrsid1835081 .
\par }{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid10974855\charrsid1835081 \hich\af38\dbch\af11\loch\f38 YOU}{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid7082672\charrsid1835081 \hich\af38\dbch\af11\loch\f38 MAY USE }{
\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\caps\f38\fs20\cf1\insrsid7082672\charrsid1835081 \hich\af38\dbch\af11\loch\f38 THE }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b\caps\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 Software}{\rtlch\fcs1
\ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid3743028\delrsid3743028\charrsid1835081 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid6045985\charrsid1835081 \hich\af38\dbch\af11\loch\f38 SOLELY }{
\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid1839655\charrsid1835081 \hich\af38\dbch\af11\loch\f38 IN PROGRAMS DEVELOPED BY YOU }{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid14120228\charrsid1835081
\hich\af38\dbch\af11\loch\f38 THAT}{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid14488677\charrsid1835081 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid10252851\charrsid1835081
\hich\af38\dbch\af11\loch\f38 INTER}{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid7082672\charrsid1835081 \hich\af38\dbch\af11\loch\f38 \hich\f38 OPERATE WITH MICROSOFT EXCHANGE SERVER (REFERRED TO AS \'93\loch\f38 AUTHORIZED }{
\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid16735789\charrsid1835081 \hich\af38\dbch\af11\loch\f38 PROGRAM}{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid7082672\charrsid1835081 \hich\af38\dbch\af11\loch\f38 \hich\f38 S
\'94\loch\f38 ).
\par }{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid4851597\charrsid1835081 \hich\af38\dbch\af11\loch\f38 If }{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid10974855\charrsid1835081 \hich\af38\dbch\af11\loch\f38 You}{
\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid4851597\charrsid1835081 \hich\af38\dbch\af11\loch\f38 comply with these license terms, }{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid10974855\charrsid1835081
\hich\af38\dbch\af11\loch\f38 You}{\rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\cf1\insrsid4851597\charrsid1835081 \hich\af38\dbch\af11\loch\f38 have the rights below.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\f38\fs20\cf1\insrsid4851597\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid12877409\charrsid1835081 \hich\af39\dbch\af13\loch\f39 1.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid5647608 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {
\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12877409\charrsid1835081 \hich\af38\dbch\af13\loch\f38 INSTALLATION AND USE}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\hich\af38\dbch\af13\loch\f38 may install and use any number of copies of the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\f38\fs20\cf1\insrsid11015316\delrsid3743028\charrsid1835081 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 on }{
\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Your}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid555183\charrsid1835081 \hich\af38\dbch\af13\loch\f38 devices}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid4273837\charrsid1835081
\hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid15094097\charrsid1835081 \hich\af38\dbch\af13\loch\f38 solely }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 to design, develop and test }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid6045985\charrsid1835081
\hich\af38\dbch\af13\loch\f38 Authorized Programs}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\cs57\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 2.\tab}}\pard \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid15409103 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS.
\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 a.\tab}}\pard\plain \ltrpar\s2\ql \fi-363\li720\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid15409103 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0
\b\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Distributable Code.}{\rtlch\fcs1
\ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\hich\af38\dbch\af13\loch\f38 The }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9531088 \hich\af38\dbch\af13\loch\f38 software}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid1197297\charrsid1835081 \hich\af38\dbch\af13\loch\f38
contains}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 code }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 that }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081
\hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 are permitted to }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 include in }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid6045985\charrsid1835081
\hich\af38\dbch\af13\loch\f38 Authorized Programs}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 if }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081
\hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \cs57\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 comply with the terms below.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s49 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 i.\tab}}\pard\plain \ltrpar\s49\ql \fi-357\li1077\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx1080\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0\pararsid15409103 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0
\b\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Right to Use and Distribute.}{
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \cs58\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \cs58\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\hich\af38\dbch\af13\loch\f38 \hich\f38 The code and text files listed below are \'93\loch\f38 \hich\f38 Distributable Code.\'94}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid13060950\charrsid13060950 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s36\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar
\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0\pararsid13060950 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1
\af38\afs20 \ltrch\fcs0 \fs20\ul\loch\af38\hich\af38\dbch\af13\insrsid13060950\charrsid13060950 \hich\af38\dbch\af13\loch\f38 REDIST.TXT Files}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid13060950\charrsid1835081
\hich\af38\dbch\af13\loch\f38 . You may copy and distribute the object code form of code listed in REDIST.TXT files}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid13060950 \hich\af38\dbch\af13\loch\f38 . .}{\rtlch\fcs1
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid1187942\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid3944889\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s50 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid11879370\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s50\ql \fi-358\li1435\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0\pararsid15409103 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\ul\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid11879370\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Red}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\hich\af38\dbch\af13\loch\f38 istribution}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\ulnone\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\ulnone\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\ulnone\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\ulnone\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 may permit }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\ulnone\loch\af38\hich\af38\dbch\af13\insrsid1325026\charrsid1835081 \hich\af38\dbch\af13\loch\f38 the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\ulnone\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
distributors of }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\ulnone\loch\af38\hich\af38\dbch\af13\insrsid6045985\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Authorized Programs}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\ulnone\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 to copy and distribute the Distributable Code as part of those }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\ulnone\loch\af38\hich\af38\dbch\af13\insrsid6045985\charrsid1835081 \hich\af38\dbch\af13\loch\f38 programs}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\ulnone\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .}{\rtlch\fcs1 \af38\afs20
\ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s49 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 ii.\tab}}\pard\plain \ltrpar\s49\ql \fi-357\li1077\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx1077\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0\pararsid15409103 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0
\b\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Distribution
\hich\af38\dbch\af13\loch\f38 Requirements.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \cs58\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\cs58\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 For any Distributable Code }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \cs58\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081
\hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \cs58\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 distribute, }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\cs58\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \cs58\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
must}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s36\ql \fi-358\li1435\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0\pararsid15409103 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 add significant primary functionality to it in }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid6045985\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Authorized Programs}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 ;
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid6947081\charrsid6947081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard \ltrpar\s36\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar
\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0\pararsid6947081 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid6947081\charrsid6947081 \hich\af38\dbch\af13\loch\f38
for any Distributable Code having a filename extension of .lib, distribute only the results of\hich\af38\dbch\af13\loch\f38 running such Distributable Code through a linker with your program;
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid6947081\charrsid6947081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard \ltrpar\s36\ql \fi-358\li1435\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0\pararsid15409103 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid6947081\charrsid6947081 \hich\af38\dbch\af13\loch\f38
distribute Distributable Code included in a setup program only as part of that setup program without modification;
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 require distributors and external end users to agree to terms that p\hich\af38\dbch\af13\loch\f38 rotect it at least as much as this agreement;
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38 display }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Your}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
valid copyright notice on }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid6045985\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Authorized Programs}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 ; and
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38
indemnify, defend, and hold harmless Microsoft from any claims, including attorneys\hich\f38 \rquote \loch\f38 fees, related to the distribution or use of }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid6045985\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Authorized Programs}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .
\par {\listtext\pard\plain\ltrpar \s49 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 iii.\tab}}\pard\plain \ltrpar\s49\ql \fi-357\li1077\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx1077\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0\pararsid15409103 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0
\b\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Distribution Restrictions.}{
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \cs58\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \cs58\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081
\hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \cs58\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 may not}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s36\ql \fi-358\li1435\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0\pararsid15409103 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 alter any copyright, trademark or patent notice in the Distributable Code;
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38 use Microsoft\hich\f38 \rquote \loch\f38
s trademarks in }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Your}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid6045985\charrsid1835081 \hich\af38\dbch\af13\loch\f38 program}{\rtlch\fcs1
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid1850770\charrsid1835081 \hich\af38\dbch\af13\loch\f38 s\hich\f38 \rquote \loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 names or in a way that suggests }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081
\hich\af38\dbch\af13\loch\f38 Your}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid6045985\charrsid1835081 \hich\af38\dbch\af13\loch\f38 programs}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid1850770\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 come from or are endorsed by Microsoft;
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38
include Distributable Code in malicious, deceptive or unlawful programs; or
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38 modify}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid1850770\charrsid1835081 \hich\af38\dbch\af13\loch\f38 , }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 distribute}{
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid1850770\charrsid1835081 \hich\af38\dbch\af13\loch\f38 or convey}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\hich\af38\dbch\af13\loch\f38 any Distributable Code so that }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12939214\charrsid1835081 \hich\af38\dbch\af13\loch\f38 the Distributable Code }{\rtlch\fcs1 \af38\afs20
\ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid1850770\charrsid1835081 \hich\af38\dbch\af13\loch\f38 or any application to which it links, or }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid12939214\charrsid1835081 \hich\af38\dbch\af13\loch\f38 of }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid1850770\charrsid1835081 \hich\af38\dbch\af13\loch\f38 which it
\hich\af38\dbch\af13\loch\f38 is a part, }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 becomes subject to an Excluded License.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid12939214\charrsid1835081 \hich\af38\dbch\af13\loch\f38 An Excluded License is any other license that requires, as a condition of use, modification, distribution or conveyance that,
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af10\hich\af10\dbch\af13\insrsid12939214\charrsid1835081 \loch\af10\dbch\af13\hich\f10 \'a7\tab}}\pard \ltrpar\s36\ql \fi-360\li2160\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx2160\wrapdefault\aspalpha\aspnum\faauto\ls4\ilvl2\adjustright\rin0\lin2160\itap0\pararsid12939214 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12939214\charrsid1835081 \hich\af38\dbch\af13\loch\f38
the code be disclosed or distributed in source code form; or
\par {\listtext\pard\plain\ltrpar \s36 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af10\hich\af10\dbch\af13\insrsid12939214\charrsid1835081 \loch\af10\dbch\af13\hich\f10 \'a7\tab}}\pard \ltrpar\s36\ql \fi-360\li2160\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx2160\wrapdefault\aspalpha\aspnum\faauto\ls4\ilvl2\adjustright\rin0\lin2160\itap0\pararsid13633438 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12939214\charrsid1835081 \hich\af38\dbch\af13\loch\f38
others have \hich\af38\dbch\af13\loch\f38 the right to modify or create derivative works of it.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid13633438\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid3160965\charrsid12459773 \hich\af39\dbch\af13\loch\f39 3.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid15409103 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid3160965\charrsid12459773 \hich\af38\dbch\af13\loch\f38 INTERNET-BASED SERVICES. }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid3160965\charrsid12459773 \hich\af38\dbch\af13\loch\f38 Microsoft provides Internet-based services with the software. It may change or cancel them at any time.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid3160965\charrsid12459773
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\caps\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 4.\tab}}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Scope of License}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .}{\rtlch\fcs1 \ab0\af38\afs20
\ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid8552108\charrsid1835081
\hich\af38\dbch\af13\loch\f38 You may }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid1839655\charrsid1835081 \hich\af38\dbch\af13\loch\f38 only use the}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid8552108\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid3743028\delrsid3743028\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid1839655\charrsid1835081
\hich\af38\dbch\af13\loch\f38 in Authorized Programs}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid8552108\charrsid1835081 \hich\af38\dbch\af13\loch\f38 . }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 The }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid3743028\delrsid3743028\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9531088 \hich\af38\dbch\af13\loch\f38 is}{
\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 licensed, not sold. This agreement only gives }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
some rights to use the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .}{\rtlch\fcs1
\ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\hich\af38\dbch\af13\loch\f38 Microsoft reserves all other rights.}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Unless applicable law gives }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081
\hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 more rights despite this limitation, }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
may use the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\insrsid11015316\charrsid1835081 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1
\ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 on\hich\af38\dbch\af13\loch\f38 ly as expressly permitted in this agreement.}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12722678\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{
\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 may not}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid4538731\charrsid1835081 \hich\af38\dbch\af13\loch\f38 :}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s34\ql \fi-363\li720\ri0\sb120\sa120\widctlpar
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid15472048 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 work around any }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid15472048\charrsid1835081
\hich\af38\dbch\af13\loch\f38 explicit instructions in the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9531088 \hich\af38\dbch\af13\loch\f38 software}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid15472048\charrsid1835081 \hich\af38\dbch\af13\loch\f38 that limit or restrict }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\insrsid15472048\charrsid1835081 \hich\af38\dbch\af11\loch\f38 their use}{
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\insrsid9117302\charrsid1835081 \hich\af38\dbch\af11\loch\f38 ;}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard \ltrpar\s34\ql \fi-363\li720\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid15409103 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
reverse engineer, decompile or disassemble the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\hich\af38\dbch\af13\loch\f38 , except an\hich\af38\dbch\af13\loch\f38 d only to the extent that applicable law expressly permits, despite this limitation}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\insrsid9117302\charrsid1835081
\hich\af38\dbch\af11\loch\f38 ;}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid7150562\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard \ltrpar\s34\ql \fi-363\li720\ri0\sb120\sa120\widctlpar
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid7150562 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid7150562\charrsid1835081 \hich\af38\dbch\af13\loch\f38 use the }{
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9531088 \hich\af38\dbch\af13\loch\f38 software}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid7150562\charrsid1835081
\hich\af38\dbch\af13\loch\f38 in any way that intentionally harms services provided by Microsoft or impairs anyone else\hich\f38 \rquote \loch\f38 s use of such services;
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid7150562\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38 use the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9531088 \hich\af38\dbch\af13\loch\f38 software}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid7150562\charrsid1835081 \hich\af38\dbch\af13\loch\f38 to try to gain un
\hich\af38\dbch\af13\loch\f38 authorized access to any service, data, account or network by any means;
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard \ltrpar\s34\ql \fi-363\li720\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid15409103 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
make more copies of the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid3743028\delrsid3743028\charrsid1835081
\hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid3344199\charrsid1835081 \hich\af38\dbch\af13\loch\f38 than reasonably necessary for You to exercise }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid15366065\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Y}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid3344199\charrsid1835081 \hich\af38\dbch\af13\loch\f38
our rights under this agreement}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\insrsid9117302\charrsid1835081 \hich\af38\dbch\af11\loch\f38 ;}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38 publish the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid3743028\delrsid3743028\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 for others to copy}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\insrsid9117302\charrsid1835081 \hich\af38\dbch\af11\loch\f38 ;}{\rtlch\fcs1 \af38\afs20
\ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38 rent, lease or lend the }{\rtlch\fcs1 \af38\afs20
\ltrch\fcs0 \f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid3743028\delrsid3743028\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20
\ltrch\fcs0 \f38\fs20\insrsid13633438\charrsid1835081 \hich\af38\dbch\af11\loch\f38 or}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid8552108\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f3\fs20\cf1\insrsid8552108\charrsid1835081 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard \ltrpar\s34\ql \fi-363\li720\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid8552108 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\cf1\insrsid8552108\charrsid1835081 \hich\af38\dbch\af11\loch\f38 publish the }{\rtlch\fcs1 \af38\afs20
\ltrch\fcs0 \f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\cf1\insrsid3743028\delrsid3743028\charrsid1835081 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\f38\fs20\cf1\insrsid8552108\charrsid1835081 \hich\af38\dbch\af11\loch\f38 as a hosted service without adding significant primary functionality to }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\cf1\insrsid4619217\charrsid1835081
\hich\af38\dbch\af11\loch\f38 them}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\cf1\insrsid8552108\charrsid1835081 \hich\af38\dbch\af11\loch\f38 in Authorized Programs.
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid807330\charrsid1835081 \hich\af39\dbch\af13\loch\f39 5.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid15409103 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid807330\charrsid1835081 \hich\af38\dbch\af13\loch\f38 TRANSFER TO A THIRD PARTY. }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid807330\charrsid1835081
\hich\af38\dbch\af11\loch\f38 The first user of the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\f38\fs20\cf1\insrsid11015316\delrsid3743028\charrsid1835081 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid807330\charrsid1835081 \hich\af38\dbch\af11\loch\f38 may transfer }{\rtlch\fcs1 \af38\afs20
\ltrch\fcs0 \b0\f38\fs20\insrsid4538731\charrsid1835081 \hich\af38\dbch\af11\loch\f38 them }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid807330\charrsid1835081 \hich\af38\dbch\af11\loch\f38
and this agreement directly to a third party. Before the transfer, that party must agree that this agreement applies to the transfer and use of the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid807330\charrsid1835081 \hich\af38\dbch\af11\loch\f38 . The first user must uninstall the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{
\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\f38\fs20\cf1\insrsid11015316\delrsid3743028\charrsid1835081 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid807330\charrsid1835081 \hich\af38\dbch\af11\loch\f38
before transferring }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid4538731\charrsid1835081 \hich\af38\dbch\af11\loch\f38 them }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid807330\charrsid1835081 \hich\af38\dbch\af11\loch\f38
separately from the device. \hich\af38\dbch\af11\loch\f38 The first user may not retain any copies.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid807330\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\caps\fs20\loch\af39\hich\af39\dbch\af13\insrsid807330\charrsid1835081 \hich\af39\dbch\af13\loch\f39 6.\tab}}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid807330\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Export Restrictions}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid807330\charrsid1835081 \hich\af38\dbch\af13\loch\f38
. }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 The }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{
\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\f38\fs20\cf1\insrsid11015316\delrsid3743028\charrsid1835081 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\f38\fs20\cf1\insrsid9531088 \hich\af38\dbch\af11\loch\f38 is}{\rtlch\fcs1
\ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 subject to United States export laws and regulations.}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{
\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 must comply with all domestic and international export laws and regulations that apply to the }{\rtlch\fcs1
\af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Thes
\hich\af38\dbch\af13\loch\f38 e laws include restrictions on destinations, end users and end use.}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1
\ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 For additional information, see }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\cs73\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 www.microsoft.com/exporting}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .}{
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \cs73\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\caps\fs20\loch\af39\hich\af39\dbch\af13\insrsid9651656\charrsid1835081 \hich\af39\dbch\af13\loch\f39 7.\tab}}\pard \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid10825913 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid9651656\charrsid1835081
\hich\af38\dbch\af13\loch\f38 SUPPORT.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9651656\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid13633438\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Microsoft is not obligated to provide any technical or other support }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid3287741\charrsid1835081 \hich\af38\dbch\af13\loch\f38 under this agreement }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid13633438\charrsid1835081
\hich\af38\dbch\af13\loch\f38 \hich\f38 (\'93}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid13633438\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Support Services}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid13633438\charrsid1835081 \loch\af38\dbch\af13\hich\f38 \'94\loch\f38 ) for }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid3743028\charrsid1835081
\hich\af38\dbch\af13\loch\f38 the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid3962253\charrsid1835081
\hich\af38\dbch\af13\loch\f38 to You. }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\cf1\insrsid3962253\charrsid1835081 \hich\af38\dbch\af11\loch\f38
However, if Microsoft chooses to provide any Support Services to You, Your use of such Support Services will be governed by then-current Microsoft policies}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\cf1\insrsid16130586\charrsid1835081
\hich\af38\dbch\af11\loch\f38 (i.e. terms separate from this agreement)}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\cf1\insrsid3962253\charrsid1835081 \hich\af38\dbch\af11\loch\f38 . With respect to any technical or oth
\hich\af38\dbch\af11\loch\f38
er information You provide to Microsoft in connection with the Support Services, You agree that Microsoft has an unrestricted right to use such information for its business purposes, including for product support and development. Microsoft will not use su
\hich\af38\dbch\af11\loch\f38 c\hich\af38\dbch\af11\loch\f38 h information in a form that personally identifies You.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10825913\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\caps\fs20\loch\af39\hich\af39\dbch\af13\insrsid82666\charrsid1835081 \hich\af39\dbch\af13\loch\f39 8.\tab}}\pard \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid12865903 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid82666\charrsid1835081 \hich\af38\dbch\af13\loch\f38
RESERVATION OF RIGHTS. }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\cf1\insrsid82666\charrsid1835081 \hich\af38\dbch\af11\loch\f38
Except for the licenses expressly granted under this license, Microsoft and its suppliers retain all right, title and interest in and to the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\cf1\insrsid82666\charrsid1835081 \hich\af38\dbch\af11\loch\f38
, and all intellectual property rights therein. You are not authorized to alter, modify, copy, edit, format, create derivative works of or otherwise use any materials, content or technology provided under this license except as explicitly provided in this
\hich\af38\dbch\af11\loch\f38 \hich\af38\dbch\af11\loch\f38 license or approved in advance in writing by Microsoft. }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\cf1\insrsid12865903\charrsid1835081 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1
\af38\afs20 \ltrch\fcs0 \f38\fs20\insrsid82666\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\caps\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 9.\tab}}\pard \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid15409103 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\hich\af38\dbch\af13\loch\f38 Entire Agreement.}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 This agreement, and the terms for supplements, updates, Internet-based services and }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid1715365\charrsid1835081 \hich\af38\dbch\af13\loch\f38 S}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 upport }{
\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid1715365\charrsid1835081 \hich\af38\dbch\af13\loch\f38 S}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\hich\af38\dbch\af13\loch\f38 ervices that }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 use, are the entire agreement }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid6899077\charrsid1835081
\hich\af38\dbch\af13\loch\f38 with respect to the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\caps\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 10.\tab}}\pard \ltrpar\s1\ql \fi-360\li360\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin360\itap0\pararsid15409103 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\hich\af38\dbch\af13\loch\f38 Applicable Law}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .
\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 a.\tab}}\pard\plain \ltrpar\s2\ql \fi-363\li720\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls17\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid15409103 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0
\b\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 United States.}{\rtlch\fcs1
\ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\hich\af38\dbch\af13\loch\f38 If }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 acquired the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \ab0\af38\afs20
\ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid3743028\delrsid3743028\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\hich\af38\dbch\af13\loch\f38 in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles.}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
The laws of the state \hich\af38\dbch\af13\loch\f38 where }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort.}{\rtlch\fcs1 \af38\afs20
\ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 b.\tab}\hich\af38\dbch\af13\loch\f38 Outside the United States.}{\rtlch\fcs1
\ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\hich\af38\dbch\af13\loch\f38 If }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 acquired the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \ab0\af38\afs20
\ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid3743028\delrsid3743028\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\hich\af38\dbch\af13\loch\f38 in any other country, the laws of that country apply.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\caps\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 11.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid15409103 \rtlch\fcs1 \ab\af39\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033
{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Legal Effect.}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
This agreement describes certain legal rights.}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
may have other rights under the laws of }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Your}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 country.}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{
\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 may also have rights with respect to the party from whom }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
acquired the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \b0\f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .}{\rtlch\fcs1
\ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\hich\af38\dbch\af13\loch\f38 This agreement does not change }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Your}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 rights under \hich\af38\dbch\af13\loch\f38 the laws of }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Your}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
country if the laws of }{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Your}{\rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0
\b0\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 country do not permit it to do so.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\caps\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 12.\tab}\hich\af38\dbch\af13\loch\f38 Disclaimer of Warranty.}{\rtlch\fcs1
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\hich\af38\dbch\af13\loch\f38 The }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid3743028\delrsid3743028\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9531088 \hich\af38\dbch\af13\loch\f38 is}{\rtlch\fcs1
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9531088\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\hich\af38\dbch\af13\loch\f38 \hich\f38 licensed \'93\loch\f38 \hich\f38 as-is.\'94}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20
\ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
bear the risk of using }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid6630303\charrsid1835081 \hich\af38\dbch\af13\loch\f38 them}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 .}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Microsoft gives no express warranties, guarantees or conditions.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 may have additional consumer rights under }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Your}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
local laws which this agreement cannot change.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 To the extent permitted under }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081
\hich\af38\dbch\af13\loch\f38 Your}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
local laws, Microsoft excludes the implied warranties of merchantability, fitness for a particular purpose and non-infringemen\hich\af38\dbch\af13\loch\f38 t.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\caps\fs20\loch\af39\hich\af39\dbch\af13\insrsid9964378\charrsid1835081 \hich\af39\dbch\af13\loch\f39 13.\tab}}\pard \ltrpar\s1\ql \fi-360\li360\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls17\outlinelevel0\adjustright\rin0\lin360\itap0\pararsid15409103 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\hich\af38\dbch\af13\loch\f38 Limitation on and Exclusion of Remedies and Damages.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20
\ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
can recover from Microsoft and its suppliers only direct damages up to U.S. $5.00.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081 \hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20
\ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
cannot recover any other damages, including consequential, lost profits, spec\hich\af38\dbch\af13\loch\f38 ial, indirect or incidental damages.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \caps\fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\par }\pard\plain \ltrpar\s24\ql \li357\ri0\sb120\sa120\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin357\itap0\pararsid15409103 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 This limitation applies to}{
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid4538731\charrsid1835081 \hich\af38\dbch\af13\loch\f38 :}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s34\ql \fi-363\li720\ri0\sb120\sa120\nowidctlpar
\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid15409103 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1
\af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 anything related to the }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20\insrsid9531088 \hich\af38\dbch\af11\loch\f38 software}{
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 , content (including code) on third party Internet sites, or third party programs; and
\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af3\hich\af3\dbch\af13\insrsid9964378\charrsid1835081 \loch\af3\dbch\af13\hich\f3 \'b7\tab}\hich\af38\dbch\af13\loch\f38
claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law.
\par }\pard\plain \ltrpar\ql \li360\ri0\sb120\sa120\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0\pararsid15409103 \rtlch\fcs1 \af39\afs19\alang1025 \ltrch\fcs0
\fs19\lang1033\langfe1033\loch\af39\hich\af39\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38
It also applies even if Microsoft knew or should have known about the possibility of the damag\hich\af38\dbch\af13\loch\f38 es.}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid12797652\charrsid1835081
\hich\af38\dbch\af13\loch\f38 }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 The above limitation or exclusion may not apply to }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0
\fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 You}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081 \hich\af38\dbch\af13\loch\f38 because }{
\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid10974855\charrsid1835081 \hich\af38\dbch\af13\loch\f38 Your}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\loch\af38\hich\af38\dbch\af13\insrsid9964378\charrsid1835081
\hich\af38\dbch\af13\loch\f38 country may not allow the exclusion or limitation of incidental, consequential or other damages.
\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0
0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6
a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f
c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512
0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462
a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865
6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b
4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b
4757e8d3f729e245eb2b260a0238fd010000ffff0300504b03041400060008000000210096b5ade296060000501b0000160000007468656d652f7468656d652f
7468656d65312e786d6cec594f6fdb3614bf0fd87720746f6327761a07758ad8b19b2d4d1bc46e871e698996d850a240d2497d1bdae38001c3ba618715d86d87
615b8116d8a5fb34d93a6c1dd0afb0475292c5585e9236d88aad3e2412f9e3fbff1e1fa9abd7eec70c1d1221294fda5efd72cd4324f1794093b0eddd1ef62fad
79482a9c0498f184b4bd2991deb58df7dfbb8ad755446282607d22d771db8b944ad79796a40fc3585ee62949606ecc458c15bc8a702910f808e8c66c69b9565b
5d8a314d3c94e018c8de1a8fa94fd05093f43672e23d06af89927ac06762a049136785c10607758d9053d965021d62d6f6804fc08f86e4bef210c352c144dbab
999fb7b4717509af678b985ab0b6b4ae6f7ed9ba6c4170b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83a6569632cd467faddec9
699640f6719e76b7d6ac355c7c89feca9cccad4ea7d36c65b258a206641f1b73f8b5da6a6373d9c11b90c537e7f08dce66b7bbeae00dc8e257e7f0fd2badd586
8b37a088d1e4600ead1ddaef67d40bc898b3ed4af81ac0d76a197c86826828a24bb318f3442d8ab518dfe3a20f000d6458d104a9694ac6d88728eee2782428d6
0cf03ac1a5193be4cbb921cd0b495fd054b5bd0f530c1931a3f7eaf9f7af9e3f45c70f9e1d3ff8e9f8e1c3e3073f5a42ceaa6d9c84e5552fbffdeccfc71fa33f
9e7ef3f2d117d57859c6fffac327bffcfc793510d26726ce8b2f9ffcf6ecc98baf3efdfdbb4715f04d814765f890c644a29be408edf3181433567125272371be
15c308d3f28acd249438c19a4b05fd9e8a1cf4cd296699771c393ac4b5e01d01e5a30a787d72cf1178108989a2159c77a2d801ee72ce3a5c545a6147f32a9979
3849c26ae66252c6ed637c58c5bb8b13c7bfbd490a75330f4b47f16e441c31f7184e140e494214d273fc80900aedee52ead87597fa824b3e56e82e451d4c2b4d
32a423279a668bb6690c7e9956e90cfe766cb37b077538abd27a8b1cba48c80acc2a841f12e698f13a9e281c57911ce298950d7e03aba84ac8c154f8655c4f2a
f074481847bd804859b5e696007d4b4edfc150b12addbecba6b18b148a1e54d1bc81392f23b7f84137c2715a851dd0242a633f900710a218ed715505dfe56e86
e877f0034e16bafb0e258ebb4faf06b769e888340b103d3311da9750aa9d0a1cd3e4efca31a3508f6d0c5c5c398602f8e2ebc71591f5b616e24dd893aa3261fb
44f95d843b5974bb5c04f4edafb95b7892ec1108f3f98de75dc97d5772bdff7cc95d94cf672db4b3da0a6557f70db629362d72bcb0431e53c6066acac80d699a
6409fb44d08741bdce9c0e4971624a2378cceaba830b05366b90e0ea23aaa241845368b0eb9e2612ca8c742851ca251ceccc70256d8d87265dd96361531f186c
3d9058edf2c00eafe8e1fc5c509031bb4d680e9f39a3154de0accc56ae644441edd76156d7429d995bdd88664a9dc3ad50197c38af1a0c16d684060441db0256
5e85f3b9660d0713cc48a0ed6ef7dedc2dc60b17e92219e180643ed27acffba86e9c94c78ab90980d8a9f0913ee49d62b512b79626fb06dccee2a432bbc60276
b9f7dec44b7904cfbca4f3f6443ab2a49c9c2c41476dafd55c6e7ac8c769db1bc399161ee314bc2e75cf8759081743be1236ec4f4d6693e5336fb672c5dc24a8
c33585b5fb9cc24e1d4885545b58463634cc5416022cd19cacfccb4d30eb45296023fd35a458598360f8d7a4003bbaae25e331f155d9d9a5116d3bfb9a95523e
51440ca2e0088dd844ec6370bf0e55d027a012ae264c45d02f708fa6ad6da6dce29c255df9f6cae0ec38666984b372ab5334cf640b37795cc860de4ae2816e95
b21be5ceaf8a49f90b52a51cc6ff3355f47e0237052b81f6800fd7b802239daf6d8f0b1571a8426944fdbe80c6c1d40e8816b88b8569082ab84c36ff0539d4ff
6dce591a26ade1c0a7f669880485fd484582903d284b26fa4e2156cff62e4b9265844c4495c495a9157b440e091bea1ab8aaf7760f4510eaa69a6465c0e04ec6
9ffb9e65d028d44d4e39df9c1a52ecbd3607fee9cec7263328e5d661d3d0e4f62f44acd855ed7ab33cdf7bcb8ae889599bd5c8b3029895b6825696f6af29c239
b75a5bb1e6345e6ee6c28117e73586c1a2214ae1be07e93fb0ff51e133fb65426fa843be0fb515c187064d0cc206a2fa926d3c902e907670048d931db4c1a449
59d366ad93b65abe595f70a75bf03d616c2dd959fc7d4e6317cd99cbcec9c58b34766661c7d6766ca1a9c1b327531486c6f941c638c67cd22a7f75e2a37be0e8
2db8df9f30254d30c1372581a1f51c983c80e4b71ccdd28dbf000000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468
656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4
350d363f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d2624
52282e3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe5141
73d9850528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c020000130000000000000000
0000000000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000
000000000000300100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c0000000000000000000000000019
0200007468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d001400060008000000210096b5ade296060000501b00001600000000
000000000000000000d60200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b01000027
00000000000000000000000000a00900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d0100009b0a00000000}
{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
{\*\latentstyles\lsdstimax371\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;
\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;
\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;
\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;
\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;
\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;
\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;
\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority59 \lsdlocked0 Table Grid;\lsdsemihidden1 \lsdlocked0 Placeholder Text;\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;
\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdpriority65 \lsdlocked0 Medium List 1;
\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List;\lsdpriority71 \lsdlocked0 Colorful Shading;
\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdpriority62 \lsdlocked0 Light Grid Accent 1;
\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdlocked0 Revision;\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;
\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;
\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;
\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;
\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;
\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdpriority60 \lsdlocked0 Light Shading Accent 3;
\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;
\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdpriority70 \lsdlocked0 Dark List Accent 3;
\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdpriority61 \lsdlocked0 Light List Accent 4;
\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;
\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;
\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdpriority62 \lsdlocked0 Light Grid Accent 5;
\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;
\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6;
\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;
\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;
\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography;
\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4;
\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4;
\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1;
\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1;
\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2;
\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2;
\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3;
\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4;
\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4;
\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5;
\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5;
\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6;
\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6;
\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark;
\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1;
\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1;
\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2;
\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3;
\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3;
\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4;
\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4;
\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5;
\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5;
\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6;
\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;}}{\*\datastore 010500000200000018000000
4d73786d6c322e534158584d4c5265616465722e362e30000000000000000000000e0000
d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff0900060000000000000000000000010000000100000000000000001000000200000001000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffdffffff04000000feffffff05000000fefffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff010000000c6ad98892f1d411a65f0040963251e50000000000000000000000006004
e2ba7d5acf010300000080020000000000004d0073006f004400610074006100530074006f0072006500000000000000000000000000000000000000000000000000000000000000000000000000000000001a000101ffffffffffffffff0200000000000000000000000000000000000000000000006004e2ba7d5acf01
6004e2ba7d5acf01000000000000000000000000cf0051005600dd0030005300300032005200c4004b004800d9004200de005100cc004b00c50055004100d0003d003d000000000000000000000000000000000032000101ffffffffffffffff0300000000000000000000000000000000000000000000006004e2ba7d5a
cf016004e2ba7d5acf010000000000000000000000004900740065006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffff04000000ffffffff000000000000000000000000000000000000000000000000
00000000000000000000000000000000d900000000000000010000000200000003000000feffffff0500000006000000070000000800000009000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c623a536f75726365732053656c65637465645374796c653d2222205374796c654e616d653d22222056657273696f6e3d22302220786d6c6e733a623d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72
672f6f6666696365446f63756d656e742f323030362f6269626c696f6772617068792220786d6c6e733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f677261706879223e3c2f623a536f75726365733e000000
0000000000000000000000000000000000000000000000000000000000000000000000003c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0d0a3c64733a6461746173746f72654974656d2064733a6974656d49443d227b36393744
303542442d394332362d343234362d383745342d3146393042304139353430337d2220786d6c6e733a64733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f637573746f6d586d6c223e3c64733a736368656d61526566733e3c
64733a736368656d615265662064733a7572693d22687474703a2f2f736368656d61732e6f70656e500072006f007000650072007400690065007300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000200ffffffffffffffffffffffff000000000000
0000000000000000000000000000000000000000000000000000000000000400000055010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f677261706879222f3e3c2f64733a736368656d61526566733e3c2f64733a6461746173746f
72654974656d3e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105000000000000}}

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

599
modules/ews/README.htm Normal file
View File

@ -0,0 +1,599 @@
<html DIR="LTR" xmlns:tool="http://www.microsoft.com/tooltip" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8" />
<META NAME="save" CONTENT="history" />
<META NAME="DCSext.Title" CONTENT="Microsoft Exchange Web Services Managed API 2.2 Readme" />
<title>Microsoft Exchange Web Services Managed API 2.2 Readme</title>
<Style TYPE="text/css">
body
{
background: #FFFFFF;
color: #000000;
font-family: Verdana;
font-size: medium;
font-style: normal;
font-weight: normal;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
width: 100%;
}
div.#mainSection
{
font-size: 70%;
width: 100%;
padding-left: 10;
margin-right: 10;
}
div.#mainBody
{
font-size: 90%;
margin-top: 10;
padding-bottom: 20;
}
div.#header
{
background-color: #D2D2D2;
padding-top: 0;
padding-bottom: 0;
padding-left: 10;
padding-right: 0;
width: 100%;
}
div.#header table
{
border-bottom-color: #C8CDDE;
border-bottom-style: solid;
border-bottom-width: 1;
width: 100%;
}
span.#runningHeaderText
{
color: #003399;
font-size: 90%;
}
span.#nsrTitle
{
/* color: #003399;*/
font-size: 120%;
font-weight: 600;
}
div.#header table td
{
color: #000000;
font-size: 70%;
margin-top: 0;
margin-bottom: 0;
padding-right: 20;
}
div.#header table tr.#headerTableRow3 td
{
padding-bottom: 2;
padding-top: 5;
}
div.#header table.#bottomTable
{
border-top-color: #FFFFFF;
border-top-style: solid;
border-top-width: 1;
text-align: left;
}
div.#footer
{
font-size: 90%;
margin-top: 0;
margin-bottom: 0;
margin-left: -5;
margin-right: 0;
padding-top: 2;
padding-bottom: 2;
padding-left: 0;
padding-right: 0;
width: 100%;
}
hr.#footerHR
{
border-bottom-color: #EEEEFF;
border-bottom-style: solid;
border-bottom-width: 1;
border-top-color: C8CDDE;
border-top-style: solid;
border-top-width: 1;
height: 3;
color: #D2D2D2;
}
div.section
{
padding-top: 2;
padding-bottom: 2;
padding-right: 15;
width: 100%;
}
.heading
{
color: #000000;
font-weight: bold;
margin-top: 18;
margin-bottom: 8;
}
h1.heading
{
color: #000000;
font-size: 150%;
}
.subHeading
{
color: #000000;
font-weight: bold;
font-size: 150%;
margin-bottom: 4;
}
h2.subHeading
{
color: #000000;
font-weight: bold;
font-size: 130%;
}
h3.subHeading
{
color: #000000;
font-size: 125%;
font-weight: bold;
}
h4.subHeading
{
color: #000000;
font-size: 110%;
font-weight: bold;
}
h4.procedureHeading
{
color: #000080;
font-size: 110%;
font-weight: bold;
}
h5.subHeading
{
color: #000000;
font-size: 100%;
font-weight: bold;
}
img
{
padding-bottom: 10;
}
img.toggle
{
border: 0;
margin-right: 5;
padding-bottom: 10;
}
img.copyCodeImage
{
border: 0;
margin: 1;
margin-right: 3;
padding-bottom: 10;
}
img.downloadCodeImage
{
border: 0;
margin-right: 3;
padding-bottom: 10;
}
img.viewCodeImage
{
border: 0;
margin-right: 3;
padding-bottom: 10;
}
img.note
{
border: 0;
margin-right: 3;
padding-bottom: 10;
}
img.#membersOptionsFilterImage
{
border: 0;
margin-left: 10;
vertical-align: middle;
padding-bottom: 10;
}
img.#toggleAllImage
{
margin-left: 4;
vertical-align: middle;
padding-bottom: 10;
}
div.#mainSection table
{
border: 0;
font-size: 100%;
width: 100%;
margin-top: 5px;
margin-bottom: 15px;
}
div.#mainSection table tr
{
vertical-align: top;
}
div.#mainSection table th
{
text-align: left;
background: #D8D8D8;
border-bottom-color: #D8D8D8;
border-bottom-style: solid;
border-bottom-width: 1;
color: #000000;
padding-left: 5;
padding-right: 5;
}
div.#mainSection table td
{
background: #F2F2F2;
border-top-color: #D8D8D8;
border-top-style: solid;
border-top-width: 1;
padding-left: 5;
padding-right: 5;
}
div.#mainSection table td.imageCell
{
white-space: nowrap;
}
div.code
{
width: 98%;
}
div.code table
{
border: 0;
font-size: 95%;
margin-bottom: 5;
width: 100%
}
div.code table th
{
text-align: left;
background: #D8D8D8;
border-bottom-color: #D8D8D8;
border-bottom-style: solid;
border-bottom-width: 1;
color: #000000;
font-weight: bold;
padding-left: 5;
padding-right: 5;
}
div.code table td
{
background: #CCCCCC;
border-top-color: #D8D8D8;
border-top-style: solid;
border-top-width: 1;
padding-left: 5;
padding-right: 5;
padding-top: 5;
}
div.alert
{
margin-left: 10;
width: 98%;
}
div.alert table
{
border: 1;
font-size: 100%;
width: 100%;
border: solid 1 #DEDFEF;
}
div.alert table th
{
text-align: left;
background: #D8D8D8;
border-bottom-width: 0;
color: #000000;
padding-left: 5;
padding-right: 5;
border: solid 1 #DEDFEF;
}
div.alert table td
{
background: #FFFFFF;
border-top-color: #D8D8D8;
border-top-style: solid;
border-top-width: 1;
padding-left: 5;
padding-right: 5;
border: solid 1 #DEDFEF;
}
span.copyCode
{
color: #0000ff;
font-size: 90%;
font-weight: normal;
cursor: hand;
float: right;
display: inline;
text-align: right;
}
.downloadCode
{
color: #0000ff;
font-size: 90%;
font-weight: normal;
cursor: hand;
}
.viewCode
{
color: #0000ff;
font-size: 90%;
font-weight: normal;
cursor: hand;
}
div.code pre
{
font-family: Monospace, Courier New, Courier;
font-size: 105%;
color: #000000;
}
code
{
font-family: Monospace, Courier New, Courier;
font-size: 105%;
color: #000000;
}
dl
{
margin-top: 0;
padding-left: 1;
}
dd
{
margin-bottom: 0;
margin-left: 0;
padding-left: 20;
}
dd p
{
margin-top: 5;
}
ul
{
margin-left: 17;
list-style-type: disc;
}
ul ul
{
margin-bottom: 4;
margin-left: 17;
margin-top: 3;
list-style-type: disc;
}
ol
{
margin-left: 24;
list-style-type: decimal;
}
ol ol
{
margin-left: 24;
margin-top: 3;
list-style-type: lower-alpha;
}
li
{
margin-top: 0;
margin-bottom: 0;
padding-bottom: 0;
padding-top: 0;
margin-left: 5;
}
p
{
margin-bottom: 15;
}
.tip
{
color: #0000FF;
font-style: italic;
cursor:hand;
text-decoration:underline;
}
.math
{
font-family: Times New Roman;
font-size: 125%
}
.sourceCodeList
{
font-family: Verdana;
font-size: 90%;
}
pre.viewCode
{
width: 100%;
overflow: auto;
}
li:hover table, li.over table
{
background-color: #C0C0C0;
}
li:hover ul, li.over ul
{
background-color: #d2d2d2;
border: 1px solid #000;
display: block;
}
</style>
</head>
<body>
<div id="header">
<table width="100%" id="topTable">
<tr>
<td align="left">
<span id="nsrTitle">Microsoft Exchange Web Services Managed API 2.2 Readme</span>
</td>
<td align="right">
<span id="headfb" class="feedbackhead">
</span>
</td>
</tr>
<tr id="headerTableRow3">
<td />
<td align="right">
</td>
</tr>
</table>
</div>
<div id="mainSection">
<div id="mainBody">
<font color="DarkGray"></font><p />
<span id="changeHistory"></span>
<p>
<!-- DocStudio metadata -->
<i><b>Topic Last Modified: </b>2014-01-23</i><br/>
</p>
<p>© 2014 Microsoft Corporation, All Rights Reserved.</p>
<p>The Exchange Web Services (EWS) Managed API 2.2 provides a .NET Framework interface to EWS in Exchange Online, Exchange Online as part of Office 365, and versions of Exchange starting with Exchange Server 2007 Service Pack 1 (SP1). You can use this version of the EWS Managed API to evaluate the library for your application needs, to compare it to directly using XML or the auto generated proxy library, and to create production-ready applications.</p>
<p>This Readme provides information about how to provide comments and get support, information about installation prerequisites, and information about how to install and remove the EWS Managed API assembly and related documents. </p>
<h1 class="heading" expandcollapse="expand">Learning more</h1><div id="sectionSection0" class="section" style=""><content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
<p xmlns="">The <a href="http://msdn.microsoft.com/EN-US/library/dn567668(v=exchg.150).aspx"><b>Get started with EWS Managed API client applications</b></a> article helps you makeshows you how to create a Hello World application by using the EWS Managed API.</p>
<p xmlns="">For online documentation for this release, see <a href="http://msdn.microsoft.com/en-us/library/dd877012(v=exchg.150).aspx"><b>Web services in Exchange</b></a>. This documentation contains sample code and other information to help you use the EWS Managed API.</p>
<p xmlns="">The <a href="http://www.microsoft.com/exchange/en-us/default.aspx"><b>Exchange website</b></a> provides product information for Exchange.</p>
<p xmlns="">The <a href="http://msdn.microsoft.com/en-US/office/dn448484"><b>Exchange Dev Center on MSDN</b></a> includes developer information and links to Exchange-related resources.</p>
<p xmlns="">The <a href="http://technet.microsoft.com/en-us/exchange/default.aspx"><b>Exchange TechCenter</b></a> is your one-stop source for Exchange technical documentation for ITPros. </p>
</content></div>
<h1 class="heading" expandcollapse="expand">Feedback</h1><div id="sectionSection1" class="section" style=""><content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
<p xmlns="">The Exchange team welcomes feedback about the EWS Managed API. You can submit feedback to the <a href="http://social.technet.microsoft.com/Forums/en-US/exchangesvrdevelopment/threads">Exchange Development Forum</a>. Feedback from our customers is an important part of our development process. Thank you for helping us to develop a better product.</p>
</content></div><h1 class="heading" expandcollapse="expand">Prerequisites</h1><div id="sectionSection2" class="section" style=""><content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
<p xmlns="">To use this version of the EWS Managed API, you must have the following installed on the computer where you build client applications:</p>
<ul xmlns=""><li>
Visual Studio .NET 2008 or a later version<br></br>
</li><li>
The .NET Framework 3.5 or a later version<br></br>
</li></ul>
<p xmlns="">If you will be running applications that use the EWS Managed API on a different computer, you must have the .NET Framework 3.5 installed on that computer. Most applications do not require Visual Studio to be installed on the client computer.</p>
<p xmlns="">The EWS Managed API can be used to access information hosted in Exchange Online or on computers that are running versions of Exchange starting with Exchange 2007 SP1.</p>
<p xmlns="">The Exchange server on which the Client Access server role is installed must have EWS enabled. If EWS is disabled, the EWS Managed API cannot communicate with the server.</p>
</content></div><h1 class="heading" expandcollapse="expand">Installing the EWS Managed API assembly</h1><div id="sectionSection3" class="section" style=""><content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
<procedure>
To install the EWS Managed API assembly
<ol xmlns=""><li>
<p xmlns="">Download the EwsManagedApi.msi file and store it on your hard disk.</p>
</li><li>
<p xmlns="">Run the EwsManagedApi.msi file and follow the instructions in the installation wizard. You must accept the terms of the license agreement to install the software.</p>
</li></ol>
</procedure>
<p xmlns="">The following is the default installation path: C:\Program Files\Microsoft\Exchange\Web Services\2.2</p>
</content><sections xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
<h3 class="subHeading" expandcollapse="expand" xmlns="">Files installed</h3><div class="subSection" xmlns=""><content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
<p xmlns="">The following files are installed by EwsManagedApi.msi:</p>
<ul xmlns=""><li>
<b>Microsoft.Exchange.WebServices.dll</b>   The signed .NET assembly that implements the EWS Managed API.<br></br>
</li><li>
<b>Microsoft.Exchange.WebServices.xml</b>   Provides a Visual Studio .NET IntelliSense file for the EWS Managed API.<br></br>
</li><li>
<b>Microsoft.Exchange.WebServices.Auth.dll</b>   Provides an API to validate, parse and process Exchange Identity Tokens to be used by mail apps for Outlook.<br></br>
</li><li>
<b>Microsoft.Exchange.WebServices.Auth.xml</b>   Provides a Visual Studio .NET IntelliSense file for the Auth library.<br></br>
</li><li>
<b>GettingStarted.doc</b>   Provides additional help for and information about how to use the API.<br></br>
</li><li>
<b>License Terms.rtf </b>  Contains the license terms for using the EWS Managed API and documentation.<br></br>
</li><li>
<b>Readme.htm </b>  This file.<br></br>
</li><li>
<b>Redist.txt </b>  Defines which files and directories can be redistributed under the license terms.<br></br>
</li></ul>
</content></div>
</sections></div><h1 class="heading" expandcollapse="expand">Removing the EWS Managed API assembly</h1><div id="sectionSection4" class="section" style=""><content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">
<p xmlns="">To remove the EWS Managed API files from your computer, locate and run the EwsManagedApi.msi installer and select the <b>Remove</b> option.</p>
</content></div><!--[if gte IE 5]>
<tool:tip element="seeAlsoToolTip" avoidmouse="false"/><tool:tip element="languageFilterToolTip" avoidmouse="false"/><tool:tip element="roleInfoSpan" avoidmouse="false"/>
<![endif]--></div>
</div>
</body>
</html>

5
modules/ews/Redist.txt Normal file
View File

@ -0,0 +1,5 @@
Distributable Code is identified as the following files and/or all of the files in the following directories:
[installdirectory]\Microsoft.Exchange.WebServices.dll
[installdirectory]\Microsoft.Exchange.WebServices.Auth.dll

View File

@ -0,0 +1,374 @@
function Invoke-SQLiteBulkCopy {
<#
.SYNOPSIS
Use a SQLite transaction to quickly insert data
.DESCRIPTION
Use a SQLite transaction to quickly insert data. If we run into any errors, we roll back the transaction.
The data source is not limited to SQL Server; any data source can be used, as long as the data can be loaded to a DataTable instance or read with a IDataReader instance.
.PARAMETER DataSource
Path to one ore more SQLite data sources to query
.PARAMETER Force
If specified, skip the confirm prompt
.PARAMETER NotifyAfter
The number of rows to fire the notification event after transferring. 0 means don't notify. Notifications hit the verbose stream (use -verbose to see them)
.PARAMETER QueryTimeout
Specifies the number of seconds before the queries time out.
.PARAMETER SQLiteConnection
An existing SQLiteConnection to use. We do not close this connection upon completed query.
.PARAMETER ConflictClause
The conflict clause to use in case a conflict occurs during insert. Valid values: Rollback, Abort, Fail, Ignore, Replace
See https://www.sqlite.org/lang_conflict.html for more details
.EXAMPLE
#
#Create a table
Invoke-SqliteQuery -DataSource "C:\Names.SQLite" -Query "CREATE TABLE NAMES (
fullname VARCHAR(20) PRIMARY KEY,
surname TEXT,
givenname TEXT,
BirthDate DATETIME)"
#Build up some fake data to bulk insert, convert it to a datatable
$DataTable = 1..10000 | %{
[pscustomobject]@{
fullname = "Name $_"
surname = "Name"
givenname = "$_"
BirthDate = (Get-Date).Adddays(-$_)
}
} | Out-DataTable
#Copy the data in within a single transaction (SQLite is faster this way)
Invoke-SQLiteBulkCopy -DataTable $DataTable -DataSource $Database -Table Names -NotifyAfter 1000 -ConflictClause Ignore -Verbose
.INPUTS
System.Data.DataTable
.OUTPUTS
None
Produces no output
.NOTES
This function borrows from:
Chad Miller's Write-Datatable
jbs534's Invoke-SQLBulkCopy
Mike Shepard's Invoke-BulkCopy from SQLPSX
.LINK
https://github.com/RamblingCookieMonster/Invoke-SQLiteQuery
.LINK
New-SQLiteConnection
.LINK
Invoke-SQLiteBulkCopy
.LINK
Out-DataTable
.FUNCTIONALITY
SQL
#>
[cmdletBinding( DefaultParameterSetName = 'Datasource',
SupportsShouldProcess = $true,
ConfirmImpact = 'High' )]
param(
[parameter( Position = 0,
Mandatory = $true,
ValueFromPipeline = $false,
ValueFromPipelineByPropertyName= $false)]
[System.Data.DataTable]
$DataTable,
[Parameter( ParameterSetName='Datasource',
Position=1,
Mandatory=$true,
ValueFromRemainingArguments=$false,
HelpMessage='SQLite Data Source required...' )]
[Alias('Path','File','FullName','Database')]
[validatescript({
#This should match memory, or the parent path should exist
if ( $_ -match ":MEMORY:" -or (Test-Path $_) ) {
$True
}
else {
Throw "Invalid datasource '$_'.`nThis must match :MEMORY:, or must exist"
}
})]
[string]
$DataSource,
[Parameter( ParameterSetName = 'Connection',
Position=1,
Mandatory=$true,
ValueFromPipeline=$false,
ValueFromPipelineByPropertyName=$true,
ValueFromRemainingArguments=$false )]
[Alias( 'Connection', 'Conn' )]
[System.Data.SQLite.SQLiteConnection]
$SQLiteConnection,
[parameter( Position=2,
Mandatory = $true)]
[string]
$Table,
[Parameter( Position=3,
Mandatory=$false,
ValueFromPipeline=$false,
ValueFromPipelineByPropertyName=$false,
ValueFromRemainingArguments=$false)]
[ValidateSet("Rollback","Abort","Fail","Ignore","Replace")]
[string]
$ConflictClause,
[int]
$NotifyAfter = 0,
[switch]
$Force,
[Int32]
$QueryTimeout = 600
)
Write-Verbose "Running Invoke-SQLiteBulkCopy with ParameterSet '$($PSCmdlet.ParameterSetName)'."
Function CleanUp
{
[cmdletbinding()]
param($conn, $com, $BoundParams)
#Only dispose of the connection if we created it
if($BoundParams.Keys -notcontains 'SQLiteConnection')
{
$conn.Close()
$conn.Dispose()
Write-Verbose "Closed connection"
}
$com.Dispose()
}
function Get-ParameterName
{
[CmdletBinding()]
Param(
[Parameter(Mandatory = $true, ValueFromPipeline = $true)]
[string[]]$InputObject,
[Parameter(ValueFromPipelineByPropertyName = $true)]
[string]$Regex = '(\W+)',
[Parameter(ValueFromPipelineByPropertyName = $true)]
[string]$Separator = '_'
)
Process{
$InputObject | ForEach-Object {
if($_ -match $Regex){
$Groups = @($_ -split $Regex | Where-Object {$_})
for($i = 0; $i -lt $Groups.Count; $i++){
if($Groups[$i] -match $Regex){
$Groups[$i] = ($Groups[$i].ToCharArray() | ForEach-Object {[string][int]$_}) -join $Separator
}
}
$Groups -join $Separator
} else {
$_
}
}
}
}
function New-SqliteBulkQuery {
[CmdletBinding()]
Param(
[Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)]
[string]$Table,
[Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)]
[string[]]$Columns,
[Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)]
[string[]]$Parameters,
[Parameter(ValueFromPipelineByPropertyName = $true)]
[string]$ConflictClause = ''
)
Begin{
$EscapeSingleQuote = "'","''"
$Delimeter = ", "
$QueryTemplate = "INSERT{0} INTO {1} ({2}) VALUES ({3})"
}
Process{
$fmtConflictClause = if($ConflictClause){" OR $ConflictClause"}
$fmtTable = "'{0}'" -f ($Table -replace $EscapeSingleQuote)
$fmtColumns = ($Columns | ForEach-Object { "'{0}'" -f ($_ -replace $EscapeSingleQuote) }) -join $Delimeter
$fmtParameters = ($Parameters | ForEach-Object { "@$_"}) -join $Delimeter
$QueryTemplate -f $fmtConflictClause, $fmtTable, $fmtColumns, $fmtParameters
}
}
#Connections
if($PSBoundParameters.Keys -notcontains "SQLiteConnection")
{
if ($DataSource -match ':MEMORY:')
{
$Database = $DataSource
}
else
{
$Database = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($DataSource)
}
$ConnectionString = "Data Source={0}" -f $Database
$SQLiteConnection = New-Object System.Data.SQLite.SQLiteConnection -ArgumentList $ConnectionString
$SQLiteConnection.ParseViaFramework = $true #Allow UNC paths, thanks to Ray Alex!
}
Write-Debug "ConnectionString $($SQLiteConnection.ConnectionString)"
Try
{
if($SQLiteConnection.State -notlike "Open")
{
$SQLiteConnection.Open()
}
$Command = $SQLiteConnection.CreateCommand()
$CommandTimeout = $QueryTimeout
$Transaction = $SQLiteConnection.BeginTransaction()
}
Catch
{
Throw $_
}
write-verbose "DATATABLE IS $($DataTable.gettype().fullname) with value $($Datatable | out-string)"
$RowCount = $Datatable.Rows.Count
Write-Verbose "Processing datatable with $RowCount rows"
if ($Force -or $PSCmdlet.ShouldProcess("$($DataTable.Rows.Count) rows, with BoundParameters $($PSBoundParameters | Out-String)", "SQL Bulk Copy"))
{
#Get column info...
[array]$Columns = $DataTable.Columns | Select-Object -ExpandProperty ColumnName
$ColumnTypeHash = @{}
$ColumnToParamHash = @{}
$Index = 0
foreach($Col in $DataTable.Columns)
{
$Type = Switch -regex ($Col.DataType.FullName)
{
# I figure we create a hashtable, can act upon expected data when doing insert
# Might be a better way to handle this...
'^(|\ASystem\.)Boolean$' {"BOOLEAN"} #I know they're fake...
'^(|\ASystem\.)Byte\[\]' {"BLOB"}
'^(|\ASystem\.)Byte$' {"BLOB"}
'^(|\ASystem\.)Datetime$' {"DATETIME"}
'^(|\ASystem\.)Decimal$' {"REAL"}
'^(|\ASystem\.)Double$' {"REAL"}
'^(|\ASystem\.)Guid$' {"TEXT"}
'^(|\ASystem\.)Int16$' {"INTEGER"}
'^(|\ASystem\.)Int32$' {"INTEGER"}
'^(|\ASystem\.)Int64$' {"INTEGER"}
'^(|\ASystem\.)UInt16$' {"INTEGER"}
'^(|\ASystem\.)UInt32$' {"INTEGER"}
'^(|\ASystem\.)UInt64$' {"INTEGER"}
'^(|\ASystem\.)Single$' {"REAL"}
'^(|\ASystem\.)String$' {"TEXT"}
Default {"BLOB"} #Let SQLite handle the rest...
}
#We ref columns by their index, so add that...
$ColumnTypeHash.Add($Index,$Type)
# Parameter names can only be alphanumeric: https://www.sqlite.org/c3ref/bind_blob.html
# So we have to replace all non-alphanumeric chars in column name to use it as parameter later.
# This builds hashtable to correlate column name with parameter name.
$ColumnToParamHash.Add($Col.ColumnName, (Get-ParameterName $Col.ColumnName))
$Index++
}
#Build up the query
if ($PSBoundParameters.ContainsKey('ConflictClause'))
{
$Command.CommandText = New-SqliteBulkQuery -Table $Table -Columns $ColumnToParamHash.Keys -Parameters $ColumnToParamHash.Values -ConflictClause $ConflictClause
}
else
{
$Command.CommandText = New-SqliteBulkQuery -Table $Table -Columns $ColumnToParamHash.Keys -Parameters $ColumnToParamHash.Values
}
foreach ($Column in $Columns)
{
$param = New-Object System.Data.SQLite.SqLiteParameter $ColumnToParamHash[$Column]
[void]$Command.Parameters.Add($param)
}
for ($RowNumber = 0; $RowNumber -lt $RowCount; $RowNumber++)
{
$row = $Datatable.Rows[$RowNumber]
for($col = 0; $col -lt $Columns.count; $col++)
{
# Depending on the type of thid column, quote it
# For dates, convert it to a string SQLite will recognize
switch ($ColumnTypeHash[$col])
{
"BOOLEAN" {
$Command.Parameters[$ColumnToParamHash[$Columns[$col]]].Value = [int][boolean]$row[$col]
}
"DATETIME" {
Try
{
$Command.Parameters[$ColumnToParamHash[$Columns[$col]]].Value = $row[$col].ToString("yyyy-MM-dd HH:mm:ss")
}
Catch
{
$Command.Parameters[$ColumnToParamHash[$Columns[$col]]].Value = $row[$col]
}
}
Default {
$Command.Parameters[$ColumnToParamHash[$Columns[$col]]].Value = $row[$col]
}
}
}
#We have the query, execute!
Try
{
[void]$Command.ExecuteNonQuery()
}
Catch
{
#Minimal testing for this rollback...
Write-Verbose "Rolling back due to error:`n$_"
$Transaction.Rollback()
#Clean up and throw an error
CleanUp -conn $SQLiteConnection -com $Command -BoundParams $PSBoundParameters
Throw "Rolled back due to error:`n$_"
}
if($NotifyAfter -gt 0 -and $($RowNumber % $NotifyAfter) -eq 0)
{
Write-Verbose "Processed $($RowNumber + 1) records"
}
}
}
#Commit the transaction and clean up the connection
$Transaction.Commit()
CleanUp -conn $SQLiteConnection -com $Command -BoundParams $PSBoundParameters
}

View File

@ -0,0 +1,528 @@
function Invoke-SqliteQuery {
<#
.SYNOPSIS
Runs a SQL script against a SQLite database.
.DESCRIPTION
Runs a SQL script against a SQLite database.
Paramaterized queries are supported.
Help details below borrowed from Invoke-Sqlcmd, may be inaccurate here.
.PARAMETER DataSource
Path to one or more SQLite data sources to query
.PARAMETER Query
Specifies a query to be run.
.PARAMETER InputFile
Specifies a file to be used as the query input to Invoke-SqliteQuery. Specify the full path to the file.
.PARAMETER QueryTimeout
Specifies the number of seconds before the queries time out.
.PARAMETER As
Specifies output type - DataSet, DataTable, array of DataRow, PSObject or Single Value
PSObject output introduces overhead but adds flexibility for working with results: http://powershell.org/wp/forums/topic/dealing-with-dbnull/
.PARAMETER SqlParameters
Hashtable of parameters for parameterized SQL queries. http://blog.codinghorror.com/give-me-parameterized-sql-or-give-me-death/
Limited support for conversions to SQLite friendly formats is supported.
For example, if you pass in a .NET DateTime, we convert it to a string that SQLite will recognize as a datetime
Example:
-Query "SELECT ServerName FROM tblServerInfo WHERE ServerName LIKE @ServerName"
-SqlParameters @{"ServerName = "c-is-hyperv-1"}
.PARAMETER SQLiteConnection
An existing SQLiteConnection to use. We do not close this connection upon completed query.
.PARAMETER AppendDataSource
If specified, append the SQLite data source path to PSObject or DataRow output
.INPUTS
DataSource
You can pipe DataSource paths to Invoke-SQLiteQuery. The query will execute against each Data Source.
.OUTPUTS
As PSObject: System.Management.Automation.PSCustomObject
As DataRow: System.Data.DataRow
As DataTable: System.Data.DataTable
As DataSet: System.Data.DataTableCollectionSystem.Data.DataSet
As SingleValue: Dependent on data type in first column.
.EXAMPLE
#
# First, we create a database and a table
$Query = "CREATE TABLE NAMES (fullname VARCHAR(20) PRIMARY KEY, surname TEXT, givenname TEXT, BirthDate DATETIME)"
$Database = "C:\Names.SQLite"
Invoke-SqliteQuery -Query $Query -DataSource $Database
# We have a database, and a table, let's view the table info
Invoke-SqliteQuery -DataSource $Database -Query "PRAGMA table_info(NAMES)"
cid name type notnull dflt_value pk
--- ---- ---- ------- ---------- --
0 fullname VARCHAR(20) 0 1
1 surname TEXT 0 0
2 givenname TEXT 0 0
3 BirthDate DATETIME 0 0
# Insert some data, use parameters for the fullname and birthdate
$query = "INSERT INTO NAMES (fullname, surname, givenname, birthdate) VALUES (@full, 'Cookie', 'Monster', @BD)"
Invoke-SqliteQuery -DataSource $Database -Query $query -SqlParameters @{
full = "Cookie Monster"
BD = (get-date).addyears(-3)
}
# Check to see if we inserted the data:
Invoke-SqliteQuery -DataSource $Database -Query "SELECT * FROM NAMES"
fullname surname givenname BirthDate
-------- ------- --------- ---------
Cookie Monster Cookie Monster 3/14/2012 12:27:13 PM
# Insert another entry with too many characters in the fullname.
# Illustrate that SQLite data types may be misleading:
Invoke-SqliteQuery -DataSource $Database -Query $query -SqlParameters @{
full = "Cookie Monster$('!' * 20)"
BD = (get-date).addyears(-3)
}
Invoke-SqliteQuery -DataSource $Database -Query "SELECT * FROM NAMES"
fullname surname givenname BirthDate
-------- ------- --------- ---------
Cookie Monster Cookie Monster 3/14/2012 12:27:13 PM
Cookie Monster![...]! Cookie Monster 3/14/2012 12:29:32 PM
.EXAMPLE
Invoke-SqliteQuery -DataSource C:\NAMES.SQLite -Query "SELECT * FROM NAMES" -AppendDataSource
fullname surname givenname BirthDate Database
-------- ------- --------- --------- --------
Cookie Monster Cookie Monster 3/14/2012 12:55:55 PM C:\Names.SQLite
# Append Database column (path) to each result
.EXAMPLE
Invoke-SqliteQuery -DataSource C:\Names.SQLite -InputFile C:\Query.sql
# Invoke SQL from an input file
.EXAMPLE
$Connection = New-SQLiteConnection -DataSource :MEMORY:
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "CREATE TABLE OrdersToNames (OrderID INT PRIMARY KEY, fullname TEXT);"
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "INSERT INTO OrdersToNames (OrderID, fullname) VALUES (1,'Cookie Monster');"
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "PRAGMA STATS"
# Execute a query against an existing SQLiteConnection
# Create a connection to a SQLite data source in memory
# Create a table in the memory based datasource, verify it exists with PRAGMA STATS
.EXAMPLE
$Connection = New-SQLiteConnection -DataSource :MEMORY:
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "CREATE TABLE OrdersToNames (OrderID INT PRIMARY KEY, fullname TEXT);"
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "INSERT INTO OrdersToNames (OrderID, fullname) VALUES (1,'Cookie Monster');"
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "INSERT INTO OrdersToNames (OrderID) VALUES (2);"
# We now have two entries, only one has a fullname. Despite this, the following command returns both; very un-PowerShell!
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "SELECT * FROM OrdersToNames" -As DataRow | Where{$_.fullname}
OrderID fullname
------- --------
1 Cookie Monster
2
# Using the default -As PSObject, we can get PowerShell-esque behavior:
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "SELECT * FROM OrdersToNames" | Where{$_.fullname}
OrderID fullname
------- --------
1 Cookie Monster
.LINK
https://github.com/RamblingCookieMonster/Invoke-SQLiteQuery
.LINK
New-SQLiteConnection
.LINK
Invoke-SQLiteBulkCopy
.LINK
Out-DataTable
.LINK
https://www.sqlite.org/datatype3.html
.LINK
https://www.sqlite.org/lang.html
.LINK
http://www.sqlite.org/pragma.html
.FUNCTIONALITY
SQL
#>
[CmdletBinding( DefaultParameterSetName='Src-Que' )]
[OutputType([System.Management.Automation.PSCustomObject],[System.Data.DataRow],[System.Data.DataTable],[System.Data.DataTableCollection],[System.Data.DataSet])]
param(
[Parameter( ParameterSetName='Src-Que',
Position=0,
Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true,
ValueFromRemainingArguments=$false,
HelpMessage='SQLite Data Source required...' )]
[Parameter( ParameterSetName='Src-Fil',
Position=0,
Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true,
ValueFromRemainingArguments=$false,
HelpMessage='SQLite Data Source required...' )]
[Alias('Path','File','FullName','Database')]
[validatescript({
#This should match memory, or the parent path should exist
$Parent = Split-Path $_ -Parent
if(
$_ -match ":MEMORY:|^WHAT$" -or
( $Parent -and (Test-Path $Parent))
){
$True
}
else {
Throw "Invalid datasource '$_'.`nThis must match :MEMORY:, or '$Parent' must exist"
}
})]
[string[]]
$DataSource,
[Parameter( ParameterSetName='Src-Que',
Position=1,
Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
ValueFromRemainingArguments=$false )]
[Parameter( ParameterSetName='Con-Que',
Position=1,
Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
ValueFromRemainingArguments=$false )]
[string]
$Query,
[Parameter( ParameterSetName='Src-Fil',
Position=1,
Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
ValueFromRemainingArguments=$false )]
[Parameter( ParameterSetName='Con-Fil',
Position=1,
Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
ValueFromRemainingArguments=$false )]
[ValidateScript({ Test-Path $_ })]
[string]
$InputFile,
[Parameter( Position=2,
Mandatory=$false,
ValueFromPipelineByPropertyName=$true,
ValueFromRemainingArguments=$false )]
[Int32]
$QueryTimeout=600,
[Parameter( Position=3,
Mandatory=$false,
ValueFromPipelineByPropertyName=$true,
ValueFromRemainingArguments=$false )]
[ValidateSet("DataSet", "DataTable", "DataRow","PSObject","SingleValue")]
[string]
$As="PSObject",
[Parameter( Position=4,
Mandatory=$false,
ValueFromPipelineByPropertyName=$true,
ValueFromRemainingArguments=$false )]
[System.Collections.IDictionary]
$SqlParameters,
[Parameter( Position=5,
Mandatory=$false )]
[switch]
$AppendDataSource,
[Parameter( Position=6,
Mandatory=$false )]
[validatescript({Test-Path $_ })]
[string]$AssemblyPath = $SQLiteAssembly,
[Parameter( ParameterSetName = 'Con-Que',
Position=7,
Mandatory=$true,
ValueFromPipeline=$false,
ValueFromPipelineByPropertyName=$true,
ValueFromRemainingArguments=$false )]
[Parameter( ParameterSetName = 'Con-Fil',
Position=7,
Mandatory=$true,
ValueFromPipeline=$false,
ValueFromPipelineByPropertyName=$true,
ValueFromRemainingArguments=$false )]
[Alias( 'Connection', 'Conn' )]
[System.Data.SQLite.SQLiteConnection]
$SQLiteConnection
)
Begin
{
#Assembly, should already be covered by psm1
Try
{
[void][System.Data.SQLite.SQLiteConnection]
}
Catch
{
if( -not ($Library = Add-Type -path $SQLiteAssembly -PassThru -ErrorAction stop) )
{
Throw "This module requires the ADO.NET driver for SQLite:`n`thttp://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki"
}
}
if ($PSBoundParameters.ContainsKey('InputFile'))
{
$filePath = $(Resolve-Path $InputFile).path
$Query = [System.IO.File]::ReadAllText("$filePath")
Write-Verbose "Extracted query from [$InputFile]"
}
Write-Verbose "Running Invoke-SQLiteQuery with ParameterSet '$($PSCmdlet.ParameterSetName)'. Performing query '$Query'"
If($As -eq "PSObject")
{
#This code scrubs DBNulls. Props to Dave Wyatt
$cSharp = @'
using System;
using System.Data;
using System.Management.Automation;
public class DBNullScrubber
{
public static PSObject DataRowToPSObject(DataRow row)
{
PSObject psObject = new PSObject();
if (row != null && (row.RowState & DataRowState.Detached) != DataRowState.Detached)
{
foreach (DataColumn column in row.Table.Columns)
{
Object value = null;
if (!row.IsNull(column))
{
value = row[column];
}
psObject.Properties.Add(new PSNoteProperty(column.ColumnName, value));
}
}
return psObject;
}
}
'@
Try
{
Add-Type -TypeDefinition $cSharp -ReferencedAssemblies 'System.Data','System.Xml' -ErrorAction stop
}
Catch
{
If(-not $_.ToString() -like "*The type name 'DBNullScrubber' already exists*")
{
Write-Warning "Could not load DBNullScrubber. Defaulting to DataRow output: $_"
$As = "Datarow"
}
}
}
#Handle existing connections
if($PSBoundParameters.Keys -contains "SQLiteConnection")
{
if($SQLiteConnection.State -notlike "Open")
{
Try
{
$SQLiteConnection.Open()
}
Catch
{
Throw $_
}
}
if($SQLiteConnection.state -notlike "Open")
{
Throw "SQLiteConnection is not open:`n$($SQLiteConnection | Out-String)"
}
$DataSource = @("WHAT")
}
}
Process
{
foreach($DB in $DataSource)
{
if($PSBoundParameters.Keys -contains "SQLiteConnection")
{
$Conn = $SQLiteConnection
}
else
{
# Resolve the path entered for the database to a proper path name.
# This accounts for a variaty of possible ways to provide a path, but
# in the end the connection string needs a fully qualified file path.
if ($DB -match ":MEMORY:")
{
$Database = $DB
}
else
{
$Database = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($DB)
}
if(Test-Path $Database)
{
Write-Verbose "Querying existing Data Source '$Database'"
}
else
{
Write-Verbose "Creating andn querying Data Source '$Database'"
}
$ConnectionString = "Data Source={0}" -f $Database
$conn = New-Object System.Data.SQLite.SQLiteConnection -ArgumentList $ConnectionString
$conn.ParseViaFramework = $true #Allow UNC paths, thanks to Ray Alex!
Write-Debug "ConnectionString $ConnectionString"
Try
{
$conn.Open()
}
Catch
{
Write-Error $_
continue
}
}
$cmd = $Conn.CreateCommand()
$cmd.CommandText = $Query
$cmd.CommandTimeout = $QueryTimeout
if ($SqlParameters -ne $null)
{
$SqlParameters.GetEnumerator() |
ForEach-Object {
If ($_.Value -ne $null)
{
if($_.Value -is [datetime]) { $_.Value = $_.Value.ToString("yyyy-MM-dd HH:mm:ss") }
$cmd.Parameters.AddWithValue("@$($_.Key)", $_.Value)
}
Else
{
$cmd.Parameters.AddWithValue("@$($_.Key)", [DBNull]::Value)
}
} > $null
}
$ds = New-Object system.Data.DataSet
$da = New-Object System.Data.SQLite.SQLiteDataAdapter($cmd)
Try
{
[void]$da.fill($ds)
if($PSBoundParameters.Keys -notcontains "SQLiteConnection")
{
$conn.Close()
}
$cmd.Dispose()
}
Catch
{
$Err = $_
if($PSBoundParameters.Keys -notcontains "SQLiteConnection")
{
$conn.Close()
}
switch ($ErrorActionPreference.tostring())
{
{'SilentlyContinue','Ignore' -contains $_} {}
'Stop' { Throw $Err }
'Continue' { Write-Error $Err}
Default { Write-Error $Err}
}
}
if($AppendDataSource)
{
#Basics from Chad Miller
$Column = New-Object Data.DataColumn
$Column.ColumnName = "Datasource"
$ds.Tables[0].Columns.Add($Column)
Try
{
#Someone better at regular expression, feel free to tackle this
$Conn.ConnectionString -match "Data Source=(?<DataSource>.*);"
$Datasrc = $Matches.DataSource.split(";")[0]
}
Catch
{
$Datasrc = $DB
}
Foreach($row in $ds.Tables[0])
{
$row.Datasource = $Datasrc
}
}
switch ($As)
{
'DataSet'
{
$ds
}
'DataTable'
{
$ds.Tables
}
'DataRow'
{
$ds.Tables[0]
}
'PSObject'
{
#Scrub DBNulls - Provides convenient results you can use comparisons with
#Introduces overhead (e.g. ~2000 rows w/ ~80 columns went from .15 Seconds to .65 Seconds - depending on your data could be much more!)
foreach ($row in $ds.Tables[0].Rows)
{
[DBNullScrubber]::DataRowToPSObject($row)
}
}
'SingleValue'
{
$ds.Tables[0] | Select-Object -ExpandProperty $ds.Tables[0].Columns[0].ColumnName
}
}
}
}
}

View File

@ -0,0 +1,141 @@
function New-SQLiteConnection
{
<#
.SYNOPSIS
Creates a SQLiteConnection to a SQLite data source
.DESCRIPTION
Creates a SQLiteConnection to a SQLite data source
.PARAMETER DataSource
SQLite Data Source to connect to.
.PARAMETER Password
Specifies A Secure String password to use in the SQLite connection string.
SECURITY NOTE: If you use the -Debug switch, the connectionstring including plain text password will be sent to the debug stream.
.PARAMETER ReadOnly
If specified, open SQLite data source as read only
.PARAMETER Open
We open the connection by default. You can use this parameter to create a connection without opening it.
.OUTPUTS
System.Data.SQLite.SQLiteConnection
.EXAMPLE
$Connection = New-SQLiteConnection -DataSource C:\NAMES.SQLite
Invoke-SQLiteQuery -SQLiteConnection $Connection -query $Query
# Connect to C:\NAMES.SQLite, invoke a query against it
.EXAMPLE
$Connection = New-SQLiteConnection -DataSource :MEMORY:
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "CREATE TABLE OrdersToNames (OrderID INT PRIMARY KEY, fullname TEXT);"
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "INSERT INTO OrdersToNames (OrderID, fullname) VALUES (1,'Cookie Monster');"
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "PRAGMA STATS"
# Create a connection to a SQLite data source in memory
# Create a table in the memory based datasource, verify it exists with PRAGMA STATS
$Connection.Close()
$Connection.Open()
Invoke-SqliteQuery -SQLiteConnection $Connection -Query "PRAGMA STATS"
#Close the connection, open it back up, verify that the ephemeral data no longer exists
.LINK
https://github.com/RamblingCookieMonster/Invoke-SQLiteQuery
.LINK
Invoke-SQLiteQuery
.FUNCTIONALITY
SQL
#>
[cmdletbinding()]
[OutputType([System.Data.SQLite.SQLiteConnection])]
param(
[Parameter( Position=0,
Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true,
ValueFromRemainingArguments=$false,
HelpMessage='SQL Server Instance required...' )]
[Alias( 'Instance', 'Instances', 'ServerInstance', 'Server', 'Servers','cn','Path','File','FullName','Database' )]
[ValidateNotNullOrEmpty()]
[string[]]
$DataSource,
[Parameter( Position=2,
Mandatory=$false,
ValueFromPipelineByPropertyName=$true,
ValueFromRemainingArguments=$false )]
[System.Security.SecureString]
$Password,
[Parameter( Position=3,
Mandatory=$false,
ValueFromPipelineByPropertyName=$true,
ValueFromRemainingArguments=$false )]
[Switch]
$ReadOnly,
[Parameter( Position=4,
Mandatory=$false,
ValueFromPipelineByPropertyName=$true,
ValueFromRemainingArguments=$false )]
[bool]
$Open = $True
)
Process
{
foreach($DataSRC in $DataSource)
{
if ($DataSRC -match ':MEMORY:' )
{
$Database = $DataSRC
}
else
{
$Database = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($DataSRC)
}
Write-Verbose "Querying Data Source '$Database'"
[string]$ConnectionString = "Data Source=$Database;"
if ($Password)
{
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password)
$PlainPassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
$ConnectionString += "Password=$PlainPassword;"
}
if($ReadOnly)
{
$ConnectionString += "Read Only=True;"
}
$conn = New-Object System.Data.SQLite.SQLiteConnection -ArgumentList $ConnectionString
$conn.ParseViaFramework = $true #Allow UNC paths, thanks to Ray Alex!
Write-Debug "ConnectionString $ConnectionString"
if($Open)
{
Try
{
$conn.Open()
}
Catch
{
Write-Error $_
continue
}
}
write-Verbose "Created SQLiteConnection:`n$($Conn | Out-String)"
$Conn
}
}
}

View File

@ -0,0 +1,193 @@
function Out-DataTable
{
<#
.SYNOPSIS
Creates a DataTable for an object
.DESCRIPTION
Creates a DataTable based on an object's properties.
.PARAMETER InputObject
One or more objects to convert into a DataTable
.PARAMETER NonNullable
A list of columns to set disable AllowDBNull on
.INPUTS
Object
Any object can be piped to Out-DataTable
.OUTPUTS
System.Data.DataTable
.EXAMPLE
$dt = Get-psdrive | Out-DataTable
# This example creates a DataTable from the properties of Get-psdrive and assigns output to $dt variable
.EXAMPLE
Get-Process | Select Name, CPU | Out-DataTable | Invoke-SQLBulkCopy -ServerInstance $SQLInstance -Database $Database -Table $SQLTable -force -verbose
# Get a list of processes and their CPU, create a datatable, bulk import that data
.NOTES
Adapted from script by Marc van Orsouw and function from Chad Miller
Version History
v1.0 - Chad Miller - Initial Release
v1.1 - Chad Miller - Fixed Issue with Properties
v1.2 - Chad Miller - Added setting column datatype by property as suggested by emp0
v1.3 - Chad Miller - Corrected issue with setting datatype on empty properties
v1.4 - Chad Miller - Corrected issue with DBNull
v1.5 - Chad Miller - Updated example
v1.6 - Chad Miller - Added column datatype logic with default to string
v1.7 - Chad Miller - Fixed issue with IsArray
v1.8 - ramblingcookiemonster - Removed if($Value) logic. This would not catch empty strings, zero, $false and other non-null items
- Added perhaps pointless error handling
.LINK
https://github.com/RamblingCookieMonster/PowerShell
.LINK
Invoke-SQLBulkCopy
.LINK
Invoke-Sqlcmd2
.LINK
New-SQLConnection
.FUNCTIONALITY
SQL
#>
[CmdletBinding()]
[OutputType([System.Data.DataTable])]
param(
[Parameter( Position=0,
Mandatory=$true,
ValueFromPipeline = $true)]
[PSObject[]]$InputObject,
[string[]]$NonNullable = @()
)
Begin
{
$dt = New-Object Data.datatable
$First = $true
function Get-ODTType
{
param($type)
$types = @(
'System.Boolean',
'System.Byte[]',
'System.Byte',
'System.Char',
'System.Datetime',
'System.Decimal',
'System.Double',
'System.Guid',
'System.Int16',
'System.Int32',
'System.Int64',
'System.Single',
'System.UInt16',
'System.UInt32',
'System.UInt64')
if ( $types -contains $type ) {
Write-Output "$type"
}
else {
Write-Output 'System.String'
}
} #Get-Type
}
Process
{
foreach ($Object in $InputObject)
{
$DR = $DT.NewRow()
foreach ($Property in $Object.PsObject.Properties)
{
$Name = $Property.Name
$Value = $Property.Value
#RCM: what if the first property is not reflective of all the properties? Unlikely, but...
if ($First)
{
$Col = New-Object Data.DataColumn
$Col.ColumnName = $Name
#If it's not DBNull or Null, get the type
if ($Value -isnot [System.DBNull] -and $Value -ne $null)
{
$Col.DataType = [System.Type]::GetType( $(Get-ODTType $property.TypeNameOfValue) )
}
#Set it to nonnullable if specified
if ($NonNullable -contains $Name )
{
$col.AllowDBNull = $false
}
try
{
$DT.Columns.Add($Col)
}
catch
{
Write-Error "Could not add column $($Col | Out-String) for property '$Name' with value '$Value' and type '$($Value.GetType().FullName)':`n$_"
}
}
Try
{
#Handle arrays and nulls
if ($property.GetType().IsArray)
{
$DR.Item($Name) = $Value | ConvertTo-XML -As String -NoTypeInformation -Depth 1
}
elseif($Value -eq $null)
{
$DR.Item($Name) = [DBNull]::Value
}
else
{
$DR.Item($Name) = $Value
}
}
Catch
{
Write-Error "Could not add property '$Name' with value '$Value' and type '$($Value.GetType().FullName)'"
continue
}
#Did we get a null or dbnull for a non-nullable item? let the user know.
if($NonNullable -contains $Name -and ($Value -is [System.DBNull] -or $Value -eq $null))
{
write-verbose "NonNullable property '$Name' with null value found: $($object | out-string)"
}
}
Try
{
$DT.Rows.Add($DR)
}
Catch
{
Write-Error "Failed to add row '$($DR | Out-String)':`n$_"
}
$First = $false
}
}
End
{
Write-Output @(,$dt)
}
} #Out-DataTable

View File

@ -0,0 +1,88 @@
@{
# Script module or binary module file associated with this manifest.
ModuleToProcess = 'PSSQLite.psm1'
# Version number of this module.
ModuleVersion = '1.0.3'
# ID used to uniquely identify this module
GUID = '381f3394-9b8a-492e-94b4-b3aa9e775761'
# Author of this module
Author = 'ramblingcookiemonster'
# Company or vendor of this module
CompanyName = ''
# Copyright statement for this module
# Copyright = '(c) 2014 ramblingcookiemonster. All rights reserved.'
# Description of the functionality provided by this module
Description = 'Query SQLite databases'
# Minimum version of the Windows PowerShell engine required by this module
PowerShellVersion = '2.0'
# Name of the Windows PowerShell host required by this module
# PowerShellHostName = ''
# Minimum version of the Windows PowerShell host required by this module
# PowerShellHostVersion = ''
# Minimum version of Microsoft .NET Framework required by this module
# DotNetFrameworkVersion = ''
# Minimum version of the common language runtime (CLR) required by this module
# CLRVersion = ''
# Processor architecture (None, X86, Amd64) required by this module
# ProcessorArchitecture = ''
# Modules that must be imported into the global environment prior to importing this module
# RequiredModules = @()
# Assemblies that must be loaded prior to importing this module
# RequiredAssemblies = @()
# Script files (.ps1) that are run in the caller's environment prior to importing this module.
# ScriptsToProcess = @()
# Type files (.ps1xml) to be loaded when importing this module
# TypesToProcess = @()
# Format files (.ps1xml) to be loaded when importing this module
# FormatsToProcess = @()
# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
# NestedModules = @()
# Functions to export from this module
# FunctionsToExport = '*'
# Cmdlets to export from this module
# CmdletsToExport = '*'
# Variables to export from this module
# VariablesToExport = '*'
# Aliases to export from this module
# AliasesToExport = '*'
# List of all modules packaged with this module
# ModuleList = @()
# List of all files packaged with this module
# FileList = @()
# Private data to pass to the module specified in RootModule/ModuleToProcess
# PrivateData = ''
# HelpInfo URI of this module
# HelpInfoURI = ''
# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
# DefaultCommandPrefix = ''
}

View File

@ -0,0 +1,48 @@
#handle PS2
if(-not $PSScriptRoot)
{
$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
}
#Pick and import assemblies:
if([IntPtr]::size -eq 8) #64
{
$SQLiteAssembly = Join-path $PSScriptRoot "x64\System.Data.SQLite.dll"
}
elseif([IntPtr]::size -eq 4) #32
{
$SQLiteAssembly = Join-path $PSScriptRoot "x86\System.Data.SQLite.dll"
}
else
{
Throw "Something is odd with bitness..."
}
if( -not ($Library = Add-Type -path $SQLiteAssembly -PassThru -ErrorAction stop) )
{
Throw "This module requires the ADO.NET driver for SQLite:`n`thttp://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki"
}
#Get public and private function definition files.
$Public = Get-ChildItem $PSScriptRoot\*.ps1 -ErrorAction SilentlyContinue
#$Private = Get-ChildItem $PSScriptRoot\Private\*.ps1 -ErrorAction SilentlyContinue
#Dot source the files
Foreach($import in @($Public))
{
Try
{
#PS2 compatibility
if($import.fullname)
{
. $import.fullname
}
}
Catch
{
Write-Error "Failed to import function $($import.fullname): $_"
}
}
#Create some aliases, export public functions
Export-ModuleMember -Function $($Public | Select -ExpandProperty BaseName)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,8 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>MySql.Data.EntityFrameworkCore.Design</name>
</assembly>
<members>
</members>
</doc>

Binary file not shown.

View File

@ -0,0 +1,264 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>MySql.Data.EntityFrameworkCore</name>
</assembly>
<members>
<member name="T:MySql.Data.EntityFrameworkCore.DataAnnotations.MySqlCharsetAttribute">
<summary>
Establishes the character set of an entity property.
</summary>
</member>
<member name="P:MySql.Data.EntityFrameworkCore.DataAnnotations.MySqlCharsetAttribute.Charset">
<summary>
Character set to use for the attribute.
</summary>
</member>
<member name="M:MySql.Data.EntityFrameworkCore.DataAnnotations.MySqlCharsetAttribute.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:MySql.Data.EntityFrameworkCore.DataAnnotations.MySqlCharsetAttribute"/> class.
</summary>
<param name="charset">Character set to use.</param>
</member>
<member name="T:MySql.Data.EntityFrameworkCore.DataAnnotations.MySqlCollationAttribute">
<summary>
Sets the collation in an entity property.
</summary>
</member>
<member name="P:MySql.Data.EntityFrameworkCore.DataAnnotations.MySqlCollationAttribute.Collation">
<summary>
Collation set in the attribute.
</summary>
</member>
<member name="M:MySql.Data.EntityFrameworkCore.DataAnnotations.MySqlCollationAttribute.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:MySql.Data.EntityFrameworkCore.DataAnnotations.MySqlCollationAttribute"/> class.
</summary>
<param name="collation">Collation to use.</param>
</member>
<member name="T:MySql.Data.EntityFrameworkCore.Extensions.MySQLPropertyBuilderExtensions">
<summary>
Represents the implementation of MySQL property-builder extensions used in Fluent API.
</summary>
</member>
<member name="M:MySql.Data.EntityFrameworkCore.Extensions.MySQLPropertyBuilderExtensions.UseMySQLAutoIncrementColumn(Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder,System.String)">
<summary>
Defines a MySQL auto-increment column.
</summary>
<param name="propertyBuilder">Entity property to be set.</param>
<param name="typeName">MySQL column type as string.</param>
<returns>Property builder of the auto-increment column.</returns>
</member>
<member name="M:MySql.Data.EntityFrameworkCore.Extensions.MySQLPropertyBuilderExtensions.ForMySQLHasDefaultValueSql(Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder,System.String)">
<summary>
Defines a column default value expression.
</summary>
<param name="propertyBuilder">Entity property to be set.</param>
<param name="sql">Default value expression.</param>
<returns>Property builder of a MySQL column with a default value.</returns>
</member>
<member name="M:MySql.Data.EntityFrameworkCore.Extensions.MySQLPropertyBuilderExtensions.ForMySQLHasDefaultValue(Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder,System.Object)">
<summary>
Defines a column default value.
</summary>
<param name="propertyBuilder">Entity property to be set.</param>
<param name="sql">Default value.</param>
<returns>Property builder of a MySQL column with a default value.</returns>
</member>
<member name="M:MySql.Data.EntityFrameworkCore.Extensions.MySQLPropertyBuilderExtensions.ForMySQLHasCharset(Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder,System.String)">
<summary>
Adds the character set to an entity property.
</summary>
<param name="propertyBuilder">Property builder.</param>
<param name="charset">MySQL character set to use.</param>
<returns>Property builder with a character set.</returns>
</member>
<member name="M:MySql.Data.EntityFrameworkCore.Extensions.MySQLPropertyBuilderExtensions.ForMySQLHasCharset(Microsoft.EntityFrameworkCore.Metadata.Builders.EntityTypeBuilder,System.String)">
<summary>
Adds the character set to an entity.
</summary>
<param name="entityTypeBuilder">Entity type builder.</param>
<param name="charset">MySQL character set to use.</param>
<returns>Entity type builder with a character set.</returns>
</member>
<member name="M:MySql.Data.EntityFrameworkCore.Extensions.MySQLPropertyBuilderExtensions.ForMySQLHasCollation(Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder,System.String)">
<summary>
Adds the collation to an entity property.
</summary>
<param name="propertyBuilder">Property builder.</param>
<param name="collation">MySQL collation to use.</param>
<returns>Property builder with a collation.</returns>
</member>
<member name="M:MySql.Data.EntityFrameworkCore.Extensions.MySQLPropertyBuilderExtensions.ForMySQLHasCollation(Microsoft.EntityFrameworkCore.Metadata.Builders.EntityTypeBuilder,System.String)">
<summary>
Adds the collation to an entity.
</summary>
<param name="entityTypeBuilder">Entity type builder.</param>
<param name="collation">MySQL collation to use.</param>
<returns>Entity type builder with a collation.</returns>
</member>
<member name="T:MySql.Data.EntityFrameworkCore.Extensions.MySQLServiceCollectionExtensions">
<summary>
MySQL extension class for <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection" />.
</summary>
</member>
<member name="M:MySql.Data.EntityFrameworkCore.Extensions.MySQLServiceCollectionExtensions.AddEntityFrameworkMySQL(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
<summary>
Extension method used to configure all MySQL services.
</summary>
<param name="services">Collection of service descriptors.</param>
<returns>Collection of MySQL services descriptors.</returns>
</member>
<member name="T:MySql.Data.EntityFrameworkCore.Infraestructure.MySQLDbContextOptionsBuilder">
<summary>
Represents the <see cref="T:Microsoft.EntityFrameworkCore.Infrastructure.RelationalDbContextOptionsBuilder`2" /> implemented for MySQL.
</summary>
<summary>
Represents the <see cref="T:Microsoft.EntityFrameworkCore.Infrastructure.RelationalDbContextOptionsBuilder`2" /> implementation for MySQL.
</summary>
</member>
<member name="T:MySql.Data.EntityFrameworkCore.Infraestructure.MySQLOptionsExtension">
<summary>
Represents the <see cref="T:Microsoft.EntityFrameworkCore.Infrastructure.RelationalOptionsExtension"/> implementation for MySQL.
</summary>
<summary>
Represents the <see cref="T:Microsoft.EntityFrameworkCore.Infrastructure.RelationalOptionsExtension"/> implementation for MySQL.
</summary>
</member>
<member name="M:MySql.Data.EntityFrameworkCore.Infraestructure.MySQLOptionsExtension.ApplyServices(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
<summary>
This method supports the Entity Framework Core infrastructure and is not intended to be used
directly from your code. This method may change or be removed in future releases.
</summary>
</member>
<member name="T:MySql.Data.EntityFrameworkCore.Metadata.MySQLAnnotationProvider">
<summary>
Annotation Provider implementation
</summary>
</member>
<member name="T:MySql.Data.EntityFrameworkCore.Metadata.Internal.MySQLFullAnnotationNames">
<summary>
RelationalFullAnnotationNames for MySQL
</summary>
</member>
<member name="T:MySql.Data.EntityFrameworkCore.Metadata.Internal.MySQLAnnotationNames">
<summary>
Names for MySQL annotations.
</summary>
</member>
<member name="T:MySql.Data.EntityFrameworkCore.Migrations.MySQLMigrationsSqlGenerator">
<summary>
MigrationSqlGenerator implementation for MySQL
</summary>
<summary>
MigrationSqlGenerator implementation for MySQL
</summary>
</member>
<member name="T:MySql.Data.EntityFrameworkCore.Migrations.Operations.MySQLCreateDatabaseOperation">
<summary>
Create database operation class for migrations
</summary>
</member>
<member name="T:MySql.Data.EntityFrameworkCore.Migrations.Operations.MySQLDropDatabaseOperation">
<summary>
Drop database operation for migrations.
</summary>
</member>
<member name="T:MySql.Data.EntityFrameworkCore.MySQLCompositeMethodCallTranslator">
<summary>
RelationalCompositeMethodCallTranslator implementation for MySQL
</summary>
<summary>
RelationalCompositeMethodCallTranslator implementation for MySQL
</summary>
</member>
<member name="T:MySql.Data.EntityFrameworkCore.Query.MySQLQueryGeneratorFactory">
<summary>
Implementation for QuerySqlGeneratorFactoryBase
</summary>
</member>
<member name="M:MySql.Data.EntityFrameworkCore.Storage.Internal.MySQLCommandBuilder.Build">
<summary>
This API supports the Entity Framework Core infrastructure and is not intended to be used
directly from your code. This API may change or be removed in future releases.
</summary>
</member>
<member name="M:MySql.Data.EntityFrameworkCore.Storage.Internal.MySQLCommandBuilder.ToString">
<summary>
This API supports the Entity Framework Core infrastructure and is not intended to be used
directly from your code. This API may change or be removed in future releases.
</summary>
</member>
<member name="T:MySql.Data.EntityFrameworkCore.MySQLDatabaseCreator">
<summary>
Relational Database creator implementation in MySQL
</summary>
<summary>
Relational Database creator implementation in MySQL
</summary>
</member>
<member name="T:MySql.Data.EntityFrameworkCore.MySQLDatabaseProviderServices">
<summary>
RelationalDatabaseProviderServices implementation for MySQL
</summary>
</member>
<member name="T:MySql.Data.EntityFrameworkCore.MySQLCompositeMemberTranslator">
<summary>
RelationalCompositeMemberTranslator implementation for MySQL
</summary>
</member>
<member name="T:MySql.Data.EntityFrameworkCore.Update.MySQLModificationCommandBatch">
<summary>
AffectedCountModificationCommandBatch implementation for MySQL
</summary>
</member>
<member name="T:MySql.Data.EntityFrameworkCore.Update.MySQLModificationCommandBatchFactory">
<summary>
IModificationCommandBatchFactory implemntation for MySQL
</summary>
</member>
<member name="T:Microsoft.EntityFrameworkCore.MySQLDbContextOptionsExtensions">
<summary>
Represents the context-option extensions implemented for MySQL.
</summary>
</member>
<member name="M:Microsoft.EntityFrameworkCore.MySQLDbContextOptionsExtensions.UseMySQL(Microsoft.EntityFrameworkCore.DbContextOptionsBuilder,System.String,System.Action{MySql.Data.EntityFrameworkCore.Infraestructure.MySQLDbContextOptionsBuilder})">
<summary>
Configures the <see cref="T:Microsoft.EntityFrameworkCore.DbContext" /> to use MySQL Sever.
</summary>
<param name="optionsBuilder">DbContext option builder.</param>
<param name="connectionString">MySQL connection string.</param>
<param name="MySQLOptionsAction">DbContext option builder action.</param>
<returns>DbContext option builder using MySQL.</returns>
</member>
<member name="M:Microsoft.EntityFrameworkCore.MySQLDbContextOptionsExtensions.UseMySQL(Microsoft.EntityFrameworkCore.DbContextOptionsBuilder,System.Data.Common.DbConnection,System.Action{MySql.Data.EntityFrameworkCore.Infraestructure.MySQLDbContextOptionsBuilder})">
<summary>
Configures the <see cref="T:Microsoft.EntityFrameworkCore.DbContext" /> to use MySQL Sever.
</summary>
<param name="optionsBuilder">DbContext option builder.</param>
<param name="connection">MySQL connection object.</param>
<param name="MySQLOptionsAction">DbContext option builder action.</param>
<returns>DbContext option builder using MySQL.</returns>
</member>
<member name="M:Microsoft.EntityFrameworkCore.MySQLDbContextOptionsExtensions.UseMySQL``1(Microsoft.EntityFrameworkCore.DbContextOptionsBuilder{``0},System.String,System.Action{MySql.Data.EntityFrameworkCore.Infraestructure.MySQLDbContextOptionsBuilder})">
<summary>
Configures the <see cref="T:Microsoft.EntityFrameworkCore.DbContext" /> to use MySQL Sever.
</summary>
<typeparam name="TContext"><see cref="T:Microsoft.EntityFrameworkCore.DbContext" /> type.</typeparam>
<param name="optionsBuilder">DbContext option builder.</param>
<param name="connectionString">MySQL connection string.</param>
<param name="MySQLOptionsAction">DbContext option builder action.</param>
<returns>DbContext option builder using MySQL.</returns>
</member>
<member name="M:Microsoft.EntityFrameworkCore.MySQLDbContextOptionsExtensions.UseMySQL``1(Microsoft.EntityFrameworkCore.DbContextOptionsBuilder{``0},System.Data.Common.DbConnection,System.Action{MySql.Data.EntityFrameworkCore.Infraestructure.MySQLDbContextOptionsBuilder})">
<summary>
Configures the <see cref="T:Microsoft.EntityFrameworkCore.DbContext" /> to use MySQL Sever.
</summary>
<typeparam name="TContext"><see cref="T:Microsoft.EntityFrameworkCore.DbContext" /> type.</typeparam>
<param name="optionsBuilder">DbContext option builder.</param>
<param name="connection">MySQL connection object.</param>
<param name="MySQLOptionsAction">DbContext option builder action.</param>
<returns>DbContext option builder using MySQL.</returns>
</member>
</members>
</doc>

Binary file not shown.

View File

@ -0,0 +1,172 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>MySql.Data.Entity.EF6</name>
</assembly>
<members>
<member name="T:MySql.Data.Entity.SqlFragmentVisitor">
<summary>
Visitor for SqlFragment and derived classes, useful for postprocessing and optimizations.
</summary>
</member>
<member name="T:MySql.Data.Entity.ReplaceTableNameVisitor">
<summary>
Visitor to replace old table names with new table names. Used as part postprocessing of the code for fusing nested selects.
</summary>
</member>
<member name="M:MySql.Data.Entity.SelectGenerator.TryFlatteningGroupBy(MySql.Data.Entity.SqlFragment)">
<summary>
If input sqlFragment is a group by structure, is flattened to remove some nested correlation queries.
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:MySql.Data.Entity.SqlGenerator.TryFusingSelect(MySql.Data.Entity.InputFragment)">
<summary>
If current fragment is select and its from clause is another select, try fuse the inner select with the outer select.
(Thus removing a nested query, which may have bad performance in Mysql).
</summary>
<param name="f">The fragment to probe and posibly optimize</param>
<returns>The fragment fused, or the original one.</returns>
</member>
<member name="M:MySql.Data.Entity.SqlGenerator.TryPromoteToLike(System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.Data.Entity.Core.Common.CommandTrees.DbExpression,System.String)">
<summary>
Examines a binary expression to see if it is an special case suitable to conversion
to a more efficient and equivalent LIKE sql expression.
</summary>
<param name="left"></param>
<param name="right"></param>
<param name="op"></param>
<returns></returns>
</member>
<member name="T:MySql.Data.Entity.MySqlConnectionFactory">
<summary>
Used for creating connections in Code First 4.3.
</summary>
</member>
<member name="T:MySql.Data.Entity.MySqlExecutionStrategy">
<summary>
An execution strategy tailored for handling MySql Server transient errors.
</summary>
</member>
<member name="F:MySql.Data.Entity.MySqlExecutionStrategy.errorsToRetryOn">
<summary>
Different back off algorithms used for different errors.
</summary>
</member>
<member name="T:MySql.Data.Entity.BackoffAlgorithm">
<summary>
The base class for backoff algorithms.
</summary>
<remarks>Different transient error conditions require different approaches.</remarks>
</member>
<member name="M:MySql.Data.Entity.BackoffAlgorithm.GetNextDelay">
<summary>
The default implementation is an exponential delay backoff.
</summary>
<returns></returns>
</member>
<member name="M:MySql.Data.Entity.BackoffAlgorithm.Reset">
<summary>
Resets a backoff algorithm, so they can be reused.
</summary>
</member>
<member name="T:MySql.Data.Entity.BackoffAlgorithmErr1040">
<summary>
Back-off algorithm customized for the MySql error code 1040 - Too many connections.
</summary>
</member>
<member name="T:MySql.Data.Entity.BackoffAlgorithmErr1614">
<summary>
Back-off algorithm for the Mysql error code 1614 - Transaction branch was rolled back: deadlock was detected.
</summary>
</member>
<member name="T:MySql.Data.Entity.BackoffAlgorithmErr1205">
<summary>
Back-off algorithm customized for the MySql error code 1205 - Lock wait timeout exceeded; try restarting transaction.
</summary>
</member>
<member name="T:MySql.Data.Entity.BackoffAlgorithmErr1213">
<summary>
Back-off algorithm customized for MySql error code 1213 - Deadlock found when trying to get lock; try restarting transaction.
</summary>
</member>
<member name="T:MySql.Data.Entity.BackoffAlgorithmErr2006">
<summary>
Back-off algorithm customized for MySql error code 2006 - MySQL server has gone away.
</summary>
</member>
<member name="T:MySql.Data.Entity.BackoffAlgorithmErr2013">
<summary>
Back-off algorithm customized for MySql error code 2013 - Lost connection to MySQL server during query.
</summary>
</member>
<member name="T:MySql.Data.Entity.BackoffAlgorithmNdb">
<summary>
Back-off algorithm customized for MySql Cluster (NDB) errors.
</summary>
</member>
<member name="T:MySql.Data.Entity.MySqlMigrationCodeGenerator">
<summary>
Class used to customized code generation
to avoid dbo. prefix added on table names.
</summary>
</member>
<member name="T:MySql.Data.Entity.MySqlMigrationSqlGenerator">
<summary>
Implementation of a MySql's Sql generator for EF 4.3 data migrations.
</summary>
</member>
<member name="T:MySql.Data.Entity.Properties.Resources">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:MySql.Data.Entity.Properties.Resources.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:MySql.Data.Entity.Properties.Resources.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="P:MySql.Data.Entity.Properties.Resources.ConnectionMustBeOfTypeMySqlConnection">
<summary>
Looks up a localized string similar to The connection parameter must reference an object of type MySql.Data.MySqlConnection.
</summary>
</member>
<member name="P:MySql.Data.Entity.Properties.Resources.NoStoreTypeForEdmType">
<summary>
Looks up a localized string similar to There is no store type corresponding to the EDM type &apos;{0}&apos; of primitive type &apos;{1}&apos;..
</summary>
</member>
<member name="P:MySql.Data.Entity.Properties.Resources.TypeNotSupported">
<summary>
Looks up a localized string similar to The underlying provider does not support the type &apos;{0}&apos;..
</summary>
</member>
<member name="P:MySql.Data.Entity.Properties.Resources.WrongFunctionResultType">
<summary>
Looks up a localized string similar to Result type of a function is expected to be a collection of RowType or PrimitiveType.
</summary>
</member>
<member name="M:MySql.Data.MySqlClient.MySqlProviderServices.SetExpectedTypes(System.Data.Entity.Core.Common.CommandTrees.DbCommandTree,MySql.Data.Entity.EFMySqlCommand)">
<summary>
Sets the expected column types
</summary>
</member>
<member name="M:MySql.Data.MySqlClient.MySqlProviderServices.SetQueryExpectedTypes(System.Data.Entity.Core.Common.CommandTrees.DbQueryCommandTree,MySql.Data.Entity.EFMySqlCommand)">
<summary>
Sets the expected column types for a given query command tree
</summary>
</member>
<member name="M:MySql.Data.MySqlClient.MySqlProviderServices.SetFunctionExpectedTypes(System.Data.Entity.Core.Common.CommandTrees.DbFunctionCommandTree,MySql.Data.Entity.EFMySqlCommand)">
<summary>
Sets the expected column types for a given function command tree
</summary>
</member>
</members>
</doc>

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><ArrayOfKeyValueOfanyTypeanyType xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:x="http://www.w3.org/2001/XMLSchema" z:Id="1" z:Type="System.Collections.Hashtable" z:Assembly="0" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays"><LoadFactor z:Id="2" z:Type="System.Single" z:Assembly="0" xmlns="">0.72</LoadFactor><Version z:Id="3" z:Type="System.Int32" z:Assembly="0" xmlns="">2</Version><Comparer i:nil="true" xmlns="" /><HashCodeProvider i:nil="true" xmlns="" /><HashSize z:Id="4" z:Type="System.Int32" z:Assembly="0" xmlns="">3</HashSize><Keys z:Id="5" z:Type="System.Object[]" z:Assembly="0" z:Size="2" xmlns=""><anyType z:Id="6" z:Type="System.String" z:Assembly="0" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">_reserved_nestedSavedStates</anyType><anyType z:Id="7" z:Type="System.String" z:Assembly="0" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">_reserved_lastInstallerAttempted</anyType></Keys><Values z:Id="8" z:Type="System.Object[]" z:Assembly="0" z:Size="2" xmlns=""><anyType z:Id="9" z:Type="System.Collections.IDictionary[]" z:Assembly="0" z:Size="1" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays"><ArrayOfKeyValueOfanyTypeanyType z:Id="10" z:Type="System.Collections.Hashtable" z:Assembly="0"><LoadFactor z:Id="11" z:Type="System.Single" z:Assembly="0" xmlns="">0.72</LoadFactor><Version z:Id="12" z:Type="System.Int32" z:Assembly="0" xmlns="">2</Version><Comparer i:nil="true" xmlns="" /><HashCodeProvider i:nil="true" xmlns="" /><HashSize z:Id="13" z:Type="System.Int32" z:Assembly="0" xmlns="">3</HashSize><Keys z:Id="14" z:Type="System.Object[]" z:Assembly="0" z:Size="2" xmlns=""><anyType z:Ref="6" i:nil="true" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays" /><anyType z:Ref="7" i:nil="true" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays" /></Keys><Values z:Id="15" z:Type="System.Object[]" z:Assembly="0" z:Size="2" xmlns=""><anyType z:Id="16" z:Type="System.Collections.IDictionary[]" z:Assembly="0" z:Size="0" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays" /><anyType z:Id="17" z:Type="System.Int32" z:Assembly="0" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">-1</anyType></Values></ArrayOfKeyValueOfanyTypeanyType></anyType><anyType z:Id="18" z:Type="System.Int32" z:Assembly="0" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">0</anyType></Values></ArrayOfKeyValueOfanyTypeanyType>

BIN
mysql/MySql.Data.dll Normal file

Binary file not shown.

10606
mysql/MySql.Data.xml Normal file

File diff suppressed because it is too large Load Diff

BIN
mysql/MySql.Web.dll Normal file

Binary file not shown.

1493
mysql/MySql.Web.xml Normal file

File diff suppressed because it is too large Load Diff

1
setadpicture.bat Normal file
View File

@ -0,0 +1 @@
powershell.exe -executionpolicy bypass -noprofile -windowstyle hidden -nologo -ExecutionPolicy ByPass -command "& 'C:\Aufgaben\personio\setadpicture.ps1'"

1
setadpicture.vbs Normal file
View File

@ -0,0 +1 @@
sCreateObject("Wscript.Shell").Run ".\setadpicture.bat", 0, True

48
start.ps1 Normal file
View File

@ -0,0 +1,48 @@
<#
.SYNOPSIS
Personio Sync Script (Personio -> MEHRKANAL AD)
.DESCRIPTION
Dieses Script übernimmt Personenbezogene Daten aus Personio in die Active Directory
.EXAMPLE
PS C:\POSTV>.\mk.ps1
<Startet den Sync für alle User>
.NOTES
Author: Sebastian Mendyka <mendyka@mehrkanal.com>
Date: Sep 13, 2017
.Link
URL: https://developer.personio.de/v1.0/reference
#>
# 288 = 24 Stunden ( 288 x 5 (minuten) )
$MAXCOUNTER = "288"
$LOGDATE = Get-Date -Format "yyyy-MM-dd_"
$OWNPID = $([System.Diagnostics.Process]::GetCurrentProcess()).ID
$ScriptDir = [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition)
$ini = .\functions\functions.ps1 "$ScriptDir\config.ini"
if (!( Test-Path "$ScriptDir\tmp\counter.txt" )){
New-Item -ItemType File "$ScriptDir\tmp\counter.txt"
$COUNTER = 0
$COUNTER | Out-File "$ScriptDir\tmp\counter.txt"
} else {
[int]$COUNTER = Get-Content "$ScriptDir\tmp\counter.txt"
}
$COUNTER ++
switch ( $COUNTER )
{
{$_ -le $MAXCOUNTER } {
Write-Output "$COUNTER ist kleiner"
& "$PSScriptRoot\sync_diff.ps1"
}
{$_ -gt $MAXCOUNTER } {
Write-Output "$COUNTER ist größer"
& "$PSScriptRoot\sync_full.ps1"
& "$PSScriptRoot\sync_adpicture.ps1"
$COUNTER = 0
}
}
$COUNTER | Out-File "$ScriptDir\tmp\counter.txt"

140
sync_adpicture.ps1 Normal file
View File

@ -0,0 +1,140 @@
<#
.SYNOPSIS
Personio Sync Script (Personio -> MEHRKANAL AD)
.DESCRIPTION
Dieses Script übernimmt Personenbezogene Daten aus Personio in die Active Directory
.EXAMPLE
PS C:\POSTV>.\mk.ps1
<Startet den Sync für alle User>
.NOTES
Author: Sebastian Mendyka <mendyka@mehrkanal.com>
Date: Sep 13, 2017
.Link
URL: https://developer.personio.de/v1.0/reference
#>
######################################################################################
######################################################################################
# Variablen setzen
######################################################################################
######################################################################################
$application = "https://api.personio.de";
$company = "5989";
# Define the user credentials
$username = "#TOREPLACE#";
$password = "#TOREPLACE#";
# Force TLS1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$LOGDATE = Get-Date -Format "yyyy-MM-dd_"
$OWNPID = $([System.Diagnostics.Process]::GetCurrentProcess()).ID
$ScriptDir = [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition)
$ini = .\functions\functions.ps1 "$ScriptDir\config.ini"
$IMPERSONATEADMIN = $ini.exchange.impersonateuser
######################################################################################
######################################################################################
# Functions
######################################################################################
######################################################################################
# Active Directory Modul laden
. .\functions\json_function.ps1
# Active Directory Modul laden
. .\functions\activedirectory_function.ps1
# Füge Log Klasse hinzu, Inspiriert von https://gist.github.com/9to5IT/9620565
. .\functions\log_function.ps1
# Füge Exchange Klassen hinzu
. .\functions\exchange_function.ps1
# Füge Personio Klassen hinzu
. .\functions\personio.ps1
# Füge SQLITE Klassen hinzu
. .\functions\sqlite.ps1
# http://www.spech.de/2016/06/sqlite-mit-der-powershell-nutzen/
if (! $(Get-Command Invoke-SqliteQuery -ErrorAction SilentlyContinue)) {
Write-Log -Message "Aktiviere SQLITE Modul" -Level Warn
Import-Module "$($ScriptDir)\modules\sqlite\PSSQLite.psm1"
}
######################################################################################
######################################################################################
# Script
######################################################################################
######################################################################################
# Starte Logging
Write-Log -Message "Starte Picture Import" -Level Info
######################################################################################
######################################################################################
# Prüfe auf "User" Daten
######################################################################################
######################################################################################
try {
$getallapiuserdata = $(Get-UserInfo).content | ConvertFrom-Json | Select-Object -expand "data"
}
catch {
Write-Log -Message "Error: $_.Exception.Message - check_user_change - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
Send-ErrorMail -Mail "Error: get User-Data from API: $($_.Exception.Message)" -VACSTART "-" -VACENDE "-" -VACID "-"
exit
}
$getallapiuserdata | foreach {
[PSCustomObject]@{
FirstName = $_.attributes.first_name.value | Select-Object -First 1
LastName = $_.attributes.last_name.value | Select-Object -First 1
Email = $_.attributes.email.value | Select-Object -First 1
Position = $_.attributes.position.value | Select-Object -First 1
Abteilung = $_.attributes.department.value.attributes.name | Select-Object -First 1
Tel = $_.attributes.dynamic_99874.value | Select-Object -First 1
Status = $_.attributes.status.value | Select-Object -First 1
Kostenstelle = $_.attributes.cost_centers.value.attributes.name | Select-Object -First 1
Vorgesetzter = $_.attributes.supervisor.value.attributes.email.value | Select-Object -First 1
Fax = $_.attributes.dynamic_137780.value | Select-Object -First 1
ID = $_.attributes.dynamic_99886.value | Select-Object -First 1
PersonioID = $_.attributes.id.value | Select-Object -First 1
Mobile = $_.attributes.dynamic_99877.value | Select-Object -First 1
HomeMobile = $_.attributes.dynamic_130998.value | Select-Object -First 1
} | Where-Object { $_.Status -notLike "inactive" } | ForEach-Object {
if ( ! $_.ID -eq "$null" ) {
$photo = (Get-UserPicture $_.PersonioID).Content 2> $null
Write-Output "Prüfe: $($_.ID)"
$PhotoFile = "C:\Aufgaben\personio\pictures\$($_.ID).jpg"
if (! [string]::IsNullOrWhiteSpace($photo)) {
[System.IO.File]::WriteAllBytes($PhotoFile, $photo)
$file = [io.file]::ReadAllBytes($PhotoFile)
If ($file.length -gt 10000) {
Write-host " - Foto ist zu groß für AAD" -ForegroundColor Red
}
$Current = (Get-ADUser "$($_.ID)" -Properties thumbnailPhoto).thumbnailPhoto
if ($current -eq $null) {
Write-Host " - hat bislang kein Foto... setze" -ForegroundColor Yellow
Set-ADUser -Identity "$($_.ID)" -Replace @{thumbnailPhoto = $file }
}
elseif (Compare-Object $photo $current) {
Write-Host " - hat ein neues Foto... setze" -ForegroundColor Yellow
Set-ADUser -Identity "$($_.ID)" -Replace @{thumbnailPhoto = $file }
}
else {
Write-Host " - Bild bereits aktuell" -ForegroundColor Green
}
}
else {
Write-host " - Kein Foto in Personio vorhanden" -ForegroundColor Yellow
Set-ADUser -Identity "$($_.ID)" -Clear thumbnailPhoto
}
}
}
}
# Starte Logging
Write-Log -Message "Beende Picture Import" -Level Info

294
sync_diff.ps1 Normal file
View File

@ -0,0 +1,294 @@
<#
.SYNOPSIS
Personio Sync Script (Personio -> MEHRKANAL AD)
.DESCRIPTION
Dieses Script übernimmt Personenbezogene Daten aus Personio in die Active Directory
.EXAMPLE
PS C:\POSTV>.\mk.ps1
<Startet den Sync für alle User>
.NOTES
Author: Sebastian Mendyka <mendyka@mehrkanal.com>
Date: Sep 13, 2017
.Link
URL: https://developer.personio.de/v1.0/reference
#>
######################################################################################
######################################################################################
# Variablen setzen
######################################################################################
######################################################################################
$application = "https://api.personio.de";
$company = "5989";
# Define the user credentials
$username = "#TOREPLACE#";
$password = "#TOREPLACE#";
# Force TLS1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$LOGDATE = Get-Date -Format "yyyy-MM-dd_"
$OWNPID = $([System.Diagnostics.Process]::GetCurrentProcess()).ID
$ScriptDir = [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition)
$ini = .\functions\functions.ps1 "$ScriptDir\config.ini"
$IMPERSONATEADMIN = $ini.exchange.impersonateuser
######################################################################################
######################################################################################
# Functions
######################################################################################
######################################################################################
# Active Directory Modul laden
. .\functions\json_function.ps1
# Active Directory Modul laden
. .\functions\activedirectory_function.ps1
# Füge Log Klasse hinzu, Inspiriert von https://gist.github.com/9to5IT/9620565
. .\functions\log_function.ps1
# Füge Exchange Klassen hinzu
. .\functions\exchange_function.ps1
# Füge Personio Klassen hinzu
. .\functions\personio.ps1
# Füge SQLITE Klassen hinzu
. .\functions\sqlite.ps1
Write-Log -Message "Starte DIFF Import" -Level Info
# http://www.spech.de/2016/06/sqlite-mit-der-powershell-nutzen/
if (! $(Get-Command Invoke-SqliteQuery -ErrorAction SilentlyContinue)) {
Write-Log -Message "Aktiviere SQLITE Modul" -Level Warn
#Import-Module "$($ScriptDir)\modules\sqlite\PSSQLite.psm1"
Import-Module PSSQLite
}
if (! $(Get-Command Invoke-SqliteQuery -ErrorAction SilentlyContinue)) {
Send-ErrorMail -Mail "Error: Sqlite Module not found / working" -VACSTART "-" -VACENDE "-" -VACID "-"
Write-Log -Message "Aktiviere SQLITE Modul" -Level Error
exit
}
$force = 0
$CHANGEDUSERDATA = $false
$CHANGEDAPPOINTMENT = $false
######################################################################################
######################################################################################
# Prüfe auf "neue" Kalender Daten
######################################################################################
######################################################################################
try {
Write-Log -Message "Get tmp Data (convert to json)" -Level Warn
$tmpcontent = $(Get-DiffUserVacation)
$tmpcontent | fl | out-file "$ScriptDir\$($ini.general.tmp_path)\data_diff_tmp_test.csv"
$getallapidata = $($tmpcontent).content | ConvertFrom-Json | select -expand "data"
Write-Log -Message "Create tmp Data (convert to json)" -Level Warn
$tmpgetallapidata = ($getallapidata).attributes | convertto-json -depth 8
Write-Log -Message "Write tmp Data" -Level Warn
$tmpgetallapidata | fl | out-file "$ScriptDir\$($ini.general.tmp_path)\data_diff_tmp.csv"
if (Test-Path "$ScriptDir\$($ini.general.tmp_path)\data_diff.csv") {
Write-Log -Message "Compare tmp Data" -Level Warn
$fileA = Get-Content "$ScriptDir\$($ini.general.tmp_path)\data_diff.csv"
$fileB = Get-Content "$ScriptDir\$($ini.general.tmp_path)\data_diff_tmp.csv"
if ( Compare-Object "$fileA" "$fileB") {
Write-Log -Message "Daten haben sich geändert..." -Level Info
$CHANGEDAPPOINTMENT = $true
}
else {
if ($force -eq "0") {
Write-Log -Message "Daten haben sich NICHT geändert... Breche ab" -Level Warn
$CHANGEDAPPOINTMENT = $false
}
else {
Write-Log -Message "Daten haben sich NICHT geändert... force aktiv" -Level Info
$CHANGEDAPPOINTMENT = $true
}
}
}
}
catch {
Write-Log -Message "Error: $($_.Exception.Message) - check_change - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
Send-ErrorMail -Mail "Error: get Cal-Data from API: $($_.Exception.Message)" -VACSTART "-" -VACENDE "-" -VACID "-"
exit
}
############################## DEBUG
#$CHANGEDUSERDATA = $true
#$CHANGEDAPPOINTMENT = $false
############################## DEBUG
if ( $CHANGEDUSERDATA -eq $false -and $CHANGEDAPPOINTMENT -eq $false) {
Write-Log -Message "Keine Datenänderungen vorhanden.. Beende Import" -Level Info
exit
}
######################################################################################
######################################################################################
# Aktualisiere Kalenderdaten des Users -> $_.ID
######################################################################################
if ( $CHANGEDAPPOINTMENT -eq $true) {
Create-ExMsalToken
######################################################################################
######################################################################################
# Add new Appointments
######################################################################################
######################################################################################
#2022-09-21T00:00:00+02:00
# $DatePattern = "yyyy-MM-ddTHH:mm:ssK"
$DatePattern = "MM/dd/yyyy HH:mm:ss"
$getallapidata | where { $_.attributes.status -match "approved" -and [datetime]::ParseExact($_.attributes.start_date, $DatePattern, $null) -gt $STARTDATEOLDEST -and ([DateTime]::ParseExact($_.attributes.start_date, $DatePattern, $null).Year) -ge "2022" } | ForEach-Object {
[PSCustomObject]@{
"VACID" = $_.attributes.id | select -First 1
"VACStatus" = $_.attributes.status | select -First 1
"VACStart" = $_.attributes.start_date | select -First 1
"VACEnde" = $_.attributes.end_date | select -First 1
"VACTage" = $_.attributes.days_count | select -First 1
"VACHalbTagAnfang" = $_.attributes.half_day_start | select -First 1
"VACHalbTagEnde" = $_.attributes.half_day_end | select -First 1
"VACTyp" = $_.attributes.time_off_type.attributes.name | select -First 1
"VACTypID" = $_.attributes.time_off_type.attributes.id | select -First 1
"VACEMail" = $_.attributes.employee.attributes.email.value | select -First 1
"VACFirstName" = $_.attributes.employee.attributes.first_name.value | select -First 1
"VACLastName" = $_.attributes.employee.attributes.last_name.value | select -First 1
}
} | ForEach-Object {
######################################################################################
######################################################################################
# Prüfe auf gelöschte Termine
######################################################################################
######################################################################################
$tmpmail = "$($_.VACEMail)"
Write-log -Message "Prüfe $tmpmail" -Level Info
$USERMAIL = (Get-ADUser -Filter { EmailAddress -eq $tmpmail }).UserPrincipalName
$USERID = (Get-ADUser -Filter { EmailAddress -eq $tmpmail }).SamAccountName
if (! (Test-path -Path "$($ScriptDir)\sqlite\$($USERID).db" )) {
CREATE-SQLITE $USERID
}
else {
If ((Get-Item "$($ScriptDir)\sqlite\$($USERID).db").length -le 0kb) {
Remove-Item "$($ScriptDir)\sqlite\$($USERID).db"
CREATE-SQLITE $USERID
}
}
$STARTDATE = Get-Date -date $_.VACStart
$STARTDATEOLDEST = (get-date).adddays(-60)
$ENDDATE = Get-Date -date $_.VACEnde
$ENDDATEOLDEST = (get-date).adddays(+360)
[datetime]$VACStart = $_.VACStart
[datetime]$VACEnde = $_.VACEnde
$VACHalbTagAnfang = $_.VACHalbTagAnfang
$VACHalbTagEnde = $_.VACHalbTagEnde
$VACTage = $_.VACTage
# Berechnung Urlaubsanfang und Urlaubsende
if ($VACTAGE -lt 1) {
if ($VACHalbTagAnfang -eq "1") {
$VACStart = $VACStart
}
if ($VACHalbTagEnde -eq "1") {
$VACStart = $VACStart.AddHours(13)
$VACEnde = $VACEnde.AddHours(23).AddMinutes(59)
}
else {
$VACEnde = $VACEnde.AddHours(13)
}
}
else {
if ($VACHalbTagAnfang -eq "1") {
$VACStart = $VACStart.AddHours(13)
}
if ($VACHalbTagEnde -eq "1") {
$VACEnde = $VACEnde.AddHours(13)
}
else {
$VACEnde = $VACEnde.AddHours(23).AddMinutes(59)
}
}
######################################################################################
######################################################################################
# Prüfe auf vorhandensein des Kalendereintrags in SQLITE Objekt
######################################################################################
######################################################################################
$GETRESPONSE = Get-SQLITE -USERID $USERID -VACPERSONIOID $_.VACID
if ($GETRESPONSE -eq $null) {
Write-Log -Message "Kalendereintrag: $($_.VACID) für $($USERID) nicht gefunden" -Level Warn
$RESPONSE = GET-ExchangeSubject -VacationType $($_.VACTypID)
######################################################################################
######################################################################################
# Termin ist nicht im SQLITE vorhanden..
######################################################################################
######################################################################################
$CREATEEWSOK = New-CalendarItem -Subject "$($RESPONSE.Name)" -Body "Dieser Eintrag wurde automatisch erzeugt. Bindend sind nur die Angaben in Personio (https://mehrkanal.personio.de/login/index )" -Start $VACStart -End $VACEnde -AdminUser "$IMPERSONATEADMIN" -Impersonate $_.VACEMail -FreeBusyStatus "$($RESPONSE.Status)"
if ( $CREATEEWSOK -ne $null -or $CREATEEWSOK -ne $false) {
echo $CREATEEWSOK
INSERT-SQLITE -USERID $USERID -MAIL $_.VACEMail -FIRSTNAME $_.VACFirstName -LASTNAME $_.VACLastName -VACPERSONIOID $_.VACID -VACTYPE $_.VACTYP -VACSTART $VACStart -VACEND $VACEnde -VAEXCHANGEID $CREATEEWSOK
Write-Log -Message "Kalendereintrag: $($_.VACID) für $($USERID) wurde hinzugefügt Start: $($_.VACStart) STOP: $VACEnde TYP: $($_.VACTYP)" -Level Warn
Write-Log -Message "Kalendereintrag: $($APIRESP)" -Level Warn
}
else {
Write-Log -Message "Urlaubsfreigabe EWS Sync war fehlerhaft..." -Level Error
Send-ErrorMail -Mail $($_.VACEMail) -VACSTART $($VACStart) -VACENDE $($VACEnde) -VACID $($_.VACID)
}
}
else {
Write-Log -Message "Eintrag wurde gefunden... vergleiche" -Level Info
######################################################################################
######################################################################################
# Vergleiche API-Response mit vorhandenen SQLITE Daten...
######################################################################################
######################################################################################
$RESPONSE = GET-ExchangeSubject -VacationType $($_.VACTypID)
$APIRESP = New-Object psobject -Property @{USERID = $USERID; MAIL = $_.VACEMail; VACID = $_.VACID; VACTYP = $_.VACTYP; VACSTART = $VACStart; VACENDE = $VACEnde }
$SQLITERESP = New-Object psobject -Property @{USERID = ($GETRESPONSE).Userid; MAIL = ($GETRESPONSE).Mail; VACID = ($GETRESPONSE).id; VACTYP = ($GETRESPONSE).Vactype; VACSTART = [datetime]($GETRESPONSE).Vacstart; VACENDE = [datetime]($GETRESPONSE).Vacend }
if (Compare-Object $APIRESP $SQLITERESP -Property VACID, MAIL, VACSTART, VACENDE, VACTYPE ) {
Write-Log -Message "Kalendereintrag: $($_.VACID) für $($USERID) haben sich geändert" -Level Warn
Write-Log -Message "Kalendereintrag: $($APIRESP)" -Level Warn
Write-Log -Message "Kalendereintrag: $($SQLITERESP)" -Level Warn
######################################################################################
######################################################################################
# Termin muss in Exchange geändert werden
######################################################################################
######################################################################################
$EXCHANGEMEETINGID = ($GETRESPONSE).Vacexchangeid
Remove-CalendarItem -CALID ($GETRESPONSE).Vacexchangeid -Impersonate ($GETRESPONSE).Mail
DELETE-SQLITE -USERID $USERID -VACPERSONIOID $_.VACID
$CREATEEWSOK = New-CalendarItem -Subject "$($RESPONSE.Name)" -Body "Dieser Eintrag wurde automatisch erzeugt. Bindend sind nur die Angaben in Personio (https://mehrkanal.personio.de/login/index )" -Start $VACStart -End $VACEnde -AdminUser "$IMPERSONATEADMIN" -Impersonate $_.VACEMail -FreeBusyStatus "$($RESPONSE.Status)"
if ( $CREATEEWSOK -ne $null -or $CREATEEWSOK -ne $false) {
echo $CREATEEWSOK
INSERT-SQLITE -USERID $USERID -MAIL $_.VACEMail -FIRSTNAME $_.VACFirstName -LASTNAME $_.VACLastName -VACPERSONIOID $_.VACID -VACTYPE $_.VACTYP -VACSTART $VACStart -VACEND $VACEnde -VAEXCHANGEID $CREATEEWSOK
}
else {
Write-Log -Message "Urlaubsfreigabe EWS Sync war fehlerhaft..." -Level Error
Send-ErrorMail -Mail $($_.VACEMail) -VACSTART $($VACStart) -VACENDE $($VACEnde) -VACID $($_.VACID)
}
}
}
}
# Erhalte Kalender-Daten und bereite diese auf...
$tmpgetallapidata | fl | out-file "$ScriptDir\$($ini.general.tmp_path)\data_diff.csv"
# Starte Logging
Write-Log -Message "Beende Import" -Level Info
}
else {
Write-Log -Message "Eintrag ist gleich..." -Level Info
}

405
sync_full.ps1 Normal file
View File

@ -0,0 +1,405 @@
<#
.SYNOPSIS
Personio Sync Script (Personio -> MEHRKANAL AD)
.DESCRIPTION
Dieses Script übernimmt Personenbezogene Daten aus Personio in die Active Directory
.EXAMPLE
PS C:\POSTV>.\mk.ps1
<Startet den Sync für alle User>
.NOTES
Author: Sebastian Mendyka <mendyka@mehrkanal.com>
Date: Sep 13, 2017
.Link
URL: https://developer.personio.de/v1.0/reference
#>
######################################################################################
######################################################################################
# Variablen setzen
######################################################################################
######################################################################################
$application = "https://api.personio.de";
$company = "5989";
# Define the user credentials
$username = "#TOREPLACE#";
$password = "#TOREPLACE#";
# Force TLS1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$LOGDATE = Get-Date -Format "yyyy-MM-dd_"
$OWNPID = $([System.Diagnostics.Process]::GetCurrentProcess()).ID
$ScriptDir = [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition)
$ini = .\functions\functions.ps1 "$ScriptDir\config.ini"
$IMPERSONATEADMIN = $ini.exchange.impersonateuser
######################################################################################
######################################################################################
# Functions
######################################################################################
######################################################################################
# Active Directory Modul laden
. .\functions\json_function.ps1
# Active Directory Modul laden
. .\functions\activedirectory_function.ps1
# Füge Log Klasse hinzu, Inspiriert von https://gist.github.com/9to5IT/9620565
. .\functions\log_function.ps1
# Füge Exchange Klassen hinzu
. .\functions\exchange_function.ps1
# Füge Personio Klassen hinzu
. .\functions\personio.ps1
# Füge SQLITE Klassen hinzu
. .\functions\sqlite.ps1
# Starte Logging
Write-Log -Message "Starte FULL Import" -Level Info
# http://www.spech.de/2016/06/sqlite-mit-der-powershell-nutzen/
if (! $(Get-Command Invoke-SqliteQuery -ErrorAction SilentlyContinue)) {
Write-Log -Message "Aktiviere SQLITE Modul" -Level Warn
#Import-Module "$($ScriptDir)\modules\sqlite\PSSQLite.psm1"
Import-Module PSSQLite
}
if (! $(Get-Command Invoke-SqliteQuery -ErrorAction SilentlyContinue)) {
Send-ErrorMail -Mail "Error: Sqlite Module not found / working" -VACSTART "-" -VACENDE "-" -VACID "-"
Write-Log -Message "Aktiviere SQLITE Modul" -Level Error
exit
}
$force = 0
$CHANGEDUSERDATA = $true
$CHANGEDAPPOINTMENT = $true
######################################################################################
######################################################################################
# Prüfe auf "User" Daten
######################################################################################
######################################################################################
try {
$getallapiuserdata = $(Get-UserInfo).content | ConvertFrom-Json | Select-Object -expand "data"
$tmpgetallapiuserdata = ($getallapiuserdata).attributes | convertto-json -depth 5
$tmpgetallapiuserdata | out-file "$ScriptDir\$($ini.general.tmp_path)\userdata_tmp.csv"
if (Test-Path "$ScriptDir\$($ini.general.tmp_path)\userdata.csv") {
$fileA = Get-Content "$ScriptDir\$($ini.general.tmp_path)\userdata.csv"
$fileB = Get-Content "$ScriptDir\$($ini.general.tmp_path)\userdata_tmp.csv"
if ( Compare-Object "$fileA" "$fileB") {
Write-Log -Message "User-Daten haben sich geändert..." -Level Info
$CHANGEDUSERDATA = $true
}
else {
if ($force -eq "0") {
Write-Log -Message "User-Daten haben sich NICHT geändert... Breche ab" -Level Warn
$CHANGEDUSERDATA = $false
}
else {
Write-Log -Message "Daten haben sich NICHT geändert... force aktiv" -Level Info
$CHANGEDUSERDATA = $true
}
}
}
}
catch {
Write-Log -Message "Error: $_.Exception.Message - check_user_change - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
Send-ErrorMail -Mail "Error: get User-Data from API: $($_.Exception.Message)" -VACSTART "-" -VACENDE "-" -VACID "-"
exit
}
######################################################################################
######################################################################################
# Prüfe auf "neue" Kalender Daten
######################################################################################
######################################################################################
try {
Write-Log -Message "Get tmp Data (convert to json)" -Level Warn
$(Get-UserVacation) | fl | out-file "$ScriptDir\$($ini.general.tmp_path)\data_tmp_test.csv"
$getallapidata = $(Get-UserVacation).content | ConvertFrom-Json | select -expand "data"
Write-Log -Message "Create tmp Data (convert to json)" -Level Warn
$tmpgetallapidata = ($getallapidata).attributes | convertto-json -depth 8
Write-Log -Message "Write tmp Data" -Level Warn
$tmpgetallapidata | fl | out-file "$ScriptDir\$($ini.general.tmp_path)\data_tmp.csv"
if (Test-Path "$ScriptDir\$($ini.general.tmp_path)\data.csv") {
Write-Log -Message "Compare tmp Data" -Level Warn
$fileA = Get-Content "$ScriptDir\$($ini.general.tmp_path)\data.csv"
$fileB = Get-Content "$ScriptDir\$($ini.general.tmp_path)\data_tmp.csv"
if ( Compare-Object "$fileA" "$fileB") {
Write-Log -Message "Daten haben sich geändert..." -Level Info
$CHANGEDAPPOINTMENT = $true
}
else {
if ($force -eq "0") {
Write-Log -Message "Daten haben sich NICHT geändert... Breche ab" -Level Warn
$CHANGEDAPPOINTMENT = $false
}
else {
Write-Log -Message "Daten haben sich NICHT geändert... force aktiv" -Level Info
$CHANGEDAPPOINTMENT = $true
}
}
}
}
catch {
Write-Log -Message "Error: $($_.Exception.Message) - check_change - Line Number: $($_.InvocationInfo.ScriptLineNumber)" -Level Error
Send-ErrorMail -Mail "Error: get Cal-Data from API: $($_.Exception.Message)" -VACSTART "-" -VACENDE "-" -VACID "-"
exit
}
############################## DEBUG
#$CHANGEDUSERDATA = $true
#$CHANGEDAPPOINTMENT = $false
############################## DEBUG
if ( $CHANGEDUSERDATA -eq $false -and $CHANGEDAPPOINTMENT -eq $false) {
Write-Log -Message "Keine Datenänderungen vorhanden.. Beende Import" -Level Info
exit
}
Create-ExMsalToken
$getallapiuserdata | foreach {
[PSCustomObject]@{
FirstName = $_.attributes.first_name.value | Select-Object -First 1
LastName = $_.attributes.last_name.value | Select-Object -First 1
Email = $_.attributes.email.value | Select-Object -First 1
Position = $_.attributes.position.value | Select-Object -First 1
Abteilung = $_.attributes.department.value.attributes.name | Select-Object -First 1
Tel = $_.attributes.dynamic_99874.value | Select-Object -First 1
Status = $_.attributes.status.value | Select-Object -First 1
Kostenstelle = $_.attributes.cost_centers.value.attributes.name | Select-Object -First 1
Vorgesetzter = $_.attributes.supervisor.value.attributes.email.value | Select-Object -First 1
Fax = $_.attributes.dynamic_137780.value | Select-Object -First 1
ID = $_.attributes.dynamic_99886.value | Select-Object -First 1
PersonioID = $_.attributes.id.value | Select-Object -First 1
Mobile = $_.attributes.dynamic_99877.value | Select-Object -First 1
HomeMobile = $_.attributes.dynamic_130998.value | Select-Object -First 1
} | Where-Object { $_.Status -notLike "inactive" } | ForEach-Object {
######################################################################################
######################################################################################
# Prüfe ob die ID aus Personio in der AD enthalten ist
######################################################################################
######################################################################################
if ( ! $_.ID -eq "$null" ) {
Write-Log -Message "Gefunden: $($_.FirstName) $($_.LastName) = $($_.ID) $($_.Kostenstelle)" -Level Info
if ( (Get-ADUser $_.ID -ErrorAction SilentlyContinue) -eq "$false") {
Write-Log -Message "Mitarbeiter ID nicht korrekt: $($_.ID)" -Level Error
}
else {
Write-Log -Message "Mitarbeiter gefunden $($_.ID)" -Level Info
######################################################################################
######################################################################################
# Aktualisiere AD Daten des Users -> $_.ID
######################################################################################
######################################################################################
if ($CHANGEDUSERDATA -eq $true) {
SYNC-ADUser -USERNAME $_.ID -Position $_.Position -Abteilung $_.Abteilung -Tel $_.Tel -Fax $_.Fax -Manager $_.Vorgesetzter -Mobile $_.Mobile -HomeMobile $_.HomeMobile
}
######################################################################################
######################################################################################
# Aktualisiere Kalenderdaten des Users -> $_.ID
######################################################################################
if ( $CHANGEDAPPOINTMENT -eq $true) {
$USERMAIL = $_.Email
$USERID = $_.ID
if (! (Test-path -Path "$($ScriptDir)\sqlite\$($_.ID).db" )) {
CREATE-SQLITE $USERID
}
else {
If ((Get-Item "$($ScriptDir)\sqlite\$($_.ID).db").length -le 0kb) {
Remove-Item "$($ScriptDir)\sqlite\$($_.ID).db"
CREATE-SQLITE $USERID
}
}
######################################################################################
######################################################################################
# DELETE old and dup Appointments
######################################################################################
######################################################################################
$USERAPPOINTMENTSSQLITE = GET-SQLITEUSERAPPOINTMENTS -USERID $USERID
$USERAPPOINTMENTSSQLITE | foreach {
if ( $getallapidata.attributes.id -notcontains "$($_.Id)" ) {
Write-Log -Message "Kalendereintrag: $($($_.Id)) für $($USERID) nicht mehr in Personio enthalten... delete" -Level WARN
$GETOLDEXCHANGEID = Get-SQLITE -USERID $USERID -VACPERSONIOID $_.Id
$EXCHANGEMEETINGID = ($GETOLDEXCHANGEID).Vacexchangeid
if ( $EXCHANGEMEETINGID -notlike "False" ) {
if ( Remove-CalendarItem -CALID "$($EXCHANGEMEETINGID)" -Impersonate ($GETOLDEXCHANGEID).Mail ) {
DELETE-SQLITE -USERID $USERID -VACPERSONIOID $_.Id
Write-Log -Message "Kalendereintrag und SQLITE Daten: $($($_.Id)) für $($USERID) gelöscht" -Level WARN
}
else {
Write-Log -Message "Kalendereintrag : $($($_.Id)) für $($USERID) konnte nicht gelöscht werden" -Level WARN
}
}
else {
Write-Log -Message "Kalendereintrag: $($($_.Id)) für $($USERID) fehlerhafte SQLITE Daten... delete wird anhand Datum durchgeführt" -Level WARN
$EXCHANGEMEETINGSTART = ($GETOLDEXCHANGEID).Vacstart
$EXCHANGEMEETINGEND = ($GETOLDEXCHANGEID).Vacend
if ( Remove-CalendarItemByDate -Start $EXCHANGEMEETINGSTART -End $EXCHANGEMEETINGEND -Impersonate ($GETOLDEXCHANGEID).Mail ) {
DELETE-SQLITE -USERID $USERID -VACPERSONIOID $_.Id
}
}
}
else {
$GETOLDEXCHANGEID = Get-SQLITE -USERID $USERID -VACPERSONIOID $_.Id
$EXCHANGEMEETINGSTART = ($GETOLDEXCHANGEID).Vacstart
$EXCHANGEMEETINGEND = ($GETOLDEXCHANGEID).Vacend
Remove-DupCalendarItem -Start "$($EXCHANGEMEETINGSTART)" -End "$($EXCHANGEMEETINGEND)" -Impersonate ($GETOLDEXCHANGEID).Mail -USERID "$($USERID)"
}
}
Write-Log -Message "Lösche nicht zuordbare Kalendereinträge für $($USERID) in SQLITE" -Level Info
DELETE-WRONGSQLITEDATA -USERID $USERID
######################################################################################
######################################################################################
# Add new Appointments
######################################################################################
######################################################################################
#2022-09-21T00:00:00+02:00
#$DatePattern = "yyyy-MM-ddTHH:mm:ssK"
$DatePattern = "MM/dd/yyyy HH:mm:ss"
$getallapidata | where { $_.attributes.employee.attributes.email.value -Like $USERMAIL -and $_.attributes.status -match "approved" -and [datetime]::ParseExact($_.attributes.start_date, $DatePattern, $null) -gt $STARTDATEOLDEST -and ([DateTime]::ParseExact($_.attributes.start_date, $DatePattern, $null).Year) -ge "2018" } | ForEach-Object {
[PSCustomObject]@{
"VACID" = $_.attributes.id | select -First 1
"VACStatus" = $_.attributes.status | select -First 1
"VACStart" = $_.attributes.start_date | select -First 1
"VACEnde" = $_.attributes.end_date | select -First 1
"VACTage" = $_.attributes.days_count | select -First 1
"VACHalbTagAnfang" = $_.attributes.half_day_start | select -First 1
"VACHalbTagEnde" = $_.attributes.half_day_end | select -First 1
"VACTyp" = $_.attributes.time_off_type.attributes.name | select -First 1
"VACTypID" = $_.attributes.time_off_type.attributes.id | select -First 1
"VACEMail" = $_.attributes.employee.attributes.email.value | select -First 1
"VACFirstName" = $_.attributes.employee.attributes.first_name.value | select -First 1
"VACLastName" = $_.attributes.employee.attributes.last_name.value | select -First 1
}
} | ForEach-Object {
######################################################################################
######################################################################################
# Prüfe auf gelöschte Termine
######################################################################################
######################################################################################
$STARTDATE = Get-Date -date $_.VACStart
$STARTDATEOLDEST = (get-date).adddays(-60)
$ENDDATE = Get-Date -date $_.VACEnde
$ENDDATEOLDEST = (get-date).adddays(+360)
[datetime]$VACStart = $_.VACStart
[datetime]$VACEnde = $_.VACEnde
$VACHalbTagAnfang = $_.VACHalbTagAnfang
$VACHalbTagEnde = $_.VACHalbTagEnde
$VACTage = $_.VACTage
# Berechnung Urlaubsanfang und Urlaubsende
if ($VACTAGE -lt 1) {
if ($VACHalbTagAnfang -eq "1") {
$VACStart = $VACStart
}
if ($VACHalbTagEnde -eq "1") {
$VACStart = $VACStart.AddHours(13)
$VACEnde = $VACEnde.AddHours(23).AddMinutes(59)
}
else {
$VACEnde = $VACEnde.AddHours(13)
}
}
else {
if ($VACHalbTagAnfang -eq "1") {
$VACStart = $VACStart.AddHours(13)
}
if ($VACHalbTagEnde -eq "1") {
$VACEnde = $VACEnde.AddHours(13)
}
else {
$VACEnde = $VACEnde.AddHours(23).AddMinutes(59)
}
}
######################################################################################
######################################################################################
# Prüfe auf vorhandensein des Kalendereintrags in SQLITE Objekt
######################################################################################
######################################################################################
$GETRESPONSE = Get-SQLITE -USERID $USERID -VACPERSONIOID $_.VACID
if ($GETRESPONSE -eq $null) {
Write-Log -Message "Kalendereintrag: $($_.VACID) für $($USERID) nicht gefunden" -Level Warn
$RESPONSE = GET-ExchangeSubject -VacationType $($_.VACTypID)
######################################################################################
######################################################################################
# Termin ist nicht im SQLITE vorhanden..
######################################################################################
######################################################################################
$CREATEEWSOK = New-CalendarItem -Subject "$($RESPONSE.Name)" -Body "Dieser Eintrag wurde automatisch erzeugt. Bindend sind nur die Angaben in Personio (https://mehrkanal.personio.de/login/index )" -Start $VACStart -End $VACEnde -AdminUser "$IMPERSONATEADMIN" -Impersonate $_.VACEMail -FreeBusyStatus "$($RESPONSE.Status)"
if ( $CREATEEWSOK -ne $null -or $CREATEEWSOK -ne $false) {
INSERT-SQLITE -USERID $USERID -MAIL $_.VACEMail -FIRSTNAME $_.VACFirstName -LASTNAME $_.VACLastName -VACPERSONIOID $_.VACID -VACTYPE $_.VACTYP -VACSTART $VACStart -VACEND $VACEnde -VAEXCHANGEID $CREATEEWSOK
Remove-DupCalendarItem -Start "$($VACStart)" -End "$($VACEnde)" -Impersonate $_.VACEMail -USERID "$($USERID)"
Write-Log -Message "Kalendereintrag: $($_.VACID) für $($USERID) angelegt und wenn vorhanden dupplikate gelöscht" -Level Info
}
else {
Write-Log -Message "Urlaubsfreigabe EWS Sync war fehlerhaft..." -Level Error
Send-ErrorMail -Mail $($_.VACEMail) -VACSTART $($VACStart) -VACENDE $($VACEnde) -VACID $($_.VACID)
}
}
else {
######################################################################################
######################################################################################
# Vergleiche API-Response mit vorhandenen SQLITE Daten...
######################################################################################
######################################################################################
$RESPONSE = GET-ExchangeSubject -VacationType $($_.VACTypID)
$APIRESP = New-Object psobject -Property @{USERID = $USERID; MAIL = $_.VACEMail; VACID = $_.VACID; VACTYP = $_.VACTYP; VACSTART = $VACStart; VACENDE = $VACEnde }
$SQLITERESP = New-Object psobject -Property @{USERID = ($GETRESPONSE).Userid; MAIL = ($GETRESPONSE).Mail; VACID = ($GETRESPONSE).id; VACTYP = ($GETRESPONSE).Vactype; VACSTART = [datetime]($GETRESPONSE).Vacstart; VACENDE = [datetime]($GETRESPONSE).Vacend }
if (Compare-Object $APIRESP $SQLITERESP -Property VACID, MAIL, VACSTART, VACENDE, VACTYPE ) {
Write-Log -Message "Kalendereintrag: $($_.VACID) für $($USERID) haben sich geändert" -Level Warn
Write-Log -Message "Kalendereintrag: $($APIRESP)" -Level Warn
Write-Log -Message "Kalendereintrag: $($SQLITERESP)" -Level Warn
######################################################################################
######################################################################################
# Termin muss in Exchange geändert werden
######################################################################################
######################################################################################
$EXCHANGEMEETINGID = ($GETRESPONSE).Vacexchangeid
Remove-CalendarItem -CALID "$(($GETRESPONSE).Vacexchangeid)" -Impersonate ($GETRESPONSE).Mail
DELETE-SQLITE -USERID $USERID -VACPERSONIOID $_.VACID
$CREATEEWSOK = New-CalendarItem -Subject "$($RESPONSE.Name)" -Body "Dieser Eintrag wurde automatisch erzeugt. Bindend sind nur die Angaben in Personio (https://mehrkanal.personio.de/login/index )" -Start $VACStart -End $VACEnde -AdminUser "$IMPERSONATEADMIN" -Impersonate $_.VACEMail -FreeBusyStatus "$($RESPONSE.Status)"
if ( $CREATEEWSOK -ne $null -or $CREATEEWSOK -ne $false) {
#$Name=$($_.VACEMail).Split("@")[0]
echo $CREATEEWSOK
#exit
INSERT-SQLITE -USERID $USERID -MAIL $_.VACEMail -FIRSTNAME $_.VACFirstName -LASTNAME $_.VACLastName -VACPERSONIOID $_.VACID -VACTYPE $_.VACTYP -VACSTART $VACStart -VACEND $VACEnde -VAEXCHANGEID $CREATEEWSOK.Replace("Microsoft.Exchange.WebServices.Data.Appointment ",'')
}
else {
Write-Log -Message "Urlaubsfreigabe EWS Sync war fehlerhaft..." -Level Error
Send-ErrorMail -Mail $($_.VACEMail) -VACSTART $($VACStart) -VACENDE $($VACEnde) -VACID $($_.VACID)
}
}
}
}
}
}
}
}
}
# Erhalte Kalender-Daten und bereite diese auf...
$tmpgetallapidata | fl | out-file "$ScriptDir\$($ini.general.tmp_path)\data.csv"
$tmpgetallapiuserdata | out-file "$ScriptDir\$($ini.general.tmp_path)\userdata.csv"
# Starte Logging
Write-Log -Message "Beende Import" -Level Info