MZ@ !L!This program cannot be run in DOS mode. $_>>>#>>?%>!> >$>=>'>">Rich>PEdLPT"  ^`"`Ah P 8F@ & b .text;]^ `.data@p6b@.pdata8FH@@.idata' (@@.didat@  @.rsrcP  @@.reloc @ @B` @` @``@@` @p0 @   @   P   P p@ 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p@`p `  !P& ((33345 5@5P5506889 9:=`\Бp ` ` ` ``И`pЛ0PP`p@PТP @ `@Ъ`  `0p0p0p`@ 0 @`@ p@0`@ pP@` 0  Ppp0p0pppPPPPpp00pp@@P`@` @0pp   P  P    `P p0pP0 p   0!p!!!0"p""#p##$$@%%&`&& ''' (((`)`*0.p...0/p//P00102203334P56`66 777 888`9@: ;=@>HL@Y\ ^_cdee f`ffgPggg0hph`ipj`kkmnopq0}}`~~ P PP0ЇpP ЌPЍPЎPЏPАз 0@P`pи 0@P`pй 0@P`pк 0@P`pл 0@P`pм 0@P`pн 0@P`pо 0@P`pп 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p0P@`Pp`p 0@P`p 0 @0P@`Pp`p 0@P`p0@Pp@@p@@ P `    `  pP)*,-`17p777@89@P@T`UU`XX`YZ [fy`zz{@{p~~~`Ѐ   p -TY`adp@@ppp@PP`@ Pp0P@ HYYZ\P\\]@]^`a`bcdpkk@llpmnnnps@ssspxP 0 ЗP`p`0@P``Рp`p00 P@`@@P0@@P`p     P`p !'(p)-P--/00@0p000001 1@1P1`11111122 2p22222222 3 5`5P7>@? @@0b0ef@f@hhk o0o  pPТ0зp@p0Pp0Pp0Pp0Pp0p00Pp00PpPpLPT$=L9o<{Oyz"$+H] "$+l] string too longinvalid string position"^^ @Invalid parameter passed to C runtime function. FFF+ _,d* _,dXvH,m` 7 ʩWLDAP32.dllnetutils.dllDSROLE.dlldfscli.dlllogoncli.dllSecur32.dllMPR.dllSHLWAPI.dllbad allocationCLSIDAppIDSMDBValForceRemoveNoRemoveDeleteComponent CategoriesFileTypeInterfaceHardwareMimeSAMSECURITYSYSTEMSoftwareTypeLib{'Mk~F}PjItH D% OqlnF^DAH[M̌FsM; $^q}J. 8LC ŅӘ}^ERw + H!SHx^m@kۦ5F1}dUZ O+_իv$E.}VE_h]M'nS<ٙ%DXfhjI|Cmj`@Y'I85UwsB s 킛jO0EF.lJ6mDXN6yŕJ BlFF?NF[VH2H%e&OKKm]OOV^aMDě^NtjL6 70`0к0пP @0` 0 0pP `~  @@@P@0pp   P  P    ``` Ѝ @ p0pp@` `PP@00@ P0л`P@@оP0 зP @@p `@PPPPpp00pPppP`~ 0pp0ppPнPиP@  @``@0!p!!!0"p"`* `~~`  p0p0 p "#p##$$&`&'' (((`)@%%& 'P` @`P PP @p0PPP``@@0p0  `@0  P`PpP``@``@0P @pмp`p`0p0pй0 0 PP@  0`p} 0}`p00p0p@ @@ p@0`@ pP@` 0 `Ќq@py`zz{@{p~~~`Ѐ3pk@-Upd,`Unc@]n`b*@T3a3pp3)@Pn`Zp^p !'-/-P-p)(`P  @  9 `p9P9@@9P09p033333002002002p0333330020022p0013 13002@1P1`1111p0333330021122p0333330022222p033333002@122002`@9@ 2@p22P00@0 p03333300222p03333300222220``5P7@ 5P7 @ 3>@?2P70@@@@Т@p@P @ @@`@SqlDatabase::SqlDatabase : Memory Allocation failed. SqlConnection::Reconnect() : Connect failed with 0x%08X. SqlConnection::Reconnect() : Connect succeeded. SqlConnection::Reconnect() : SQLAllocHandle failed with 0x%08X. SqlConnection::Reconnect() : BindParams failed with 0x%08X. SqlConnection::Reconnect() : BindResult failed with 0x%08X. SQLConnection::ReConnect(): Database::SwitchDatabase returned 0x%08X. SQLConnection::ReConnect(): m_pszDBName is NULL ! SqlConnection::NeedsReConnect(): returned 0x%08X. Microsoft SQL Server%u.%u.%u{?=CALL {CALL (?,)}odbc code %i, State %S, Message: %S DbServer::CreateDatabase(): ::new failed with 0x%08X.DbServer::CreateDatabase(): ExecStatement(%S) failed with 0x%08X. FILEcreate database [%s] alter database [%s] set recovery simple ???????????????????????????????????????????????? ???????  !"#??????  !"#?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????`*P**P*P*++p*+\Required CategoriesCLSID\\Implemented Categories.tlbAPPIDModuleModule_RawREGISTRYHKCRHKCUHKLMHKUHKPDHKDDHKCCHKEY_CLASSES_ROOTHKEY_CURRENT_USERHKEY_LOCAL_MACHINEHKEY_USERSHKEY_PERFORMANCE_DATAHKEY_DYN_DATAHKEY_CURRENT_CONFIG0o@oPo`ohoxooooop(pXpxpAPI-MS-Win-Core-LocalRegistry-L1-1-0.dllRegDeleteKeyExWadvapi32.dllRegDeleteKeyW]:HpNܡMZ>o-\QKC<7̮wYW Ki0@:>2H2H%e&?NF[VH ciB*yMPsCpO@qOS}PjItH DsM; $1}dUZ O+_իvٙ%DXf%UPEz@^DAH[M̌^q}J. @Y'OKKm]O(ADSo:=_h]M'nS<}^ERw + H! HmF٤M_/}`" bA4]CjL iteratorP,P*@+P*,*P* ,,P*+P**P*-P**P*+P*@,P*+P*-P* +P*0+p++,P*P+0,P**+P*,@*`+P**vt=VT_EMPTYvt=VT_I4,%dvt=VT_I2,%dvt=VT_BSTR,%svt=VT_DISPATCHvt=VT_ARRAY,elementType=VT_I2 vt=VT_ARRAY,elementType=VT_I4 vt=VT_ARRAY,elementType=VT_BSTR vt=VT_ARRAY,elementType=VT_DISPATCH vt=VT_ARRAY,elementType=VT_VARIANT vt=VT_ARRAY,elementType=[other value]Count=%d [BSTR=%s],[I4=%d],[I2=%d],[other value],[other value]%s\%s%s%s calls myAzNewObject enumObject=%d %s leaves myAzNewObject: return HRESULT value=0x%lx %s calls myAzCreateObject bstrObjectName=%s %s leaves myAzCreateObject: return HRESULT value=0x%lx %s calls myAzDeleteObject bstrObjectName=%s %s leaves myAzDeleteObject: return HRESULT value=0x%lx %s calls myAzOpenObject bstrObjectName=%s %s leave myAzOpenObject: return HRESULT value=0x%lx %s calls myAzCloseObject bstrObjectName=%s %s leaves myAzCloseObject: return HRESULT value=0x%lx %s calls myAzNextObject Enumeration completed. %s leaves myAzNextObject: no more results. %s leaves myAzNextObject: return HRESULT value=0x%lx %s calls myAzGetProperty: lPropId=%d Can't DS bind. Will just return non-UPN names %s leaves myAzGetProperty: return HRESULT value=0x%lx pvarProp=%s %s leaves myAzGetProperty: return HRESULT value=0x%lx pvarProp=NULL %s calls %s: lPropId=%d pvarProp=%s %s calls %s: lPropId=%d pvarProp=NULL myAzSetProperty%s leaves myAzSetProperty: return HRESULT value=0x%lx myAzAddOrDeletePropertyItem%s leaves myAzAddOrDeletePropertyItem: return HRESULT value=0x%lx %s calls myGetBstrProperty: lPropId=%d %s leaves myGetBstrProperty: return HRESULT value=0x%lx pbstrProp=NULL %s leaves myGetBstrProperty: return HRESULT value=0x%lx *pbstrProp=%s %s calls mySetBstrProperty: lPropId=%d bstrProp=%s %s leaves mySetBstrProperty: return HRESULT value=0x%lx %s calls myGetLongProperty: lPropId=%d %s leaves myGetLongProperty: return HRESULT value=0x%lx plProp=NULL %s leaves myGetLongProperty: return HRESULT value=0x%lx *plProp=%d %s calls mySetLongProperty: lPropId=%d lProp=%d %s leaves mySetLongProperty: return HRESULT value=0x%lx %s calls myGetBoolProperty: lPropId=%d %s leaves myGetBoolProperty: return HRESULT value=0x%lx plProp=NULL %s leaves myGetBoolProperty: return HRESULT value=0x%lx *plProp=%d %s calls mySetBoolProperty: lPropId=%d fProp=%d %s leaves mySetBoolProperty: return HRESULT value=0x%lx CAzPrincipalLocator constructor called.Software\Microsoft\AzMan\ObjectPickerCAzPrincipalLocator::CAzPrincipalLocator, failed to query value for ObjectPicker CLSIDCAzPrincipalLocator::CAzPrincipalLocator, registered object picker doesn't implement IAzObjectPickerCAzPrincipalLocator::CAzPrincipalLocator, registered object picker doesn't implement IAzNameResolverCAzPrincipalLocator::CAzPrincipalLocator RegOpenKeyEx failed.CAzPrincipalLocator destructor called.Enter CAzPrincipalLocator::get_NameResolver Leave CAzPrincipalLocator::get_NameResolver: return HRESULT value=0x%lx Enter CAzPrincipalLocator::get_ObjectPicker Leave CAzPrincipalLocator::get_ObjectPicker: return HRESULT value=0x%lx CAzAuthorizationStore constructor called. CAzAuthorizationStore destructor called. CAzAuthorizationStore::get_DescriptionCAzAuthorizationStore::put_DescriptionCAzAuthorizationStore::get_ApplicationDataCAzAuthorizationStore::put_ApplicationDataCAzAuthorizationStore::get_DomainTimeoutCAzAuthorizationStore::put_DomainTimeoutCAzAuthorizationStore::get_ScriptEngineTimeoutCAzAuthorizationStore::put_ScriptEngineTimeoutCAzAuthorizationStore::get_MaxScriptEnginesCAzAuthorizationStore::put_MaxScriptEnginesCAzAuthorizationStore::get_GenerateAuditsCAzAuthorizationStore::put_GenerateAuditsCAzAuthorizationStore::get_WritableCAzAuthorizationStore::GetPropertyCAzAuthorizationStore::SetPropertyCAzAuthorizationStore::AddPropertyItemCAzAuthorizationStore::DeletePropertyItemCAzAuthorizationStore::get_PolicyAdministratorsCAzAuthorizationStore::get_PolicyAdministratorsNameCAzAuthorizationStore::get_PolicyReadersCAzAuthorizationStore::get_PolicyReadersNameCAzAuthorizationStore::AddPolicyAdministratorCAzAuthorizationStore::AddPolicyAdministratorNameCAzAuthorizationStore::DeletePolicyAdministratorCAzAuthorizationStore::DeletePolicyAdministratorNameCAzAuthorizationStore::AddPolicyReaderCAzAuthorizationStore::AddPolicyReaderNameCAzAuthorizationStore::DeletePolicyReaderCAzAuthorizationStore::DeletePolicyReaderNameCAzAuthorizationStore::get_TargetMachineEnter CAzAuthorizationStore::Initialize: lFlag=0x%lx bstrPolicyURL=[%s] Leave CAzAuthorizationStore::Initialize: return HRESULT value=0x%lx Enter CAzAuthorizationStore::IsUpdateNeeded Leave CAzAuthorizationStore::IsUpdateNeeded: return HRESULT value=0x%lx pbIsUpdateNeeded == NULL Leave CAzAuthorizationStore::IsUpdateNeeded: return HRESULT value=0x%lx *pbIsUpdateNeeded=%d Enter CAzAuthorizationStore::UpdateCache Leave CAzAuthorizationStore::UpdateCache: return HRESULT value=0x%lx Enter CAzAuthorizationStore::Delete Leave CAzAuthorizationStore::Delete: return HRESULT value=0x%lx CAzAuthorizationStore::get_ApplicationsCAzAuthorizationStore::OpenApplicationCAzAuthorizationStore::CloseApplicationCAzAuthorizationStore::CreateApplicationCAzAuthorizationStore::DeleteApplicationCAzAuthorizationStore::get_ApplicationGroupsCAzAuthorizationStore::CreateApplicationGroupCAzAuthorizationStore::OpenApplicationGroupCAzAuthorizationStore::DeleteApplicationGroupEnter CAzAuthorizationStore::Submit lFlags=%d Leave CAzAuthorizationStore::Submit: return HRESULT value=0x%lx CAzAuthorizationStore::get_DelegatedPolicyUsersCAzAuthorizationStore::get_DelegatedPolicyUsersNameCAzAuthorizationStore::AddDelegatedPolicyUserCAzAuthorizationStore::AddDelegatedPolicyUserNameCAzAuthorizationStore::DeleteDelegatedPolicyUserCAzAuthorizationStore::DeleteDelegatedPolicyUserNameCAzAuthorizationStore::put_ApplyStoreSaclCAzAuthorizationStore::get_ApplyStoreSaclCAzAuthorizationStore::OpenApplication2CAzAuthorizationStore::CreateApplication2CAzApplication constructor calledCAzApplication destructor calledEnter CAzApplication::_Init hHandle=0x%lx Leave CAzApplication::_Init: return HRESULT value=0x%lx CAzApplication::get_DescriptionCAzApplication::put_DescriptionCAzApplication::get_NameCAzApplication::put_NameCAzApplication::get_ApplicationDataCAzApplication::put_ApplicationDataCAzApplication::get_AuthzInterfaceClsidCAzApplication::put_AuthzInterfaceClsidCAzApplication::get_VersionCAzApplication::put_VersionCAzApplication::get_GenerateAuditsCAzApplication::put_GenerateAuditsCAzApplication::get_BizruleEnabledCAzApplication::get_ApplyStoreSaclCAzApplication::put_ApplyStoreSaclCAzApplication::get_WritableCAzApplication::GetPropertyCAzApplication::SetPropertyCAzApplication::get_PolicyAdministratorsCAzApplication::get_PolicyAdministratorsNameCAzApplication::get_PolicyReadersCAzApplication::get_PolicyReadersNameCAzApplication::AddPolicyAdministratorCAzApplication::AddPolicyAdministratorNameCAzApplication::DeletePolicyAdministratorCAzApplication::DeletePolicyAdministratorNameCAzApplication::AddPolicyReaderCAzApplication::AddPolicyReaderNameCAzApplication::DeletePolicyReaderCAzApplication::DeletePolicyReaderNameCAzApplication::get_ScopesCAzApplication::OpenScopeCAzApplication::CreateScopeCAzApplication::DeleteScopeCAzApplication::get_OperationsCAzApplication::OpenOperationCAzApplication::CreateOperationCAzApplication::DeleteOperationCAzApplication::get_TasksCAzApplication::OpenTaskCAzApplication::CreateTaskCAzApplication::DeleteTaskCAzApplication::get_ApplicationGroupsCAzApplication::OpenApplicationGroupCAzApplication::CreateApplicationGroupCAzApplication::DeleteApplicationGroupCAzApplication::get_RolesCAzApplication::OpenRoleCAzApplication::CreateRoleCAzApplication::DeleteRoleEnter CAzApplication::InitializeClientContextFromToken ullTokenHandle=0x%8lx%8lx Enter CAzApplication::InitializeClientContextFromToken ullTokenHandle=%d CAzApplication::InitializeClientContextFromTokenLeave CAzApplication::InitializeClientContextFromToken: return HRESULT value=0x%lx Enter CAzApplication::InitializeClientContextFromName ClientName=%s DomainName=%s CAzApplication::InitializeClientContextFromNameLeave CAzApplication::InitializeClientContextFromName: return HRESULT value=0x%lx Enter CAzApplication::InitializeClientContextFromStringSid SidString=%s CAzApplication::InitializeClientContextFromStringSidLeave CAzApplication::InitializeClientContextFromStringSid: return HRESULT value=0x%lx CAzApplication::AddPropertyItemCAzApplication::DeletePropertyItemEnter CAzApplication::Submit lFlags=%d Leave CAzApplication::Submit: return HRESULT value=0x%lx get_DelegatedPolicyUsersget_DelegatedPolicyUsersNameCAzApplication::AddDelegatedPolicyUserCAzApplication::AddDelegatedPolicyUserNameCAzApplication::DeleteDelegatedPolicyUserEnter CAzApplication::ScopeExists bstrScopeName=%s Bad Param: %d , %d Leave CAzApplication::ScopeExists: return HRESULT value=0x%lx Enter CAzApplication::OpenScope2 bstrScopeName=%s Leave CAzApplication::OpenScope2: return HRESULT value=0x%lx Enter CAzApplication::CreateScope2 bstrScopeName=%s Leave CAzApplication::CreateScope2: return HRESULT value=0x%lx Enter CAzApplication::DeleteScope2 bstrScopeName=%s Leave CAzApplication::DeleteScope2: return HRESULT value=0x%lx Enter CAzApplication::get_RoleDefinitions CAzApplication::get_RoleDefinitionsLeave CAzApplication::get_RoleDefinitions: return HRESULT value=0x%lx Enter CAzApplication::CreateRoleDefinition bstrRoleDefinitionName=%s Leave CAzApplication::CreateRoleDefinition: return HRESULT value=0x%lx Enter CAzApplication::OpenRoleDefinition bstrRoleDefinitionName=%s Leave CAzApplication::OpenRoleDefinition: return HRESULT value=0x%lx Enter CAzApplication::DeleteRoleDefinition bstrRoleDefinitionName=%s Leave CAzApplication::DeleteRoleDefinition: return HRESULT value=0x%lx Enter CAzApplication::get_RoleAssignments CAzApplication::get_RoleAssignmentsLeave CAzApplication::get_RoleAssignments: return HRESULT value=0x%lx Enter CAzApplication::CreateRoleAssignment bstrRoleAssignmentName=%s Leave CAzApplication::CreateRoleAssignment: return HRESULT value=0x%lx Enter CAzApplication::OpenRoleAssignment bstrRoleAssignmentName=%s Leave CAzApplication::OpenRoleAssignment: return HRESULT value=0x%lx Enter CAzApplication::DeleteRoleAssignment bstrRoleAssignmentName=%s Leave CAzApplication::DeleteRoleAssignment: return HRESULT value=0x%lx CAzApplication::DeleteDelegatedPolicyUserNameEnter CAzApplication::InitializeClientContext2 IdentifyingString=%s CAzApplication::InitializeClientContext2Leave CAzApplication::InitializeClientContext2: return HRESULT value=0x%lx Enter CAzApplication::InitializeClientContextFromToken2 ulTokenHandleLowPart=%d ulTokenHandleHighPart=%d Leave CAzApplication::InitializeClientContextFromToken2: return HRESULT value=0x%lx Enter CAzApplications::_Init CAzApplications::_InitLeave CAzApplications::_Init: return HRESULT value=0x%lx CAzOperation constructor called. CAzOperation destructor called. Enter: CAzOperation::_Init hOwnerApp=%d hHandle=%d. Leave CAzOperation::_Init: return HRESULT value=0x%lx CAzOperation::get_DescriptionCAzOperation::put_DescriptionCAzOperation::get_NameCAzOperation::put_NameCAzOperation::get_ApplicationDataCAzOperation::put_ApplicationDataCAzOperation::get_WritableCAzOperation::get_OperationIDCAzOperation::put_OperationIDCAzOperation::GetPropertyCAzOperation::SetPropertyEnter CAzOperation::Submit lFlags=%d Leave CAzOperation::Submit: return HRESULT value=0x%lx Enter CAzOperation::RoleAssignments bstrScopeName=%s bRecursive=%d Leave CAzOperation::RoleAssignments: return HRESULT value=0x%lx Enter CAzOperations::_Init hOwnerApp=%d hParent=%d CAzOperations::_InitLeave CAzOperations::_Init: return HRESULT value=0x%lx Enter CAzOperations::_Init hOwnerApp=%d Enter CAzOperations::_AddOperation pOperation=%d CAzOperations::_AddOperationLeave CAzOperations::_AddOperation: return HRESULT value=0x%lx Enter CAzOperations::_AddOperationFromTaskObj hParent=%d Leave CAzOperations::_AddOperationFromTaskObj: return HRESULT value=0x%lx CAzTask constructor called. CAzTask destructor called. Enter CAzTask::_Init hOwnerApp=%d hHandle=%d Leave CAzTask::_Init: return HRESULT value=0x%lx CAzTask::get_DescriptionCAzTask::put_DescriptionCAzTask::get_NameCAzTask::put_NameCAzTask::get_ApplicationDataCAzTask::put_ApplicationDataCAzTask::get_BizRuleCAzTask::put_BizRuleCAzTask::get_BizRuleLanguageCAzTask::put_BizRuleLanguageCAzTask::get_BizRuleImportedPathCAzTask::put_BizRuleImportedPathCAzTask::get_IsRoleDefinitionCAzTask::put_IsRoleDefinitionCAzTask::get_OperationsCAzTask::get_TasksCAzTask::AddOperationCAzTask::DeleteOperationCAzTask::AddTaskCAzTask::DeleteTaskget_WritableCAzTask::GetPropertyCAzTask::SetPropertyCAzTask::AddPropertyItemCAzTask::DeletePropertyItemEnter CAzTask::Submit lFlags=%d Leave CAzTask::Submit: return HRESULT value=0x%lx Enter CAzTask::RoleAssignments bstrScopeName=%s Leave CAzTask::RoleAssignments: return HRESULT value=0x%lx Enter CAzTask::AddRoleDefinition bstrRoleDefinition=%s CAzTask::AddRoleDefinitionLeave CAzTask::AddRoleDefinition: return HRESULT value=0x%lx Enter CAzTask::DeleteRoleDefinition bstrRoleDefinition=%s CAzTask::DeleteRoleDefinitionLeave CAzTask::DeleteRoleDefinition: return HRESULT value=0x%lx Enter CAzTask::get_RoleDefinitions CAzTask::get_RoleDefinitionsLeave CAzTask::get_RoleDefinitions: return HRESULT value=0x%lx Enter CAzTasks::_Init CAzTasks::_InitLeave CAzTasks::_Init: return HRESULT value=0x%lx Enter CAzTasks::_AddTask CAzTasks::_AddTaskLeave CAzTasks::_AddTask: return HRESULT value=0x%lx Enter CAzTasks::_AddTaskFrom Leave CAzTasks::_AddTaskFrom: return HRESULT value=0x%lx Enter CAzScope constructor called. Enter CAzScope destructor called. Enter CAzScope::_Init Leave CAzScope::_Init: return HRESULT value=0x%lx CAzScope::get_DescriptionCAzScope::put_DescriptionCAzScope::get_NameCAzScope::put_NameCAzScope::get_ApplicationDataCAzScope::put_ApplicationDataCAzScope::get_WritableCAzScope::GetPropertyCAzScope::AddPropertyItemCAzScope::DeletePropertyItemCAzScope::get_PolicyAdministratorsCAzScope::get_PolicyAdministratorsNameCAzScope::get_PolicyReadersCAzScope::get_PolicyReadersNameCAzScope::AddPolicyAdministratorCAzScope::AddPolicyAdministratorNameCAzScope::DeletePolicyAdministratorCAzScope::DeletePolicyAdministratorNameCAzScope::AddPolicyReaderCAzScope::AddPolicyReaderNameCAzScope::DeletePolicyReaderCAzScope::DeletePolicyReaderNameCAzScope::SetPropertyCAzScope::get_ApplicationGroupsCAzScope::OpenApplicationGroupCAzScope::CreateApplicationGroupCAzScope::DeleteApplicationGroupEnter CAzScope::get_Roles CAzScope::get_RolesLeave get_Roles: return HRESULT value=0x%lx Enter CAzScope::OpenRole: bstrRoleName=%s CAzScope::OpenRoleLeave CAzScope::OpenRole: return HRESULT value=0x%lx Enter CAzScope::CreateRole: bstrRoleName=%s CAzScope::CreateRoleLeave CAzScope::CreateRole: return HRESULT value=0x%lx CAzScope::DeleteRoleCAzScope::get_TasksCAzScope::OpenTaskCAzScope::CreateTaskCAzScope::DeleteTaskEnter CAzScope::Submit: lFlags=%d Leave CAzScope::Submit: return HRESULT value=0x%lx CAzScope::get_CanBeDelegatedCAzScope::get_BizrulesWritableEnter CAzScope::get_RoleDefinitions CAzScope::get_RoleDefinitionsLeave CAzScope::get_RoleDefinitions: return HRESULT value=0x%lx Enter CAzScope::CreateRoleDefinition bstrRoleDefinitionName=%s CAzScope::CreateRoleDefinition: NULL IAzRoleDefinition parameter.Leave CAzScope::CreateRoleDefinition: return HRESULT value=0x%lx Enter CAzScope::OpenRoleDefinition bstrRoleDefinitionName=%s CAzScope::OpenRoleDefinition: NULL IAzRoleDefinition parameter.Leave CAzScope::OpenRoleDefinition: return HRESULT value=0x%lx Enter CAzScope::DeleteRoleDefinition bstrRoleDefinitionName=%s Leave CAzScope::DeleteRoleDefinition: return HRESULT value=0x%lx Enter CAzScope::get_RoleAssignments CAzScope::get_RoleAssignmentsLeave CAzScope::get_RoleAssignments: return HRESULT value=0x%lx Enter CAzScope::CreateRoleAssignment bstrRoleAssignmentName=%s Leave CAzScope::CreateRoleAssignment: return HRESULT value=0x%lx Enter CAzScope::OpenRoleAssignment bstrRoleAssignmentName=%s Leave CAzScope::OpenRoleAssignment: return HRESULT value=0x%lx Enter CAzScope::DeleteRoleAssignment bstrRoleAssignmentName=%s Leave CAzScope::DeleteRoleAssignment: return HRESULT value=0x%lx Enter CAzScopes::_Init CAzScopes::_InitLeave CAzScopes::_Init: return HRESULT value=0x%lx CAzApplicationGroup constructor called. CAzApplicationGroup destructor called. Enter CAzApplicationGroup::_Init Leave CAzApplicationGroup::_Init: return HRESULT value=0x%lx CAzApplicationGroup::get_TypeCAzApplicationGroup::put_TypeCAzApplicationGroup::get_LdapQueryCAzApplicationGroup::put_LdapQueryCAzApplicationGroup::get_AppMembersCAzApplicationGroup::get_AppNonMembersCAzApplicationGroup::get_MembersCAzApplicationGroup::get_MembersNameCAzApplicationGroup::get_NonMembersCAzApplicationGroup::get_NonMembersNameCAzApplicationGroup::get_DescriptionCAzApplicationGroup::put_DescriptionCAzApplicationGroup::get_NameCAzApplicationGroup::put_NameCAzApplicationGroup::get_BizRuleCAzApplicationGroup::put_BizRuleCAzApplicationGroup::get_BizRuleLanguageCAzApplicationGroup::put_BizRuleLanguageCAzApplicationGroup::get_BizRuleImportedPathCAzApplicationGroup::put_BizRuleImportedPathCAzApplicationGroup::AddAppMemberCAzApplicationGroup::DeleteAppMemberCAzApplicationGroup::AddAppNonMemberCAzApplicationGroup::DeleteAppNonMemberCAzApplicationGroup::AddMemberCAzApplicationGroup::DeleteMemberCAzApplicationGroup::AddMemberNameCAzApplicationGroup::DeleteMemberNameCAzApplicationGroup::AddNonMemberCAzApplicationGroup::DeleteNonMemberCAzApplicationGroup::AddNonMemberNameCAzApplicationGroup::DeleteNonMemberNameCAzApplicationGroup::get_WritableCAzApplicationGroup::GetPropertyCAzApplicationGroup::SetPropertyCAzApplicationGroup::AddPropertyItemCAzApplicationGroup::DeletePropertyItemEnter CAzApplicationGroup::Submit: lFlags=%d Leave CAzApplicationGroup::Submit: return HRESULT value=0x%lx Enter CAzApplicationGroup::RoleAssignments: bstrScopeName=%s bRecusive=%d Leave CAzApplicationGroup::RoleAssignments: return HRESULT value=0x%lx Enter CAzApplicationGroups::_Init CAzApplicationGroups::_InitLeave CAzApplicationGroups::_Init: return HRESULT value=0x%lx CAzRole constructor called CAzRole destructor called Enter CAzRole::_Init Leave CAzRole::_Init: return HRESULT value=0x%lx CAzRole::get_DescriptionCAzRole::put_DescriptionCAzRole::get_NameCAzRole::put_NameCAzRole::get_ApplicationDataCAzRole::put_ApplicationDataCAzRole::get_AppMembersCAzRole::get_MembersCAzRole::get_MembersNameCAzRole::get_OperationsCAzRole::get_TasksCAzRole::AddAppMemberCAzRole::DeleteAppMemberCAzRole::AddTaskCAzRole::DeleteTaskCAzRole::AddOperationCAzRole::DeleteOperationCAzRole::AddMemberCAzRole::DeleteMemberCAzRole::AddMemberNameCAzRole::DeleteMemberNameCAzRole::get_WritableCAzRole::GetPropertyCAzRole::SetPropertyCAzRole::AddPropertyItemCAzRole::DeletePropertyItemCAzRole::AddRoleDefinitionCAzRole::DeleteRoleDefinitionEnter CAzRole::get_RoleDefinitions CAzRole::get_RoleDefinitionsLeave CAzRole::get_RoleDefinitions: return HRESULT value=0x%lx Enter CAzRole::get_Scope Leave CAzRole::get_Scope: return HRESULT value=0x%lx Enter CAzRole::Submit lFlags=%d Leave CAzRole::Submit: return HRESULT value=0x%lx Enter CAzRoles::_Init CAzRoles::_InitLeave CAzRoles::_Init: return HRESULT value=0x%lx CAzRoleAssignments constructor called. Enter CAzRoleAssignments::_InitRolesForGivenObj: bstrScopeName=%s bRecursive=%d Leave CAzRoleAssignments::_InitRolesForGivenObj: return HRESULT value=0x%lx Enter CAzRoleAssignments::GetRoleAssigmentObj bstrScopeName=%s ScopeFlags=%d CAzRoleAssignments::GetRoleAssigmentObjLeave CAzRoleAssignments::GetRoleAssigmentObj: return HRESULT value=0x%lx CAzClientContext constructor called. CAzClientContext destructor called. Enter CAzClientContext::AccessCheck2 bstrObjectName=%s, bstrScopeName=%s lOperation=%d CAzClientContext::AccessCheck2 receives NULL plResult parameter. Leave CAzClientContext::AccessCheck2: return HRESULT value=0x%lx plResult=NULL Leave CAzClientContext::AccessCheck2: return HRESULT value=0x%lx *plResult=%d Enter CAzClientContext::AccessCheck bstrObjectName=%s, bstrScopeNames=%s varOperations=%s Leave CAzClientContext::AccessCheck: return HRESULT value=0x%lx *pvarResults=%s Leave CAzClientContext::AccessCheck: return HRESULT value=0x%lx *pvarResults=NULL Enter CAzClientContext::GetAssignedScopesPage lOptions=%d PageSize=%d Leave CAzClientContext::GetAssignedScopesPage: return HRESULT value=0x%lx *pvarScopeNames=%s Leave CAzClientContext::GetAssignedScopesPage: return HRESULT value=0x%lx pvarScopeNames=NULL Enter CAzClientContext::GetOperations bstrScopeName=%s Leave CAzClientContext::GetOperations: return HRESULT value=0x%lx Enter CAzClientContext::GetTasks bstrScopeName=%s Leave CAzClientContext::GetTasks: return HRESULT value=0x%lx Enter CAzClientContext::IsInRoleAssignment bstrScopeName=%s bstrRoleName=%s Leave CAzClientContext::IsInRoleAssignment: return HRESULT value=0x%lx pbIsInRole=NULL Leave CAzClientContext::IsInRoleAssignment: return HRESULT value=0x%lx *pbIsInRole=%d Enter CAzClientContext::GetRoles bstrScopeName=%s Leave CAzClientContext::GetRoles: return HRESULT value=0x%lx Enter CAzClientContext::GetBusinessRuleString Leave CAzClientContext::GetBusinessRuleString: return HRESULT value=0x%lx *pbstrBusinessRuleString=%s Leave CAzClientContext::GetBusinessRuleString: return HRESULT value=0x%lx pbstrBusinessRuleString=NULL CAzClientContext::get_UserDnCAzClientContext::get_UserSamCompatCAzClientContext::get_UserDisplayCAzClientContext::get_UserGuidCAzClientContext::get_UserCanonicalCAzClientContext::get_UserUpnCAzClientContext::get_UserDnsSamCompatCAzClientContext::GetPropertyCAzClientContext::get_RoleForAccessCheckCAzClientContext::put_RoleForAccessCheckEnter CAzClientContext::AddApplicationGroups Leave CAzClientContext::AddApplicationGroups: return HRESULT value=0x%lx Enter CAzClientContext::AddRoles bstrScopeName=%s Leave CAzClientContext::AddRoles: return HRESULT value=0x%lx Enter CAzClientContext::AddStringSids Leave CAzClientContext::AddStringSids: return HRESULT value=0x%lx CAzClientContext::get_LDAPQueryDNCAzClientContext::put_LDAPQueryDNEnter CAzClientContext::_Init Leave CAzClientContext::_Init: return HRESULT value=0x%lx Enter get_BizRuleParameters::_Init Leave CAzClientContext::get_BizRuleParameters: return HRESULT value=0x%lx Enter get_BizRuleInterfaces::_Init Leave CAzClientContext::get_BizRuleInterfaces: return HRESULT value=0x%lx Enter CAzClientContext::GetGroups bstrScopeName=%s Leave CAzClientContext::GetGroups: return HRESULT value=0x%lx Enter CAzClientContext::get_Sids. Leave CAzClientContext::get_Sids: return HRESULT value=0x%lx Enter CAzRoleDefinitions::_Init CAzRoleDefinitions::_InitLeave CAzRoleDefinitions::_Init: return HRESULT value=0x%lx Enter CAzRoleDefinitions::CollectTaskAsRoleDefinition CAzRoleDefinitions::CollectTaskAsRoleDefinitionLeave CAzRoleDefinitions::CollectTaskAsRoleDefinition: return HRESULT value=0x%lx Enter CAzRoleDefinitions::CollectNamedRoleDefinitions AZ_PROP_ROLE_TASKS returns bogus task object %s Leave CAzRoleDefinitions::CollectNamedRoleDefinitions: return HRESULT value=0x%lx Enter CAzRoleAssignments::_Init CAzRoleAssignments::_InitLeave CAzRoleAssignments::_Init: return HRESULT value=0x%lx %09IuObject with the same name existmap/set too longCAzBizRuleContext ~CAzBizRuleContext CAzBizRuleContext::put_BusinessRuleResult: %ld CAzBizRuleContext::put_BusinessRuleString: %ws CAzBizRuleContext::get_BusinessRuleString: %ws CAzBizRuleContext::GetParameter: %ls CAzBizRuleContext::GetParameter: %ls: Parameter not passed in. CAzBizRuleContext::SetAccessCheckContext SYSTEM\CurrentControlSet\Control\LSA\AzRolesUseStrongLockingSoftware\Microsoft\AzMan\LoggingFlagsAPPDATA\Microsoft\AzMan\AzManDebug_%d.log AzMan log file Process Name: Current User Name: Current System Time: %02u/%02u/%02u %02u:%02u:%02u S-1-3-4AzpAzStoreGetProperty: invalid prop id %ld SetProperty: Object doesn't support dirty bit 0x%lx IsNormalFlags(_Flags) = TRUE (_GenericObject->DirtyBits & _DirtyBit) = 0 IsRefreshFlags(_Flags) = TRUE AzpAzStoreManagerSetProperty: domain timeout too small %ld AzpAzStoreManagerSetProperty: script engine timeout too small %ld AzpAzStoreManagerSetProperty: max script engines too small %ld AzpAzStoreManagerSetProperty: invalid prop id %ld AzInitialize: Reserved != 0 AzInitialize: Invalid flags 0x%lx AzInitialize: Failed to Initialize Audit system: %ld AzAuthorizationStoreDelete: Reserved != 0 AzCloseHandle: Reserved != 0 AzAuthorizationStore in AzCloseHandle refAzpAddObjectToGuidMap: objects already in mapvector too long%s:%dAzApplicationGetProperty: invalid prop id %ld AzpApplicationSetProperty: cannot convert CLSID %ws %ld AzpApplicationSetProperty: invalid prop id %ld AzApplicationClose: Failed to capture application name: %ld AzApplicationClose: Cannot reference application %ws: %ld AzApplicationClose: Cannot reload children on unload failure: %ld SOFTWARE\Microsoft\AzMan\BizRuleEnabledApplicationsAvoided script engine in non-base thread. Using free script engine from non-base thread. ReuseEngine failed: 0x%lx Using free script engine. Using clone of running script engine. new CScriptEngine failed: 0x%lx ScriptEngine->Init failed: 0x%lx Using new script engine. Engine doesn't support reset: 0x%lx Script changed while engine was running Script LRU'ed out: %ld Script Freed from free script list AzpGetScriptEngine failed: 0x%lx, %ld RunScript failed: 0x%lx, %ld CoInitializeEx failed: 0x%lx, %ld Script Timed out. CScriptEngine ~CScriptEngine CScriptEngine::InitializeScriptEngine Failed to get scripting engine CLSID: 0x%lx Failed to create scripting engine: 0x%lx IActiveScript::QueryInterface()Exception: %s: 0x%lx Engine doesn't support IActiveScriptParse: 0x%lx Failed to create AzBizRuleContext instance: 0x%lx IActiveScript::GetCurrentScriptThreadID()Error calling GetCurrentScriptThreadID: 0x%lx Set ThreadId to: 0x%lx 0x%lx IActiveScript::SetScriptSite()Error calling SetScriptSite: 0x%lx IActiveScriptParse::InitNew()Error calling InitNew: 0x%lx AzBizRuleContextIActiveScript::AddNamedItem()Failed to AddNamedItem: 0x%lx IActiveScriptParse::ParseScriptText()Failed to ParseScriptText: 0x%lx Remap error to: 0x%lx CScriptEngine::RunScript RunScript took an exception: 0x%lx Script took an exception: 0x%lx Failed to SetScriptState(STARTED): 0x%lx Script from access check to caller: 0x%lx Return script error to caller: 0x%lx Cannot DeleteTimerQueurTimer: %ld CScriptEngine::InterruptScript IActiveScript::InterruptScriptThread()CScriptEngine::ResetToUninitialized IActiveScriptParse::Release()IActiveScript::SetScriptState()Failed to SetScriptState(INITIALIZED): 0x%lx CScriptEngine::ReuseEngine IActiveScript::GetScriptState()Failed to GetScriptState: 0x%lx Failed to SetScriptState(UNINITIALIZED): 0x%lx Changed ThreadId to: 0x%lx 0x%lx CScriptEngine::IsBaseThread CScriptEngine::FinalRelease IActiveScript::Close()Cannot CloseEngine: 0x%lx IActiveScript::Release()CScriptEngine::InsertHeadList CScriptEngine::RemoveListEntry CScriptEngine::InsertHeadLruList CScriptEngine::RemoveLruListEntry CScriptEngine::QueryInterface->IUnknown IActiveScriptSite Unsupported Interface: CScriptEngine::AddRef %ld CScriptEngine::Release %ld CScriptEngine::GetLCID CScriptEngine::GetItemInfo: %ws GetItemInfo took an exception: 0x%lx CScriptEngine::GetDocVersionString CScriptEngine::OnScriptTerminate CScriptEngine::OnStateChange:State: Uninitialized. State: Initialized. State: Started. State: Connected. State: Disconnected. State: Closed. CScriptEngine::OnScriptError Script Error: Code: 0x%lx %ld Src: %ws File: %ws Desc: %ws CScriptEngine::OnEnterScript CScriptEngine::OnLeaveScript CAzBizRuleParamInternal::AddParameters: Can't get name lbound 0x%lx CAzBizRuleParamInternal::AddParameters: Can't get value lbound 0x%lx CAzBizRuleParamInternal::AddParameters: Can't get name ubound 0x%lx CAzBizRuleParamInternal::AddParameters: Can't get value ubound 0x%lx CAzBizRuleParamInternal::AddParameters: Array bounds don't match %ld %ld %ld %ld CAzBizRuleParamInternal::AddParameters: Can't access ParameterNames 0x%lx CAzBizRuleParamInternal::AddParameters: Can't access ParameterValues 0x%lx CAzBizRuleParameters::AddParameters: Parameter %ld isn't a VT_BSTR CAzBizRuleParameters::AddParameters: Parameter %ws should have an interface value AzpCaptureBizRuleInterfaces: Can't get name lbound 0x%lx AzpCaptureBizRuleInterfaces: Can't get value lbound 0x%lx AzpCaptureBizRuleInterfaces: Can't get interfaces lbound 0x%lx AzpCaptureBizRuleInterfaces: Can't get name ubound 0x%lx AzpCaptureBizRuleInterfaces: Can't get value ubound 0x%lx AzpCaptureBizRuleInterfaces: Can't get interfaces ubound 0x%lx AzpCaptureBizRuleInterfaces: Array bounds don't match %ld %ld %ld %ld %ld %ld AzpCaptureBizRuleInterfaces::AddInterfaces: Can't access ParameterNames 0x%lx AzpCaptureBizRuleInterfaces::AddInterfaces: Can't access Flags 0x%lx AzpCaptureBizRuleInterfaces::AddInterfaces: Can't access Interfaces 0x%lx GroupRole-AzpClientContextFree: AzpClientContextGenerateDeleteAudit failed with %ld AzpGetUserNameEx: no cached token handle AzpGetUserNameEx: Cannot get token statistics: %ld AzpGetUserNameEx: Cannot GetThreadToken %ld AzpGetUserNameEx: Cannot SetThreadToken %ld AzpGetUserNameEx: Cannot GetUserNameExW %ld AzpGetUserNameEx: Cannot SetThreadToken (revert) %ld AzpClientContextGetProperty: invalid opcode %ld AzpClientContextGetProperty: Cannot get token statistics: %ld %ws\%wsAzpClientContextGetProperty: Cannot translate name: %ld AzpClientContextSetProperty: invalid prop id %ld AzpComputeAccountDn: AuthzGetInformationFromContext failed %ld AzpComputeAccountDn: SafeAllocaAllocate failed %ld AzpComputeAccountDn: AzpAllocateHeap failed %ld <Sid=>AzpQueryUserDN: ClientContext is missing LdapQueryDN from a standalone machine. AzpQueryUserDN: ClientContext (AZP_CONTEXT_CREATED_FROM_SID) is missing LdapQueryDN. distinguishedName(objectClass=user)AzpCheckGroupMembershipLdap: %ws AzpCheckGroupMembershipLdap: %ws: User is in NT 4 domain or local account: Membership is %ld AzpCheckGroupMembershipLdap: %ws: AzpGetUserNameEx failed %ld AzpCheckGroupMembershipLdap: ClientContext is missing LdapQueryDN. AzpCheckGroupMembershipLdap: %ws: DsGetDcName failed %ld ObjectClassAzpCheckGroupMembershipLdap: %ws: ldap_search failed on %ws: %ld: %s AzpCheckGroupMembershipLdap: %ws: ldap_count_entries failed on %ws: %ld: %s AzpCheckGroupMembershipLdap: %ws: ldap_search worked on %ws: Membership is %ld (objectClass=*)AzpCheckGroupMembershipLdapForLdapUrl: %ws AzpQueryUserDN failed. AzpCheckGroupMembershipLdapForLdapUrl:invalid LDAP query syntaxAzpCheckGroupMembershipLdapForLdapUrl: ldap_init failed on %ws: %ld: %s AzpCheckGroupMembershipLdapForLdapUrl: AzpADSetDefaultLdapOptions failed on %ws: %ld AzpCheckGroupMembershipLdapForLdapUrl: ldap_connect failed on %ws: %ld AzpCheckGroupMembershipLdapForLdapUrl: AzpADSetLdapEncryptionOption failed on %ws: %ld AzpCheckGroupMembershipLdapForLdapUrl: ldap_bind failed on %ws: %ld: %s AzpCheckGroupMembershipOne: %ws AzpCheckGroupMembershipOne: %ws: Create cache entry AzpCheckGroupMembershipOne: %ws: %ld: %ld: Answer found in cache AzpCheckGroupMembershipOne: %ws: Is a basic group AzpCheckGroupMembershipOne: %ws: Cannot AzptCheckObjecSidMembership (non member) %ld AzpCheckGroupMembershipOne: %ws: Is non member via NT Sid AzpCheckGroupMembershipOne: %ws: Cannot AzpCheckGroupMembership (non member) %ld AzpCheckGroupMembershipOne: %ws: Is non member via app group AzpCheckGroupMembershipOne: %ws: Cannot AzpCheckGroupMembership (member) %ld AzpCheckGroupMembershipOne: %ws: Cannot AzpCheckGroupMembership (member) extended status: %ld AzpCheckGroupMembershipOne: %ws: Cannot AzpCheckGroupMembership (non member) extended status: %ld AzpCheckGroupMembershipOne: %ws: %ld: %ld: Answer computed AzpCheckGroupMembershipOne: %ws: Avoid ldapquery group AzpCheckGroupMembershipOne: ClientContext is missing LdapQueryDNAzpCheckGroupMembershipOne: %ws: Is an ldapquery group AzpCheckGroupMembershipOne: %ws: Is an invalid group type Task referenceAzpCaptureBizRuleInterfaces: Names is NULL but Flags or Interfaces isn't AzpCaptureBizRuleInterfaces: Flags or Interfaces is NULL but Names isn't AzpWalkOpsAndTasks: %ws: %ws: All operations have been processed %ld. AzpWalkOpsAndTasks: %ws: %ws: %ws: Operation granted AzpWalkOpsAndTasks: %ws: %ws: %ws: Operation extended failure %ld AzInitializeContextFromToken: Cannot initialize context since store is in manage mode %ld AzInitializeContextFromToken: Cannot ObCommonCreateObject %ld AzInitializeContextFromToken: Cannot OpenProcessToken %ld AzInitializeContextFromToken: Cannot DuplicateTokenEx %ld AzInitializeContextFromToken: Cannot OpenThreadToken %ld AzInitializeContextFromToken: GetTokenInformation failed with %ld AzInitializeContextFromToken: Cannot AuthzInitializeContextFromToken %ld AzpGenerateContextCreateAudit: Cannot ObCommonCreateObject %ld AzManAPIKerberosAzInitializeContextFromName: Cannot initialize context since store is in manage mode %ld AzInitializeContextFromName: Cannot AzInitializeFromToken %ld AzInitializeContextFromName: Cannot ObCommonCreateObject %ld AzInitializeContextFromName: Cannot allocate LUID %ld AzInitializeContextFromName: LookupAccoutName failed with %ld AzInitializeContextFromName: Invalid user type - expected SIdTypeUser, got %ld AzInitializeContextFromStringSid: Cannot initialize context since store is in manage mode %ld AzInitializeContextFromStringSid: ConvertSidStringToSid failed with %ld AzInitializeContextFromStringSid: LookupAccountSid failed with %ld AzInitializeContextFromStringSid: Invalid user type - expected SIdTypeUser, got %ld AzInitializeContextFromStringSid: Cannot ObCommonCreateObject %ld AzInitializeContextFromStringSid: Cannot allocate LUID %ld AzInitializeContextFromStringSid: CopySid failed with %ld AzInitializeContextFromStringSid: Cannot AuthzInitializeContextFromStringSid %ld S-1-0-0AzInitializeContext: Cannot initialize context since store is in manage mode %ld AzInitializeContext: Cannot initialize context with null audit identifying string %ld AzInitializeContext: ConvertSidStringToSid for null SID failed with %ld AzInitializeContext: Cannot ObCommonCreateObject %ld AzInitializeContext: Cannot allocate LUID %ld AzInitializeContext: CopySid for null SID failed with %ld AzInitializeContext: Cannot AuthzInitializeContext %ld AzAccessCheck: %ws: GroupEvalSerialNumber changed from %ld to %ld AzAccessCheck: Failed to load children for %ws: %ldAzAccessCheck: %ws: invalid OperationCount %ld AzAccessCheck: %ws: %ws: There are no roles for this scope Role referenceAzAccessCheck: This role %ws is not the requested role %ws AzAccessCheck: %ws: %ws: No operations for this role apply AzAccessCheck: %ws: %ws: No roles have applicable operations %ld. AzContextAccessCheck: Starting Access Check loops AzAccessCheck: %ws: %ws: All roles have been processed %ld. AzAccessCheck: %ws: %ws: All operations have been processed %ld. AzAccessCheck: %ws: %ws: Process role AzAccessCheck: %ws: %ws: AzpWalkOpsAndTasks failed %ld AzAccessCheck: %ws: %ws: CheckSidMembership of role AzAccessCheck: %ws: %ws: CheckSidMembership failed %ld AzAccessCheck: %ws: %ws: CheckSidMembership is %ld AzAccessCheck: %ws: %ws: CheckGroupMembership of role AzAccessCheck: %ws: %ws: CheckGroupMembership failed %ld AzAccessCheck: %ws: %ws: CheckGroupMembership extended status %ld AzAccessCheck: %ws: %ws: CheckGroupMembership is %ld AzAccessCheck: %ws: %ws: Role finished being processed AzAccessCheck: %ws: %ws: Role finished being processed due to ACCESS_DENIED AzAccessCheck: %ws: AzpAccessCheckGenerateAudit failed with %ld AzpCheckRolesMembersip: %ws: CheckSidMembership of role AzpCheckRolesMembersip: %ws: CheckSidMembership failed %ld AzpCheckRolesMembersip: %ws: CheckSidMembership is %ld AzpCheckRolesMembersip: %ws: CheckGroupMembership of role AzpCheckRolesMembersip: %ws: CheckGroupMembership failed %ld AzpCheckRolesMembersip: %ws: CheckGroupMembership is %ld AzpCheckRolesMembersip: %ws: CheckGroupMembership extended status %ld AzpCheckRolesMembersip: %ws: Role finished being processed Role/Group referenceAzpCheckGroupMembershipOne failed. 0x%lx %ws (%ld): Domain ref 0x%lx %ws (%ld): Domain deref AzpAllocateDc: ldap_init failed on %ws: %ld: %s AzpAllocateDc: AzpADSetDefaultLdapOptions failed on %ws: %ld AzpAllocateDc: ldap_connect failed on %ws: %ld AzpAllocateDc: AzpADSetLdapEncryptionOption failed on %ws: %ld AzpAllocateDc: ldap_bind failed on %ws: %ld: %s 0x%lx %ws (%ld): DC Allocaote 0x%lx %ws (%ld): DC ref 0x%lx %ws (%ld): DC deref AzAuthorizationStore in ObCloseHandle refAllocate objectChild handle refHandle ref0x%lx %ld (%ld): Open Handle Authorization Store Handle ref0x%lx %ld (%ld): Close Handle Authorization Store Handle derefHandle derefChild handle derefObDecrHandleRefCount: Cannot reload children on failure of unload: %ld 0x%lx: NULL handle is invalid 0x%lx %ld: Handle Object type is too large. 0x%lx %ld: Handle has no handle reference count. 0x%lx %ld: Handle has no ParentGenericObjectHead. 0x%lx %ld: Object is deleted. 0x%lx %ld: Object type doesn't match parent. 0x%lx %ld: Sequence number doesn't match parent. 0x%lx: AV accessing handle ObReferenceObjectByName (by guid): Ref by name0x%lx: NULL handle not allowed. 0x%lx %ld: Object Type not local object type Ref by Handle0x%lx %ld: Handle not in list. Deref "*/:<>?\| ObCreateObject: %ws ObCommonCreateObject: Reserved != 0 ObCommonOpenObject: Reserved != 0 ObCommonEnumObjects: Reserved != 0 ObCommonGetProperty: Reserved != 0 ObCommonGetProperty: Object has no name ObCommonGetProperty: Object has no description ObCommonGetProperty:Object has no application data ObCommonGetProperty: Object has no generate-audits data ObCommonGetProperty: Object has no apply-store-sacl data ObCommonGetProperty:Object has no apply-store-sacl data ObCommonGetProperty: No get property routine. ObSetProperty: no set property routine: %ld %ld ObSetProperty: OpCacheSerialNumber set to %ld ObCommonDeleteObject: Reserved != 0 0x%lx: 0x%lx: %ld: ObFreeDeltaArray 0x%lx: 0x%lx: ObInitObjectList ObRemoveObjectListLink: OpCacheSerialNumber set to %ld AzpeAddPropertyItemSid: AzpAllocateHeap failed %ld AzpeAddPropertyItemSid: duplicate SIDAzpeAddPropertyItemSid: set::insert failed %ld ObAddPropertyItem (by guid): ObAddPropertyItem: Cannot set creator owner sid ObAddPropertyItem: Cannot set creator group sid Reference to self ObAddPropertyItem: GroupEvalSerialNumber set to %ld ObAddPropertyItem: OpCacheSerialNumber set to %ld AzAddPropertyItem: Reserved != 0 AzAddPropertyItem: invalid prop id %ld ObRemovePropertyItem: GroupEvalSerialNumber set to %ld AzRemovePropertyItem: Reserved != 0 && Reserved != 1 AzRemovePropertyItem: invalid prop id %ld 0x%lx: 0x%lx: %ld: ObRemoveObjectListLinks ObClearObjectList PropertyID %d 0x%lx: 0x%lx: ObFreeObjectList 0x%lx: 0x%lx: Free array Reference from NewNameAzpGetTokenUserGroupsFromAuthzContext: NULL ppTokenUser or NULL ppTokenGroups not allowed %ld AzpGetTokenUserGroupsFromAuthzContext: AuthzGetInformationFromContext failed %ld AzpGetTokenUserGroupsFromAuthzContext: SafeAllocaAllocate failed %ld AzpGetSidsFromUserGroups: null pSidList or pdwListSize AzpGetSidsFromUserGroups: out of memory. AzpIsSidInList: pbAnswer must not be NULL. AzpIsSidInList: sidListFlag can only be SID_MEMBER_LIST(1) or SID_NON_MEMBER_LIST(2) . AzpIsSidInList: hObject is not Role or Group. AzpIsSidInList: Role does not have non-member SID list. AzpAuthzCheckSid: hAuthzHandle must not be NULL. AzpAuthzCheckSid: pbIsGood must not be NULL. AzpAuthzCheckSid: pSid must not be NULL. AzpSidsImplyObjectMembership: both pbAnswer and pbIsNonMember must not be NULL. AzpIsUserAuthzMember: pbAnswer must not be NULL. AzpGetClientContextSids: failed. 0~~`a@@@@`(0@ 0AzpGroupInit: memory allocation failed %ld AzpGroupGetProperty: invalid opcode %ld AzpGroupGetProperty: cannot set group type to ldap query if group has membership. AzpGroupGetProperty: cannot set group type to basic if group has bizrule string. AzpGroupGetProperty: cannot set group type to basic if group has ldap query string. AzpGroupGetProperty: This version of the store doesn't support creating bizrule group. AzpGroupGetProperty: cannot set group type to bizrule if group has ldap query string. AzpGroupGetProperty: invalid grouptype %ld VBScriptAzpGroupSetProperty: can't set Bizrule before group type AzpGroupSetProperty: Must set language before bizrule AzpGroupSetProperty: can't set Bizrule type before group type JScriptAzpGroupSetProperty: invalid language %ws AzpGroupSetProperty: can't set Bizrule Path before group type AzpGroupSetProperty: can't set ldap query before group type ldap://invalid LDAP query syntaxAzpGroupSetProperty: GroupEvalSerialNumber set to %ld AzpGroupSetProperty: invalid propid %ld AzpGroupAddPropertyItem: invalid group type %ld AzpRoleInit: memory allocation failed %ld AzpRoleGetProperty: invalid prop id %ld TrueFalseBasicLdapQueryBizruleMSXMLDomainTimeoutScriptTimeoutMaxScriptsAuditsApplicationDataMajorVersionMinorVersionAzApplicationAzApplicationGroupApplicationCLSIDApplicationVersionAzOperationAzTaskAzScopeAzRoleOperationLinkOperationIDTaskLinkBizRuleImportedPathRoleDefinitionBizRuleLanguageBizRuleAppMemberLinkAppNonMemberLinkGroupTypeMemberNonMemberAzAdminManagerxml file %ws exists. xml file %ws doesn't exist. IXMLDOMDocument2::load failed. HRESULT = %d. Intepreted as 'file not found'.IXMLDOMDocument2::load failed. HRESULT = %dCoCreating IXMLDOMDocument2 failed. HRESULT = %dXmlCheckSecurityPrivilege: invalid full path '%ws' XmlCheckSecurityPrivilege: path is too long '%ws' ::$dataAzpChangeSinglePrivilege failed to reset to original. Error code: %d(myXmlSetNodeAttribute)pNode = 0x%lx (myXmlSubmitObjectAttribute)pNode = 0x%lx %dNameGuidDescription <?xml version="1.0" encoding="utf-8" ?> <AzAdminManager MajorVersion="%d" MinorVersion="%d" Guid="%s"> </AzAdminManager>pDoc->loadXML%s error occured: 0x%lx(%ws) %s error occured: 0x%lx fileSelectionLanguagedefault SelectionLanguage=%ws XPath//%s[.="%s"]XPath query(link delete)=%ws Not found %s under tag %ws hr = 0x%lx, pObjectNode(from myXmlGetNamedGuidNode) = 0x%lx A new element node, 0x%lx, is added for %s pObjectNode, 0x%lx, is released //*/%s[@%s="%s"]XPath query(refresh)=%ws 6766H4`6(61.2.840.113556.1.4.8051.2.840.113556.1.4.14131.2.840.113556.1.4.529msDS-AzApplicationNamecnmsDS-AzScopeNamenamedescriptionmsDS-AzApplicationDatamsDS-AzGenerateAuditsmsDS-AzDomainTimeoutmsDS-AzScriptEngineCacheMaxmsDS-AzScriptTimeoutmsDS-AzMajorVersionmsDS-AzMinorVersionallowedAttributesEffectiveallowedChildClassesEffectiveobjectVersionuSNChangedobjectGUIDmsDS-AzClassIdmsDS-AzApplicationVersionmsDS-AzOperationIDmsDS-AzBizRulemsDS-AzBizRuleLanguagemsDS-AzLastImportedBizRulePathmsDS-OperationsForAzTaskmsDS-TasksForAzTaskmsDS-AzTaskIsRoleDefinitionmsDS-MembersForAzRolemsDS-OperationsForAzRolemsDS-TasksForAzRolegroupTypemsDS-AzLDAPQuerymembermsDS-NonMembersmsDS-AzAdminManagermsDS-AzApplicationmsDS-AzOperationmsDS-AzTaskmsDS-AzScopegroupmsDS-AzRolecontainerAzOpObjectContainer-AzTaskObjectContainer-AzGroupObjectContainer-AzRoleObjectContainer-(objectClass=msDS-AzAdminManager)(objectClass=msDS-AzApplication)(objectClass=msDS-AzOperation)(objectClass=msDS-AzTask)(objectClass=msDS-AzScope)(objectClass=group)(objectClass=msDS-AzRole)MSLDAPAzpADSetObjectOptions: AzpeSetObjectOptions failed: %ld AzpADPersistOpenEx: AzpLdapCrackUrl failed on %ws: %ld AzpADPersistOpenEx: ldap_init failed on %ws: %ld: %s AzpADPersistOpenEx: AzpADSetDefaultLdapOptions failed on %ws: %ld AzpADPersistOpenEx: ldap_connect failed on %ws: %ld AzpADPersistOpenEx: AzpADSetLdapEncryptionOption failed on %ws: %ld AzpADPersistOpenEx: ldap_bind failed on %ws: %ld AzpADPersistOpenEx: AzpCheckDomainVersion failed on %ws: %ldCN=AzpADPersistOpenEx: ldap_get_option failed : %ld AzpADPersistOpenEx: AzpReadADStore failed: %ld BizRule group not supported, please update the schema AzpADPersistUpdateChildrenCache: AzpADBuildDN failed: %ld AzpADPersistUpdateChildrenCache: failed to init paged search handle: %ld AzpADPersistUpdateChildrenCache: failed to read paged results: %ld AzpADReadHasChildrenObject: Reading of Child container objectfailed: %ld AzpADPersistSubmit: AzpADStoreHasUpdate failed: %ld AzpADPersistSubmit: AzpADBuildDN failed:%ld AzpADPersistSubmit: AzpADBuildNameSearchFilter failed:%ld Submitting a new object with name that has been submitted by other instances of azstore objectAzpADPersistSubmit: AzpADBuildDN failed: %ld AzpADPersistSubmit: Failed to delete object %ws: %ld AzpADPersistSubmit: Update failed for object %ws: %ld AzpADPersistRefresh: AzpADBuildDN failed: %ld AzpADPersistRefresh: Search on object failed:%ld AzpADPersistRefresh: AzpReadADStoreObject failedfor %s: %ld AzpADPersistWritable: %ws attribute isn't writable AzpADPersistWritable: Error calling AzpADPersistChildCreate: %ld AdCheckSecurityPrivilege: AzpADReadNTSecurityDescriptor failed: %ld AzpADPersistOpenEx: AzpCheckVersions failed with error: %ld AzpReadADStoreObject failed: %ld AzpReadADStore: AzpADReadAzStoreChildren failed: %ld AzpADReadAzStoreChildren: Failed to read Application Groups: %ld AzpADReadAzStoreChildren: Failed to create paged result handle: %ld AzpADReadAzStoreChildren: AzpADReadPagedResult failed: %ld AzpADReadPagedResult: Reading of child objectfailed: %ld AzpADReadPagedResult: Updating children failed: %ld AzpADReadPagedResult: Failed to read paged LDAP result: %ld ,AzpReadADObjectContainer: Reading of child objectfailed: %ld AzpReadADStoreForCommonData: AzpInitializeObjectName failed: %ld AzpReadADStoreForCommonData: AzpeCreateObject failed: %ld AzpReadADStoreForCommonData: AzpADCreateGuidCN failed for %ws: %ld AzpReadADStoreForCommonData: Read description failed: %ld AzpUpdateObjectGuid: Failed to allocate memoryAzpReadADStoreObject: Object creation and common data read failed: %ld AzpReadAttributeAndSetProperty failed: %ld AzpReadADStoreObject: Failed to apply policy ACLs: %ld AzpReadADStoreObject: AzpADPersistWritable failed: %ld AzpADSetObjectOptions failed: %ld <Unknown>AzpReadAttributeAndSetProperty:AzpADReadLinkedAttribute failed for attribute %ws of %ws: %ld TRUE%s;range=%d-%d%s;range=%d-*AzpReadLinkedAttribute:AzpADParseLinkedAttributeValue failed for %ws: %ld AzpReadAttributeAndSetProperty: AzpeAddPropertyItem failed: %ld AzpADReadAttributeAndSetProperty:AzpeAddPropertyItemGuid failed on: %ld CN=AZGROUPOBJECTCONTAINER-CN=FOREIGNSECURITYPRINCIPALS,AzpADParseLinkedAttributeValue: ldap_set_option LDAP_OPT_REFERRALS failed: %ld AzpADParseLinkedAttributeValue: Failed to run search for group type for %ws: %ld <GUID=<SID=AzpApplyPolicyAcls: AzpADReadNTSecurityDescriptor failed :%ld AzpADApplyPolicyAcls: AzpeSetSecurityDescriptorIntoCache failed:: %ld AzpUpdateADObject: AzpADUpdateObjectAcls failed for %ws: %ld AzpUpdateADObject: Read writable failed: %ld AzpUpdateADObject: AzpGetAttrsForCreateObject failed for %ws: %ld AzpUpdateADObject: AzpGetADCommonAttrs failed: %ld AzpUpdateADObject: Get property failed for %s: %ld AzpUpdateADObject: Failed to add/modify %ws : %ld %ld AzpUpdateADObject: UuidCreate failed for %s: %ld AzpUpdateADObject: Failed to search object %s: %ld AzpUpdateADObject: AzpSetGuidAndOptions failed for %s: %ld objectClassAzpCreateADObject: Failed to add object %ws: %ld %ld AzpUpdateADCommonAttrs: AzpeGetProperty failed for object name: %ld AzpADUpdateCommonAttrs: Failed to rename %ws: %ld AzpADUpdateCommonAttrs: Get property failed : %ld AzpGetSpecificProperty: AzpADHandleSubmitLinkedAttribute failed for %s: %ld AzpADGetSpecificProperty: Get Property failed: %ld FALSEAzpHandleSubmitLinkedAttribute: AzpeGetDeltaArray failed for %ws: %ld AzpADHandleSubmitLinkedAttribute: AzpeGetDeltaArray failed for %ws: %ld AzpHandleSubmitLinkedAttribute: ConvertSidToStringSid failed: %ld AzpHandleSubmitLinkedAttribute: UuidToString failed: %ld AzpADUpdateObjectAcls: AzpADReadNTSecurityDescriptor failed :%ld AzpADUpdateObjectAcls: AzpeGetSecurityDescriptorFromCache failed: %ld AzpADUpdateObjectAcls: AzpADStampSD failed with SACL/DACL: %ld AzpADUpdateObjectAcls: AzpApplyPolicyAcls failed with DACL: %ld AzpADBuildDN: AzpADBuildDNForBuiltinObject failed:%ld AzpADBuildDN: AzpADObjectContainerRDN failed:%ld AzpADBuildDN: AzpADBuildChildObjectDN failed for %s: %ld AzpADBuildDN: AzpADGetCNForDN failed: %ld AzpADBuildDN: AzpADObjectContainerRDN failed for %ws: %ld AzpADBuildDN: AzpGetCNForDN failed: %ld AzpGetCNForDN: Failed to quote RDN for object %ws: %ld mayContainsystemMayContainschemaNamingContextdefaultNamingContextsupportedCapabilities1.2.840.113556.1.4.1851msDS-Behavior-VersionNTSecurityDescriptor1.2.840.113556.1.4.801AzpADReadNTSecurityDescriptor: AzpADBuildDN failed: %ld AzpADReadNTSecurityDescriptor: Failed to perform search on %ws: %ld AzpADStampSD: Failed to update security descriptor on %ws: %ld ldap Error:%ld Extended Error: %ws 1(&(objectClass=msds-azapplication)(msds-azapplicationname=%s))(&(objectClass=msds-azscope)(msds-azscopename=%s))F`D0FDE0Dz 0IppqrpPrp`qP=>>>>>@=p==AzScopeGetProperty: invalid prop id %ld AzTaskGetProperty: scope is delegated - bizrule not allowed %ld AzTaskGetProperty: invalid prop id %ld AzpTaskSetProperty: Must set language before bizrule AzpTaskSetProperty: invalid language %ws AzpTaskSetProperty: invalid prop id %ld AzpOperationGetProperty: invalid prop id %ld OperationHash: objects already in hashAzpOperationSetProperty: Operation Id too small %ld AzpOperationSetProperty: Operation ID %ld is already used. AzpOperationSetProperty: invalid prop id %ld Ref by operation idlist too longAzpCheckOperationCache: Operation cache avoided since interfaces passed in AzpCheckOperationCache: OpCacheSerialNumber changed from %ld to %ld AzpCheckOperationCache: Parameter count changed from previous call %ld %ld AzpCheckOperationCache: Parameter changed from previous call AzpCheckOperationCache: '%ws/%ws' found in operation cache AzpUpdateOperationCache: No operations to cache AzpUpdateOperationCache: Added '%ws/%ws' %ld to operation cache Scope CacheOperation CacheAzpPersistReconcileOne (by guid): AzpPersistReconcileOne: ObAddPropertyItem failed %ld AzpPersistReconcileOne: %ws %ld 0x%lx 0x%lx AzpPersistReconcile: Cannot refresh object: %ws %ld AzpPersistReconcile: Cannot reconcile object: %ws %ld %ld MSSQLSYSTEM\CurrentControlSet\Control\LSA\AzRoles\ProvidersAzpPersistDetermineProvider: Open Provider reg key at 'HKLM\%ws' AzpPersistDetermineProvider: Cannot open Provider reg key at 'HKLM\%ws' %ld ProviderDllAzpPersistDetermineProvider: Cannot open Provider reg value at 'HKLM\%ws\%ws' %ld AzpPersistDetermineProvider: Cannot load libary '%ws' %ld AzPersistProviderInitializeAzpPersistDetermineProvider: libary '%ws' does not export '%s': %ld AzpPersistReconcile: Cannot reconcile object: %ws %ld AzpeCreateObject: Cannot find Object Head: %ld: %ld AzpeSetProperty: Property ID for non-scalar: %ld AzpeSetObjectOptions: bad options mask 0x%lx AzpeGetProperty: Property ID for non-scalar: %ld AzpeGetDeltaArray: invalid prop id %ld AzpeAddPropertyItemSid: called from submit: %ld %ld %ld AzpeAddPropertyItemSid: invalid prop id %ld AzpeAddPropertyItemSid: SID not valid AzpeAddPropertyItemGuid: invalid prop id %ld AzpeGetObjectByGuid receives NULL parameter pFoundObjectHandle. AzpGetChildGenericHead cannot find the child list head for type=%d. %AZ_CLIENT_DN%AzpParseLDAPUrl: NULL Pointer AzpParseLDAPUrl: URL is %ws Error allocating memory AzpParseLDAPUrl: url doesn't begin with ldap:// AzpParseLDAPUrl: Host name missing Error unescaping host name: %ws Error unescaping DN:<%ws> AzpParseLDAPUrl: missing DN *AzpParseLDAPUrl: missing Attribute baseonesubAzpUnEscapeString: InternetCanonicalizeUrl NULL Param AzpUnEscapeString: Out of memory AzpUnEscapeString: UrlUnescape failed with %x AzpUnEscapeString: First call to UrlUnescape failed with %x AzpGetCurrentUserSid failed: Status = %x AzpCaptureString: NULL not ok AzpCaptureString: zero length not ok AzpCaptureString: string too long %ld %ld %ws AzpCaptureString: SID not valid 0x%lx: 0x%lx: Free old array 0x%lx: 0x%lx: Allocate array AzpSafeArrayPointerFromVariant: parameter is not an array 0x%lx. AzpSafeArrayPointerFromVariant: Array %lx isn't single dimension array AzpSafeArrayPointerFromVariant: Array isn't array of VARIANT 0x%lx %lx AzpADSetDefaultLdapOptions: ldap_set_option LDAP_OPT_REFERRALS failed: %ld AzpADSetDefaultLdapOptions: ldap_set_option LDAP_OPT_AREC_EXCLUSIVE failed: %ld AzpADSetDefaultLdapOptions: ldap_set_option LDAP_OPT_DNSDOMAIN_NAME failed: %ld AzpADPersistOpenEx: ldap_get_option for LDAP_OPT_SSL failed AzpADSetLdapEncryptionOption: ldap_set_option LDAP_OPT_ENCRYPT failed: %ld (null)%s<Invalid Sid>0x%lx %ld (%ld) %ws: %s [AZROLES] %02u/%02u %02u:%02u:%02u HANDLEOBJLISTINVPARMPERSISTOBJREFDISPATCHACCESSDOMREFXMLADSQLSCRIPTCRITICALFUNCALLUNKNOWN[%s] Failed to create log entry: StringCchVPrintfA failureError Message: WideCharToMultiByte failed AzManSQLProvider::Initialize: NULL pwszConnStr. AzManSQLProvider::Initialize: Not enough memory for db instance. AzManSQLProvider::Initialize(): Database::Open() returned 0x%08X. AzManSQLProvider::Initialize(): Not enough memory for db connection. AzManSQLProvider::Initialize(): SqlConnection::DriverConnect() returned 0x%08X. AzManSQLProvider::Initialize SqlConnection::DriverConnect returns 0x%08X. AzManSQLProvider::Initialize(): FAILED to initialize AES crypto provider Error 0x%08X. AzManSQLProvider::NeedsReconnect(): SqlConnection::NeedsReconnect returned %d. masterFAILED to initialize SHA256 hash algorithm Error 0x%08X. CryptHashData FAILED Error 0x%08X. CryptGetHashParam FAILED Error 0x%08X. AzMultiValuePropertyBuffer::NextPage is out of memory. No object can be found for guid=[%ws] in the visible tree. No object can be found for the given guid. =%d%wsAzMultiSidBuffer::NextPage is out of memory. |UuidCreate failed. AzpeGetProperty failed. AzObjectRecord::Initialize failed. AzObjectRecord::PopulateObject receives NULL objectHandle. Fails to set property (id is %d) to value %wsFails to set property (id is %d) to value %dAzObjectRecord::PopulateObject failed. ContainerRecord::Initialize failed. RoleRecord::Initialize fails to allocate memory for SID. TaskRecord::Initialize fails to allocate memory for Bizrule language TaskRecord::Initialize fails to allocate memory for Bizrule Path GroupRecord::Initialize fails to allocate memory for Bizrule language GroupRecord::Initialize fails to allocate memory for Bizrule Path GroupRecord::Initialize fails to allocate memory for SID. 1!defighSELECT count(*) FROM sysobjects WHERE name = 'AzMan_AzAuthorizationStore' and type = 'U' QueryChildrenUpdateTimeStamps fails for action=%d and objectType=%d. ObjectTimeStamp::GetUpdateInformation failed. QueryObjectUpdateTimeStamp has NULL parameter pRowTimeStamp.AzManSproc::Fetch failed with error: %d. QueryObjectUpdateTimeStamp failed. QueryChildrenUpdateTimeStamps has NULL parameter pTSMap.QueryChildrenUpdateTimeStamps failed to allocate memory. Invalid Stored Procedure Object: no ObjectRecord. QueryChildrenUpdateTimeStamps failed. StoreTimeStamp::GetUpdateInformation failed. SqlStoreHasUpdate has NULL pPersistContext or pbNeedUpdate parameter. AzpeSetObjectOptions failed. Enter PopulateObjectSingleValueProperties. PopulateObjectSingleValueProperties: objectHandle = NULL is invalid. PopulateObjectSingleValueProperties: pSproc = NULL is invalid. AzManSproc is invalid: No AzObjectRecord object. Leave PopulateObjectSingleValueProperties. return value: 0. Leave PopulateObjectSingleValueProperties. return value: %d. Enter PopulateObjectOptionalValueProperties. PopulateObjectOptionalValueProperties: objectHandle = NULL is invalid. PopulateObjectOptionalValueProperties: pSproc = NULL is invalid. Leave PopulateObjectOptionalValueProperties. return value: 0. Leave PopulateObjectOptionalValueProperties. return value: %d. PACL parameter for SqlLoadPolicyUser is NULL. Policy user type is not supported %d. Object of type %d does not support the action %d. AzManSproc::Execute failed. AzManSproc::Execute failed with error: %d. There are too many policy users for an ACL to hold. AddAccessAllowedAceEx fails. Error reading users of type %d SqlGetObjectSecurityDescriptor has NULL PSECURITY_DESCRIPTOR. InitializeSecurityDescriptor failed. SetSecurityDescriptorDacl failed. SqlGetObjectSecurityDescriptor failed. SqlGetObjectSecurityDescriptor failed %d. AzpeSetSecurityDescriptorIntoCache failed %d. SqlLoadAcls failed. GetAclInformation failed. CollectSids: duplicate SID. CollectSids: set::insert failed. AzManSproc::Execute failed AzManSproc::Execute failed with sqlStatus: %d. SqlUpdatePolicyUser failed. SqlUpdatePolicyUsersByAcl failed to allocate memory. SqlUpdatePolicyUsersByAcl failed. AzpeGetSecurityDescriptorFromCache failed. GetSecurityDescriptorDacl failed. SqlUpdatePolicyUsers failed. SqlLoadPolicyStore receives NULL pSqlPersistContext. Error to create a database %ws that already exists. Error setting MajorVersion. Error setting MinorVersion. Error setting default options. Error to open database %ws that does not exist. SqlLoadPolicyStore failed. SqlLoadPolicyStore succeeded. SqlProviderInitialize receives NULL parameters: %d. SqlProviderInitialize receives lower version number in AzrolesInfo: %d. Both OldSqlContext and sqlUrl being NULL is invalid. SQL URL does is not valid: it does not contain a database name information. Out of memory when allocating connection string. Out of memory when allocating PAZP_SQL_CONTEXT. Out of memory when allocating AzmanSQLLayer. AzmanSQLLayer::Initialize failed. SqlLoadPolicyStore SQL provider is invoked without mssql prefix "mssql". ://SQL provider URL is missing %ws. SqlPersistIsUpdateNeeded called with pbIsUpdateNeeded = NULL or pSqlPersistContext = NULL. SqlPersistIsUpdateNeeded failed. SqlPersistUpdateCache has updates. SqlPersistUpdateCache has no updates. SqlPersistUpdateCache failed. SqlPersistUpdateChildrenCache called. SqlPersistUpdateChildrenCache failed. SqlRemoveSqlRoles receives NULL SqlConnection. AzDatabaseSproc::Create fails with SqlStatus=%d. AzDatabaseSproc::Execute (AzMan_SPD_SQLRole_ForObject) fails with SqlStatus=%d. SqlPersistDelete failed. BeginTransaction returns: %d. CommitTransaction returns: %d. RollbackTransaction returns: %d. SqlPersistSubmit receives NULL PersistContext. SqlRemoveSqlRoles failed. SqlSubmitShallowProperties failed. SqlSubmitOptionalProperties failed. SqlSubmitMultiValueProperties failed. SqlUpdateStoreStateInfo failed. SqlPersistSubmit failed. SqlCreateObject receives NULL sqlPersistContext. GetStoreProcedure fails. SqlCreateObject receives NULL sqlPersistContext or NULL ppSproc. Object of type = %d does not support action %d. AzManSproc::Execute partially succeeded. Check Sproc %ws SqlExecuteNonQueryForObject failed with error: %d. SqlExecuteQueryForObject receives NULL sqlPersistContext or NULL ppSproc. PopulateObjectSingleValueProperties failed with error: %d. PopulateObjectOptionalValueProperties failed with error: %d. AzpeClearPropertyItemList failed: propID=%d, ObjectType=%d, ObjectName=%s. AzpeClearPropertyItemList fails for property (id is %d). Fails to set property (id is %d). SqlLoadMultiValues failed.AzpeAddPropertyItemSid: set::insert failed. SqlCreateChildListShallow failed.SqlCreateChildListShallow failed with error: %d. SqlCreateChildFromRecord receives NULL ppObject or NULL pSproc parameter. AzManSproc does not have AzObjectRecord. Fetch fails. AzpeGetObjectByGuid fails. AzpeCreateObject fails. SqlCreateChildFromRecord failed.SqlLoadChild failed.SqlLoadChildren (Loading type: %d.) Failed to allocate memory for object list. SqlLoadChildren (Type being loaded: %d.) SqlLoadSpecificChildObjectShallow failed with error: %d. Child object of type %d starts recursive loading. SqlLoadMultiValues failed with error: %d. SqlLoadObjectOptionalData failed with error: %d. SqlLoadChildren failed with error: %d. SqlLoadChildren failed.SqlLoadChild failed. ObjectTimeStamp allocation failed. AzpeGetObjectByGuid failed. SqlRefreshObjectsByTimeStamp failed. AzMan_SPS_Get_ObjectSecurityOptionAzMan_SPS_Get_AzApplicationAzMan_SPS_Get_AzScopeAzMan_SPS_Get_AzTaskAzMan_SPS_Get_AzOperationAzMan_SPS_Get_AzRoleAssignmentAzMan_SPS_Get_AzApplicationGroupAzMan_SPD_AzApplicationGroupAzMan_SPD_AzApplicationAzMan_SPD_AzScopeAzMan_SPD_AzTaskAzMan_SPD_AzRoleAssignmentAzMan_SPD_User_From_RoleAzMan_SPI_AzApplicationAzMan_SPI_AzTaskAzMan_SPI_AzScopeAzMan_SPI_AzRoleAssignmentAzMan_SPI_AzApplicationGroupAzMan_SPI_Add_User_To_RoleAzMan_SPS_Enum_AzApplicationGroupAzMan_SPS_Enum_AzScopeAzMan_SPS_Enum_AzTaskAzMan_SPS_Enum_AzRoleAssignmentAzMan_SPS_Get_Role_For_ObjectAzMan_SPS_Get_DBOwnersAzMan_SPS_Enum_AzApplicationGroupUpdateTimeStampAzMan_SPS_Enum_AzRoleAssignmentUpdateTimeStampAzMan_SPS_Enum_AzTaskUpdateTimeStampAzMan_SPI_Create_SqlRole_For_ObjectAzManSproc::GetStoreProcedure receives NULL pSproc parameter. AzManSproc::Initialize receives NULL objectHandle. AzObjectRecord::NextPage fails. AzManSproc::AdvanceDataBuffer called without AzObjectRecord member. AdvanceDataBuffer fails. AzManSproc::BindParameters for action=%d and childType=%d. Stored Procedure %ws does not support parameter of ID=0x%x. Stored Procedure %ws does not support result parameter of ID=0x%x. Negative SQL return code 0x%x is interpreted made positive. AzMan_SPS_Get_AzAuthorizationStoreByNameAzMan_SPS_Get_StoreIDByNameAzMan_SPS_Enum_AzApplicationsAzMan_SPI_AzAuthorizationStoreAzMan_SPU_AzAuthorizationStoreAzMan_SPS_Enum_AzAuthorizationStoreUpdateTimeStampAzMan_SPS_Enum_AzApplicationUpdateTimeStampAzMan_SPD_AzAuthorizationStoreAzMan_SPS_Enum_AzOperationAzMan_SPI_AzOperationAzMan_SPU_AzApplicationAzMan_SPD_AzOperationAzMan_SPS_Enum_AzScopeUpdateTimeStampAzMan_SPS_Enum_AzOperationUpdateTimeStampAzMan_SPU_AzScopeAzMan_SPU_AzRoleAssignmentAzMan_SPI_AzRoleAssignment_Multi_AppMembersAzMan_SPI_AzRoleAssignment_Multi_SidMembersAzMan_SPI_AzRoleAssignment_Multi_OperationsAzMan_SPI_AzRoleAssignment_Multi_TasksAzMan_SPS_Enum_AzRoleAssignment_AppMembersAzMan_SPS_Enum_AzRoleAssignment_SIDMembersAzMan_SPS_Enum_AzRoleAssignment_OperationsAzMan_SPS_Enum_AzRoleAssignment_TasksAzMan_SPS_Get_AzApplicationGroup_LDAPQueryAzMan_SPU_AzApplicationGroupAzMan_SPI_AzApplicationGroup_Multi_AppMembersAzMan_SPI_AzApplicationGroup_Multi_AppNonMembersAzMan_SPI_AzApplicationGroup_Multi_SidMembersAzMan_SPI_AzApplicationGroup_Multi_SidNonMembersAzMan_SPIU_AzApplicationGroup_LDAPQueryAzMan_SPS_Get_AzApplicationGroup_BizruleInfoAzMan_SPIU_AzApplicationGroup_BizruleAzMan_SPS_Enum_AzApplicationGroup_AppMembersAzMan_SPS_Enum_AzApplicationGroup_AppNonMembersAzMan_SPS_Enum_AzApplicationGroup_SIDMembersAzMan_SPS_Enum_AzApplicationGroup_SIDNonMembersAzMan_SPU_AzTaskAzMan_SPS_Enum_AzTask_OperationsAzMan_SPS_Enum_AzTask_TasksAzMan_SPI_AzTask_Multi_OperationsAzMan_SPI_AzTask_Multi_TasksAzMan_SPS_Get_AzTask_BizruleInfoAzMan_SPIU_AzTask_BizruleAzMan_SPU_AzOperationAzMan_SPD_SQLRole_ForObjectAzMan_SP_Grant_PermissionAzDatabaseSproc::PrepareParameters failed. AzDatabaseSproc::Create failed. 3)6{O>`3)6{O>`s.O "PX "4T |X"" x"$@" " PP"p `"0"0X " "x "@H " " " "(" @h "l(" "$L("Pp "("%' "%l' "&&' "%X& "%,& "%% "T% " %,%T% "T$ "($H$p$ "T# "D#d## "T# "`""" "T," "|!!! "TH! "    "Td  " "T\ " " "0" 4 " " ,T "Xx " ,t`" H8" " 8 "$L t "`  "  " ( "< d "Px  "  "  "$Dl "p " "(P "Tt "   "   "4 l  "4 <  "   ",   ",   ", T  ",   ",   ",   ", t  ", <  "   "   "   "L T  "   "   "P ` @" P"0@ "  "P"T@"@"@"@"@"X@"p$8"@" " "L "l " "@"l@"@@"@"@"p,8" "@"px8" " " "lt "8 " " "L@" @"@"@"@"8"Pph" @"\@"'' "-- ",-T- "$+ - ")P, ,0"+, "\++ "$+,+ "*0")*T* "|)) ")8) "/@/0".. "$+: "L:d:: ":0"@9X99 "88 8 "X4L8 " 880"6,7T7("<26 "T6\60"660"X5p55 "44 4 "34`"23D3 "22 "<2D2 "X4`4 "'6 "l<t< "C0C "B0"$+B "A(A "CC "\HlH"FFp"FF "lD0"MM "$+hM "@LhL "LM "PR 0S "RR "PR pR "QQ " QXQ0",\T\ "[[ "4[ \["Z[h"4ZLZtZH"YY "@YXY0"XX")lWWp"VVH" V@V "UU "4ULU "TT"T@T0"SS "\\ r 5RSDSA.!O^E7[azroles.pdb@WH 3H IDB(%)H%)%H%JH=H H=4ny  8HnH H=HH _HHHH|HHvHHpHHjHHdHH^HHXH HRH9HBHCH<HH6HH0H H*HH:HH4HH.H_H(HHڢHHԢHH΢HwHȢHH¢HHHHHHHHHH£H#HHѿHHۿHHH~H7HxHAHrHKHlHqHʠH{HĠH%HH/HH9HHCHHMHHWHHaHH(H uH H(H(3H DB(H%%%H%H }kHjy%[H H( H(3H DB(%cH\/H]H^H gHPHIHJjy n HH _H(H H%DH\$Hl$Ht$WH 3HHH)iHiHiHi Hi(i0Hi8ML31CHu=uH+HtYHHHf9,GuHpHHH@HHC8HuHA@LHH#Hl$8Ht$@HH\$0H _H\$WH ڿH;tu H1u=u؁DߋH\$0H _HHXHhHpHx AVH E3HHAL91u Avyu @HtfD92jHHHfD94BuxHHH@HcHE(Hu tLHH"H0E06HHt H(LpLpLp Dp(HYHGIHu LE(H;Hu];tYHMHEH~YHGL9wtHGHHXH_HuHLw Dw(EAHH-YHGL9wtWHGHHXH_Hu< HtBHHXHGL9wtHGHHXeH_HuLw HDw(LH\$0Hl$8H|$HHt$@H A^HHXHpHxLp AWH ALA;tuDIVA;t=uIu=tE؁Ht$8H|$@Lt$HADߋH\$0H A_H\$Ht$H|$AVH@HqHH>tHLH5?Hةur=tkjBAHz0tLB(H4HB LJHHRfDt$0HD$(EfDt$ >H؅t,t=tHH\$PHt$XH|$`H@A^HlDJDB>H^ةu=t3HHXHhHp HPWATAUAVAWH@E3IHAAAMfE98LqM9>tCHMH=HAA;IIHfD9|]uHƉL$xHI@HH:HHu fD8IHD$xfD|$8HD$0D$xfD$(DL3Ht$ =H0AuHVANS A;t=uHNeu=tEHl$HHt$PAD܋H\$@H A^A\_HL$SUVWATAUAVAWHX3HLA HIUE3ɋM4H&=P9HHu H8H[H$HtH{HH$HFHfHXpf$Hn8HHHYXLHV8HHHYPLH>8HHHY`LH&8HHHYhDH 8HHHYHHH7HHHZ@H7HH$HHZ8H7H$Ll$HLd$@L|$8DH$HOfDt$0Hl$(ft$ $D2HuH$=w3HXA_A^A]A\_^][H\$Hl$Ht$WATAUAVAWH03LLA(HISE3DDD2I-="Ax{A9p Mu M`MMtMgLMI$fDHXHHv6If f wAs Ax3I$HXpHA6II $HYXHH(6II$HZPHH6II$HZ@HH5IINLADHl$(Ht$ J1Iu{=3H\$`Hl$hHt$pH0A_A^A]A\_LISIKSUVWATAUAVAWH8E3HM{ EAHH~ND9xMuLhMmMtMeMMI$fHXHf$H5If;tf;tfH$uHMIHHt L8LxLxILHKI$HX@H4Iغ3.IHLH$H$HL$(HHDHD$ p/H$HHDH$ff;wHt H~ H$Ãt ;uH+HH$HIOHw3Ht HHHHHHIGHLHIOE3HL9t u HHH3Y-LHIHH$LCHIH$HKH$H[Huԃt$uF<6$fF|6L7L?HHt,HHHuI$HX H2LIIH$=H$!@HHt|,HHHu@3H8A_A^A]A\_^][H\$Hl$Ht$WH HHQHRLG -H3uc;tZHOLǺuJ;tFHu:;t6Hu*;t&HHXH1HӅu ;t 3HgH\$0Hl$8Ht$@H _H\$WH H8Ht,H8HHHX]H8QH8HuH@HH`t,H`HHHXH` H`HuHhpHOHt L3HWHt+HHgH\$0H _HHXHhHpHx AVH Ha(HHX3}t9HuHuHvHtLvE3MtIHXH&0IHO +HF؃t u9xtHHhuNtF3}t:HuH}HHtHw3HtHHX(H/3H3HO*HH\$0Hl$8Ht$@H|$HH A^H\$Hl$Ht$WAVAWH DHE3HEtu @ LHHHfE9HHgH@HHHuXHyD<^L7zLHHH\$ y -HH:؅tHyDLǹAHHl$HHt$PH|$XH\$@H0A^@SH HYALHKAQp%Hu=t3H [ËH [H\$Hl$Ht$WAVAWH HALE3L$yHAA#HHtHH#HHϋ#Hu`#H#HAHAEDžuHuCDHIL!H\$@Hl$HHt$PH A_A^_H\$Hl$Ht$WAVAWH 3IHLLHI;DžtxtgtH< HRH,OuH;t ; wHH&HrRMHIοwuR9H< u03,< t#< t~< ~< t,Gu LHH;MLHI!H\$@Hl$HHt$PH A_A^_HHXHhHpHx AVH0IHL+u3tOHHHMH@H3HHuX@DL33ɉ|$(HD$ !us!HIfF0H΋Hl$HHt$PH|$XH\$@H0A^HHXHhHpHx AVH HHH\E3HHt_LwLwLwLw Lw(H;HL8L@DHH:H0L`LhDpHXIHuwHHXH'HVHӋuSHOD@H"H ةu=uD9ptHO!H?HHH&HH\$0Hl$8H|$HHt$@H A^3x!~! tu ø øH\$WH HyH9HHtHGHHX.H_HuHgH\$0gH _H\$E3HBWH=EDGExLIvDCEHt*L+L+IHtAft fHHuHuHAzHtfDH\$ALD$LL$ SUVWH(3HBHH=WGx5HZLL$hHHӋb#xHH;wuf,^f,^zHtf.H(_^][3H\$H|$3HBLH=WDDGILEx)IDMtf99t HHuHtML+DLExQIK CDI+t5HI+MLH+Mt ftfIHHuHu HAzf9H\$H|$AH\$3HBAI;DAWEGEx>DHt*L+L+IHtAft fHHuHuHAzHtfH\$AHHXHhHpLp AWH L;H-|Ht.H=|H-tH]@H<#@HmHH}uL5H%IHtH[@H#@HIL;rID)H5(Ht@8Lv MtIHXH"IH^@Hf H"3HHH>uH5H$HHtH[@Hf"3HHH;rH [<,H\$0Hl$8Lt$HHt$@H A_39$H\$Hl$Ht$WAVAWH MLHMu @I H= 3HHHH9_t9EuA9EuA9EuA 9E tHHHw H9u>H -H9uH_HK!HOH02LӋH ­H>HtHHH!MIHӋI>uuMMH9Hl$HHt$PH\$@H A_A^_H\$Ht$WH H=HtPHH_H ӅH_8Hz HHA/HHH?uH=άH Ϭ3H;sXH7HtCH^H+ ӅxfH^8H HHA/xBH }HH;rx.H Y6xHHtHH H\$0Ht$8H _H\$Ht$WH H=HtJBH_8HvHHE3.H_HQ3ӅHHH?uHHtH&Ӆx`H=H 3IH7Ht=H^8HHHE3q.x%H^H3ӅxH QHH;rH\$0Ht$8H _HL@HPHHSVWATAUAVAWH0H@MLL3Mu @I8AD$H|$ HHHt"x3DB(HH@~8H>HHHt$ !3L$Ll$xL|$pD$Ht$ HtoL~@HN-?DxF8DIEu!HHHMIHDt-FH>H@8~8t@~8HNoH藳AH0A_A^A]A\_^[H_H:HsH\$Ht$WH qƃuH=HHZHHH\$0Ht$8H _H\$Ht$WH Hكqu4HtPAH_=HH@8q(t @q(8H`!uH=HHZH"HH\$0Ht$8H _MLHp.)HL@HPHHSVWATAUAVAWH0H@ML3Mu @I0AD|$pH$+LHD$(HtHHHn:IH8IFHq6IFH=HHXH>HӐLL$3L$Ll$xD|$pL$Mt\IN S<DxAFHDIEu!IHHMIIDtMIHIAH0A_A^A]A\_^[LD$HT$SVWATAUAVAWH@HD$(MLH3Mu @I0AD$Ht$ ԯLHD$0HtZpH5IIN腓HB2IFHW0IF HD.IF(I~0H=HHXHHӐLLt$ 3L$L$D$Lt$ Mt`IN8:DxAF`DIEDIEu!IHHkMIIDtMIXHIIAH@A_A^A]A\_^[HL@HPHHSVWATAUAVAWH0H@ML3Mu @I0AD|$pH$hgLHD$(Ht2HHB3IH=pHHXHHӐLL$3L$Ll$xD|$pL$MtYIN9DxAF8DIEu!IHH-MIIDtMIXXH IAH0A_A^A]A\_^[LD$HT$SVWATAUAVAWH@HD$(MLH3Mu @I0AD$Ht$ ,LHD$0HtDpH1IINHZ+IFI~ H=#HHXHCHӐLLt$ 3L$L$D$Lt$ Mt`IN(X8DxAFPDIEDIEu!IHHMIIDtMIXHIAH@A_A^A]A\_^[HL@HPHHSVWATAUAVAWH0H@MLE3Mu @M0AD|$pL$P֫HHD$(Ht2HYHA0HH=ߨHHXHHӐIH$E3L$Ll$xD|$pH$HtXHN7DxF8EIEu!HHHMIHDtLIXHHzHAH0A_A^A]A\_^[LD$HT$SVWATAUAVAWH@HD$(MLHE3Mu @M0AD$Lt$ h藪HHD$0HtEDpH.HHN H|(HFH~ H=HHXHHӐIHt$ E3L$L$D$Ht$ Ht_HN(5DxFPEIEEIEu!HHHCMIHDtLIXH!HAH@A_A^A]A\_^[HHHWH0H@HXHpHH2HH0HAH.HAAH=HHXHHӐHH\$HHt$PH0_r̸AH\$Ht$H|$AVH LquXH=HHXHHMtIHHVIH=HHZHHH\$0H|$@Ht$8H A^MLHfHHHWH0H@HXHpHHj-HAH=1HHXHQHӐHNH\$HHt$PH0_#̸AH\$Ht$H|$AVH LquUH=HHXHHMtIHXHVIH=lHHZHHH\$0H|$@Ht$8H A^H\$Ht$WH 3HMu@RI89:u19zu,zu#z FuIHHXHHMLHeH2H\$0Ht$8H _H\$WH HyHHXHHHH\$0H _HH\$WH HyHHXHrHHH\$0H _HH\$Hl$Ht$WH HyIHHHH#LHHHH\$0Hl$8Ht$@H _HHHHWH0H@HXHpHHj*HAH=HHXHHӐHH\$HHt$PH0_ H\$Ht$H|$AVH LquUH=%HHXHEHMtIHXXH+VIH=HHZH HH\$0H|$@Ht$8H A^MLHbHHHWH0H@HXHpHH)HAH=aHHXHHӐHNH\$HHt$PH0_ H\$Ht$WH 3HMu@RI89:u19zu,zu#z FuIHHXH HMLHaH"H\$0Ht$8H _H\$WH HyHHXH HHH\$0H _HH\$WH HyHHXHb HHH\$0H _HH\$Hl$Ht$WH HyIHHHH LHHHH\$0Hl$8Ht$@H _HHHHWH0H@HXHpHH&HAH=HHXH HӐHH\$HHt$PH0_,H\$Ht$H|$AVH LquUH=HHXH5 HMtIHXHH VIH=ܞHHZH HH\$0H|$@Ht$8H A^MLHC_HHHWH0H@HXHpHH%HAH=QHHXHq HӐHNH\$HHt$PH0_H\$Ht$WH 3HMu@RI89:u19zu,zu#z FuIHHXH HMLH[^HH\$0Ht$8H _H\$WH HtH诠HH\$0H _H\$WH HtHoHH\$0H _#H\$WH HtHHH\$0H _H\$WH HtHߟHH\$0H _'H\$WH HtH菟HH\$0H _H\$WH HtHOHH\$0H _黀HgHGHHHgH闉HgHHgH7HH释HwHGH駛H鷘HǗHH7HHDŽHHwHWH7HH'H׃HGHwHHWHHwHgH闅HGH駉H'H7HGHH鷉H'HHH׉H采HǃHgHgHׁHHwHHHHH'HדH7HWH׉HwHHHgH野HHHHחHH7H闕HH鷈H7HH~HH7H'H7HH~Hg~HwHGHגHGHwHH闁H鷅HGH7HHH鷕H׆H7HWHHH7H駕HהHGHw}HWH鷏HHw}Hg|HǐLHXH$DHICH$H 8^ICH$ICH$IC$fD$(EKHXH ]H\$WH Iمt VHu@JH ]3HuH ]A H ]H H=]HtHHXHH3H\$0H _Hu@3LHXH$DHICH$H H]ICH$ICH$IC$fD$(EKHXH \H\$WH Iمt VHu@JH \3HuH \A H \H H=\HtHHXHH3H\$0H _LHXH$DHICH$H x\ICH$ICH$IC$fD$(EKHXH )\H\$WH Iمt VHu@JH [3HuH [AH [H H=[HtHHXHH3H\$0H _LHXH$DHICH$H [ICH$ICH$IC$fD$(EKHXH Y[H\$WH Iمt VHu@JH -[3HuH [AH [H H=[HtHHXHyH3H\$0H _H\$Hl$Ht$WH@3AHHH9AtH9A(u T$p0H{HtUHHXXHH$DL$xHD$8H$DHD$0H$HHD$(H$HHD$ H\$PHl$XHt$`H@_LHXH$DHICH$H (ZICH$ICH$IC$fD$(EKHXH\$DL$ LD$UVWATAUAVAWH 3HًH9QtH9Q(u$DL$xLD$p3L{MLc(Mt]AuWM(MuHHfA9Tmu{0x5LcIHI;nuLcFHIM3҅tGHIyIHXPH|L$DD$xHT$pIH\$`H A_A^A]A\_^]HcHAL H$H XH\$WH H9HtHHXHHH\$0H _H\$UVWAVAWH L9H:LHMuhHtO@2@uGM6H>H&MtIHHHa LIHtHHXHtHHH\$`H A_A^_^]HtHd$PHd$XIHH;LD$PH IHHHLD$XH HH|$XH\$PH;@HtHHXHHH\$PHHHxHHHL@HPHHVWAVH0H@HX IL3HuWfH|$X HHD$X3H\$`Lt$PHt$XHu.HLHH^INIVHVIvINH\$hH0A^_^HtrH\$Ht$WH HqHHtHHXHHHO(HgHt HYL "DyH譎Hg(H\$0Ht$8H _H!aI HHT$HL$SVATAUAVAWHHHD$0HLHHXH!H$HӅE3L$H$H0AM0M!u(AFHINH@HHBHHD$8Ht+LpH-HD$ L 1DúI轙E3L$L$H$L$Mu*HHHRH$HӸ(E3E9e0MAgAg HHX(HL$AHӅH$HHX`HHd$(Hd$ E3L$H$HӅx=H$H$I9t I7IICAGH$AG HHHfH$HӐH$AIE;e0Mu(HHH"H$H3HHA_A^A]A\^[HUVWAVAWHHHHD$`HXHOH3HHHytHy(t3>L=uIL|$PIcD$XA@H~Hd$0HN9+unA9$ucA9uXA 9uMf9FuBf9Fu<DHT$pH ;xHT$0HL$pHD$0HD$ DDFVD?Hd$@H|$0HHX0HLD$@HHDH\$@H\$8HtHHxHHH\$@Hd$HHH8HcLD$HHHׅxHT$HHL$8[HD$8Hd$8HFHHtHH3LdH\$HHtHHxHHאH\$8HtHHxHHH|$0HHXHHӐH\$@HtHHxHHE3HVHtH~(u H%DI1AHH3H$HĐA_A^_^]H\$WH Iمt VHu@JH P3HuH PAH PH H=PHtHHXHH3H\$0H _HHXHhHpHx ATAVAWH 3MIHLHHMu @I1A90u>A9pu8Axu.Ax Fu$HzHHHXH;HI>H9rtgH H@Ņu9uGG9Au?G9Au7G 9A u/L{It:ILKMHIAׅtuxHH9su@H{I_WH\$@Hl$HH|$XHt$PH A_A^A\H\$Hl$Ht$WH H3II@MtFIHt&A9uA9PuAxu Ax FtHY@H LHHH\$0Hl$8Ht$@H _H\$WH H=HtHXHXHHH\$03H _H(Hy(t A(tH(H\$UVWATAUAVAWH$H@HIH3H0E3EHALH\$hHm9u%g9Au`9AuY9A HD$hAL H 3EHD$ D9.HFH\$hEHEt6D9>uHx(Hx8HLMEIHDx8A'D9>uHx0Hx@H[LMEIHHxH\$h-EED$@HILDHMEt$ DcD{Ѕt$A;:A;&"A; LHMHt$A;A; "A;L[CHMHt$A;A;"A;HHD$xHUAE3HHD$ H}LmLmIDl$`Ll$xutH\$xLl$XLl$PLl$HLl$@Ll$8HD$`Ll$0HE3E33Ll$(HD$ HcHt HIHuD9l$`uHUHMH}LBHMt$A;-A;"A;LHMHRt$A;A;"A;L+BHMHt$A;A;"A;HD$pHUAE3HLl$pHD$ AHt HxH\$puoLl$XLl$PLl$HLl$@Ll$8HD$`Ll$0E3E33HLl$(HD$ 9HcHt H IHuD9l$`uHUHM4H}Ht HHt HH\$hEHtH HyHHAH0H3蠈H$H@A_A^A]A\_^]ù@w̹Wl̹a̹@V̹WK̹@̹@5̹W*̹̹@̹W ̹̹@̹W̹̹@̹W̹@SUVWAVH`HDH3H$P3IMM)M I(HT$0AI)u =u zD$0HL$0H!Ѓ.t \uHHHfuHHHDHL$0؅y{Ho?HHD$ h?fD$(HD$0H+HHAH=v@[LD$ H+Ht tyti"tdPuTHL$0H؅xHL$0HIDً@H$PH3IH`A^_^][ù@-̹W"̹H\$Ht$UAVAWH$HpH_BH3H`E3LL$8LD$0L|$0L|$8D4H\$8L|$@HHpHHHD$@E3HD$(E3HL|$ օL9|$@HL$0aLD$0AHL$PADt$ ! "PfDVH\$PHt$PfD9|$Pt2Hf/f-wH HsHHfD98uHD$PH+HA;sHH=fD|PLD$PE3HT$0HL$8HL$@DjH\$8HtHHpHHHL$0@AH`H3NL$pI[(Is0IA_A^]ù@'̹W̹觇@SH yHt H CH [HHXHhHpHx AVH =psMILu Mu @I&H QsLRs3I;H1Ht+H9^t%HA9uBA9AuBA9Au B A9A tHH~ H9u>H s@H9uH^H^HNHCLӋH rH?HtHHH(MHHӋI>u uH\$0Hl$8Ht$@H|$HH A^E3DH {AQevE3DH {AQuVH\$Ht$H|$AVH HqH>tpHyt>HtzLvMt&IHRINI^I`{LHuHfHgLw@MtIHXHIHO&H\$0Ht$8H|$@H A^úB H\$WH HHHtHzHH\$0H _̸A ̃A ̋A H\$Ht$WH0HHu@PHy@3H97u%L pDFH 3H|$ xHH H?HHZHHӋH\$@Ht$HH0_H\$WH HHHXHL8H8HHH\$0H _H̸@H\$UVWAVAWH$0H Hb<H3H E3EHH@HL$PEG(3IHD$0L|$8L|$@D|$H荆HL$PD|$x4xnD$xHtLCHL$0HH[HHuHHX(HHT$0HӋ؅x'HTnHUHDWu9HL$0&H H3H$ H A_A^_^];uzHUAA'DfEt2fDEfE;us fDMHrċfDEHt3~H;t L"HHfHHfD9f9Hf:%[HBHHf8%uH>Hff%tH HHoHH+HHULcL HM\t$ "PLnIM DLA9]~"IEHUJ tAIE;}|AIIuLME;}IEN4IM PMH]IIfC9FuIHMH9>t*HHH;uAHMkHHf9g@̹W̹̺Q̻@ HMH]HEHHMmHMH3wsH$HĠA_A^A]A\_^]HHXHhHpHx AWH MmHHuq:mHHDif@iHH:i@f6iHH0if,iHH&if"iL=h3IHHtHHcHr3Hc˸HALfH\$0Hl$8Ht$@H|$HH A_@SH H9HtH HHH;uH [@SVWATAUAVAW!އH+HD$xHk.H3H$!MLD$@LLHL$PHT$HLD$`LL$p3f\$0H$yHT$0H$Lu YI $ wH&Hs XI$H$I~D$0=@H$HHHf9AuH$Hcȅt<3HHHr$H Hv!H$ H$WH$H$"3HH$Ld$PLl$HHD$`HD$@HL$f9$tEA0IKAf\ufD98ufHH+L fHIfA9uH$Hu @DLHHfA9HuMHE IuDL$(HT$ DIE3HT$@IMH$H$H;JH$8LL$0E33H$bD$0D$8D$(HD$8AH$HHHf9xu|$8@t @Ǚ+LcDt$0H$I΅t;3HHHs WHvHH$H$H$H$Ht$@"3ۋ|$8Dt$0H$Ld$PLl$HHt$`Hu#H$HNH$H$D$EHD$0HD$@IHHl$(HD$ ؅uHd$@HL$@Ht3"H ;Lf L΋ӹ\$ \L\$PI[ Ik(Is0IA_A]A\HHXHhHpHx AVH@=IALHt0HT$xHHP H- LLZHL$0ڡH$؅H <;$H\$pHuW\IiuGHuHT$xE3H֋؅t)=s$tt NË 3H :L Lϋӹ\$ ZHl$XHt$`H|$hH\$PH@A^HHXHhHpHx AVHP<MAHHt3H$HHH^ LLYHL$HH$Hd$@؅H 9ߤH$Hu WHu I'H$LL$@E3HA֋؅t)=satt NËF?H$D$DHD$0HD$@Hd$(HHHD$ ؅uHd$@HL$@Ht3BH 9 Lf Lϋӹ\$ #YHl$hHt$pH|$xH\$`HPA^HHXHhHpHx ATAVAWHPH`ALHL3H OMXL$IGH=Iu *H$؅H J82IL$LL$@3IAH 8 uH KjWt3rtt߁NH$D$DHD$0HD$@Hd$(IHHD$ V؅uFHd$@L L΋ӹ\$ WL\$PI[ Ik(Is0I{8IA_A^A\ûWH|$@t(H /7HL$@3;H 7uH7 Lƹ^V̸E3L;a;Z~FAP;BAP;b-Pc~f~tij4AWAø,;tE~./t/01to;wYNX~tt ttp>#;Btg'~'~;A,~AHHXHpHx HHUATAUAVAWHhH}oLAMLHDϹNT3HMHEHEHE߉}D*HM LmMu @IAH 4AvMu WIu~HMw؅uoHU`؅u^HUuDEE3LcHEIHD$ ؅=s%; NËLmHMHtUHMHtFHt HHM&3H9ut HMEt H 3@=5MAEAMHUHM)EMLMOLCHHT$(Ӊ\$ VSHM-M3ۅR6t4t W fEHE9t fE3f]*L}]LEA AԉEHHv]oEt)LE33™t;OH/QDA9wEIHM׉EHtIGALEHHMAH܅tIOAHUH toHMHHHMWLEHUoHf}H]F؅HMDeo.3EH]E;7EHMOZ=UpL}]LEA AԉEHH%]oDA9v]IOAH HHHMLEHUoHf}H]t؅DeoEE;7r3۸ HuHfE4fEHEM HMlHHEf}LmHEIEHEIEHEIELMOLӋω\$ PL$I[8Is@I{HIA_A^A]A\]HHXHpWHPAHHMtPAAIHPHH )@HrHLHLHL$(\$ ?OHL$xHLLHy\$ OH\$`Ht$hHP_H\$HL$VWAVH`MAHH1tL$D$HH ;$HL$@H 2/Mu WHcu H$u @xH$؅aHT$4$؅FL$4tYtW\$0#A E3H$HL$@؉D$03f|$H$H$AE3H$HL$@؉D$0H|$HNAE3H$HL$@؉D$0HL$HH|$HH؉D$0u^H|$8LE3$I؅t)=s7tt NË3\$0H$HL$@H f-X\$ LLJӹnMH$H`A^_^H\$HL$VWATAVAWH`MAHLK/tL$D$HH Hd$83M@D$D$HL$@ H ,H$u WHu H$u @u H$tH$؅HT$0AL؅pDE3H$HL$@؉D$4ZL$0MH$$HT$8HL$HuO;uTt0~;t&t= tg؁N؅H\$8D$*t!HL$HuHL$H5؅H\$HHtHILE3AH$Aԋ؅tM=s[t;l NË9H$LE3AH$$3\$4L$HL$@HL$8Ht H *v\$ MLӹJH$H`A_A^A\_^HHXHhHpWHHHHIAHL KDfD$PH$HHD$XH$H(HHD$PHD$@HD$p)D$p$HD$8$D$0H\$(Hd$ wL$I[IkIs I_HHXHhHpWHHHHIAHE3DfD$PH$HHD$XH$H(HHD$PHD$@HD$p)D$p$HD$8$D$0HH\$(HD$ L$I[IkIs I_HHXHhHpHx AVH@IDL$pLAHLH$GH|$xHd$0Hu WH'H ](EIufDD$pHD$0E3HHD$ ؅t)=s?tt NË$HL$03һHHDӋHL$0HtJH ')tYHuLxOL΋Ӊ\$ G:HHL$x\LLHHL$(\$ GHL$xۍHl$XHt$`H|$hH\$PH@A^HHXHhHpAVH@d)MAHHt:HT$xHHDL$pH\LLD$ LKFHL$0TH &H ubHL$x͎HL$x؅uELL$xT$pE3I؅t)=s$tt NË 3H G&9LL΋ӹ\$ OFHl$XHt$`H\$PH@A^HHXHhHpWAVAWH@H`ID$ELHL3HM/EH$Hu W!/H %@AIuWD$HD$0E3HHD$ F؅t)=s-tt NË HD$03ۋHL$0Htt H %L΋HuLO\$ EL?L$(\$ DHl$hHt$pH\$`H@A_A^_HHXHhHpWH0@0IDL$`HAHLH"D$ CH e$MHuET$`LL$hE3H؅t)=s$tt NË 3H #LL͋ӹ\$ DHl$HHt$PH\$@H0_HHXHhHpWAVAWH@H`ID$ELHL3HMBH$Hu W!/H R#@9AIuWD$HD$0E3HHD$ ؅t)=s-tt NË HD$03ۋHL$0HtLt H "L΋HuLO\$ BL3L$(\$ BHl$hHt$pH\$`H@A_A^_HHXHhHpWH0@0IDL$`HAHLHD$ AH "HWuET$`LL$hE3H@؅t)=s$tt NË 3H !LL͋ӹ\$ AHl$HHt$PH\$@H0_@UATAUAVAWHHl$0HHHHH3HE@3fA9 EHUHMDH}utA(AIHUHM )E M06L}MPHUI$A9AHH;vXLEI4Dt=r%tAA;tNL}At_H;wTH "IHH;rBzt9GHH;w HH?H+H\$0Ht StckIuCG;r+H=HD3HHtHeapI3Hu 3DϋA9ADJHxH\$WHHHL$@H|LHD$`D$@L$PH\$0HD$(H )D$`L$pE33D$ HL$@X|H$HĀ_H\$WHHHL$@H |LHD$`D$@L$PH\$0HD$(H )D$`L$pE33D$ 1HL$@{H$HĀ_H\$WHHHL$@Hz{LHD$`D$@L$PH\$0HD$(H 2)D$`L$pE33D$ HL$@8{H$HĀ_H\$WHHHL$@HzLHD$`D$@L$PH\$0HD$(H )D$`L$pE33D$ HL$@zH$HĀ_HHhAAHLHPH@H )HHD$(E33D$ HhHHhAAHLHPH@H a)HHD$(E33D$ &HhHHhAAHLHPH@H 9)HHD$(E33D$ HhHHhAAHLHPH@H )HHD$(E33D$ &HhHHhAAHLHPH@H )HHD$(E33D$ HhHHhAAHLHPH@H )HHD$(E33D$ HhHHhAAHLHPH@H )HHD$(E33D$ HhHHhAAHLHPH@H Q)HHD$(E33D$ HhH8LHT$(H 1E33D$ i'H8HHXHhHp WH IIHt.HHIpHDL-HL$0tHtpH ؅ubH TE3I؅t)=s$tt NË 3H nLDˋӹ,#Ht$8H\$0H _H\$WHHHL$@H*kLHD$`D$@L$PH\$0HD$(H )D$`L$pE33D$ QHL$@jH$HĀ_H\$WHHHL$@HjLHD$`D$@L$PH\$0HD$(H B)D$`L$pE33D$ HL$@XjH$HĀ_HHhAAHLHPH@H )HHD$(E33D$ 6HhHHhAAHLHPH@H )HHD$(E33D$ HhHHhAAHLHPH@H )HHD$(E33D$ 6HhHHhAAHLHPH@H )HHD$(E33D$ HhH8LT$(H rE33D$ H8H8LHT$(H aE33D$ H8LHxAAHMKICL E3ICHIS)D$PL$`ICd$ H 3HxLHxAAHMKICL E3ICHIS)D$PL$`ICd$ H 3xHxH\$WH HHNHt*H iH3ۉH iH_PHHHHHO y(t A(dH\$0H _H\$Hl$Ht$WH HLHHHMPm؅HF3H9,t)u HH"Ѕt#хt)tt tځN>7H HhHH h3ۃt HMXcLDˋӹHl$8Ht$@H\$0H _H8HDHT$(H LHD$ ?H8H8HDHT$(H LHD$ H8H8HDHT$(H LHD$ H8H8HDHT$(H rLHD$ H8H8HDHT$(H RLHD$ ?H8H8HDHT$(H :LHD$ H8H8HDHT$(H "LHD$ H8H8HDHT$(H LHD$ H8H8HDHT$(H LHD$ !?H8H8HDHT$(H LHD$ !H8H8HDHT$(H LHD$ H8H8HDT$(H LHD$ H8H\$WH03Hډ|$HHuW?f:HQxDHD$HH gLHD$(D$ #&x L$HffH\$@H0_H\$WH HH dHKxu9HKxf觧=s tt NËH G9dH\$0H _H8HDHT$(H LHD$ 3H8H8HDT$(H LHD$ H8H8HDHT$(H jLHD$ H8HhAAHLL$0LD$@HLD$(DH 4)D$@L$PLʉD$ HhHhAAILD$0LD$@HLD$(DH )D$@L$PLʉD$ !HhH\$WHHHL$@H_HDD$@L$PHD$`H\$0H )D$`L$pHD$(LD$  HL$@_H$HĀ_H\$WHHHL$@HZ_HDD$@L$PHD$`H\$0H @)D$`L$pHD$(LD$ |HL$@_H$HĀ_H\$WHHHL$@H^HDD$@L$PHD$`H\$0H )D$`L$pHD$(LD$ HL$@^H$HĀ_H\$WHHHL$@H:^HDD$@L$PHD$`H\$0H x)D$`L$pHD$(LD$ \HL$@]H$HĀ_HhHAAHDHT$0HT$@)D$@L$PHT$(H LHD$ HhHhHAAHDHT$0HT$@)D$@L$PHT$(H LHD$ lHhHhHAAHDHT$0HT$@)D$@L$PHT$(H LHD$ HhHhHAAHDHT$0HT$@)D$@L$PHT$(H LHD$ lHhHhHAAHDHT$0HT$@)D$@L$PHT$(H SLHD$ LHhHhHAAHDHT$0HT$@)D$@L$PHT$(H LHD$ HhHhHAAHDHT$0HT$@)D$@L$PHT$(H LHD$ LHhHhHAAHDHT$0HT$@)D$@L$PHT$(H LHD$ Hh@WH`HD$@H\$pHHHL$HZHH\$0HD$HHD$(HT$ A DH SҭHL$HqZH\$pH`_LHxAAHMKMCHHMCDIC)D$PL$`ISH L D$ HxLHxAAHMKMCHHMCDIC)D$PL$`ISH L D$ 耳HxLHhAAHMCMCDHHICL )D$@L$PH aISHh@WH`HD$@H\$pHHHL$HXHH\$0HD$HHD$(HT$ A DH HL$HXH\$pH`_LHxAAHMKMCHHMCDIC)D$PL$`ISH L D$ HHxLHxAAHMKMCHHMCDIC)D$PL$`ISH pL AD$ HxLHhAAHMCMCDHHICL )D$@L$PH !IS8Hh@WH`HD$@H\$pHHHL$H#WHH\$0HD$HHD$(HT$ A DH RHL$HVH\$pH`_LHxAAHMKMCHHMCDIC)D$PL$`ISH L 1D$ 舳HxLHxAAHMKMCHHMCDIC)D$PL$`ISH 0L !D$ HxLHhAAHMCMCDHHICL )D$@L$PH ISxHh@WH`HD$@H\$pHHHL$HcUHH\$0HD$HHD$(HT$ ADH 蒨HL$H1UH\$pH`_LHxAAHMKMCHHMCDIC)D$PL$`ISH HL qD$ ȱHxLHxAAHMKMCHHMCDIC)D$PL$`ISH L aD$ @HxLHhAAHMCMCDHHICL )D$@L$PH IS踯Hh@WH`HD$@H\$pHHHL$HSHH\$0HD$HHD$(HT$ A DH sҦHL$HqSH\$pH`_LHxAAHMKMCHHMCDIC)D$PL$`ISH L D$ HxLHxAAHMKMCHHMCDIC)D$PL$`ISH L qD$ 耬HxLHhAAHMCMCDHHICL )D$@L$PH ISHhHHXHpHx AVH@H`HHH MIHtDHPDDHH؅Mu WI&H THQu HLL$XE3H,؅t.=s tt NËH|$X=H|$XDHLt$0Hd$(H #AH|$ ?؅u3Ht 3H|sH UGSL(DˋӹaHt$`H|$hH\$PH@A^HHXHhHpHx AVHP8IILHtIHHI誵HL$@IH蚵L LHHL$@$NHL$HNHd$@H7؅H$Hu WH'H _GRH蕚u HHD$@E3MHHD$ !؅t.=s tt NËH|$@=DHH|$0H|$@Hd$(H WAH|$ {؅u3Ht 3HqH QLTDˋӹHl$hHt$pH|$xH\$`HPA^HHXHhHpHx AVHPH`sIEHHt(HHH=LlHL$HuLH虠؅H$Hu WH'H PHu HLL$@EH$؅t.=s tt NËH|$@=DHH|$0H|$@Hd$(H AH|$ ؅u3Ht 3H"pH OLDˋӹHl$hHt$pH|$xH\$`HPA^LHxHAAIMCMCL ɘMCDT$0)D$PL$`ICIcH H+HxLHxHAAIMCMCE3MCDT$0)D$PL$`HICH 1ISH蹶HxH\$Ht$WH I؋DHHH NHHuWfȖuPH؅uBHE3~؅t)=s$tt NË 3H NLDˋӹ"Ht$8H\$0H _H\$WHHHL$@H*KHDD$@L$PHD$`H\$0H p)D$`L$pHD$(LD$ LHL$@JH$HĀ_H\$WHHHL$@HJHDD$@L$PHD$`H\$0H )D$`L$pHD$(LD$ 輬HL$@SJH$HĀ_HhHAAHDHT$0HT$@)D$@L$PHT$(H LHD$ ,HhHhHAAHDHT$0HT$@)D$@L$PHT$(H cLHD$ ̶HhHhHAAHDHT$0HT$@)D$@L$PHT$(H 3LHD$ ,HhHHXHhHp WH@IHHt(HHEH LHL$`F3Hl$`HtHeHtrf/HNxHD$`HD$0UDMLl$(H\$ Ht؅t5=t)=sVtt NË;4f/f%HGHLDȹWHL$`Ht3jLzDˋӹHl$XHt$hH\$PH@_HUVWAVAWHH`HEHXMHHkt'HMHLH>pHMHzEE3L}@Mu@iM>fD}E)EMMHGHH)KLM@LEHHOӋx$H]@HH8HJMHmH׋DLֹH]@HtHHxHJH׋H$H`A_A^_^]HUVWAVAWHH`HEHXMHH;t'HMH輫LH@HMHJDE3L}@Mu@iM>fD}E)EMMHGHHILM@LEHHOӋx$H]@HH8HIMH=H׋DL$ֹ`H]@HtHHxHIH׋H$H`A_A^_^]H\$Ht$WH`"HHt)HL$p蜪HL HL$p)CL$03fD$ HGD$ HHL$P)D$@HLD$@HOHLDȋЋzL\$`I[Is I_H\$Ht$WH`3HHٍNHft$@qH FHu@PH7HKx(u3HSxDHD$@H|$0HD$(H A HT$ hH FLDˋӹHt$xH\$pH`_HUVWAVAWHH`HEHXMHHkt'HMHLH^pHMHzAE3L}@Mu @M>fD}E)EMMHGH@H&GLM@LEHHOӋxKH]@HHHFH׋u$H]@HH8HFMHH׋DLֹfH]@HtHHxHFH׋H$H`A_A^_^]HUVWAVAWHH`HEHXMHHt'HM@蜧LH HM@*@E3L}HMu @M>fD}E)EMMHGH8HELMHLEHHOӋx[D}@H]HHHHEHU@H׋u1D9}@t&H]HHH8H|EMHH׋DL*ֹH]HHtHHxH4EH׋H$H`A_A^_^]HUWATAVAWHH`HEHXHp LLt'HM0:LHHM0>E3fDeLe@EEEEIGH8HDLM@LEIIOӋDe0H]@HHHPDHU0H׋udH}@HtLe@HHXH$DHD9e0t7EEEEIGHHHCLEIIOӋDLCֹH]@HtHHxHCH׋L\$`I[8IsHIA_A^A\_]H\$Ht$WH`HHH$VH 3ft$@AHu@PH7HKxu3HSxDHD$@H|$0HD$(H AHT$ FH qcALDˋӹ}Ht$xH\$pH`_HUVWAVAWHH`HEHXMHHKt'HMḤLHPHMHZ<E3L}@Mu@iM>fD}E)EMMHGHH BLM@LEHHOӋx$H]@HH8HAMHH׋DLֹpH]@HtHHxHAH׋H$H`A_A^_^]HUVWAVAWHH`HEHXMHHt'HMH蜢LH> HMH*;E3L}@Mu@iM>fD}E)EMMHGHxH@LM@LEHHOӋx$H]@HH8H@MH͙H׋DLֹ@H]@HtHHxHn@H׋H$H`A_A^_^]H\$Ht$WH`HHt)HL$p|HLHL$p :L$03fD$ HGD$ HHL$P)D$@?LD$@HOHLDȋЋZL\$`I[Is I_HhHAAHDHT$0HT$@)D$@L$PHT$(H LHD$ H8H8LDHT$(HH D$ 膥H8H8LDHT$(HH D$ 辣H8H8LDHT$(HH D$ H8H8LDHT$(HH D$ BH8H8LDHT$(HH kD$ 趥H8H8LDT$(HH LD$ ӦH8HHhAAHDLHLH@)HHD$(T$ HH HhHHhAAILL@DH@)HHD$(T$ HH 1HhH\$Ht$WH I؋DHHH ~f5HuWmH}uPH؅uBHE3Y؅t)=s$tt NË 3H 4L,DˋӹHt$8H\$0H _HVWAVH@H@HXHhIAHLt,HHJDLHHL$0/Hd$xHuWtH'HL$0诽u`fD$ LMFxILt$0I3\u4IHHb5LD$xHvFIӋuHD$xHd$xHDLֹH\$xHtHHxH 5H׋H\$`Hl$hH@A^_^H\$UVWAVAWHPMHLHHIE3H_XD$L$Ht)H )3HH G`3#D`H$HOE3E3؅uVDG`HWXH$HD$@H$L HD$8Ht$0H D$(Lt$ Ŏ؅t=ADLDˋӹH$HPA_A^_^]HWH`H@HXHpHHLH@Hd$xHL$H|/HHMHD$xHD$0HD$HHD$(H\$ ADF`HVXH 蛂H|$xtELHNM AHT$xy-Ht$xHt%HHXH2HHDˋӹH$HpA_A^_^]H\$UVWATAVHHpnHHt'HM@HLmHM@wLwE3IDe0HHI#HU0IӋ؅x{D9e0tpHGxDLHHHt$ HH |E0t8IMfDeEHMH)E"LEHI2LDˋӹaH$HpA^A\_^]HUWAVHhHHEHXHp LHHCH ε Mu @PeoHFHH"HUoHNӋ؅$}oHMHME)E'MM7HEHD$0HE'HD$(D$ /LNxDHH ؅tHMHMHMw&؅uH}wHHHQ!MH4HӋ؅uHHy}؅uHFxH@HE3ɃLDE)E'MM7LHU'HQ2H bTDLRӹnL$I[ Is8IA^_]HHXUVWAVAWHPE3HHHJAOIMDxLxWH_XHt)H ۳HH ijG`#D`H$HOE3E3x؅uVDG`HWXH$HD$@H$L 2sHD$8Hl$0H D$(Lt$ wz؅t=ADLDˋӹRH$HPA_A^_^]HWH`H@HXHpHHHIHd$xHL$H4HuWyH8HD$xHD$0HD$HHD$(H|$ ADF`HVXH QPnH|$xt&LHNM AHT$x8؅x H9u3DLӹXHL$HL\$`I[Is I_H\$Hl$Ht$ WHpHHHIHu WHH؅HH HHD$ HH$HD$(HHD$0HHD$8HHD$@HHD$HH(HD$`H03HD$ht HH)؅xH$;r3LLDˋӹ-L\$pI[Ik Is(I_H\$WH HHp2Ht@H HctH3;H tH_HHuH\HHnuHOy(t A(H\$0H _HHXHhHpHx AVH HHHڻMqHOH8u؅xWLHHt,H ܯHH ů39_xt HOPLxDˋӹHl$8Ht$@H|$HH\$0H A^H8LDHT$(HH SD$ nH8H8LDHT$(HH 3D$ 趇H8H8LDHT$(HH D$ H8H8LDHT$(HH D$ 6H8H8LDHT$(HH úD$ nH8H8LDHT$(HH D$ 趆H8H8LDHT$(HH D$ H8HHhAAHDLHLH@)HHD$(T$ HH :)xHhLHxAHAIMCMCL YaMCDT$0)D$PL$`HICIcH HxLHxHAAIMCMCE3MCDT$0)D$PL$`HICHAdH ICEHxH\$WHHHL$@HLDD$@L$PHHD$`H\$0)D$`L$pHD$(H 9D$ vHL$@_H$HĀ_H\$WHHHL$@H LDD$@L$PHHD$`H\$0)D$`L$pHD$(H D$ (vHL$@H$HĀ_H\$WHHHL$@HjLDD$@L$PHHD$`H\$0)D$`L$pHD$(H ID$ uHL$@H$HĀ_H\$WHHHL$@HLDD$@L$PHHD$`H\$0)D$`L$pHD$(H ɷD$ tHL$@H$HĀ_HHhAAHLDHPH)@HH@H jHD$(D$ LHhHHhAAHLDHPH)@HH@H 2HD$(D$ ~HhHHhAAHLDHPH)@HH@H HD$(D$ LHhHHhAAHLDHPH)@HH@H ¶HD$(D$ ~HhHHhAAHLDHPH)@HH@H HD$(D$ }HhHHhAAHLDHPH)@HH@H JHD$(D$ l}HhHHhAAHLDHPH)@HH@H HD$(D$ }HhHHhAAHLDHPH)@HH@H ʵHD$(D$ l}HhHHhAAILL@DH@)HHD$(T$ HH wHh@WH`HD$@H\$pHHHL$HH\$0HD$HHD$(HHD$ ADHH ,aHL$HH\$pH`_LHxAAHDMKICL ICHIS)D$PL$`HICH ŴD$ kHxLHxAAHDMKICL ٌICHIS)D$PL$`HICH uD$ gHxLHhAAHDICL ]ICHIS)D$@L$PHH 5ICiHh@WH`HD$@H\$pHHHL$H HH pZHu@^H'HWu=H|$0HD$HHD$(HHD$ A DHH _H DLӹHL$HI H\$pH`_HHXHhHpWHpݥIIHHt+HH RqHwLH$ H U=Hu @H'HxVu_EMDHH|$@HD$P)D$PL$`HD$8HHt$0HD$(L ĐH D$ DhH  LDˋӹL\$pI[IkIs I_HHXHhHpWHpIIHHt+HH pHLH$H  Hu @H'H8Uu_EMDHH|$@HD$P)D$PL$`HD$8HHt$0HD$(L H =D$ cH wi L2DˋӹL\$pI[IkIs I_LHhAAHDICL -ICHIS)D$@L$PHH IC$eHh@WH`HD$@H\$pHHHL$H H\$0HD$HHD$(HHD$ A DHH ;\HL$HH\$pH`_LHxAAHDMKICL 9_ICHIS)D$PL$`HICH %D$ deHxLHxAAHDMKICL )^ICHIS)D$PL$`HICH ͰD$ aHxLHhAAHDICL _ICHIS)D$@L$PHH }ICTcHhH\$Ht$WH I؋DHH_AH Ξ HuWmHQuPHfD}L}@E)EMMHGHHeLM@LEHHOӋxKH]@HHH7H׋x$H]@HH8HMHBaH׋DLֹ襻H]@HtHHxHH׋H$H`A_A^_^]HUVWAVAWHH`HEHXMHH[t'HM@hLH`HM@jE3MuHˮ=@M>fD}L}HE)EMMHGHHLMHLEHHOӋx[D}@H]HHHHHU@H׋u1D9}@t&H]HHH8HMH_H׋DLIֹ5H]HHtHHxHcH׋H$H`A_A^_^]HUWATAVAWHH`HEHXHp LLt'HM0jgLH HM0E3fDeLe@EEEEIGHHLM@LEIIOӋDe0H]@HHHHU0H׋udH}@HtLe@HHXHTHD9e0t7EEEEIGHH#LEIIOӋDLcֹ诸H]@HtHHxHH׋L\$`I[8IsHIA_A^A\_]H\$Ht$WH`3HHٍNH7ft$@職H Hu@ZH7H5Ku:DHHD$@H|$0HD$(HCxH AHD$ nSH LDˋӹ襷Ht$xH\$pH`_HUVWAVAWHH`HEHXMHH{t'HMHdLHά耶HMHE3L}@Mu@iM>fD}E)EMMHGHH9LM@LEHHOӋx$H]@HH8HMH-\H׋DLֹ蠶H]@HtHHxHH׋H$H`A_A^_^]HUVWAVAWHH`HEHXMHHKt'HMHcLH6PHMHZE3L}@Mu@iM>fD}E)EMMHGHH LM@LEHHOӋx$H]@HH8HMHZH׋DLֹpH]@HtHHxHH׋H$H`A_A^_^]H\$Ht$WH`2HHt)HL$pbHL0HL$p9L$03fD$ HGD$ HHL$P)D$@LD$@HOHLDȋЋ芴L\$`I[Is I_H\$UVWAVAWHPHHHIM至E3H_XD$L$Ht)H HH G`D`H$HO؅uVDG`HWXH$HD$@H$L UCHD$8Hl$0H D$(Lt$ Z؅t=ADL DˋӹuH$HPA_A^_^]H\$WH HH4~Ht@H H7FtH3H ΒH_HHWH?HHWHOy(t A(H\$0H _HHXHhHpHx AVH HHHM轱HOHW؅xWLHHt,H (HH 39_xt HOPLTDˋӹHl$8Ht$@H|$HH\$0H A^H8LDHT$(HH ;D$ vkH8H8LDT$(HH D$ lH8H8LDHT$(HH D$ >hH8H8LDHT$(HH D$ iH8H\$WHHHL$@HLDD$@L$PHHD$`H\$0)D$`L$pHD$(H D$ [HL$@H$HĀ_H\$WHHHL$@HZLDD$@L$PHHD$`H\$0)D$`L$pHD$(H D$ xZHL$@H$HĀ_H\$WHHHL$@HLDD$@L$PHHD$`H\$0)D$`L$pHD$(H D$ YHL$@oH$HĀ_H\$WHHHL$@HLDD$@L$PHHD$`H\$0)D$`L$pHD$(H )D$ 8YHL$@H$HĀ_H\$WHHHL$@HzLDD$@L$PHHD$`H\$0)D$`L$pHD$(H D$ XHL$@/H$HĀ_H\$WHHHL$@HLDD$@L$PHHD$`H\$0)D$`L$pHD$(H 9D$ WHL$@H$HĀ_H8LDHT$(HH D$ cH8H8LDHT$(HH D$ FeH8H8LDHT$(HH ˦D$ ~cH8H8LDHT$(HH D$ dH8H8LIxDHT$(HH D$ cH8H8LIxDHT$(HH vD$ IdH8H8LIxDHT$(HH ^D$ bH8H8LIxDHT$(HH ND$ cH8H8LIxDHT$(HH >D$ bH8H8LIxDHT$(HH .D$ IcH8HHhAAHLDHPH)@HH@H HD$(D$ _HhHHhAAHLDHPH)@HH@H ʥHD$(D$ <`HhHHhAAHLDHPH)@HH@H HD$(D$ _HhHWHH@HXHpIHHHH)D$PKL$`H|$0HD$PHD$(D$ LDHH #R_HL$pAL$I[IsI_HHhAAHLDHPH)@HH@H ҤHD$(D$  ^HhHHhAAHLDHPH)@HH@H HD$(D$ l^HhHHhAAHLDHPH)@HH@H ZHD$(D$ L]HhHHhAAHLDHPH)@HH@H "HD$(D$ ]HhHHhAAHLDHPH)@HH@H HD$(D$ \HhHHhAAHLDHPH)@HH@H HD$(D$ \HhHHhAAHLDHPH)@HH@H zHD$(D$ [HhHHhAAHLDHPH)@HH@H BHD$(D$ ,\HhH8LDHT$(HH +D$ aH8HHhAAHDLHLH@)HHD$(T$ HH OHhHHhAAILL@DH@)HHD$(T$ HH !UHhLHxAHAIMCMCL 8MCDT$0)D$PL$`HICIcH pWHxLHxHAAIMCMCE3MCDT$0)D$PL$`HICH;H *ICVHxH\$Ht$WH I؋DHHH vHuWmH6uPH=؅uBHE3ih؅t)=s$tt NË 3H LDˋӹ Ht$8H\$0H _HVWAVH@H@HXHhIAHLلt,HHZPDLHhڡHL$0Hd$xHuWpHL$0vu`fD$ LMFxILt$0IGu4IHHvLD$xHIӋuHD$xHd$xHDLֹH\$xHtHHxH H׋H\$`Hl$hH@A^_^H\$UVWAVAWHPHHHIMϠE3H_XD$L$Ht)H @(H,H )G`D`H$HO[z؅uVDG`HWXH$HD$@H$L iHD$8Hl$0H D$(Lt$ G؅t=ADLDˋӹ轠H$HPA_A^_^]H\$WH HHƟHt@H I1H3tH3= H H_HHEH],HHEHOy(t A(>H\$0H _HHXHhHpHx AVH HHHMHOHD؅xWLHHt,H pXH\H YE39_xt HOPcLDˋӹEHl$8Ht$@H|$HH\$0H A^H8LDHT$(HH {D$ UH8H8LDHT$(HH [D$ FWH8H8LDHT$(HH ;D$ ~UH8H8LDHT$(HH D$ VH8H8LDHT$(HH D$ TH8H8LDHT$(HH ˞D$ FVH8H\$WHHHL$@HLDD$@L$PHHD$`H\$0)D$`L$pHD$(H qD$ GHL$@oH$HĀ_H\$WHHHL$@HLDD$@L$PHHD$`H\$0)D$`L$pHD$(H D$ 8GHL$@H$HĀ_H\$WHHHL$@HzLDD$@L$PHHD$`H\$0)D$`L$pHD$(H aD$ FHL$@/H$HĀ_H\$WHHHL$@HLDD$@L$PHHD$`H\$0)D$`L$pHD$(H D$ EHL$@H$HĀ_H\$WHHHL$@H:LDD$@L$PHHD$`H\$0)D$`L$pHD$(H YD$ XEHL$@H$HĀ_HHhAAHLDHPH)@HH@H HD$(D$ OHhHHhAAHLDHPH)@HH@H HD$(D$ PHhHHhAAHLDHPH)@HH@H jHD$(D$ NHhHWHH@HXHpIHHHHj)D$PKL$`H|$0HD$PHD$(D$ LDHH 2OHL$p!L$I[IsI_HWHH@HXHpIHHHH)D$PKL$`H|$0HD$PHD$(D$ LDHH SMHL$pqL$I[IsI_HWHH@HXHpIHHHH )D$PKL$`H|$0HD$PHD$(D$ LDHH MHL$pL$I[IsI_HHhAAHLDHPH)@HH@H bHD$(D$ LHhHHhAAHLDHPH)@HH@H HD$(D$ LHhHHhAAHLDHPH)@HH@H ҘHD$(D$ KHhHHhAAHLDHPH)@HH@H HD$(D$ ,LHhH8LDHT$(HH cD$ QH8HHhAAHDLHLH@)HHD$(T$ HH ?HhHHhAAILL@DH@)HHD$(T$ HH җ!EHhLHxAHAIMCMCL (MCDT$0)D$PL$`HICIcH xGHxLHxHAAIMCMCE3MCDT$0)D$PL$`HICH+H *ICFHxLWHICI[HHHAxL@II{DLH 8tfHL$HD$H)D$`L$XL$pH|$0HD$`HD$(D$ LKxDHH HHL$HH$HĀ_LWHICI[HHHAxL@II{DLH +8tfHL$HD$H)D$`L$XL$pH|$0HD$`HD$(D$ LKxDHH ЕHHL$HH$HĀ_HUAVAWHhHHEHXHpHx LHH|.H qHMHMMu @I&E)E'MM7HEHD$0HE'HD$(D$ LNxDHH <HMoYdL}oIHHMHIӋu]HI9uHHFxHHHE)E'MM7ML#LHU'I;y!I6HtHHXHHI&H rpdDLb׹~HMHML$I[ Is0I{8IA_A^]H\$Hl$Ht$ WAVAWH HLH3M3Hu @H!>IFxHHHHL$HZueL|$HIHHHLIӋu4؅t=ADL(DˋӹH$HPA_A^_^]HHX HPHHUVWHPnIIt6HHIw:D$H$LH$3LD$03ҋHEHHD$8$HE3t5=rNttN1'HD$pD9@duQHL$xHHXHt8H kHL$xՃHL$pA`H kHD$pE3D@`@d$Ht fD9D9$LT$8 IHL$HH_HtWD88uNHL$L$HE3IdHH$3=HD$@HL$HLT$8E3HHD$@H;uHtDfD9t>HL$8L$L$E3HH$3WPuKHtfD9u D9$u1Ht$HD$8HHHtHE3tAzH Rj:D$0t W5H8H#HL$pLƉ\$ Q u 3$9HHH biHH Mi$HT$xHL$pLLÉD$ H ifH2H iYh$$;eEH8HHH3H$HtHL$pLƉ\$ MH$H3$9E8HE0HH ZHHr-Kat$$HL$AMt AStckIu3HZH3LHFHeapI6M.IH=RZr NHUHM )E M0itE3ҋL}MHuHMpD9Q0t HMt IH]XHt HHt HMt IAHeapMtE9uuHUHpIMMtE9t$uHUHNIL$HE@HtHpD96uH^UH%HHHHHHH h]Z_ HH HHU HMp)E M0+L@DHHT$ 1}HMpLEHXp3ɋt9=r L}Lt;t NNjտL}3MnHIE3ҋ3A9u WA_HH;v tdH;SwYH THHH;rGvZt>CHH;w HH{H+L$Mt AEStckLu?C;r)H=SH;3LHtHeapLMu Dω}TA9vhI|LHRfA94u+MDMt(HHfA9<@uHtAMDDMTfA9 u`AANHUXHM )E M0pE3ҋzH]XHH.3ɋDsEuRWLEX3In3ɋt=t;t NNjI޸HH;v HMHH;RH "RHHH;vX3ɅCHH;w HHxH+3L$LeHMtLA$StckLLeHt;AEME3LB ffA;uPBD Y3ɍC;r-H=[QH3LHtLHeapLeHMuLufBD AHIA;o3Hf f90uDHHMHUHM )E M0n3ɋxHEfHHf90uDHHMHUHM )E M0n3ɋxHEfHHf90uDHHMHUHM )E M03n3ɋxHEfHXLfA94$uHA$AL$HMHUHM )E M0m3ɋxHEfHLfA97uFAAOHMHUHM )E M0m3ɋxHEfH;AHHM@HAHH;'OH BOH<HH;U3ɅHGH;w HHvH+H$HE@H\StckHHE@Hf9H]xLMDf9L}@L$LLMDf9LeHLD$xLHHD3Hf9HT$pHDf9HHDHL$hHHD$`HEhHD$XHE`L|$PLd$HDt$@HD$8ETD$0HHD$(HHD$ 进= NNjv3DWD83HE@H<H;r.HcMHH3HE@HtHeapHHE@HtL}LeHHuhLuL}E3HEh3LO WH}HD|HEHu L밉}PEtKILHM GLE fE HUPIωE(@udEPHA;rHu3LHH fHIHH(H LHJHB L}L}LeHgL}Dϋ׹RtH0H3I]HpHxHH@A_A^A]A\]HHX D@PUVWATAUAVAWHhHADMHH}DϹsLe3DHL$8DL$@IHL$XٻDFPHM3pcH [SCH3҅u fA9tIwHHEHHEׅ~=DEgHHD$8HD$(LMoHUHt$ 膩}oLl$8D$@3yAWt8Et;t NË#HM3LD$PL$T |$PQֺ3LHtʼnU_T$8~xIōrHD$HHH3HHtHL$XLD$XHU_Ift$XH\$`3ҋ؅L$8HD$HE_HƉL$8HD$H;|Iθ LfEHEHMI$HEIL$ID$9T$@t2I3҅t fAHT$XI3ҋ؅uMt*IMHtHHf9AuHuηIŷMt IHL$XHMH QXS#tPMtKA$AL$HUHL$H)EM[L{DHHT$ pHL$H9tL<{DˋӋpH$XHA_A^A]A\_^]HHXHhVWAVHRIHHt+HHH({LoH$E3HL$03EFPA`H PHu WH'upHtfD93HEHHNxHT$0HD$0HE3LHl$ HD$8*؅t)=s%tt NË AHL$0H KO=LnzDˋӹWoL$I[ Ik(IA^_^HHXHhVWAVH+QIHHt+HHH@zL'nH$-E3HL$03EFPA^H NxHu WHtfD93HEHufHHNxHT$0HD$0HALHl$ HD$8跰؅t)=s%tt NË AHL$0gH MʸL{yDˋӹmL$I[ Ik(IA^_^H\$Ht$UWATAVAWHl$HOIMHLtFHMI%HMHHL LH%ylHMHME3HM3ED$PADe ]H L޷I HAIu HtfD9&HEIINxHUHEIMHEHELHD$ 脫؅t)=s>tt NË#D9euffD'AWHMH L DˋHuLBxO"lLxL$ lL$I[0Is8IA_A^A\_]HHXDH D@UVWATAUAVAWHhHLe3LILEHE߳HMճDFPHM3l[H WK?MnPIE_AIp3Ʌu ]MtfA9IEIDMwUoHMHEIHL$0HMLEHL$(IAHEHt$ 'E3؅t7=\AA;M NËHMٲD} LEQDuD}òHHDt$@AEt[AHMH HHHMLEHT$@HfDuH]s؅u:D$@A;rE3H׸ AfEHEHUI$HEIID$IT$H I38E_tA9E0t IMHMHtHt HұHMHMH$(HA_A^A]A\_^]ûH\$Ht$WH0bKIHHt)HL$XHuL]hHL$XfE3HHEAH|$ LuDȋЋhHt$HH\$@H0_H\$WH0HHHugHuW=H \HDHuHHuZH!3H H[JtRHtMHHL$HLuDHHT$ hHL$HS/HHu떅tLuDˋӹgH\$@H0_H8LDHT$(HH uD$ H8H8LDHT$(HH uD$ NH8H8LDHT$(HH uD$ H8H\$WHPHHL$0H LDHH yuH\$(D$ HL$0H\$`HP_H8LDHT$(HH ;uD$ ^H8H8LDHT$(HH #uD$ H8H8LDHT$(HH uD$ H8HHhAAHDLHLH@)HHD$(T$ HH tHhH8LDHT$(HH tD$ >H8H8LDHT$(HH tD$ H8H\$Hl$Ht$WH@HHHtcH ~DfHuLHNH ؅x=EMH3LL$ DB)D$ L$0"~xt HNP=H DL)tDˋӹdHl$XHt$`H\$PH@_H\$Hl$VWAVH@EILHt,HL$`IcHtLbHL$`H iCQHuPHOHw؅xAAANHLL$ AH)D$ L$0!xt HOP$H B߭LsDˋӹbHl$pH\$hH@A^_^H\$Hl$Ht$WH@HHHsaH ~BfHuLHNH؅x=EMH3LL$ DB)D$ L$0 ~xt HNP=H BLsDˋӹbHl$XHt$`H\$PH@_H8LDHT$(HH sD$ H8H8LDHT$(HH rD$ H8@VWAVH0HD$ H\$XHl$`MHHHrv`HOP=؅JLHHt,H @HXH @H:JHD$PHt H[HHu Hh؅H9yJHHD$PHtCHHi$HC@)HCH@HCHHCH@Hc3HHqH؅xHH3ۃt HOXݥDL{qӹ_H\$XHl$`H0A^_^H\$Hl$VWAVH LHHiq^Hd$HMu WHu @HL$H=Ht$HxiHHHjHMHӋyHHXhHEH3#H@HtHF@Ht$H3yHtHHXhHHLpDϋ׹^H\$@Hl$PH A^_^H\$Hl$VWAVH LHHp]Hd$HMu WHu @HL$H=Ht$HxgHHHJHMHӋyHHXhH%H#H@HtHF@Ht$H3yHtHHXhHݩHLpDϋ׹u]H\$@Hl$PH A^_^HHXHhHp WH0]?IAHHt(HH HpLV\HL$@_HMAHDHt$ ?tLpDȋй\Hl$PHt$XH\$HH0_H\$Hl$Ht$WH HHH _<G>tHo[Hu@SHHfu-HN@>؅xHNxHP~pt HNHH ;ɦ>tLyoDˋӹ[H\$0Hl$8Ht$@3H _H\$WH HHHtH=HH\$0H _HHQH\$WH H3HG0@=DًH\$0H _@SH y0HtH7c0H [@SH039Y0t H @\$ @=Dى\$ H0[LUWATAVAWIkHHEI[IsAIHLE3fDeLeL}wHtOEEEEHEICHEICL|$0HT$(D$ L DHsyTH;tKEEEEHEHD$@HEHD$8L|$0H\$(D$ L DHIx3De_H]HHHHU_HׅxD9e_t @H]AHtH HyHH@L$I[0Is@IA_A^A\_]H\$UVWATAUAVAWHH`HLHlMMTXE3I^XDmHLmHt*H 8HPH 8AF`En`Dm@H}HHHHU@HӋH}D9m@teLmHHHƤLEHHӋxINHUE3E3 3H}HHXHHLmHHXHdHLmEF`IVXHEHD$@HEHL HD$8L|$0H kD$(Ld$ =ADH}HtHHXHHLkD΋ֹWH$H`A_A^A]A\_^]H\$WH HHH%kVH{XHt)H 7HNH 6C`c`3L$kE3ɍJWH\$03H _HVWATAVAWH`H@HXHh HLHkUE3AEH 6fH7H聼D9@L$HL$HH$HD$0HD$HHD$(Hl$ EL$EF`IVXH jt7HL$HvH$HH HyHLHL$H$HH8H#L$HLH׋x3LINM AH$T0EAǃADHL$HӝHHxHHEuH@H 4DL jֹ6UL\$`I[0IkHIA_A^A\_^H\$Hl$Ht$ WATAUAVAWH0LLH jMMTH L4INHd$hHT$hߜ؅IN3i3Hd$ MtHT$hLL$ E3HTImtHT$hLL$ E3HTIOuHT$ IZHL$ ֺu+LD$hHiND]SH;qH|$ht IN)H j3L}iDˋӹSHl$pHt$xH\$`H0A_A^A]A\_H\$UVWATAUAVAWHH`HHH|iMMRE3H^XDm@LmHLmHt)H 53H!KH 3F` _Dn`YH}HHHHjLEHHH}HHHXHFHHUHNE3E3LmH-؅uRDF`HVXHEHHD$@HE@L (!HD$8Lt$0H hD$(L|$ ؅^=ADLhDˋӹtRH$H`A_A^A]A\_^]HHXHhHpWH@H!3HH!XH!X!XH!XHLA3ҹYHc~=K@HNHHt)Hd$8Hd$0AL3ҹt$(HD$ Hl$XHt$`HH\$PHH@_@SH@33HH(J)D$ L$0t HL$ HHH@[HHXHpHxLp AWH HAHHpL~)uIIVHL~ M6MtIHXHWIHNH`3A~)ItHGH@HGHgHHGH@HO13HgHgH|$@H\$0Ht$8Lt$HH A_HHHWH0H@HXHpHHHHLHAHHAAH=g/HHXHHӐHH\$HHt$PH0_0H\$Ht$H|$AVH LquXH=/HHXH%HMtIH HVIH=.HHZHHH\$0H|$@Ht$8H A^MLHHHHWH0H@HXHpHH:HHHAAH=6.HHXHVHӐHH\$HHt$PH0_陛̸AH\$Ht$H|$AVH LquXH=-HHXH՚HMtIH8HVIH=y-HHZHHH\$0H|$@Ht$8H A^MLHS鞧HHHWH0H@HXHpHHHH0HAAH=,HHXHHӐHH\$HHt$PH0_A^H\$Ht$H|$AVH LquXH=,HHXHHMtIHHVIH=I,HHZHiHH\$0H|$@Ht$8H A^MLHnHHHWH0H@HXHpHHHHHAHHAAH=+HHXH˘HӐHH\$HHt$PH0_gH\$Ht$H|$AVH LquXH=E+HHXHeHMtIHHHVIH= +HHZH)HH\$0H|$@Ht$8H A^MLH.HHHWH0H@HXHpHHHH`HAAH=v*HHXHHӐHH\$HHt$PH0_%zH\$Ht$H|$AVH LquXH=*HHXH5HMtIHhHVIH=)HHZHHH\$0H|$@Ht$8H A^MLHsHHHWH0H@HXHpHH"HHHAAH=F)HHXHfHӐHH\$HHt$PH0_aH\$Ht$H|$AVH LquXH=(HHXHHMtIHHVIH=(HHZHɕHH\$0H|$@Ht$8H A^MLH΢HHHWH0H@HXHpHHjHA H=!(HHXHAHӐHNHN(y(t A( H\$HHt$PH0_̸A H\$Ht$H|$AVH Lq uUH='HHXHHMtIHXPHVIH=L'HHZHlHH\$0H|$@Ht$8H A^MLH3nHHHWH0H@HXHpHHHA H=&HHXHHӐHN&HN(y(t A(H\$HHt$PH0_MLHCΠHHHWH0H@HXHpHHHA H=!&HHXHAHӐHNHN(y(t A( H\$HHt$PH0_MLHS.HHHWH0H@HXHpHH½HA H=%HHXHHӐHNHN(y(t A(mH\$HHt$PH0_MLHc鎟HHHWH0H@HXHpHHʼHA H=$HHXHHӐHNFHN(y(t A(͋H\$HHt$PH0_MLHsHHHWH0H@HXHpHHһHA H=A$HHXHaHӐHNHN(y(t A(-H\$HHt$PH0_MLHNHHHWH0H@HXHpHHںHA H=#HHXHHӐHNHN(y(t A(H\$HHt$PH0_MLH鮝HHHWH0H@HXHpHHHA H=#HHXH!HӐHNfHN(y(t A(H\$HHt$PH0_MLHHHHWH0H@HXHpHHHHHAHHAAH=K"HHXHkHӐHH\$HHt$PH0_醽H\$Ht$H|$AVH LquXH=!HHXHHMtIHHVIH=!HHZHɎHH\$0H|$@Ht$8H A^MLHΛHHHWH0H@HXHpHH HAH=!!HHXHAHӐHH\$HHt$PH0_PH\$Ht$H|$AVH LquUH= HHXHՍHMtIHXhHVIH=| HHZHHH\$0H|$@Ht$8H A^MLHc鞚HHHWH0H@HXHpHHjHAH=HHXHHӐHH\$HHt$PH0_ MLHH\$WH HtH"HH\$0H _H\$WH HtH"HH\$0H _H\$WH HtH?"HH\$0H _H\$WH HtH!HH\$0H _H\$WH HtH!HH\$0H _H\$WH HtH!HH\$0H _H\$WH HtH?!HH\$0H _HL$SH0HD$ HH=HK(y(t A(ĄH0[H\$WH HtH HH\$0H _H\$WH HtH HH\$0H _H\$WH HDtH? HH\$0H _H\$WH HtHHH\$0H _H\$WH HtHHH\$0H _H\$WH HdtHHH\$0H _H\$WH HtH?HH\$0H _H\$WH H$tHHH\$0H _H\$WH H$tHHH\$0H _H\$WH HtHHH\$0H _H`HL$H8HD$ 0HD$@3HtHHHHtHHHHtHf@(H8HHXHhHp HHWH z)HHHuNHVHHo H6HtHEHXHHHO%H~)HD$0HtH\$8Hl$@Ht$HH _HL$SVWATAVAWH8HD$ L3Hu @7H1AD|$xH$LH$Hp(D3HH y*AvHHIFPINXD3\*AH@O9INPIHYIHIFHtIFH=AHHXHaHӐLL$3Ld$pD|$xL$Mt>IN ~DxAFHDIEt MI HILM4$AH8A_A^A\_^[HL$SVWATAVAWH8HD$ L3Hu @0H1AD|$xH$)LH$Hp(D3HH(Av@HDIFHINPD3(AvxIH0O$8INHwIHɼIHOIFH=HHXHHӐLL$3Ld$pD|$xL$Mt>IN DxAF@DIEt MI8HILM4$AH8A_A^A\_^[HL$SVWATAVAWH8HD$ L3Hu @0H1AD|$xH$LH$Hp(D3HH'Av@HIFHINPD3l'AvxIHLO6INHIHEIHIFH=XHHXHxHӐLL$3Ld$pD|$xL$Mt>IN蕤DxAF@DIEt MIHILM4$AH8A_A^A\_^[HL$SVWATAVAWH8HD$ L3Hu @>H1AD|$xH$ALH$Hp(D3HH &AvHH\IFPINXD3%AIHO95INPIHIHIFHѳIFH=HHXHHӐLL$3Ld$pD|$xL$Mt>IN DxAFHDIEt MIHILM4$AH8A_A^A\_^[HL$SVWATAVAWH8HD$ L3Hu @0H1AD|$xH$LH$Hp(D3HH$Av@HIFHINPD3t$AvxIHO3INH IHIHCIFH=`HHXHHӐLL$3Ld$pD|$xL$Mt>IN蝡DxAF@DIEt MIhH!ILM4$AH8A_A^A\_^[HL$SVWATAVAWH8HD$ L3Hu @0H1AD|$xH$ILH$Hp(D3HH#Av@HdIFHINPD3#AvxIH3OD2INHIHIHIFH=HHXH HӐLL$3Ld$pD|$xL$Mt>IN)DxAF@DIEt MIH~ILM4$AH8A_A^A\_^[HL$SVWATAVAWH8HD$ LE3Hu @ L1AD|$xL$XHH$HtrDp 3DB(HH(!DvPHHHF@)HFH@HFHHFH@LvHܩHH=HHXH}HӐIH$E3Ld$pD|$xH$Ht:HN(֞DxFPEIEtLIXPH^}HII4$AH8A_A^A\_^[HL$SVWATAVAWH8HD$ LE3Hu @ L1AD|$xL$hHH$HtrDp 3DB(HH(_ DvPHHvHF@)HFH@HFHHFH@LvH4HH=JHHXHj|HӐIH$E3Ld$pD|$xH$Ht:HN(膝DxFPEIEtLIXPH|HII4$AH8A_A^A\_^[HL$SVWATAVAWH8HD$ LE3Hu @ L1AD|$xL$h4HH$HtrDp 3DB(HH(DvPHfH&HF@)HFH@HFHHFH@LvHHH= HHXH{HӐIH$E3Ld$pD|$xH$Ht:HN(6DxFPEIEtLIXPHzHII4$AH8A_A^A\_^[HL$SVWATAVAWH8HD$ LE3Hu @ L1AD|$xL$hHH$HtrDp 3DB(HH(DvPHƞHHF@)HFH@HFHHFH@LvHHH= HHXHyHӐIH$E3Ld$pD|$xH$Ht:HN(DxFPEIEtLIXPHnyHII4$AH8A_A^A\_^[HL$SVWATAVAWH8HD$ LE3Hu @ L1AD|$xL$hHH$HtrDp 3DB(HH(oDvPH&HHF@)HFH@HFHHFH@LvHHHXHrHL!6E3HnHHD$ Hu  L&HT$ HL9 t IHeHmLt$0D|$ Ht$(H>HHZHqHH&ImA+Ht!H:HtHHXHqHH&WHL$XH3oH$H`A_A^A\_^HVWATAUAWHH@HXHH3H$IALHL$@HT$XHH H:t ME3Ll$(u_LIIL>;S H$H$?mLHD$(Hu%I?HHXHpHM!/E3Dd$ u`Mu 3H\$ !IlHHD$ Hu ?I?HT$ HL$@H98t HH dHkIH\$xHtHHxH4pHאHu 3H|$P!HglHHD$PHu 輟HuE3HlHlLLd$hHtMu 聟H\$pHtHHpHoH֐Mu3IkIkHD$0MtHu *H\$8HtHHpHSoH֐LD$0H$HL$@D$@HD$8HtHHpHoHL$8HL$0jHtHHpHnHI}jHsjHtHHxHnH׀|$HuH8!ADd$ Ll$(Dd$ L|$XI?HHZHqnHI'IiA+Ht!H:HtHHXH=nHI'WH$H3 H$HİA_A]A\_^HL$SVWATAVAWH8HD$ L3Hu @H1AD|$xH$HQLH$HtCp3DB(HH-Av8Iv@H(IH=FHHXHfmHӐLL$3Ld$pD|$xL$Mt;IN胎DxAF8DIEtMIXhH mILM4$AH8A_A^A\_^[HL$SVWATAVAWH8HD$ L3Hu @H1AD|$xH$H1LH$HtCp3DB(HH Av8Iv@HIH=&HHXHFlHӐLL$3Ld$pD|$xL$Mt;INcDxAF8DIEtMIXhHkILM4$AH8A_A^A\_^[H\$Ht$WH HqHHtHHXHkHHH\$0Ht$8H _H%g@UVWH@HD$ H\$hHHHYH{&E3AHHOlguHHH?)tH;]tE3AHSH:gHd$`HHu3 gHgHD$(H>tHu yHd$0LL$(LHT$pH]HHt$0HtHHxHjHHL$(fHC H\$hH@_^]H\$Hl$Ht$ WAVAWH0HyMHH_HA-HSIE3AHMfAEtHH[{)tHEtqHEH;8u$AHT$PLHL|$ FHHm)tH_8Hx)uHH@x)t HG H;u HH@x)t{)HDIHKE3AeuEyHFH\$XHl$`HHt$hH0A_A^_HHHWH0H@HXHpHa(D3H FHHHFPHNXD3 Hs#OHNPHHHHHHHHHFHHFH=CHHXHchHӐHH\$HHt$PH0_LI[IkIs MCWATAVH@E3MIHHL9auMKLIAHIE3AH;u*HPIdLL$pALt$ HHH;u&HIIHIcLME3MIHPIcHD$pD8`)tHXAHD8c)uHCHH@D8`)t#HH H;u HHID8a)tD8`)HHDIHKE3ARcu*HCLt$ HHD8`)t LE3LL$pHL$pIE3HIA cLL$pH}IE8a)tE3E333Ld$ k LL$p4IAD8`)uHHD8`)tIA H;Xu HH@D8`)tHH;tHSIE3Abu&LL$pIALt$ HHD8`)-LHT$0MHHHH\$`Hl$hHHt$xH@A^A\_HVWAVHHD$0HXHH3H$IALHH$HH9Kr3H/HL$8ZHT$8HL$`XHwHL$`c HSHD$ LLdLHCHCE3H;uLHHCLHC$@tLHCH;8uLLOHCH;xuLHIMAID8X(ILPI H;IJD8Y(H;PuMHHHHHBHD8X)uHPLBIHAHCH;PuHHIH;uHHHHII@(IHHDY(IHHLI@HI@D8X)uHHHAI@HCH;HuL@HAH;HuL@LIHD8Y(u@(A(IHHDY(IHPH;uOHHHAHHAD8X)uHPLBIHAHCH;PuHHIH;PuHHHHQII@(IHHDY(IHHLAIHAID8X)uHHHAI@HCH;HuL@HAH;uLL@ILALBID8Y(;HKHQB(MIH$H3H$HİA^_^HHHAVH@H@HXHpHx IIL0XHHD$PHD$(HtxL0HpHXHXH\$0Ht$pHHu3^H^HH>tHu HvHsHtHHXH:bHӐfG(HH\$XHt$`H|$hH@A^HHmHWeH'THW8H'7Hw)H HHHHHWHgH׮H׭HwH~HuHdHgHHHH~HnHTHG3HW&H7HHgH}HwmH6H3HHw|HjH'bHRHH6HG7Hw2HWHGHHWHGHHlH'CH4H7%H'HHH'H駬H鷫HuH'yHGhHLH7DH2H1H7/HHw HHHWHGHH7H7iHgIH.H"HgHHHgH駧H7HrHW_H'OHGAH2H1H,HHHHHHgHHGHWHWH野H7CH'QH HHwHH'HWuH_HGH>Hw-HHHGH'HgtHsHgcHGH-H"HHWH鷫H鷨HfH'BH>HH1H,H1HHWHHHwH'HשHmHGeH_HAH'GH.HHWHHHHHH闥HvHqHfHaHGaHBHBH>H7DHW,Hg+H(HG)H(HwHHHH'HHHHH闤HXHw'HG,H*H(HH7HH駤HHnH7kH']H';Hg&H'HHWHHHHHHH׹H闸H鷤HH'ZHw;HHHwHHWHHHgHWHhHZHEH&H'HǻH',H''HwHHiHHH*H',HHHH闟HjHnHBHwH3H\$0H _LHXH$DHICH$H (ICH$ICH$IC$fD$(EK6@HXH ٞ,AH\$WH Iمt VHu@JH 3HuH A#GH H H=HtHHXH<H3H\$0H _LHXH$DHICH$H XICH$ICH$IC$fD$(EK&?HXH @H\$WH Iمt VHu@JH ݝ3HuH AFH H H=HtHHXH;H3H\$0H _LHXH$DHICH$H ICH$ICH$IC$fD$(EK>HXH 9 ?H\$WH Iمt VHu@JH 3HuH AEH H H=HtHHXH:H3H\$0H _LHXH$DHICH$H ICH$ICH$IC$fD$(EK=HXH i=H\$WH Iمt VHu@JH =3HuH ACH H H=HtHHXH9H3H\$0H _LHXH$DHICH$H ICH$ICH$IC$fD$(EK;HXH H H H=HtHHXHy4H3H\$0H _LHXH$DHICH$H ؗICH$ICH$IC$fD$(EK6HXH 7H\$WH Iمt VHu@JH ]3HuH 7A=H @H H=6HtHHXHi3H3H\$0H _LHXH$DHICH$H ICH$ICH$IC$fD$(EK5HXH 6H\$WH Iمt VHu@JH 3HuH gAA;Bً@H\$PHl$XHt$`H|$hH0A_A^A\H\$Ht$WH03ۋHttHGHPH9Wt_HO8Y)tE3E333H\$ :HA8X)u$HHH 8Y)tHGHAH9Gu HOHI8Y)tHOuHt$HH\$@H0_HAHHu@H@H3HJHL$SVWATAVAWH8HD$ L3Hu @H1AD|$xH$XyLH$HtGHpHpp 3DB(HH(MAvPHLNIH=jHHXH,HӐLL$3Ld$pD|$xL$Mt;IN(MDxAFPDIEtMIX8H.,ILM4$AH8A_A^A\_^[HHXHhHp WH HH@Ht~H"HHxkHt$8HUH}HNH9tZH~HGL:HHLHNHEHHF8yHHX8Hh+HH\$0Hl$@Ht$HH _H\$WH HttH?HH\$0H _H\$WH HH(y(t A($HHtHHXH*HH\$0H _HHHWH0H@HXHpHH:LHA H=QHHXHq*HӐHN(y(t A(G$H~HtHHXH>*HH\$HHt$PH0_H\$Ht$H|$ AVH LHHu @H"HL$8H|$8xDHOH9tHxHCHGH@HHOHHH)H:MHӋtHtHHX8H)HӋH\$0Ht$@H|$HH A^Hu@ËA3H\$Ht$WH@HZHHtHHxH )H׸ H\$(fD$ HtHHxH(HHT$ H$HL$ $HtH HyH(HH\$PHt$XH@_HHXHhHpHx AVH0MHMu @} WHAϽ@HH;t]~Y{)tHd$ E3E3334HCx)uHHx)tHC H;Xu HH@x)tHH;^uH;^tHSIH\$@Hl$HHt$PH|$XH0A^MLH4HL$SVWATAVAWH8HD$ L3Hu @H1AD|$xH$XɼLH$HtGHpHpp 3DB(HH(AvPHHIH=HHXH&HӐLL$3Ld$pD|$xL$Mt;IN(GDxAFPDIEtMIX8H~&ILM4$AH8A_A^A\_^[HHXHhHp WH HH@Ht~H"HHxkHt$8HUH}HNH9tH~HGLW4HHLHNHEHHF3yHHX8H%HH\$0Hl$@Ht$HH _H\$WH H$tH菻HH\$0H _HHHWH0H@HXHpHHGHA H=HHXH%HӐHN(y(t A(H~HtHHXH$HH\$HHt$PH0_H\$Ht$H|$ AVH LHHu @H"HL$8H|$8xDHOH9tHHCHGH@HHOHHHJ$H35MHӋtHtHHX8H $HӋH\$0Ht$@H|$HH A^MLH31HL$SVWATAVAWH8HD$ L3Hu @H1AD|$xH$X)LH$HtGHpHpp 3DB(HH(AvPH|EIH=HHXH:#HӐLL$3Ld$pD|$xL$Mt;IN(WDDxAFPDIEtMIX8H"ILM4$AH8A_A^A\_^[HHXHhHp WH HH@Ht~H"HHxkHt$8HUH}HNH9t H~HGL0HH}LHNHEHHFn/yHHX8H"HH\$0Hl$@Ht$HH _H\$WH H$tHHH\$0H _HHHWH0H@HXHpHHCHA H=QHHXHq!HӐHN(y(t A(GH~HtHHXH>!HH\$HHt$PH0_H\$Ht$H|$ AVH LHHu @H"HL$8H|$8xDHOH9tHxHCHGH@HHOHHH H1MHӋtHtHHX8H HӋH\$0Ht$@H|$HH A^MLH{~-HL$SVWATAVAWH8HD$ L3Hu @H1AD|$xH$X艵LH$HtGHpHpp 3DB(HH(]AvPHBIH=zHHXHHӐLL$3Ld$pD|$xL$Mt;IN(@DxAFPDIEtMIX8H>ILM4$AH8A_A^A\_^[HHXHhHp WH HH@Ht~H"HHxkHt$8HUH}HNH9tjH~HGL-HH%zLHNHEHHF+yHHX8HxHH\$0Hl$@Ht$HH _H\$WH H$tHOHH\$0H _HHHWH0H@HXHpHHZ@HA H=HHXHHӐHN(y(t A(H~HtHHXHHH\$HHt$PH0_H\$Ht$H|$ AVH LHHu @H"HL$8H|$8xDHOH9tHHCHGH@HHOHHH H-MHӋtHtHHX8HHӋH\$0Ht$@H|$HH A^MLHSx)HL$SVWATAVAWH8HD$ L3Hu @H1AD|$xH$XLH$HtGHpHpp 3DB(HH(轿AvPH>IH=ڮHHXHHӐLL$3Ld$pD|$xL$Mt;IN(=DxAFPDIEtMIX8HILM4$AH8A_A^A\_^[HHXHhHp WH HH@Ht~H"HHxkHt$8HUH}HNH9tH~HGLw)HHvLHNHEHHF.(yHHX8HHH\$0Hl$@Ht$HH _H\$WH H$tH诰HH\$0H _HHHWH0H@HXHpHH&HL$SVWATAVAWH8HD$ L3Hu @H1AD|$xH$XILH$HtGHpHpp 3DB(HH(AvPH\;IH=:HHXHZHӐLL$3Ld$pD|$xL$Mt;IN(w9DxAFPDIEtMIX8HILM4$AH8A_A^A\_^[HHXHhHp WH HH@Ht~H"HHxkHt$8HUH}HNH9t* H~HGL%HHEsLHNHEHHF$yHHX8H8HH\$0Hl$@Ht$HH _H\$WH H$tHHH\$0H _HHHWH0H@HXHpHH9HA H=qHHXHHӐHN(y(t A(gH~HtHHXH^HH\$HHt$PH0_H\$Ht$H|$ AVH LHHu @H"HL$8H|$8xDHOH9tH HCHGH@HHOHHHH&MHӋtHtHHX8HHӋH\$0Ht$@H|$HH A^MLHsq"HL$SVWATAVAWH8HD$ L3Hu @H1AD|$xH$X詪LH$HtGHpHpp 3DB(HH(}AvPH7IH=HHXHHӐLL$3Ld$pD|$xL$Mt;IN(5DxAFPDIEtMIX8H^ILM4$AH8A_A^A\_^[HHXHhHp WH HH@Ht~H"HHxkHt$8HUH}HNH9tH~HGL7"HHoLHNHEHHF yHHX8HHH\$0Hl$@Ht$HH _H\$WH H$tHoHH\$0H _HHHWH0H@HXHpHH:6HA H=ѥHHXHHӐHN(y(t A( H~HtHHXHHH\$HHt$PH0_H\$Ht$H|$ AVH LHHu @H"HL$8H|$8xDHOH9tHHCHGH@HHOHHH*H#MHӋtHtHHX8HHӋH\$0Ht$@H|$HH A^MLHnHL$SVWATAVAWH8HD$ L3Hu @H1AD|$xH$X LH$HtGHpHpp 3DB(HH(ݴAvPH4IH=HHXHHӐLL$3Ld$pD|$xL$Mt;IN(72DxAFPDIEtMIX8HILM4$AH8A_A^A\_^[HHXHhHp WH HH@Ht~H"HHxkHt$8HUH}HNH9tH~HGLHHelLHNHEHHFNyHHX8HHH\$0Hl$@Ht$HH _H\$WH H$tHϥHH\$0H _HHHWH0H@HXHpHH2HA H=1HHXHQHӐHN(y(t A(' H~HtHHXHHH\$HHt$PH0_H\$Ht$H|$ AVH LHHu @H"HL$8H|$8xDHOH9tHXHCHGH@HHOHHHHsMHӋtHtHHX8H`HӋH\$0Ht$@H|$HH A^H\$WH H4HHHy8r HI 'Hc0HC8HC  @tHHH\$0H _@SH H3HHHy8r HI ţHc0HC8HC H [H%e HL$WH0HD$ H\$HHHH H@3HHOHA HaAHSIE3(H0HHH\$HH0_HxH%fH3HD$`HHL$ dHSHL$ ͱHL$WH0HD$ H\$HHHl H2HHOHA HaAIE3HuH0HHH\$HH0_H\$Ht$H|$AVH HHHu3=HtHHXH HL6MtIHXH IH>HH\$0Ht$8H|$@H A^H\$Hl$Ht$WH Hy IHHHYrHHH;r8Hy rH HHOH;v H rHH+MHLHiuIv H9w sLGHHHuH!wH rHHHt0HW HrH HLL H HwrH3HH\$0Hl$8Ht$@H _@SH 3HA HHAAIIB8uHH [HL$WH0HD$ H\$HHHdH\0HHOHA HaAHSIE3DH\0HHH\$HH0_Hy8rHA HA HxH%cH3HD$`HHL$ HAQHL$ ͮH\$Hl$Ht$WH IHHH9Qs謠LOL+L;IBHtTHW H_HrH HHrHHL)H (L+LH+"HGH+H HGrHH\$0Hl$8Ht$@HH _HT$SH HT$8HH/HHH [H.HH%H\$WH H.HHtH贞HH\$0H _HHHHL$ H0PHL$ \@SH H5HF.HHH [HL@HPHHSVWAVHhH@IHHHII;vH+LA IHHHHH;s L+M;wJHKHt,3HHHs3HL$(H`OHL$(茬)L H$H$H$L$Ht!H rLGLGHSLIVH r HONHGL0H_ HwHIC0HhA^_^[HHXHhHpHx AVH MIHHL9BsܝH~H+L;IBH;u"H/IHL3HHv@E3H9{ sLCHHLHuH{ LsrHCHCD0HtFH~ rHFHFHS HsHrHHL(L8H{ H{rH6D4>Hl$8Ht$@H|$HHH\$0H A^H\$Ht$WH IHلt+H9Q r HH1Mt MLHěHt$8HC H{D;H\$0H _@SH Hy Hr HI胛HcHC CH [HL$WH0HD$ H\$HHHH+HHOHA HaAHSIE3HH\$HH0_HxH]H3HD$`HHL$ HMHL$ 蝩HL$WH0HD$ H\$HHH<H\*HHOHA HaAIE3HEH]*HHH\$HH0_H%%H\$E3HBLH=WIDGLEx(E3IMtD8 tHHuHtML+DE3ExOIK AI+t1HI+MLH+Mt t IHHuHu HAzH\$ALD$LL$ SVWH 3HBHH=WGx5HZLL$XHH3xHH;wu@<3@<3zHtH _^[H\$WH a3HDB(H^H1G8觵Hg`HgHHg@HgPHgXH\$0HH _HHHWH0H@HXHpHHq`HtHHXHDHHg`H%HOy(t A(H\$HHt$PH0_H\$WH DHHɴHCPHtH{Ht H{Xt83H\$0H _H\$Ht$WH03HHHu@|LH;UH\$ H\$(H9_PtGH9_HtAH9_Xt;HL$ AAHtHGH(L$ @@H@D$ HL$ 跤H\$@Ht$HH0_H\$WH HHHu@[H"HyPtKLAHMtBHyXt;M@@H耳HCHHH@HtHHu 3H\$0H _H\$Ht$WH IHHHMIH>LǹH{PtvHCHHtmH{XtfHHHtLAHnȅyBHCHHHtLAHmnȅyHLǹ臲HCXW @H\$0Ht$8H _H\$Hl$Ht$WH HHHII#HD$PH^@H\$0HnPHl$8HFXH~HHt$@H _H\$WH d$8LL$8E33ҋKuE)zu:T$83HHt&LL$8L3ҋu H3H3H\$0H _@UHH0He(HE(HAE3HHD$ (%u_!E!EHM(HE LMHHD$(HEE3HD$ E u}uE ÓEȉ HM(H0]HHXHpHxUHHHVH3HHH >D3;L4HH3gu=DDžuuSLHDȺxPLHH"x6E3H|$0HAQEAD$(D$ HrHrHH;LL$PDCHT$TH@|$pfD$TD$VH|$ LHL$pH x-HD$pLIB8<uH CrLL$PHT$pH|$ fHD3H|$8HD$pH|$0LD3ҹt$(HD$ ~=HL$p\Ht(LIB8|uH qLL$PHPH|$ H qLL$PHAH|$ LHL$pHx-HD$pLIB8<uH PqLL$PHT$pH|$ sLD$PHt$P0"H|$8HD$pH|$0LD3ҹt$(HD$ ~-HD$pLIB8<uH pLL$PHT$pH|$ H pLL$PHAH|$ HL$XLHL$pH!x-HD$pLIB8<uH YpLL$PHT$pH|$ |L$bDD$`D$dDT$XD\$^DL$ZD$@L$8DD$0DT$(LyHL$pHD\$ x-HD$pH@8<uH oLL$PHT$pLH|$ HH3L$I[IsI{ I]@SVAVH3DBH  H HH AD5AHE3E33H [ HeH %`HIHeH %`yuHtH@`H+BhH=0rHu H%6 HBhH)HuHHJhHAHHHBH (Hy{H HHDHHH ։HHDHHd$@Hd$0d$H3DB(HL$PH$LD$@A3HL$@A;wD5ҎLL$0EHT$H3xYL$HL$0lx=H$u>H$HXHQLH7y +D5HL$0HtH$Htt3H 3xD5Ӿ@6HӋ%H^HB=Όt'D3H ΊwÊH H5HKH9H/AHHHg!Hd$83ۉ$HD$8HD$ AE3HHu`!$H$HD$(H$HD$ L$E3H,HL$8u9$u9$u D9$ADHL$8HtmHH>HH !؅u3ۅuHĀA^^[H(H ـHt^H%ƀH ߀HtDH%̀H Ht*H%H CHtH%0H YHtH%F=t!H H Qs%l= tH ^%H H H H ajHtH MjH(@SH HHHtaHHHtGHHHt-HHHtHHHtHHHtHHHtHH [HHXHpHx UATAUAVAWHhHH~LH3HE'E33=/EAHLeLeLeLeLeLeLeLeLeHELeHELLLLLLL2LMAT$(ED$HuHMƐ`HULMLEtHM#&AAfAEiHEfA3fA#HD$ f9DlAEAHEf3HD$ fA#f;D8AEMAHEfE3HD$ fAfA:EHEAEMfEA3fAHD$ fA<t`HEEMAD3HD$ t@HEEMAD3HD$ t HEEMAE3HD$ luPHEHHEHHEHHEHHEHHEHHEHAątiHMHtHMHtHMHtHMHtHMHtHMHtHMHtHULEE33轎HMNjHtHM'H3L$I[8Is@I{HIA_A^A]A\]H\$Ht$WH H@HHHLºLLNLƺHuE3HNAQLbHExLH(Ɔ HPH@Hx&H8ƆxHH@Hy -HƆH@HhHHu n dž,3ۅtHHHt$8H\$0H _H\$Hl$VWAVH E3HL9tYH ؁*HH H HHX HoHHLHHD8 t]HHH(&H HH9Y^H9HTHHX~H9uHXHD D8xtHPDxHHtHLD8tHHDHHHCHhHD8u1u HWHH?HiHD8w1tHCH@HCLsHHCH@HHt0LCHT$@HMM~HKHLsLs LHHHt `LH\$HHl$PH A^_^ù)H\$WH A3IdtutYtMtAt5t#tH K^W`,H芒#|ɒHHuX$豒HHDًH\$0H _H\$UVWAVAWH AMHكd t HH _AD<\u Hn"D$u H|H2HT$`IIЅL$`~H AD<u H"D$u HMH讝HT$`IŌЅ%D$`H WAD<Tu Hf"D$u HtH*HT$`IAЅD$`u&u"yHDWs|LH AD<u H"D$u HƷH|HT$`I蓋ЅL$`u"u~ A=wDHBH ADbL\$pI[0Is@I{HIA_A^A]A\]H\$Ht$WH HXHt3=[~ [u H [ݻHX)[HXHPhH@hH HtWHHHtz"HHHtaHN(HtZHf(Hf0Hf8HFHHHFH@HfH;NtHZHH;^uHNZHfHyZHHH8H\$0Ht$8H _H\$WH 3AII- tFt)tHKvWA@j0HPjHHuXH@jHDHH\$0H _@USVWATAVAWHHPHH3HEHeeeAIDH- tHCvWH AD4uEDAu H"D$u HH=uEu DuAHMADH bIP(MPED(Eu D $D ( H 8uDHEAu H<"$u HKAHhuEu DuAAHMAEH4autEu3Du.HMHUFtLEHAL$Dt<@(M@EЅu DuEu $ (3HMeHMH3 ^HPA_A^A\_^[]HHLL$0AL@D$(HT$ 3DJHHH\$WH@IAL@H\$0D$(HT$ 3DJupH H @88uRH S'H H8u u H 4H StH 3 H# Hƀ9H\$PH@_HHXHhVWAVH0H`H```@2EHH@8u 2HL$ E3A1_tHLDr@H R@7H@LL$PHT$ E3H\$PtHHHXHZHH& J0JHqhH9?uHPH\$0Ht$8H _H%UHHXHhHp AVH H`IMLA!IAHHu3HAH@u  HT$@IDy*[HۈDȋ@g?HL$@MLHGDy#ZHʈDȋgA&3H|$@t HT$@HHl$8Ht$HH\$0H A^H\$Ht$WH Hd$8H333Dv$=t"fZH_ODȋ~fVHT$8HDy0ZHDȋFf3HT$8HtHt Ht$@H\$0H _@SH HHeHH [ HDH L@HPHHUSVWATAUAVAWHHl$PH H3HEPILLE3LuHeEfEg|t+H8HHXHH]HMoHt IGXH0xI] HH;9Gu7HCH;4Gu*HIMyH`DAdIGXHD$ L pE3Hy HUIGXH0HH8HHMG`H?H׋E5DLGH`zdALLLuyDHHNI`u @ IGhHD$ L E3H y H;IwXHHxXHHIWpH׋E5DL;HcALLLuyDH4EOpMHQcE g|IXHHXHHnIHӋE5DL1H"bALLLuyDH̆IuPHE3LuE9utnAUH;B:waH a:HHH;rN@t1AEHH;w HH?aH+Lt$PLuMtAStckILuMuVAEH;r3H=9HHlЋLHEHtHeapILuMuHEEIUI`AAGtHI`HHX(HHHEHD$HHd$@D$8Dd$0Hd$(Hd$ E3E3IHӋE.DLH`ALLuy9DHwAs`DDHUAGtIHXXHH?I3Mt#A~HeapuHP8HHINӋHMPH3IHehA_A^A]A\_^[]LIKSVWATAUAVAWHMIHLHALML$E3D|$ED|$DHL$PE{HÄ}_I$HXXHHoIE|$xI|$It$ HL$hFH$8H$HD$ MMD$ IT$IL$hĬIL$ HL9y0HT$`HI է؉D$@D$EIL$ HT$XHI(؉D$@D$DED|$HID$ HH D;q AH<@HD$`HfD9:AE3HL$h؉D$@AE3HD$XHH$\؉D$@aIt$XH$翃HX@HHDHT$pHӋ؉D$@9؉D$@DL|H]E3L$L$Dt$HyDHe]HL$hH$ADt$H2؉D$@DHƂ`]E3L$L$wID$ Ht!HHHtIT$X &؉D$@LAd$|D|$0D|$(AD$ MLIHL$PBu`@=r 3&t1t&= t؁NI|$XHHX(HHpкHӋ؉D$@3؉D$@DH́>\L$AL$|E3L$yHƁD \:$t \$@HсA\$xt\$@HA߉\$@HT$PHt/IIuDHՁ[IL$ HtkL9y0teD8|$Et HI bD8|$DtIL$ HI(L#\$@DHF[E3L$HL$h<H$.L|$ E3E33IL$h跨HĠA_A^A]A\_^[H\$WHpHH8ZHHXXHƧH3DB@HL$0OKfD$0O|HXHHXpHE3LD$0HӋ؉D$ DLH:}TZH$Hp_HHXHpHx HHAVH0H3pH ZLw`Mt@IHXHI$DLH|YH|$@t$ Hg`LwXMt\IHX(HIӋD$ "DLvH_|yYH|$@yDHr\YHgHg H\$HHt$PH|$XH0A^H\$ HL$VWAVH0Ld$XHO YI~XHHX0HHHT$XHӋD$ "DL/H{XLt$PyH.DǹX|$Xd$`I~XHHXXHHHT$`HӋD$ "DL{H0{JXLt$Py H{놋D$`A9FptzI~XHHX(HH3HӋD$ "DL~HzWLt$Py H$d$XDL$`ENpMHW|$XuYI~XHHXHHIHӋD$ "DL^{HOziWLt$Py H]{IvXHH8HHDMF`HϲH׋D$ "DLyHy WLt$Py HyBI~`u@3IHXXHHףIӋH\$hH0A^_^H\$HL$VWAVH0L3t$XH~VI~XHHXXHwHT$XHӋ؉D$ $DLyH*yDV3Lt$PyDHy%V3L$XA9Np@ƋH\$`H0A^_^H\$Ht$HL$WH0HH}UH~hHtHHXHHHHfhH~`Ht?HHXHHH DLM|HVxpUHt$@Hf`H~XHHHX(HHL3HӋ؉D$ "DL|HxUHt$@yDH|TH~XHHX8HHHӋ؉D$ "DL}HwTHt$@yDH|TH~XHHXHHH DL|HJwdTHt$@HfXHHXHHMHH\$HHt$PH0_H\$WH HHH| THH(HH{H9xt)HXHH\$0H _@SH HH||SHC0H(H H9YuH9uHHAH[HH [ù)H\$WH HAHٹHHHU|TSHCHH@H H9Yu$H9uHHAH[HHH\$0H _ù)H\$Hl$Ht$WH HHH |IRHH;.uHCH;)u H| HH;,u7HCH;'u*H{RH>HHXHH3/H{iRHӋMH{QRH&@H\$0Hl$8Ht$@H _@SH YDCH{RCH [H\$WH HYHz{DQu(Ht#HHsHQH4H\$0H _H(H={gQ@H(LL$ HL$SVWATAUAVAWHEHL3t$ DD@t$$LHzQHL$`HL$8AtH$HuW|$ :H0AtH9$tH$H0HH uכu MwhPIG HQH9p0u H9pA$HHHtHLL$8L$HdD$ ޅÉ\$Pt(f|$8 tW|$ Lt$@Lt$0IO H9q0fD$`H|$hHT$XHI ɘD$ HADl$$މ\$,IG HH ;YH @HD$XHf92ttAAHL$`јuQIO Q8ӉT$(LD$8HT$(HI0D$ f|$8 tW|$ Lt$@Lt$0cMu+|$ t$ At&IHHHL$HLIAt+IHX HH؛L$E33IӋD$ )D$ DHxN3L$Dl$$IO Ht0H9q0t*Et HI ]|$ DHmxWNHL$`WHL$8LHĀA_A^A]A\_^[H(HExN@H(H(H=xM3H(H\$WH ڿH(xMtAt4t'tt u;H:x+Hx"HpxHOxH.xHwJM3H\$0H _HHXHpHxLp UHHHHH-xLHHXXHHG|tGxE3D9wxGxHHLuLuHXLuHHUHӅyGxBEHwDfHEDDEHD$0HEHD$(HEEHD$ DGxHLHMHt ݔLuHMHt ʔLuHMHtL$3I[IsI{ Ms(I]H(HwK3H(H(HwK3H(@SH HHHLHC@)HCH@HCHHCH@3HCHHH [HL$SH0HD$ HH{HtJ HK LCMMHT$@HK-*HK.HcHcH0[H\$Ht$WH HuHtHHHWHH\$0Ht$8H _H\$HL$WH H3H ǃHD$0@H\$8H _HWHPH@HXHhHp IHHHY HXHx()D$0OL$@LD$0HH(HAH\$hHl$pHt$xHP_HAUAVAWHHD$ HXHpHx)pMLLH_#(4HH$3Ht^A()D$`AOL$pHsHH^HHD$`H;t"HT$`H"ȅyG fK~HHaMu HH$$IHH$Hu dHuLHHLLt$8HtMu )Ht$@MuHI}IzHD$(MtHu Ht$0IMLD$(HT$H0t$8HL$(IHfsf~unHHH֔HHD$8HX A()D$`AOL$pHHD$`H;t)HT$`Hȅy fK8$L$I[ Is(I{0A(sIA_A^A]HHHUWATAVAWHhHHEHXHpML@E3LeALeLeLeD9HY H]HeLE3I:5LE3I:tWH&HuHuL9eHLEAAHM'yHZrDIFLEAHy H{rLEAHMy HrLEAHy Hr됋EMDEDME;1;)HUHMy HPsQHUH~y Hs2D}D+}E3DHMfA9<fA<ILt{HEfA< tLfA< tDA)EALM'LEHUITHMgqxOAIE;rJAH @LEMDHmsDEHsDWH7E3/E3AL$(D$ HqDWHL9et HMSL9et HDL$I[8Is@IA_A^A\_]HVWATAVAWH@H@HXHhMEHHAHy HxHgHMtHuH\$p!H HHD$pHu `HMLD$pHT$0TH0H$H;ut3H^ Ht*HSIDEtCAWHʎAL\$@I[8Ik@IA_A^A\_^HSVWATAUAVAWH0H@LLA HY HXHjIu AWMu 3H|$p IHHD$pHu OLD$pH$IMAH0HI;utrHv Mu 3H|$p!IHHD$pHu HT$pIMLHAuHtHH8HAHE3 Dt$pH$HiAH0A_A^A]A\_^[HHHVWATAUAWH0H@HX HHY HXHHFLL;t7Mx HNHT$hMtIH8HNIH~u3Ht$`|$hH\$pHFLhMA})u/IT$HNM$$IMI$MA|$)tHNHIHfHNH HNHIHFH\$xH0A_A]A\_^H\$Ht$WH0HH HFHH;tdHC Ht`{)tHd$ E3E333 04HCx)uHHx)tHC H;Xu HH@x)tHH;^uHN H\$@Ht$HH0_HVWATAVAWHPH@HXHhMMLHHy HxHHL$8HEHH;Hs HHL$8rMtLL$8E3HSIy%MLL$8E3HSIHVD$8f;uf92tf;urE3AHL$87;uZ{)tHd$ E3E333.4HCx)uHHx)tHC H;Xu HH@x)tHH;]A6AHL$8H3L\$PI[8Ik@IA_A^A\_^HWH`H@HXHhHp HH@Hy HxHHFHH;HC Ht4xt.@)D$@H L$PtLD$@HSH{)tHd$ E3E333l-4HCx)uHHx)tHC H;Xu HH@x)tHH;^h3HL\$`I[Ik Is(I_H\$Hl$Ht$WH HY HHH˲3HuWMH{H\$0Hl$8Ht$@H _HL$SH0HD$ HHI@HtHKy(t A(H0[H\$Hl$Ht$WH@HHIH@ tGf ft6HM@Ht2O)D$ L$0tLD$ HWHl$XHt$`H\$PH@_HhHI@@Ht7AAHLD$ )D$ L$0J)D$@HT$@L$PWHhH\$Hl$Ht$WH HHIH t HtHM@HtLE3HWHl$8Ht$@H\$0H _H\$Ht$WH HHHuWHN@Ht HHt$8H\$0H _H(HI@HtH(H(@HuWHI@Htt H(HL$SH0HD$ HHkHtHK LCMMHT$@HK%HKHcHcH0[HWATAUAVAWHHD$(HXHp)pMELL@*Hy H|$ HHZ($HH$HtdA($)D$`AL$L$pHnHH^HDnHD$`H;t%HT$`Hȅy fK蟵3HiMu 3H$$I HH$Hu ]HuE3HHLLt$@HtMu "Ht$HMu3IwItHD$0MtHu Ht$8IOLD$0HT$P 0t$@HL$0IHfsf~uoHHHЄHHD$@HH A($)D$`AL$L$pDiHYHD$`H;t$HT$`Hȅy fK,3 $H|$ H؂L$I[8Is@A(sIA_A^A]A\_HVWATAVAWH@H@HXHhLL@HHy HxHQIGHH;HK Ht/LsI$i心Hp@HDII֋xZ{)tHd$ E3E3335&4HCx)uHHx)tHC H;Xu HH@x)tHI;_hDHZ63HL\$@I[0Ik@IA_A^A\_^HVWATAVAWH@H@HXHhMMHL@Hy HxHHJ~t}MtxMtsHuH\$p!H~HHD$pHu INLD$pHT$0 H0H}I;vt&HV HtBA$HI5~WHL\$@I[8Ik@IA_A^A\_^HSVWATAUAVAWH0H@LLA@ HY HXH*IH}u AWMu 3H|$p I}HHD$pHu LD$pH$IM H0H|I;utrHv Mu 3H|$p!I`}HHD$pHu 走HT$pIMLH~|AuHtHH8HĀAHE3 Dt$pH$H)AH0A_A^A]A\_^[HL$SVWATAWH0HD$ H@HY H\$pH~HFLL;t7Mx HNHT$hk MtIH8HIH~u3Ht$`|$hH\$pHFLxMA)u/IT$HN M$$IOb{IMA|$)tHNHIHfHNH HNHIH~H0A_A\_^[HHXHhHpHx AVH@HHIEH@zuW.HO@Ht%NLL$ EH)D$ L$0FHl$XHt$`H|$hH\$PH@A^H\$Hl$Ht$WH HHIIHozt#HtHtHN@HtLLHWH\$0Hl$8Ht$@H _HHXHpHx HHUAVAWHhHE3HMIIHL}L}L}L}L}L}D}EzHMzLE3H$LE3H$LE3H$HMxLEyyyH_D0~HMLELyy H_L}LEˋI,y3y H_HMLExy H_HMLENjxy H`rLEϋIxy H6`SDEMˋEUDMD;ED;;A;HMHUx؅yHq`D/HMHUqx؅yH`Ds/HUI@}Ax؅y H`@}}D+}3HMf9AAE3H@HEHHM#x؅HMDHHEHHME3w؅ujHEDEHULHEgALM')E'M7HH@AHMwHMw3xAHD;?33DuHMLw@8ut HMD|DEA@A;r,H=YHVHHtHeapDEHHuHX>-H ]U ?HM3PHHuHa>DA vH>HJ E0123Hs>E 4567fBLE89ABECDEFt/LAHDfAHMDfAM+u>3IHt!Hs>HeapuH)HUHӋHMH3H]`He A_A^_^]H\$WH@HH3HD$0d$ =SHHuXHtSTD$$L$$fD$(;u6L$(f;Hu+LD$ H H*MuN |$ t3HL$0H3H\$`H@_@USVWATAUAVAWHl$HLE3HHMEG03AEL}wAL}L}oD}glL M9}u`L98CL@A8t]H<| E3HMoHt x|L}oHtHgMt IqNHĸA_A^A]A\_^[]ËuH<+| 떃uiLMgLEwP HLuw؅t=4iAE3A]\IQE3HtfD8DEgII_H8IHI3 A8uHE3Is_H8E3D}gHt HeL}DMH8ALEgDEHEHD$(L$ I c؅_HMoHt {L}oH0L9>uHH؅'HHuH;HEHEoHEHD$PD|$HHEHD$@L|$8L}HNHEL|$0L ;E3D|$(HD$ fzt/H̓Qy=KHUoHNzu,yH̓vQt}yK}HUoHNyLEHNHuyHHRHHtE3AI H=y)Hu @USVWATAUAVAWHl$HLE3HHHMED$03AL}ELeELeLewDegLeHGLHT:M+LG3A9PDH98L@A8 $t.OOMMH+:E3ɹ3DL I9LMgLE H؅tp=4u>A$HGDoDoLH9ME3ɹbALmDHGH9DLM1LmE]Lm\IM3HtfL}DEgII[EtHI"3ɋ؅u A8 $unOODHMwHt w3HMwMtIEbE3Mt IIEt HMKu_AދHA_A^A]A\_^[]I9HH98uM3HMDB83I9t/HUI3ɅtHUHtE3H [H8fH3AH90L}Mu A\$VHHfA9 _uH3HHH0HtzMHH*3[u$L}HE3I|ZEH832H98u"HF8| SOE|DL}H98u bDMgMtI`3HEDMH8ALEgDEHEHD$(L$ I]؅HMw3Ht uH]wL0I9uHIo؅3ILOLuHEH]H7HEMHINHEwE3HD$P\$HHEHD$@H\$8HEH\$0D$(HD$ u؃ tctHOMNLHD$(H~7M\$ C̓Q0t=KHUwINtub=tȋtHOMNLHD$(HP7M\$ kK̓vQtsKz3ۅH^7_GMNHGL$ LM>3ɈOO/HGH6DLMLuH\$UVWATAUAVAWHl$HE3HLHMED$03ELegLe*IEH7LAMfL9 uH=؅t H 7(IMH LEHHO؅tH7LuUIsrHHuArȋcrH7MD˹HD$ C̓K=3H؅t H#773HqtqHc7HO؅tH7DMƹ VAE33Hr؅tqH7CuHEotaV3HDLHuX|HEA̅t3DNMǻIHHfD9$PuHPA;sHL;rM$LMMtfE9!uL 5DEHUHEgHD$PDd$HHEoHD$@Ld$8Ld$0HD$(L|$ Jq؅t8pIMH3LHD$(MM\$ %UHUgHpu\pȋzpIMH3LHD$(MM\$ K̓Qp9EeMAEIELT$ H3M|AHMHMgHt ]pLegHt HoMt IUBH$HĠA_A^A]A\_^]H\$ HT$UVWATAUAVAWHHPHEhL}pIML3ɈMPM@MLAH5EIHHH;t3HH9pt HHH;uHud 3AHHuXHHp@HH_HH9Xt)HxH;LMHN5839WuSIA9Xu=HG@t0AHF5LGE3MD$ D@ALHK5MLMPLE@HI3t HT58E@t+GGAH5LM`De`AAdv6 5HUHHEpLHHD$0HE@EHD$(IDd$ 3ɋ؅t Ho5yDMpEu8M@tOOAH5pEPAdv6 5HUHHELHD$0HEPEHD$(IDd$ C3ɋ؅t#H5LD˹MyDMEt,H5OOLMٹEDrEPtDMpEt H5ˆGOAH06 AEtuAHI6tA9u-I9 t A9(uHU6| LH{6MH CHGH׀)ItH BGAxAuFH lUpBLXLMpIIAH FBuFEp!_G,LH5Mg3A!GuA?u HMhGH$HPA_A^A]A\_^]DL$ LD$HL$SUVWHhH$H$H$E3HHALDD$Ht!EC 3HD$L$E3ۋC8H$Ћ ;EEuHEHGHEED9[8vvH$AE9Z vTHC0MZ(AH ȋ@$I Ë$;@t A;R rE3E3Eu HGAD;C8rH$L$A@8Ћ ;EuHEHGHEAÉ$E9X8L$I@0LAH0L\$P;3A EH$D@pEtAHXxH @HL;tA;r%^H@H$HHXxuZL$K@A@H3AApIYxDB0HHT$PH 3CL\$PD$L$L3ҋ$dEL$HCLL$@HEDH$HD$8LT$0MIHHt$(Hl$ I3ɅD$8$tFH$Eu?H$OH+XxH*HHHH?HHGG EuC($L$$A;@853Hh_^][ø6 A HWAVAWHpH@HXHhHp IHLE3AHfD9:HfE98HH$Ht H%HIHt\HHeapuHH%HHtX39v!HH[HH D;rHHt!Hp>HeapuHHz%HHH39H [HH D;xHٲH#DLEuMt A|$WAE33IBD@PH3rLu0IFHHHM8Ht H HM8HHHAHHH#HM0H#AHADu"HU0H9XHHH9t0H HH9YH9HHHXH9uHU0HDXLE@HT L$ HU0HXHHM@DE3rEIHMxE3DMHM8LHUxHA?t= > )HD88umHKH"HD88ueHB"t9LHDM= L!mxD!D!uLE@HNE3~WeL!mXHtE9.tA>uE.A>IHuLm(|HE8,t]HE0HuIHM0ǪtLE@HDȹHHt$#HM0byMt A}HeapuHۡHIMHHt5HM@FHMx=HM0Ht5u*HHtH!H!HHI[H ZEtHM0H~HpH3轲HHHHA_A^A]A\]HHXLH D@HPUVWATAUAVAWHH3LH ̨PMDDE@EEԉEHuh3HA9}XWoiAE33I23ҋHcH cMICH CЈEAINL}`L3҉EMAtVDD{IAHjH HI@ADE@}E;rHuhL}`@3MI89t$LMLEHI~3ҋ؅F8UuU90DMPHELHD$0HEAHD$(T$ HUHAI豺3ҋ؅8UU3 3HHuXDmMHHHH HtHf9AuHu H3HHHt 3H3ɍW} H3HHHHu_DHEXf98KHMIf3HUMtLAf;|ht?MLMHUIE3Le/3ҋ؅"HMHt H9C23MLeI<$UI;LcmIHHEAt`D}DAIHAH HHIEEDED}E;rHuhLe3EDm88u8H o388u H菆H Nh3҅,L A9t$LMLEII3ҋ؅8UuOA90DMPHEMHD$0HEIHD$(T$ HUHA<3ҋ؅8UtHH9uU3 3HHHUHDmHHAH HDmHU3HEXD;(tH?UI;t ^DmHEXD(Dm Dm,DMMtID0H oEtI$DH$HĀA_A^A]A\_^]HLH L@HHUSVWATAUAVAWHhHL3)pHUDMHuMHHf9 BuEELew(u}oHEDAE98ىM[EoIy(MMW8O%?Hw*A9IHUL~88u4H : 88u H\H 5 >LHUHE3HM8EA@LMHU8AI2(H  I H E H=0r9H ҖH8H0r(+t$H@H\$@Ht StckHu+HH 8HHtaHeapHtULuL}LEPL3HE fC,K(HD$0HE$HD$(LIID$  uHC( LuL}MtI)MtI)HtH)Ht!Hs>HeapuHHS HHM8 Mt HM(H `}tI$ HMXH3ȦHHHHe`A_A^A]A\]ÿW@@UATAUAVAWH Hl$@HHH HbH3HLHMP3HMhDHM0MHM`M\MXM@HMHMHHM AHU83H M]LEHEpDOE33I&IFLu`LMu MHMhE3AIHILM0HUhA\%Lm0tD=>A88u1H ʛA88u I|H uyMJHMHč!uPLeHI$HH7LEHIӋ"I$HXPHIL}DHMP;'MtI.'Ht;EtHEH 'H[0IuHeapuHݒHHOMt HMhTH  }tHM`HH]HtHHxHSH׋HH3HHH HA_A^A]A\]HM *׭Le EgEuHMH0H!}H3L}H IHuPH(H ٙEEgDeEtKdH}(HHtiH;ȑw`H HHH;rM>tDHCHHH;w HHHǸH+H|$@H}(HtStckHH}(uGHsH;r+HfHHHHtHHeapH}(Hu HuPII;tKDe\H H葴H}(AH @AHHfD,L(HI;uLm0DeL}LE8HEXHD$0HE@LHD$(IHDd$ Q9E@9EHuHHttXHLvXMt)H I腰H F`qf`LܢE33ҋ舸3虫Le WLe MCHۚMƋ腷Mt$XMt+H IH AD$`Ad$`LOE33ҋ3UE3LA~(DMEI3HHLHHLE(HHHU8HHHHHHHHHHHt,II/(LE(;]8rDMUIHLLHHLE8HHHHHHHHHH HH(HEtC3EtH 6H:$uH @HɃL(H\fD,@8(A@$vDIHT$@H HHL$PL$PD$@uhA;rH$3H$9$HD$0H$HD$(LIAt$ l$ @΋ƈ$ut$3A$I\"LGйHItHI;L$A<$H$H`A_A^A]A\_^]@UATAUAVAWHHl$`HHHHYH3HEh3LHM3HE`AHMXHM0E(HMHHMPHMDHDHM8HM M@MMUH ELEHEME33I3ҋCIFLuPLHHf;HMXE3AHWVILM0HUXAk3ҋt=)>HE088u;H ۑ-HM088urH 3҅HE0Mu HEuxAtMHI HH}L}ISMuIL}H}I3u'AtMHII@HHL}HtwMt AL$;rH&DsDuHMHE0HtHMt;tIDH H[0IuA}HeapuHHKIMLu 3MtAtIH Htv3HHuA~HeapuH:HIN3H9t HMX諠H b}tHMPH3HMhH3uHHHHepA_A^A]A\]EA6uH IH EE3AHtwMtAL$;HtDsDuA6}5;`H@AHI;ILM8tnH;,wcH KHHH;rP袍E3ɅtDCHH;w HH*H+Ll$`Lm8MtAEStckILm8uGC;r7H=ɆH^E3LHH}IHeapLm8MqL} ]DMM.DM(LEHt$PL|$HLl$@HEHD$8HEHD$0Ld$(LeỈ\$ E3;+AHI;MLM tqH;wfH HHH;rSlE3ɅtGCHH;w HHH+L|$`L} MtAStckIL} C;r;H=H%E3LHE HOH}IHeapL} M/LeHtADM(t$PL|$HLl$@HEIHD$8HEHD$0H|$(H}HLlj\$ E3H}Hu8HHE@MHD$0HELHD$(Ỉt$ E3ɋU}VEtrAuGH@HAL(uIDHI;r_9t4A;t/AH @HA|(]IHtH@;r$AD;r3HE3HHu HE8HL4H] EILDu/D9O(ukIEAL4HIHDBH迪H,L9 t=IEAL4HIHDBH葪HHANjALEE3H0HIyLm8AXHHXDH L@HPUVWATAUAVAWHHpL3LDMDMHMHMHMHMHM3H ƊHE DNE33I)؅IFD}`LA"3MfA9$HME3AI胖؅ILMHUAHu3tr>h88u8H XE3D88u H$kH (HLIM@ALDLeH IH E3DAu*IA@=AtAu IAuIAHEM9MX; 3HH3HDB ^HUPE3HEH3ɋ؅HEHLgI $Ht#f9tE3AHI͔؅HMLMLHHt H IHGE3IAt%HMLMAH؅urHMUDEHMH3ɋ؅uQCEDeHEPHADeD;eXtIIAu)IZHtHSHOJHIHtHD}LeHMMt HMH xEt IH$HpA_A^A]A\_^]ûHHXHhHpWAVAWH@HHHE3LIGH(HHSHL$0H讖t\H3H;ul$8Epp3HH3HDBp HOHysHh3CCLKHWLùD$ *H HCH9Yu,H9u'HHAHHHsH9pt)HXHR)HT$0H_pLH>D(GD$0GH_HHHwH9pt)HxH>I H\$`Hl$hHt$pHH@A_A^_H\$WH0HYALILHD$ @u!HO0HtHOHH/H\$@H0_HHXHpHxLp AWH0HH HAMNHHuRhȋ>LHD˹HD$ 覤K̓vQtQKGHH蕙؅t H73HtHH؅tH3LDȹ AE33H؅tDtLH2D˹HD$ ܣK̓vQt +|KuF re3LHtSDFHHX HI~HLMƹAFI^3AD$ SM73Ht HuHt$HH|$PLt$XH\$@H0A_H\$DL$ UVWATAUAVAWHHPE3HHJHMHLuALuHLuLuKHEhL0D8s8tA$t`HM1HEH+C@x Hi'H;~@HK0Ht %Ls0Ds8A?AKQDm`A?uH{0*K>AEC(@A?uHMHt ?HeHtH3HuHHM躒HSHEHD$(E3E33ɉ|$ HM舒HEHMHE3AHHS0Ht0HMH胑tQHSHME3AuQH{tGC(DEXLMHHMHH#S4t~HuHA;uAA?HK@C8AHMHt,HM近HtHHKHTH$HPA_A^A]A\_^]=Q'tA;uHK0HEHHC0HMHHC0LC0H2AMHD$ 聠HMhHC0HuH3H\H\$WH0HLILHD$ 2uHOHt[H*H\$@H0_H\$Hl$Ht$WH E3HAPD uIHH H蝛uH HHϋ HtH H\$0Hl$8Ht$@H _H(HI]ȃu3 3H(HHXHhHpWH0H`HIH aIIHL LHH:džHHHttu ƆƆH\$@Hl$HHt$PH0_H\$UVWH 3Hً@88HH7H|$HOL$@u)t$HH'ttu݅u tHS 39ou LJD$@HL$H9GHDHL$HH1H;tHHWuU HuI9uHX@0ƃ9PHtAHXPA 4H\$PH _^]@UAVAWH0Hl$ H]0Hu8H}@LmHHVCH3HErE3LL3ۅtaH;HuwVH guHHH;rC{t:FHH;w HHIH+H\$ Ht StckHu4F;r(H=tHHHtrHeapHHtcL!sAHKH EGI豛IMLMDHyLHtHHHH{?HeapuHGtHHIHMH3躅H]0Hu8H}@LmHHeA_A^]HHXHhHpHx AVH 33H H D4EH9tHI$H?HL跑-OfB;IDFI OM藑IIH~IH\$PHt$`Hl$XH A_A^A]A\_H\$LL$ HT$UVWATAUAVAWHHpD}hE3AHLALeELeDe@LeLeHt6Au-HC9wt9v -tAAu8MtA$t I؅LMXH]HLe`MtdMHQ Iԋ而HyLMAIHm؅t=u3 H}VH}H(tjHUXHMHLMA,Lu؅unMAHt HI;uHI;tkIHHL;"}LM=H H@[HtHHUXIӅtMt:L;tHUIH؅uHUXLMLE؅H`9HEXLAAH ؅j}HMHHUHDUXHHuX$ǀǀx|4E@u HIHH[Ƈ8Hu WHHIӋ؅dDHA;Hd$8Hd$0HL(LgE3ILd$(HD$ Hd$8E3DKIL!D$0Ld$(D$ s4HHHd$8Hd$0Ld$(AE3D$ H3]Le`MtFA$HUHEouH}tAtHUXH-u]Au"H *p.HρQ؅u2H hEu $(HEpH833HtH}@tHMtIHM~H$HpA_A^A]A\_^]HHpHxL`AUAVAWH`EMHE3L|$HL!xȲH mmL!|$PD!|$XD!|$\L$M!}$tH裌W DA3H=LHhX9uAt Hu8uHMAAH .FH$HL$PhxuzHD$@HD$0!t$(Hd$ LL$PEIHuMLt$@I|MuAu6HXHt*AHXPA _L|$HMtILt$@MtIHL$P+|H kL\$`Is I{(Mc0IA_A^A]HHpHxL`AUAVAWH@EMHE3Lt$(L!pȲH +kuL!t$0D!t$8D!t$Ht$ HtH,HL$0zH iMHt$`H|$hLd$pH@A_A^A]H\$WH EID;HH;t~Hu(t yt!HHD9v t uH3Ht;Et" tH SiHMuHD$PH3H\$0H _HHXHpL`AUAVAWH@MMHE3Lt$8L!pزH h%L$M!7$tH(zWDA3H؅A8$t?88u7H qh88u HIH RhluNƆ8LHD$0HD$ M3DBIS؅u#H\$0HI3Lt$8MtI H g8H\$`Ht$hLd$pH@A_A^A]H\$Ht$T$WAVAWH0AEH3H|$ H gLt$pI!>tH 4WSLD$X3H؅u>DL$XA3H؅u&HME3HIH|$ HtH!H fLH\$PHt$`H0A_A^_HHXHhHpHx AVH I!AIAHE;AtNt?H hu H\HbyR3ɄfH qh@u H H뼋H Bhu HH39HyhAD;0AvUA|EAA2HHHAA;xEAA2uaAu HH(;HH뛋H .LZMt?ILDƋHADЅuE3H\$0Hl$8Ht$@H|$HAH A^EHDWAWuHtH hu HJ39,cuH_H Rh uHd4uH衃A2 390HHXHpHx PUATAUAVAWHH@HeeeDHMAEDD}u(u$tH Ou TAH=m(+m-ȋtIHǠZHtHMEAH׋HED舂WADhuH9E]Eu H[#D$u HiA{H%H,I:q؅X3A DhtEu H#D$u HAH軁Eu;Ar4D94uH蘁A_2HiH0QADhEu HU#D$u HcAuHEuArAAHMIDOm؅:(MEAA@Dhu 5Eu H#D$u HAH̛kEuArAAHMDIl؅(MEGD (bADhLEu H#D$u HAH"EuArD.AHME3Ik؅HM)؅HNLMHUAuXHH}HHH rHυCDzu dHHUDAH i~&H@[Ht$H^HHHU׋؅HNHUpLHuXHpLMAA|$ tmE3E9|$8vcIL$0MJ = HLEHH UHO0;qLEHUHc DEHO0HpEE;|$8rM$$MuDu8D}HNHH/u HH`LA3ArED $3ۿHMnnu,HHHHDv}L\$@I[0Is@I{HIA_A^A]A\]HHXHhHpHx AVH L53HA#p.ysHmsHms6u%t uH0!0sw LJ,tSsI .##Ht1;t HAu3HtLIDHE#uH\$0Ht$@H|$HHl$8H A^H\$Hl$VWAVH HDH )\IA{3@LD$PHϋ;؅u7DL$PAHk؅uLE3H!HtHH [Hl$HH\$@H A^_^H\$Hl$Ht$ WH@H!H3HD$8@H@ HH;kuHH;cthMHd$ HL$(D$(fu9HT$ HL$(x%LL$ DNjHHL$ $YH HHH7 HH6H;uHHuHO@uHHL$8H3 dH\$XHl$`Ht$hH@_HHXHhHpHx ATAVAWH@3HH!X!X!XH +ZEIHXE3v9$tHKy{WDE33Hf88uH;H$H E3FHL$(e\LL$ HT$(E3HH\$ 8HCHu L8L 39hvu HA;rۃˋ.LILB3M+ȍJAC9u IrۃHl$8Ht$@H\$0H _H\$Hl$Ht$WATAUAVAWH@L$3MLMtIEt@@t@L$ t HHD$( D$(L$LHT$ IXgtC$I$L@u'@tMt IH$IiA03@utAFD3IUHHuXW0t!HHMHHI;uMtHGI A@D$HIgȋHH#tL\$@I[0Ik8Is@IA_A^A]A\_HH\$Hl$Ht$WH0L @HLHED$ +u{x5HcHHH Ht@utHgHy҃{uH HtH#c H\$@Hl$HHt$PH0_H\$Ht$H|$AVH H3ADBPAL.eD$PIAF(HD$XA~ Av$IFHD$`IFHD$hMF0IFMHH\$0Ht$8H|$@H A^1tH\$E3L [&EZ$A;Yu A;uAAA9@ tAAA9@$uEQ LIIuH\$IH\$Ht$WH HHJ0EHHAJfLHlH3HHt#9X uLD$@H=u T$@HO0HO09YvHH;4t ;Yr4fHHHDH\$0Ht$8H _sHHbHHH3H$HD$ MLHT$@H0H$D$ c%'H$H3/\HĘH\$Hl$VWATAUAVH@HHILD$xEHAS=t6u(t =u3L\$@I[0Ik@IA^A]A\_^DD$xLv0HIc؅uˋLHH׋H8H0L$0DHHD$8c؅t T$xI~$tAtHFHtuH$AHHuZWHd$ LF@E3AM؅"T$xIdT$0HL$8d@VWATAVAWH@HD$ H\$xMDH33ۋMITLcI3HH$HupDHH}pMIHou$Au H0AulH8HHtWL$HT$(fsf~uHoH$ 3H$t$pH$Ht HH\$xH@A_A^A\_^HHXD@UVWATAUAVAWHP3E3EEHHHpLxAutZ;u^ Eu-HL!9wR9v fEL$HEArHt9tGWHt tAHAnIA@jH9AnMtHD$HLE@E3I֋HD$ ؅4E(L|$H (H$Eu_HEHtVuML;HFItHoWK&nHFIut HzE3HuHHtnLL$@EHytZHMHtDu;HD$@HHHD$0LADd$(Hd$ ؅uSH$AHArHt$@H$H;u%H Sm6 Ht$@HHHtH$LHHӋ؅H$ELHHD$(HD$ ؅X9u,HHHDlAHGLAu M8M ;L$DLD$HI΋Љ$} ؅HT$HLI3؅!D$(H$HL$HEMHHD$ ؅9$uH$ILEu E( $HHHDk3Mt!$tMNjHiHtHH$HPA_A^A]A\_^]HHXHh VWAVH@H```HH 4KMAtBHjWHL$0[H JMHl$xH\$hH@A^_^ÍzvRus|Ӄ2uLL$pLD$`H؅t8HDƹQj뎋aXxDL$pA3H؅9u|$puH2؅u_Hl$`HEHtuHL$0I4XHL$0E3AIV؅uHD$0E3DHHHD$ HHLI[IkIs WAVAWH@XHHE3AMH9VL9DMCIHA=/HEHtu IAL$`HE0HHHuBWHd$ LE@E3ADD$`HHu,HH HDkhAt|turH u H0uPH8HtDILD$`HT$0HHD$`H\$0H;_tHKHt HT$`LHE( $3H\$hHl$pHt$xH@A_A^_H\$LL$ DD$UVWHH@3HH GAHEHErH"\gWLM LEH؅tH'Dƹ&g`DM A3H؅EHEH@HtuHU8HMGUHU8HME3A'S؅ua8(tYHMLE HU=M uH(H ȋpHH ȋ;E0v3HULEDH؅upug w\HGHu H8H LM8BDE3;؅tLM8E3HHtHHMVH E7H\$hH@_^]HHXHhHpHx AVH 3HD9q8v*LI0AI H@;AD;E8rڋE8HH;wy ;rrA;rk3%HHtYE8HOHOE8L4tLL$PE3HHt-tDD$pd$ H 3E3HuD$`HH;HL$P&3H\$XH0_^]H(A;wit^,tMt?bt1t!tuiHHHHHwHnHHeH@\tMt@t2t!ttWDH+H("HHHH0I3 H(H\$Hl$Ht$WH BHH(H(rs3HHtaHxH (HL\HKHS(HDFH_HHHCH H9At)HYH2H\$0Hl$8Ht$@H _H\$Ht$WH0HAHHH;tfHKHt{!tHd$ E3E333O4HCx!uHHx!tHC H;Xu HH@x!tHH;_uHGHXH{!u HVHH6HxB~!HtHGH\$@Ht$HH@HGHgHHGH@H0_H MA;sw"L+DHIA 9r wD+y2HHXHpL@WH03HH!XHH!H@SE3E3HD$ u ؃zu@T$P3HHt$DL$PHL$PLHL$ HκDu ؅tHHtFH'3Ht$HH\$@H0_HHXHhVWAVH03IL!XHHMH!I!H!X؍{LHE3UtAOHA؋T$X3IHuAHDD$XLL$XHHD$ t!\$XH!\$ E3APLL$XHۢuT$X3CHHtDD$XLL$XHHD$ u@LWHѺKD\IHt I&HHt H&Hl$`H\$PH0A^_^H\$Hl$Ht$WAVAWH 33IHLMM3HLzAHtAAHHH@HC6HFHHHuhH:QMtAFu IHHtF;3BHcHIMHHI;3~$WHM[Ht H>H!7H\$@Ht$PHl$HH A_A^_@UATAUAVAWHHl$PHHHHH3HExMLLHuH@[WMu HHu HпAHMXDG3҉}PKIw_DAtaAH;13wUH P3HHH;rC9t:AFHH;w HH2ZH+H\$PHt StckHuBAFA;r0H=2HoHHHeapH޿HAAHMDǺHʞHM(tvHM(E3LËt`HM(E3IttLHd$@HELEPHEHEE3HE HEIHD$8d$0Hd$(HE(3ɉ}HD$ @u  @}tA<$3Ht!H{?HeapuH1HUHӋHMxH3CHHHHA_A^A]A\]HHXHhHp WH H|$PHLHIHu HAuD;u~t&t HyrAt HcHAu H0H8LD$8HT$PH; HCH9D$P38t+LHHtH4XWH\$0Hl$@Ht$HH _H\$Hl$Ht$WATAUAVAWH0H$L3MALHH$Ht u7Et0MMAIIH|$ 3ɅuC8uAI;rӋtKMAIIH\$ S3Ʌu8 u(I;r H6WWH\$`Hl$hHt$pH0A_A^A]A\_H\$UVWATAUHHP3IL!}HH!}H!}LH}MuHOV^WA8HULE؅uLHUHMLMHLEH}؅u-DEHHE@LIIHt$(HD$ ^؅u8E@tH}t HMdH}t HMSHtHV9tH$HPA]A\_^]@USVWATAVAWHH`3H3H!}H!}!}PH!uXE3HLuL͞HLEHUHUHMLMPLELuȅD}P!u܍O LE؍WD}}HHu !}@HMV3EtsI HUXYHMXHMXH:HeXHHMLEHU@HfEH}xE@A;r It$3fA$3HMHtқH}t HMMtI7Ht HyIL׹.UH`A_A^A\_^[]ÿtt= tNQH\$Hl$VWAVH0HyIHLWL@LMBHM@tMMRAz!tM@toL;u$AHT$PMIHl$ NCHH bA{!tMS9Ix!uLH@x!t!IC L;u LH@x!tAz!LDIRL,tDLCHl$`HH\$XH0A^_^LD$SVWHHD$ H-H3H$HH3A8p!t6HmHL$(E3HT$(HL$P(HHL$PDMIHL A8q!uILH@8p!t!MHM;AuML$MIA8q!tL$I@8r!tLH@8p!tL MAM;IRA8p!uIPHCL9PuL@L9uLLBLKM9u"A8p!tHIIHH @8q!tILKM9QA8p!tHIIHHHI@8q!tIAmLJIIL; uIIQA8p!uIPLHIAHLHHCL9PuLHIBL9uLLHIBIAAI AB AA AJ AE8Z HCL;@E8X H L;HJ@8q uUDY @r HJHHBH@8p!uHPHBHAHCH;PuHHHBH;uHHHHHJHJ@8q!HD8X HAD8X }@8q uVDY @r H HAHHA@8p!uHPHBHAHCH;PuHHHBH;PuHHHHQHJH @8q!uHAD8X HD8X @q LHRHAD8X uZHDX @q L IAHIA@8p!uHHHAIAHCH;HuLHHAH;HuLHLIILIHJB A DZ HADX HJHHBH@8p!uHPHBHAHCH;PuHHHBH;uHHHHHD8X uXHADX @q LIIHAI@8p!uHHHAIAHCH;HuLHHAH;uLLHI LIH B A DZ HDX H HAHHA@8p!uHPHBHAHCH;PuHHHBH;PuHHHHQHJEX I1HKHtHHKH$HHH$H38HĠ_^[H\$Ht$WH HYIHLSLIRLtMRMMAz!tL;tMCHL\$0tH\$0H\$8Ht$@HD$0HHHH _H\$Ht$WH z!HHHu HSHHH0{!HtH\$0Ht$8H _HVWAVHHD$0HXHfH3H$IALHH$HH9Kr3H`dHL$8"HT$8HL$`HHL$`>HSHD$ LLdLHCHCE3H;uLHHCLHC$@tLHCH;8uLLOHCH;xuLHIMAID8X ILPI H;IJD8Y H;PuMHHHHHBHD8X!uHPLBIHAHCH;PuHHIH;uHHHHII@ IHHDY IHHLI@HI@D8X!uHHHAI@HCH;HuL@HAH;HuL@LIHD8Y u@ A IHHDY IHPH;uOHHHAHHAD8X!uHPLBIHAHCH;PuHHIH;PuHHHHQII@ IHHDY IHHLAIHAID8X!uHHHAI@HCH;HuL@HAH;uLL@ILALBID8Y ;HKHQB MIH$H394H$HİA^_^HHHWH0H@HXHpIIH(,HD$@HtH0HxHXHL$`HHPf@ H\$HHt$PH0_H\$Hl$Ht$WATAUAVAWH@E3LM0M8AAEEL$uH$A;uHuHALHHIILyMIIHL#H@HHLt$8HH#HE3H|$0H\$(DL$ IdLt$8AH|$0IE3HHEH\$(Dt$ 2Ld$8AvLd$0IDDHHLd$(Dd$ Ld$8Ld$0I8EDHHLd$(Dd$ Ld$8Ld$0IE3DHHLd$(Dd$ Ld$8Ld$0IDvDNE3HHL|$(Dt$ yLd$8Ld$0nL|$(E3E3҉l$ HS~H"2HHt*}HC@p!HCH@HCHHCH@LcIH!HI0o2HHt*2HC@p!HKHIHKH HKHILcII8M90HDŋ΋SGI0HtBI0Ht}M0I8HtI8HtTM8L\$@I[0Ik8Is@IA_A^A]A\_HrIXI؅lAH\$Ht$WH HAHHpH~!u HWHH?H)!HtHCH@HCHcHHCH@HKp)HcHcH^)Ht$8HH\$0H _@SH HHH6HXwH0HtH0Ht%H0H8HtH8HtH8H [H\$Hl$Ht$ WH03HHuH@D$ AA@LuPHLL$@E3H轮uHL$@osH\$ E3AHQuGHAHLL$@HE3H@]tHLL$@E3HBu냻OH\$HHl$PHt$XH0_H\$WH A3I-txtftNtAt3t&tHK+DWH6Hh-HX$HH]HH6HH%7HHHs,%HH;u @K7HHDًH\$0H _HHXLH UVWATAUAVAWHhHAAHDHMED$.)p33MDewHu3HuHu-243tDHABW L-AE|uEEAu H]#D$u H]A H]vBEu DuAAHUHMAE.؅L Eu Du@tD9mt H+(MDEL-͔AE|EAu H\#D$u H\AH]AEu DuED$@AHUHMA-؅vED@tD9et HMLmMt]HHMK-HHM;-HUHM 1t+HUHM0tHMŹ@LhHMI03ɃMwH#3HxAu(EAEDB)u$1HHXEukDufHXH9tYI}tRt؅tGHHED$HxAEAu3E0HlMwDEL-ALEAu HZ"$u HZAHZq?Eu DuDAHMAI+؅NLmEu~Mt9D}D!ewIIt3ALEtEwEwI;r Eu;Du6@tD9et H£MtHhu HLXHMI.E3AEHHA7(EA)uۊIEuPDZI?tAHht7Im؅t)HHAA7E D EuE$ ( L-AEduEHXEAu HX#D$u HXAHXg=Eu DuAAHUHME*؅@HHHM'-3ɃMwEu|Duw@EttgH<tML}MtDH,AI]u*LE3I ؅tH<(MHHPEv#HHŢAu Ƈ)Ƈ)HHǢHD<MwDEuD $D (L-ALuDHVEAD}gu HV"$u HVAHVu;HMHUw*3ɋ؅eDewEDAuL90u89u09u(9u 9`u 9H) HAE;u19Pt H^9`u 9HޝgAuiHD9sHA:A\$/9Pt H'90u9u9u9t'HA[EH۞ALAAD@#ƉEwuEu $(AE|u EHTDmgEu?HT9uwuWH9w9v4-D$u HTAHTx9uwEuTuPE~KA~0Au?9pu7HhEE@H E3%؅u<pt Hh)u!uEu D $D (HMHM)L$I[HA(sIA_A^A]A\_^]H\$Hl$Ht$WH AHH;u6 +H*39{8vHC0DHHu ;{8r3H\$0Hl$8Ht$@H _H(MD@3AtH#H'8WH(Au +DIJH(HHXHhHpWHPAHL@3IH-T$@tLD$@(…tt t0L@L3uH|$0DHHˉt$(Hl$ TH\$`Hl$hHt$pHP_HHXHhHpWHPAHL@3IH荟T$@tLD$@(…tt t0L@L3uH|$0DHHˉt$(Hl$ 蜫H\$`Hl$hHt$pHP_HHXHhHpWH@IL@3IHT$0tLD$0(…tt tHL$P|$8HD$@H|$0HD$(HL$PE3E33H|$ |$@OstHL$PxLD$PHTH`H3OL$pI[I{ I]́ |) ~ ~ ~ ?/w ËH\$UVWH Hd$@Hd$HHIHHxHT$HHӅH|$HHHX8HwHT$@HӅufHt)L$@t%H|$HHHXHHwHHӅu8L$@&=s&tt= tNH|$HHtHHZHQwHӋH\$PH _^]H\$Ht$WH 3HHHu@]HsHuW*HD$8Hu@H2s3HHD؅u CH~3fHt HTrHt$@H\$0H _H\$Ht$ WHPHH3HD$H3HH9Y$u 9Y u39HILD$ 3ptHW HL$4p˅o؋HL$HH3H\$pHt$xHP_LUWATAVAWHH`HEI[IsLLE3LeHHEHICL 3ED$H vuH]HHHHuAHA()EAOMH]HHHHbuLE@HUH׋yG= uA H{-(DH DH֓(xHEHIH]HIH]HHtHHxHtH׋L\$`I[0Is8IA_A^A\_]H\$Ht$UWATAVAWH$HHH3HHL$hE33HHL$p3L|$`L}HEL}HEEAvsEgAW\HurHu H!H+HA=vH@Lǹ&WdDIvfD}>HEHMH+IHtft fHI+uHuHfD9KH= fD|H}mLL$`EHȺ(ZkuHL$`؅HT$`LMLEйHT$pHυEDE3E3Iru Ht$xD|$PL|$HD|$@Dd$8HD$pD$0LMLEHL$hD|$(L|$ E0L}E@HEL}L}qa="Dy dqAHL$`Ht!EtHLEE33HL$`kHteH %`L3HI0]qHL$hHtDqHH3L$I[8Is@IA_A^A\_]bLI[IkIs WATAUAVAWHpH H3HD$hDMCE33HAAJlEot AH;j;s tt NuHLƹR$AEtMt @EIIHfD9$NuQ3HkHHuGu͍GDMIfF9$FuMHH2#IHfD9$NuH"E3Ld$0HOHEAHDOHDd$(D|$ iI;ui؃{uXHiEt HkHbjHL$hH3 L\$pI[8Ik@IsHIA_A^A]A\_H\$ UVWATAUAVAWHHH+H3HE33EDL{H]H]HEH]HEDDH]E8Y@jLMS(DHguEHM t1=j NNjDHULMLE ADD@INHEAHD$8H\$0E3ɋH\$(H\$ f="uQHHHnIN3ۄuPINHEȍSHD$8H\$0DCE3H\$(H\$ 5ft&@HHHH#3EHEHHHBnHUINHt$0Hd$(L EH\$ 3ۋHMHt EtHLEE33] HMOgHMHtgHMH3 H$HĀA_A^A]A\_^]ÿ@USVWATAUAVHl$HHH3HEE33HHEHEH,HX8HMDEHHHULuLuLuLuLuLuLuDuDuE!mHwEnuEDmZgLMEHȺ(dHM =" NNjwHRHX8H}lHAH.HX8EEHDuQlHAABuE55 HULMLE~ FH}DmHHX8HkHMrPAAEAHEHD$8Hd$0Hd$(Hd$ D HOE3E*cH AHH#؋EMH L#H)Hx(H HH#HGkHMHEHD$PHEMDuHD$HHt$@Hd$8Hd$0Hd$(Hd$ LA׋=uA3ut&MD&}t.HMLMLEHU4bu dA}t!HMLMLEHUatAHEH]E3HKHD$0HEHD$(Hd$ EAartEAHu3HMHt9}t-HLEE33ftHoDHM@cHHHiHMHMHtcHMH3^HA^A]A\_^[]ÿhH\$T$WH HHHXPH[iHT$8HӅuD$8%WH\$0H _H\$UVWATAUAVAWHH@E3HHMMLLmXLmPEM(dHmu8HHHhHUXHӋuIeLHuwHuPL}XMtIHXHhIHuPHtHHXHphHMt IcHM[dH$H@A_A^A]A\_^]H}XHHX8H%hLEPIHHuPumHthHHX@HgHUHӋ>HEHHfD9,XuH3HaI$H LEHHCAH\$Ht$H|$UATAUAVAWHHp3LMLLH(MH]H]H]AHM3cIIHHgHUIӋIJcHHu HUIH}HHX8HfLEHHӅu1EMH}H)EMHXHHfHUHfMubIHHbfLEHIӋu=EMH}H)EMHhH#fLEHHӋu3LuMtIHXHeILuMtIHXHeILuMtIHXHeIHt HGaHMaL\$pI[0Is8I{@IA_A^A]A\]H\$Ht$H|$UAVAWHH0HeIDLEHMH}؅t =H MHtf;t WHHω]TuPUgHH9u EKH]HDۉ]2eH HbMDʉM HbEHuHH)HXPHTdDE@LAIӋ؅t)=s$tt NË 3Ht H^Ht$XH|$`H\$PH0A_A^]@SUVWATAVAWH`HH3HD$PL$L$Hd$ AHHMǹEHRHXH}cLL$ DŋHӋt1=tt NEAtXAt8At WHD$ L}8u L}R8uML}DHD$ Lw}8t3L[}*HD$ LHL$(DS=LD$(LD$ L$IIHt$ HtHIHHqbHӋHL$PH3H`A_A^A\_^][HHXHhHpHx AVH HHIHX0D3HbHӃ}t }u Au)HHX0HaHӅu }tHHXXHaDAHӋȅt)=s$tt N 3H\$0Hl$8Ht$@H|$HH A^H\$UVWATAUAVAWHl$HH]H3HEHueHeLew3EH!}H!}ELHMH}HtH!>IELEH؅LEHIH}׋؅HUH&]؅HUHXH`LEHEHD$(LMAIDl$ Ӌ؅=Stt NË5+LEHRLeH}ׅxlHtgHUH\xVLM(EfEMtHUILMLed$(L AID$ :AtvtvDuHM \xRHM(EfEHt HUXHUHM[؅uuLeLEHM $I؅uTLeLMcu2DuLEAI؅uEtHt HEHeHAHMHtXHt HXH}t HML[HMH3~H$HĐA_A^A]A\_^]HHXHpHx PUATAUAVAWHHP3EEH]H]H]H]ZLHu H HH3^HM`AH}XHH H^LEIH3ۋ;H}HHX@H]HUH3ۋD9]H}HHX8H]LEAH3ۋH}HHH~]HUH3ۋH}AuHUHZUH}AuHZH}ԉE9]P HAuMHX`H ]U8HM`LE3ۋt3=s.t#t= t NNj HXp뱋HMHt VH]H}HHXH\HHM3H]XAH]D;eU=t-t( NNjwsot tۋ\-AtEuJD;t f;t@D;u f;uH=Q|HHXPH[U8HM`LE3ۋeIWWHMHtHWHMHt UH]HuHtHHXH|[HHuHtHHXH^[HL\$PI[0Is@I{HIA_A^A]A\]LI[EK ECIKUVWHHH3LAHMȋIKUHUHUHUHUUHUPEDII[DU8HUȋAHUEttHuE0L@HHDI\HEHUHtgHKHt^CLHMPD$(LA҉D$ }ttuESHK(HUDU8HHuHELI\HtlHKHtcHEPDKDHT$0HD$(CA҉D$ :}ttuEHK(HUDU8HHuHELG}@tI\ H]HyEHUHHEH_HuPHH H=YLEHHӋ;H}HHX@HYHUHӋE9EH}HHX8HXLEHӋHMFuOHEDM8HUHM HD$0EHD$(E@D$ HED@^}tt}u EH}HHXH[XHӋuHeƉu;uLHMSH}3HHMHXHXHH]HeHH]HHv3HEHt HzSH}HtHHXHWHH}HtHHXHWHH}t7}0u}Ht+THEHzHnWHMA׋H$HĀ_^]H\$Ht$WH H93HHt$0HX8HWHT$0HH|$0؅uH tHg +ہWHt H{RDHt$@H\$8H _HHXHhHp WAVAWH@H`IHHhIEHDVHT$`HӋu HL$`"uIHD$`HUEHD$0!t$(E3HD$ uEuE3AHu3H|$`HtHHXHUHӋH HyHUHMAH\$hHl$pHt$xH@A_A^_@UVWATAUAVAWHPHl$ HHH3H 3HHUDH}DHHIH:IHf9Et IfB9HHH>P3HӋ39`MA t D-iDHMiLHT$@HMHLT3QKLHdHD$@HD$(Dl$ DL pTI/*E39H>HHHlOLD$0IH3Ʌt~HL$8LD$8H HD$8Ht"HD$ DLpHp#DLmpHpHL$8HJFHT$XHNE3kND$X)EL$hMH>HHHNLD$0HUHE3H3 D H3LE3HNHt HEHF }GDl$8A݃t AFF-`HN@uF"3@~LEŋ`H E3ut3tHIHIHF IF HD$PH0HHD$HHt@HHMt%=s*tt  = 3E3L9l$@t HL$@IHt&L6MtIHXHMIHGMt IHHL$XHHH3HA_A^A]_^[]@UVWATAUAVAWHHl$@HHʥH3H0HLAHEHDELH3DCH AgHEEIE3fA :WIIHfE9DG uHE HIHfE9DG uHE H;HIHfE9DG uHUH H BIHfE9DG uHE H;roIHfE9DG uH H BE3tMIHfE9DG uHEHHH;w HHHH+H\$@Ht StckHu|IHfE9DG uH EIHfE9DG uHE H;rBIHfE9D_ uH=eH]HJHE3HHtx}HeapHHHlHIfG9Dw uNuHKIW LEHU AE3HDuWqPE3t\D9uv{Ht!H{?HeapuHHKJHӋH0H3HH@A_A^A]A\_^]D9EtHEHM DHD$0HEMHD$(3Dd$ z{/H\$Ht$WH@A HT$PIHu<9D$Pu8C(t1Hd$0LCHKHd$(d$ DHu C(H\$XHt$`H@_H\$Ht$WH H9HHHXHIHHH\$0Ht$8H _H% CH\$HL$UVWATAUAVAWHH0HeX3MI!1IMHX@LHuHHHUPIӋEPu E3I$HX8HqHLEXAIӋHU@HMXLEHuulHIlFtAH}XHHXHHHHeXHt HB3AHuD;uPo HEXHeXI3I9DNjLuXMtIHXHGIHt HAH\$xH0A_A^A]A\_^]H\$Ht$UWATAVAWHl$HHeLHMMHJCHM@CHM6CHCLHu (H hfCHHu IHHFLEHIӋLEHhHUH hIEMHH)EMFLEHIӋucIH HbFLEIIӋu HEHeI$IEMHH)EMFLEHIIAHt HAHuHtHHXHEHHMAHMAHMAL$I[0Is8IA_A^A\_]H\$Ht$H|$UATAUAVAWHHPE3LLHUILmEALmLmLmAHUHHHfD9,JuHfE9,Gu 3H?LHu ;HELgMHIHD$ HgMƹLEII6HuHHX@HDHUHHӋD9mHEHHX8HpDLEAHӋH}HHXXHFDHUHӋusH}HHH DHUE3HӋuJH}HHXHCHH}LmHHXHCHALmD;}HGAL9mt HM4@Mt I=LuMtIHXHCILuMtIHXHoCIHtHHXHUCHL\$PI[0Is8I{@IA_A^A]A\]H\$Ht$UWATAVAWHH@HeHeHeLHMA?LHu  IH HBLEIIӋH}HHX@HBHUHHӋ39uHH}HHX8HpBLEHӋH}HHHDBHUHӋucHUI`@H}HHXH BHHMHe=He;uHdHAdMĹ3HuHtHHXHAHHuHtHHXHAHMt I(=HMHt=H\$pHt$xH@A_A^A\_]IHHMAHUE3IӋe^HHXHhHpWAVAWH0H`HIML3K=HHt7HHxH@LD$ HHӋu`I=HHuHH|$ HHH@HHӋu"IHH|@HT$ E3IӋLt$ MtIHXHS@IHt H;Ht H;H\$PHl$XHt$`H0A_A^_HHXHpHx HHUATAUAVAWHH@3IMMLH]H]<LHIH H?LEIIӋH}HHX@H?HUH3ۋ}~ WH}HHX8HG?LE3H3ۋHy\IX=u;MtHHfA9FuHu#IHH>HUE3I3SI(;HHu=H}HHH>HH3HM0MMIhuLuMtIHXHs>ILuMtIHXHU>IMt I9Ht H9L\$@I[8Is@I{HIA_A^A]A\]@USVWATAUAVAWHl$HHH3HEL}wHMMo3MMHUDHUHU%tt W AHOHX Hz=ULMLEIӋ39]~McLcHEH4MtHNHUD5LEHNHU99LEtHMMIM IIMtHM6HeMtHM39He;]O53HKHXHv<DELMIӋt&=tt NNjfHELL\HMDLM-HHXH<DELMIӋuLMHMMIu3HuHtHHH;HHMHt5H}t HM8HMH3BHĈA_A^A]A\_^[]HHXHpHxL` UAVAWHH@3HHH!uH!uMHuMy7LHulHH H;LEIHӋu>HUIX7u+LEHULMH [u HEIHuIN6LuMtIHXH:IHtHHXH{:HH}t HM6H\$`Ht$hLd$xH|$pH@A_A^]HHXHhHp WAVAWH0H\$p33H!3MDHxHpMt\tWLHHUMAH|$`LL$ H:VHMOuYHD$ H3HtHHXH9HHtHHXHx9HH\$PHt$hHl$XH0A_A^_Ht$ HD$`H|$`H\$ T$HL$UVWATAUAVAWHHLuh3E3H!uPH!uH!uH!uH!uIMLEȋLLeHuH9upu LEP{LM`UpHMHL$ LIyLeEpML,MEJ 4HHEHIH Hl8LEHIӋ5HHX@HB8IHUH4LEHULMPH KX=HHXH7UHLMAIӋt3=tt NNj}LEHULMPH Wu ULMPHYDǹV}xHuPHt(IHH47E3HIӋH5ȟJtHH>L}@HHX@H6IHIL=HH>uH}PHrHX8H6Ir kLm@IEHxHp6LEHIӋ9IHHG6HULEPIӋLEPHXLιH}tHM2HeHHX@H5IHUHL2LEHMPHUM'Lm@HlHX8H5IӅy6UHHULl$0HD$(HEPE3EAIHD$ ~7}HHHX8HA5Is5HwULl$0E3HD$(HEPEAIHD$ 'EpL9EHeE)EMMHUHM蚺DH]HeHHhH{0HUHDx0t$8D$@D$0L|$(HEHD$ LMLEUHDH}HtHHpH"0HEx1E)EMMHHH/HUHDHt}HHxH/Hf}tdE)EMMIEHH/HUID,tt= tDADN A\$@HM_+Eۋ]uDIIDu}}ugLE3IL$)t HEID$ Gf(t1[(t&P(= tC(DADNAEuMNjIpDHM*H}HtHHXH.HAHMH3>H$8HA_A^A]A\_^]H\$DD$UVWATAUAVAWHHP3LHHEHEXHE@DHHX0H.HM'AG(DEu\I$H}HhH-HUXIE3u HMX{]PE3Iϋ艽HWHX@H-HHHH;xuHAH;sHHXHHI-HHEHHX@H,-HHU@H)E3uSHU@J<L IHHHfD9JuIHfD9BuHXH3H&LHuvxE3L9e@t HM@+)Mt I&HtHHXH,HHuXHtHHXHj,HӋH$HPA_A^A]A\_^]HE@L LQOM HD$(HaLHIHD$ HROMƹLEIInHuE3*HHX8H+LEX3HӋ]PHEXHUDHD$0EID$(Dd$ eE3A3MuAAWÃu EuAA3HuBWH\$Ht$WH@3HHHuZW[yuN!YH!\$0HI!\$(E3ɺ@EAD$ %$Hu !$HG$uOHt$XH\$PH@_̃9sH.H 7H3A8uAtutt t u3øH\$Hl$Ht$WAVAWH HѿHAHX0ELH)I3NEut ;wu 8EHt ;tu |$`t@HhHXXH)DAIӋ؅tH[VD bHl$HHt$PH\$@H A_A^_HHXDH L@UVWATAUAVAWHhH3AIIL]]EIHf9AuE3HP`"E3HHux3HDB`XHN`LIF0EHN@L52qH>L+H^A 3"HHt1ILHH@HDhHHLhr3H\"3HB0HEDmoH9^3HMDB8HN@H9QHUZ@Lu׋UEI;OHFHu=TOȋ*OH UDMƹ HD$ N3ۋ,3HtMH UHN3NtNMH,UoHNt MHGUTHNAE33NtdNMHbU%L}_HNINYtLEHqUDȹ fHNHVXVLuHNHEL IHD$0E3\$(H]H\$ 1N u Euxu EuHMHtKNEtaIHfA9FuHvNH UAI#u4INHft%f,tHHfuH)v H9^8uXI3HfA9<^uH3HHF8HuMHH3MHRL}_LuMt~IHNLEǺ0H]t1LuMt(I6Ht HָHH"HI&HHXH"HM_AH$HĠA_A^A]A\_^]HHHD$xHD$0HD$pHD$(DL$ EL32HHLH3;]H\$Ht$WH 3IMt/Ht*u EuHyX8u HIHQ AWHt$8H\$0H _H\$Ht$WH@A IHHLD$P\u29D$Pt,Hd$0LHK@Hd$(!D$ DH3uH\$XHt$`H@_H\$Ht$UWATAUAWHHHe0HHX03EH!}HHL !I3LEHH!\$(!\$ E3IHD0EtDHbP H4AH!\$P!\$H!\$@ H!\$8L HFEHD$0HʰaHUHHN!\$(HD$ 0HHHu/GGLE0A׋uZDHP_D B!\$(MHHD|$ GLE0A׋u H"P.HNHG3 E M *Eg EgE@gM ;gHUMEHLEED|$8Ll$0D$(HT$ HUHHLE0A׋tnL HAu&J J N HEJ $J aJ (aN 0aHEJ 8aHEH`&H?OD Ht HNHhFH}Ht HMHE0L$I[8Is@IA_A]A\_]H\$Ht$WH I0HuGHIHtFH{HHtCHHuHK8Ht+H"H\$0Ht$8H _H\$DL$ DD$UVWATAUAVAWHHpHHeLHX0ALHIӺE@t 3uU3uIuDDusE`tUukH)HHIIӅuKH HX0H,ILE@IօA3WuDtD 9u@uAHHX8HIө|t nLE@I3ɉu@WtHeMD 9u@5HSHu@HHoI3LEE3IHH\$(HuHu\$ @t H0MMtUPLEIZHuWtDH/M`INHE@LHD$0\$(H\$ H]AHCt *CHU@INHCHEHM@Ht CHe@Ht HHtHOHHoH3tDHLLEE3IIHt$(t$ ?HutHLD }Xt>INMFE3HB tHBHL}HHX8HIӅu3EHLH @EMljD$8EPD$0HDHD$(HDIVIHD$ %tHLLDȹ L;E39}u1t-EtMIAEWEtLEXIֹTHt HH$HpA_A^A]A\_^]H\$HT$UVWATAUAVAWHH`HL3HX0H!uXE3HEHLu@HDH[HX8H~HMHLHUH3LE@E3IH\$(\$ =tHKD 2Lu@ Lu@HMXIGHL$PIO\$HH\$@H\$8HD$0HnL gE3JaI։\$(HD$ @t#.@HgK DHUXIO5@HHtyH fHYHHHMHHK dHʠIW3ۉ\$@Dl$8HL$0HD$(LMHILDd$ tHKDMƹ "HHXHHMHAMt IHMXHt?H$H`A_A^A]A\_^]HHXHhHpWATAUAVAWH0L3MH!h HaMHX0HH~HL$A!.A!,$ةIMLY=I>HHH>L FAH͋H$A3H=Lbs)tu?u Ia.u?t]HGH[FIРH@AHD$0HZd$(HD$ [:HHu6%:9LD$p֋u|DHIG [fd$(ALHHωt$ lLD$p֋uDHLG HOH93Ht HOH9D$pL\$`I[Ik Is(I_DL$ LD$HT$USVWATAUAVAWHHx3HHI!}HH!}H!}HEAMHD$(H!|$ AE3L8Deh~DmpHUHN:9#HUHN8LHH ?H@HEHHVDl$@Dd$8HD$0LMMHL|$(\$ LEHAԋ}EuNAtHHHHHMӄt'HUEHULEHAԋȋ=!L}Mt&HMHXHpAIHeHNIq7]`L}XLHHEH I LuPHMHt 8HeHNHEAHD$(Hd$ E3IN7^t0A7LEHAԋȋyuHEDǹ HMHt7HuHt!HjHXHAHӋEHHxA_A^A]A\_^[]H EHDHHXHhHpDH WATAUAVAWH`E3HMDx HLHAHfD9HHHHI+HHfD9|EuHfE9|}uH3HHH?LHJL=HHMHILMHINLDHILHI$L$3H `VIH Hl$PD$Hl$@Hl$8IFHD$0l$(HL$ INDE5HHu5M5$D$L$HIΉl$(\$ L$ȋӋSuDHC $INH55HHt INH 5IoL\$`I[0Ik8Is@IA_A^A]A\_HHXHHUVWATAUAVAWHP3E3E3^AMLLHp$EAHPIStHJCD ɿL3II3LHu xWHt$@HHiHxH H$Ht$@LKH$HD$($LƋՉD$ ׋t HCD$At L0II3LHuxWHHL$@7HHXxH H$HT$@HӅt&HBDLƹ 賾D$D$$L$=€HL ut>JD DD$8d$0HD$(H$T$ LMIIu~L GD$L$H [HJ 8u3HˠHH HMt I2Mt IJ2H$HPA_A^A]A\_^]HAD 蘽HHXHhHpHx AVH ILHRENH13HHuxWVHHHf9D ޹LX.E3LHLEЍH[MAHtnEHHUPL,+HHH*LD1HMH-HUhDfuLHEIMHD$ vLEЋ֋EE3t #HHHIHHP,HHHuoD9eQE{EI;eE3HHuI?HIDLIDd$ LEЋ֋&MH=H+3HHCHEHULHuD9eEHULDH33fA\HݚHXxHIILEPIHELIHD$ LEЋ֋tu H1=4EDIDI͉D$ LEЋ֋>uH3=D zHEHt H+Mt I+EH$(t$`HpA_A^A]A\_^]HHXHpHxLH UATAUAVAWHHPDuP33!]!]MLLA,A/sAlcA SAFLEXI2+HH&E`t WHEu E L*II*HHtIHHZtHHFtWEHs*;E2HH&<H}u E!]HAEH}H>HnHXPHUhHMHLEӋ؅3}h@u@t5At Alw HHH6HMHALMH|$0H}XMIIH|$(Dt$ Y؅t-L :H:Lǹ D$ Ht HV)L\$PI[0Is8I{@IA_A^A]A\]@USVWATAUAVAWHl$HHHZH3HE0LE3LEHMLHT$xEGCHM3LMLuAAD}IAD|$dD|$`L|$hL}3L}IfC9fuI#3K$LHuXD$pO$3I芤L?:D$(t$ HuAILl'3ҁ|$`T$`uHULI%(3HVHL$hLuHUHt s(3HT$hMu-HMHT$(T$ HULEE3$L}3ҋ؅>LmIHL$xHD$hL HD$PT$HHT$@HT$8HELl$0T$(E3IHD$ '3҅t ^t2HEHtHL$xMHH'3HHtH9uoukO$3I=D$dLML9AIΉD$ (&HL$h3Ht f'3HT$h%HT$hHL$x&3HElLl$xH.HH9uHUMI&3HHHEHHL$pL$pHMHUHT$(HL$ LHULEHo3A9EHt8HX`HDHMLM3ҋ؅tHL$pHMHD$@HD$0HD$pDJHD$(DBD$ 0HL$@HtD91v HA8HAD90tKHMHD$@DJDBHD$0HD$pLt$@HD$(D$ AHL$@HKD91HA8"8uvHHLE3HL$@IHL$@HMHD$@DKHD$0HD$pDC HD$(3D$ 7HM;HL$@HD91HAD90HHHHfD94YuH]3HHtYHL$@HSLLAHM@tH-H2,yHHHI HtHHHI<HL$@HtIHL$@HIH@MIN948Ld$xH]HL$@HH]I4L96Lu\$H}E3HL$@Ht L|$@u HMu HMH\$hMIHEt;LM L|$ 2t*<Hm+Mƹ Dȉ|$ 軠D9|$dEt;HM ؅t Hc+:LT$P(E fEMtHUISLT$PHt$X@D9|$`!HT$hMMHΉ|$ AMt HL$x''HMHtHH3ˉHA_A^A]A\_^[]HL YE3HEHIHEHHHEHEL}HD$0HED|$(HD$ UtH*7HUHHuXW7Ht$X@LD$PHLHӉ|$ ؅t H*LT$PULy\H \IDH\DHL$8IDH \HL$0HD$(MHID$  ؅H#(bH\$Hl$Ht$ WH0HH3HHD$PHuXH H`H$؅HH )SHH3CHHQHHHHH HuYULn HLǃ HH7t'IHz)Lƹ Dȉ|$ ȝ3HL$P$Hl$HHt$XH\$@H0_HHXHhHp HPWH HHH#3؅udHH (HHHHf9,^uH3HKHHQHHHHH HuYHL$8$LHH݉(Hl$@Ht$HH\$0H _HHXDH L@HPUVWATAUAVAWHH3LLHEDHEȋHvHX0HIDEPHWHX8HzIӋMpЉEAAHHX@H5IHUHE3؅pHEHHHfD9u?A$AGAUEI؅kIHEPH@HAA $IуIHMAH{؅1HM'MHeUDSA;sLeIRH";}D+HEL$E$IL$DEHU#؅HMHN4I>u?A$AGAUEI؅IHEPH@HAA $IуIHME3H؅uSHMHeDSA;}s!MЋUBH."D HUHHEXNH<D3ۉH}t HM_HMHtH$HPA_A^A]A\_^]H\$Hl$Ht$WAVAWH 3HHEHH9tH9uHHf9QuAɍADHH;vj3IHHH HH HuYEHLELEIHLH I#HLH I Hl$HHt$PH\$@H A_A^_HDH L@HPHHUSVWHhHHguHHHX8HHLHuIZ0HiHMOE3ЉE%LELEELELEA@DELEtF^HȉEˉ]D9EgttuH OHMH GOHML9EouLMIIHl$(D$ JDH 8st4LMIItULH Dȹ ;HHfD9,_uH3HIHuxLHH辵AL\$@I[0Ik8Is@IA_A^A]A\_HHXLH L@HHUVWATAUAVAWHHPHDoLLHX0HaIHUI΋3HEHEDHED8E3؅tH`D H}Hu HHHHHnHXHHILMXLEPH3HUH|$(D$ E3؅t+MHDM 茋H}Lm LmHLIfG9D}uH}HHfD9OuHUXHfD9BuHEIL3K6H;I$HLIH EtI $MI0Ht HH3HHuX~M$IHHmHXHHHM@HEHO<6H jmHY0HHMӅHMHUr؅E3Hu&I3^HHM$IH/HuHHf9FuI $ILHt%O<63I$I I$HLIH۲I $LIHt HHH]Ht HH~lHHXHHHMHEHLEXI $I觱3Ht H{Ht HmMt I_H$HPA_A^A]A\_^]Hu뿻HDù HuH\$Hl$VWAVH HkHLHX0HH3Hl$Xl$PHykHXHLL$XDE3HӋHD$XHHf9,Xu]3ɋЉD$PH`HHtUHT$XLD$PLȋtLD$XHDȹ \$P3HH IHu LHHӰILHIL HUHjHHHHHHf9,XuH3HIH{LHH\H/jHHOHL$XHjHH1HH\$@Hl$HH A^_^H\$UVWH@H--H3HD$83HHHl$ Hu2HL$(P؅HT$ HL$(.؅utHD$ HHT$ HHf9,XuH3HHHuX6LXHHaLD$ HH艮HLs HwHuH9l$ t HL$ HL$8H3oH\$pH@_^]H\$HL$UVWATAUAVAWH03HIHD$(DHhMLHX0HHD3MLDHHD$ HL$HfA9luAAM|$IE3HHuFW^L$LM+IED$E;D$r DD$ AL$ …!H\$ $HH\$ t(D+D;r DD$ AL$ …H\$ H3HIHuZHgHHHL$pHE3HD$(HfD9 xuL$AD$D8D;/LRHH[M$IH脬AtAtII+MHHLqLD$(IHOtL$IH83H\$xH0A_A^A]A\_^]H(,3HHt#HH@f8\tHtHHH(HH H%HHXHhHpHx AVH 3MHHt.Mt)t#H9tHIt H;s߳Hl$8Ht$@H|$HH\$0H A^LI[UVWATAUAVAWHH`E3HLHEHHLm@LmPEHEALmHHHE@L E3ICEk3MkBtHU@HHpLHHHHQHHHfD9,xuH 3H?1LH$LHHL4HI%LHILHIHEPL >HD$0HEE3IHDl$(HD$ \tHUPHLHLHHHHt&HLHϋHAE8/uAL[IHHHt&HLHˋyHAyAWHt HaHM@HtHMPHtMt IH$H`A_A^A]A\_^]LI[IkIs WAVAWHPH33I![ICHICLHHHICL IC!\$(I![E33tvHT$pHLHLHHjHHu HgLHϋ*HA*A8u]3Lt$@MIHHHtHDHe؅uHIr3WHt HHL$pHt0L\$PI[(Ik0Is8IA_A^_LI[IkIsWH`3HAICHqL RICIC E3ICȉl$(HIkIk D$@D$D\t YH$HHt0LDHHHHHtHw;D@MHt HH$Ht(L\$`I[IkIs I_@USVWATAVAWHl$HH"$H3HELeo3LH!}3E3H!uH!u9uH /HIHMHMH}HMHMH]HMOEDEE9uwtAHuJH!t$(DL$ LEE3I؅tHD J}H}H}HrHHML E3HL$P!t$HH!t$@H!t$8HMHHL$0!t$(HMHL$ INE0D}t#<HLDȹ |aHUINCHtIINLHHHt1H3I$HuXHHDHR{3 Ht HbHt HtHMHt-HMH3eHA_A^A\_^[]@USVWAVHl$HH""H3HE/3HJHHEHE'AHEHEIHEHELHEHEEEH]E'0HEDE+H]H]LMHNEH HEHELMLEIEHEH\$ tEH]HNLE3HMHLHL$(DMƹ |$ zHM/H3dHA^_^[]H\$Hl$Ht$WH H]HHHX0HHLv]IX8HHӋȃu1>uu6u23.>u!utu >uȋF#H\$0Hl$8Ht$@H _H\$Hl$Ht$WH HڋыH33HHuxtHH<HIHuH\$0Hl$8Ht$@H _H\$Hl$Ht$WH H3W3HHt#3ɋHHHHHHH9xu0HHt=HHHt_H Ht&QH#t3H HQH!<H@HuH\$0Hl$8Ht$@H _H\$Hl$Ht$WH H33HH903HH 8HAHtRH8t63HH 8HAH HtHH 8HAHH<uHH 8HIHtHH HtwH3H$HHH94mH HtJH#Hl$8Ht$@H\$0H _LI[IsI{ UATAUAVAWIkHE3LzHHEE(HrH]HHR8HEHEoMICEkMkMkHEDL|$0L E3HDl$(ALmoLm'HD$ g unHMoHt cLmoHW8HL HEHEoE3HD$PDl$HLl$@Ll$8HEL|$0HDl$(LmHD$  uXNt `>HUoHHt'LGIHHWAH9GPAEt HGP HMoHtL$I[0Is@I{HIA_A^A]A\]HHXHhHpHx AVH IL HL3HHtHHHLHIHtHH\$0Hl$8Ht$@HH|$HH A^HHXHpWAVAWH@H`H`HXHDIHHHHd$(d$ LD$0HE3H؅HT$8HHH|$8؅PH؅HH LwHHHSIj؅IH SHHI3!IHQHIHHH HuYXLmÝHT$0HNHd$ LNLt FIEtLD$xHֹrHt HL$8uH|$0t HL$0vHt$hH\$`H@A_A^_H\$Hl$VWATAVAWH E3MHMu A@WHVM HX0HHӃtt 2H5H5yHVLd$`HXHLL$`AHӋuhHD$`HHHfD9$PuHfD9$NuHQVLyHLHKH@HHHd$8IH#HE3HT$0HD$(E3HHD$ Hd$8Hd$0Hd$(d$ E3I8EAHHHd$8Hd$0Hd$(d$ E3EA3HIIHM؅uHHl$XHt$`H|$hH\$PH@A^H|H\$WH 3HHtEHt@HA@HHPH@Hwy HGxH@HWH\$0H _Ht@SH H:[HK1[HK0([{xtHHKP CxH [H\$WH03Hud$ HE3HA@/u%HALL$@E3HHcu $Ou.H`LL$@E3H=uHL$@3H\$HH0_H\$WH A3IL-,<t3tHqK-iW*A9@\HH9IBH9A0Hh2Hs HH;nHH9tWIBHuC9t;A.HH9t'IBHu9t A-aw[HHu.'HHszsHH9D؋H\$0H _H\$UVWATAUAVAWHH`E3A)t$PIDHLmLm--6tHNxgWH =AD$uEDAu HF"D$u HTHr gH@HVDEu D $D (vH _EAu H"$u HA(HՁmfEu DuAAHMAEHREuIDuDL9mt>HCHu*D9t!A0He2(MEDwEu $ e( XH |ADDAu H"D$u HHIeEu DuED$@AHMAHQEDLmMHCHuD9t A.HHMPHYHMPHUHMTt+HUHMTtH%MŹ|dLHMIdT3ɃMPH3HAu(EAEDB)uTHHEubDu]HH9tPI}tIt>HHCED$HAEAu3E@TMPD8Eu+D $D (H 7uDH~EAu H;~"$u HJ~AHg~bEu DuDAHMAH9O~LmEMt9D}D!ePIIt3ALEGtEPEPI;r 3EuRDuMMtHHCHuD9t A-IHuH6bLHMIRE3AEHzHA7(EA)uNI^EuRDusI?tGHt=It/HHAA7EH&Du!EuEt$ (AHMRH$(t$PH`A_A^A]A\_^]AIu +DHF(3HHXHhHpWHPAHL@3IH-T$@AtLD$@$tA;t,L@L3uH|$0Hˉt$(Hl$ VH\$`Hl$hHt$pHP_HHXHhHpWHPAHL@3IHT$@AtLD$@$tA;t,L@L3uH|$0Hˉt$(Hl$ H\$`Hl$hHt$pHP_HHXHhHpWH@IL@3IHT$0tLD$0$tt*L@L3uLHH|$(l$ WH\$PHl$XHt$`H@_H\$Ht$WH0AHLD$X3HdT$XAtLD$X$tA;t'L@L3uHˉ|$(Ht$ ~H\$@Ht$HH0_HSH@H`H`H``HHE3HHEAHHd$8Hd$0Hd$(d$ E3EA3Hm3H@[H\$WH0HLL$@E3HH|uHL$@.d$ HE3A@HfH\$HH0_H\$WH 3IAtHyKu]W@QHHDًH\$0H _LWHPICI[IsH3ۃurHAHtT$`ISHH@D$(H|$0LD$(HT$8HH&fsf~uH\ \$`WH\$hHt$pHP_H\$UWATAVAWH0E3IDHL|$`AtH@\W2H uAHvDAu H w"$u HwH9w[HT$pHJ؅l$pEuhArayDHOHOLL$`E3HL|$`ظu L;tHKDX[<;u6@Hω@؅uArEu $(Mt I\3ۋH\$hH0A_A^A\_]@WAVAWH0HD$ H\$XHt$`MEHcHI!HHHᆳH3ϺTHD$PH iЧAiD$P +yHK@HcH#H9SHw HHH+HHK(HLD;x~ HI;u!}HCHD$PHD$P HD$hHD$hHHCHHH;AtTHX uFEttH :rHu)HH UI3 H\$XHt$`H0A_A^_HHLL$0AL`D$(HT$ DJJHHHHLL$0AL`D$(HT$ DJHHH8ILL$(T$ L`LH8H8AL`D$(HT$ DJH8H\$ UVWAVAWH@HH3HD$0HAHMHLHT$(ᆳH9GH2H(u3 HG0H+G(HHH;GHH(u3 HO0H+O(HHGH MHD$ HO@HG(LAHu3 HO0H+HI;s+Hu3 HO0H+HHW0L+LL$ HO *XHtSHW0HH+HL;s@J H;t7LH;tIIHHL;uHO0HG@H;GHs HEHG@HG@HwHHH+HG(HHHH(H;\( AᆳHcKI3HD$ H iȧAiD$  +yHcH#G@H;uHH H;OtwHG(HH;(u$LHG(I HtHG(HLII;tHGHSH HQHHPHL@HQHPHCHALCLGHWHHG(IXLDHWHLG(HGI9u IHH;rH;OtHHG(H;\(Lt$(HGHᆳIcH3HD$(H iЧAiD$( +yHO@HcH#H9wHw HHH+HHG(H\H H;tAH[9C~H;uHOMHeHC!}HIAF"HO(HHt HHO(H;tIAFIHL$0H30?H$H@A_A^_^]HWHHD$ HXHeH3H$HHMLBLHGHH+Hs3HHL$(HT$(HL$PHHL$PFHHGLCI@LH$H3i>H$HĠ_HHHWH0H@HXHpIIHڹ 7HD$@HtHHHHtH9HHHtH\$HHt$PH0_IH9s3vI@H;BwH\$Ht$WH HH`&H Ht H#HKHHHHHuHHtH\$0Ht$8H _H\$Ht$UWATAUAWHH`H9E3HHMEE 3LmCAʼnE0L9t,HUS2L\$`I[8Is@IA_A]A\_]HA@Ht$D9tHU0ȋE0AυxuH9\tAHHD\DHRH\L`I\AHADm0HtD9t HU0u0HAʼnE0HtD9t HU0E0DEt!D;tHDιQHHHtRAʼnE0D9tLHLM0DE0EtHQHAD9k XHCXDHUHEHC(J HMIHHD9uWLLD9htCL9ht=P3HHDGHWHYPGGG HK0BHC8AC@CDHHt HLMHGHLG M D$ PCD9C t;s ^T@UATAUAVAWHPHl$0H]PHuXH}`HnH3HEL9E3HAAAEL9HHt*D9tHUȋE@xF 9FDuHpOHHt]D9t HUb]HHt#AʼnED9t HU5E؅tHH9wuaH9xu[HHpHOHHHGH9yu9H98u4HHAHH96uHl$pHt$xH\$hH0A_A^A]A\_I)I)@UATAUAVAWHpHl$0HxHHHH3H0L3LHUDL=fIHHf9YuDIHE3DB:utHEfE9Dt Is븋HHH\HAILHu M+IA_8HH;v t_H;wTH HHH;rBZ#t9CHH;w HHCH+H|$0Ht StckHu;C;r+H=H$HHDHeapHHVH[AHOnHHRLHGHKIHGHEHGHBHG H?HG(H+HxHHH@A_A^A]A\]HHXHhHp WAVAWH0H`=DH@uH J!@2LIyHY؅HHHxHԍHHD$PHD$(EAHH\$ ׋؅uHT$PHt H,=AuH  @Eu D!$ $HA3DEt 0@uH ^ IHl$`Ht$hH\$XH0A_A^_HHXHhHpHx AVH HLIHX@AHČILDƋHH\$0Hl$8Ht$@H|$HH A^HHHXHhHp WH 3AH!pV؅H ֊HHHHXH*HLD$8VH BD$8uu3H]D$8ut#AH$uH'Hl$@Ht$HH\$0H _H\$Hl$Ht$WH $HHt3*A؅9u H qÉHH8t!=H >HHXXHHAHӃ=uH Qu_fLJ8tuEHGHHP HPHσ"LXMtA@HXA AHDHH\$0Hl$8Ht$@H _H\$Hl$Ht$WAVAWH0HH .A@E3wHHSH \LAt @tAG3D9$u @uIHX(HIDAH׉l$ Dt$up gAw1@uu $uu$t HH{Ht HK@HHu!$HH@H\$PHl$XHt$`AH0A_A^_H\$WH HH{Ht HK@HHu狇$Hω$$t 3H\$8H _H\$Ht$H|$AVH HH YHH HE3D( HHX0H؇HEFHH GADAVH΅Awt"LHMANDDq:HHцHt$8H|$@H\$0H A^H\$Ht$WH HH UAtHGW:W\LD$@3HW؅uGDL$@A3H臤؅u/H@tD3؅u3HtHH Ht$8H\$0H _HHXHhHpHx AVHP$MIHt r WH MHL$@H(%HHtG9t HHuHt.H$LL$@HD$0DHΉ\$(Lt$ DWHrKD8H H\$`Hl$hHt$pH|$xHPA^H\$Hl$Ht$ WH0IA؋Ht^LL$HLD$ iuHHD8W0H -LDËHaH ^H\$@Hl$PHt$XH0_H\$WH AHt tHq7WH ÃA3҉AutxxAut44r||u$$Aut H 03H\$0H _H\$WH t u[tVHHH7u (u  ut HHH;uHHuH\$0H _H\$Ht$WH HH AZu u SH# (tHH H\$0Ht$8H _H%H\$Hl$Ht$ WH0IA؋HtbLL$HLD$ yuHHD5W4H =LDH΋IH jH\$@Hl$PHt$XH0_HHXHpHxAVH0IMLHL@tH1Dùx4HL$(AHAHA@H3H\$@Ht$HH|$PH0A^̋̋$HH\$UVWH 3H@t$@@t$HHHHHXHHрHHT$H@8t$Ht`HHHXPHHHT$@@t$@u5@8t,@Ɖut@@H\$PH _^]HAHHAH̋2tu8HAHH\$Hl$ VWAVH@MAHt t"Au[t tIH }LL$hLD$`HtBH:DŹ2DHD$ 1WmI}uH1W9ILt$0\}HT$`DˉD$8HD$0DHD$<HD$ H  }H\$pHl$xH@A^_^H\$Hl$VWAVH@MA؋HtkLL$hLD$0ktH~Dù1n3Ʌu o%Mt^HtL LHE0HtLLHtHHщt$8HHD$0H HD$(HL$ IHEE3HEL9cSHMXLMpLE"zAD9eLepGE$IHHHMMtE3E EufI A@tZD9Et%HHtHItME3AEȉMD9E t)HE(Ht I HHItM E3AEȉM ILD$ HUAL;;uIE3AH AuAL9e8tD9uD9eADtDH Ht8HM\sLHUE͹E Dm$Ld$ 贰6D9e tAHu(HHusLHUE͹Dm$E Ld$ oD9euDetDmLmPELe@HE3ɍ~L9 AD9Kv{AHCH HIkE3AuMt MtH AL9 t6D@AIHA@tAԋHL9 uLe@AA;{rDH A]E3EEtbH;wWH HHH;rD%t;FHH;w HH%H+L|$@Mt AStckIu>F;r(H=XHrLHtHeapIMu jAI'iAHAHHD9c3H9tGH MϋQDHK$HH#EhHD$ B3ҋHAAHH9uE3u:HE@Ht1HUPHt(DHT$ PHKMEl$AAH DHMxE3MApibEuL9e8uL9e0t f MzHH]`HVKBHEXD9015"Mt[H;wPH HHH;r=t4FHH;wHH#H+Lt$@Mt AStckIuU3AjH]HHHux'LEHMxHgu#=iH]HtH Ht iL#`D9eEO̸D;uD.HHMLAt8LL$xDD$8LD$pHL$0HIHD$(H$IHD$ HHHHLI[IsWH0I!Ic IHIIKHE3ADE333E3EtAt Au HHLt|t^tLt"HtLHtqLhMtMHtL@HtKLBHt=L4HtLHt#L@HtL` MtM@LL$XHT$ E3IZHL$ HL$XHH\$@Ht$HH0_DE3EtdAtAurA+tftXudL[t4t'tt uFL=L@4L+L"L`tuLL@IH\$WH Hd$@HH lkLL$0LD$@HLD$@Mt HH /kH\$83H _HHXLH L@HHUVWH0E3IDT$ HHu.H|$Pt HGHHHtH|$hHuH_W LHuHDƹWLOu"ExH ЉD$ 5jHT$`LAH/|$ t H jt7H?u1t-HD$PH@HHtLD$`Lϋ؋H\$XH0_^]̋$H(HH;u HH;Bt(H(@SH HH HtdHKH#HtdHKHcHtdHK(HcHtdHc(H [H\$Hl$Ht$ WATAUAVAWH`3IIH$LDH8M/M1M#HDGHtIgu7DG8HL$ 3 H9>HT$ HYLt$0DHHfA9LcHL$`,JH5uHD+LD$`AIxHL$`IH<uH5=AH 7LAM+kJHy=zuAƂ H IH<ut0G< u'Oms  %LH MI;td$@Hd$ LL$@DgGHH3L$I[0Is@IA_A^A]_]HT$LD$LL$ SWHHHH3H$0 teH ;LL$hL$pHL$ Jx HH;wuƄ$$^t HT$ H QKH$0H3HH_[LD$LL$ SVWAVHX H KH=YL$AL$HAIx!HI;wuƇt&HƇtH=HHd$0DD3ҹ\$(HD$ DEd$@u3)H LHG ;G…xTHd$8Hd$0LP+ً3HK\$(HD˹HD$ D~H%HÀ<uL0uADDH'H Hd$ LL$@DH `IHXA^_^[H\$WH H$tH_HH\$0H _@SH HKHHHHt$HH [wH\$Ht$H|$AVH HLHH&A&H0mHHt%H`H` @LpHp(HAH3HtxHr(HHtFH`HhHHhHtHPH`HhpHzHHHIH3H\$0Ht$8H|$@H A^H\$WH ZHHOGHHH@HaH3Hu@LŪHH~$H\$0H _H\$WH H$tHoHH\$0H _H\$Hl$Ht$WH HUH3HHIHtH)Hi HoHwHtEH;Ht[HFH9ntHFHHXH^HuHHn n(HoH_HHK Ht Hk HKHt HkHKHt HkHK(Ht }Hk(HkHtSBHH+HK8HtGH?HoHG0HtH(Ho0HO "HO(Ho HO8Ho(Ht 3>Ho8H\$0Hl$8Ht$@H _H\$Hl$Ht$WATAUAVAWH0E3I؋HMuAXWH1@{}IIHfE94@upAL-UAHII@HHG HuH̙A(z%LHH"HO /CHHfD0IIHfD94CupIHII@H}HG(HtLËH!Iչ@fHtHW(H)IHGHuXHaHW H8t*W HCDD@<>Iչ0HHt$HGLqHHXLqLq Dq(HAIHOHuYHl^LG g؅tu HtuuDHנ@IՋJHHt L0LpLpIHWHuZkHOHGHBHJHW(t H HO؅u:HO8DE33D$ @5;us=HDWHl$hHt$pH\$`H0A_A^A]A\_H\$WH0HI3Ht[HIDKLD$@H\$ >{DD;w 9|$@ËH@zHWDǹ@dH\$HH0_H\$Hl$Ht$WATAUAVAWH L%E3HHEAEHHHfD9,BuHHIHuqW -ux HMH HMD@hICuHMHHMHH^LHttLhLhLhLh Lh(L8L@DHHUI0IXM`MhEpH&EEMIMMu ItHE0HIHxHYHAHIש;IINA<Iةu;t IE9ptIN5<Ifu-;t)IE9AH@HAIzAHMDGfI`HMDGgIFHOHtE3E33HLMuAwpHE0HIHxHYHU@HIׅt >IHXH.@IӅt%ھWMt7IHH @IMtIHH?IH\$PHl$XHt$`H A_A^A]A\_HHXHhDH VWAVH03AHH!xDG LD@ HH\$pH3H IN8HD$XE3E3 HD$ V6u8H}F3HD&9HHLAHH;HL$XD6E3H5u<8H].HL$Xd$ LL$hLú5u 8HUD@3 3)WHL$XHt h5Hd$XHt Hl8Hl$`H\$PH0A^_^H\$WH H$tH?HH\$0H _H(HHHIHH;tH(HHX UVWATAUAVAWH0E3HALhLhL9i pD9i(fH RH9Nu2H}@'HFHuXHD@ fD(Dv,EDl$pD;v(zAHF AL$M3A$$H HXHH<HNLF=,t<=/t.=v=v=t=t=t 3 HHH<LL$xMD$IHL$xE3؅u <l$p=l$pHt [Ll$xHFIcLL\H xDA+z u;;HFH xHHfD9,AuDHFE $IcL_A+H xHAHD$ S u;up;t&HFH xHHfD9,AuADD;v(>Dv,]IL$H$7@uL$Hh?+H1HAHt7H H;t+fD(HL$xHtWZL9$tH$o7H$H0A_A^A]A\_^]H\$Ht$H|$AVH a(a,HHx LH:AVINMN MF(ׅuIHXHr:IH\$0Ht$8H|$@H A^H\$Hl$Ht$WATAUAVAWH 3Hىy8H9y 9y(AH9y0u1HAHC0HuH@xHK0M3lL{0s,~HK0IGIH;wwHC L4MthAt^IN1HK0IDLeML;wLHH HyHH(31HPHD$8HtHH.H3HpHHD$8HtHHH yH3H~4HHD$8Ht)LHHE H^yHH3xH3HHD$8HtXLHH H[yHHLJ:LJȯLJxܙ 43HtMHHX8H4$D$(Ht$ DEIHӅtHHH4H3HH\$`Hl$hHt$pH@A_A^_H\$Hl$Ht$WATAUAVAWH E3McEHAA3wHEeLrED9NPt,HHX0H3HN`ӉFLHF`<NHHD9nPtBHHXHH3HN`H HY0HH3HӉFL<FHAuHN4/tZLDjD;uHD$pHt@FD7WYD9~PuHN`<FDF4AF;v?A"t9HHt L(LhDhIHF Hu D~PL=ѿHI׹0L+zHt*HLh@HHH T{Lh HHX(IHHtAF;w D{ENPDt#tt ttuF(@ Dn(F(D9n(t1HcN(HHHIH@HHFHfD(I׹HFHfD(D|$xƆD9nPt1HHxH1HN`LNAA׋A"~PtMHHXHj1HN`LNAAӋuMLFHHfE9,HuHF HLHHH2HxH1HN`LNAA׋t*Lй@tLչ@H\$PHt$`Hl$XH A_A^A]A\_̸ ;w?t5t,t#tt uLHA4HADHA HHAHAH9Át7t*ttt3HAxHA|HAXHATHttt3AA AAAHHXHhHpHx ATAVAWH 3IHDsMu AYW-IAD;QAA7AAAt8AYHIAL$(HHHXDpHGLH0HHlHXDpHG4HAHuHY(HY HHt'uALyhHû0IvHHHXDpHGDHAHAIDHA(H@wHY HHq8'HHHG HYDqHAHtQ8tHAHHf9huAH0HHtjHG>8tHAHHf9huAi(Hպ0HHt*HGHYDqHAHY(HcHtHHHA HHLyHA9u 9YLuADAHs0)HHvHXDpLxHX HX(HA jAAAAtLAt 2uH0HH7HXDpHGxHAHrH0cHHHXDpHG|H08HHHX@HGXHAHr_HF0HHHX@HGTHAHY(H 8HH^HXDpHHAHA0HpL HA(HLa 0H0uHt+H }HrHXDpHX(H@ HHHHHH9ADHl$HHt$PH|$XH\$@H A_A^A\H\$Hl$Ht$WATAUAVAWH@3EHHHuzWHR@ E3L=!~PE'uAtO~PuAtCHH=HXH*AHHPHH*LEAH׋u2AIIcHrNDHT$0<HF4D$0WZL%McC,Eu L5ʉuL5HHXH6*HG MƋ׹@HD$ tH@L\$@I[0Ik8Is@IA_A^A]A\_H\$Hl$Ht$WH HAHHX03H)HөuuWHHXHH{)H9uu 9tHYHXXHD)DNjHӋH\$0Hl$8Ht$@H _H\$WH IHHmHH\$0H3HHfHHHHHH _H\$WH H$tH蟾HH\$0H _@SH HlHHHiHHtt>"HBHH [̋-t`tS-tFt9t,tt#H:H1H(HHHAPHH̋-tLtBt8t.t$tttE32A(A"A AAA AAAAHHXHhHpWAVAWH@D$H$ADpHhHE3؅u 4u?Hu1]WLӹ@dHl$hHt$pH\$`H@A_A^_ED8"HsDL|$0HXHR&HN`LL$0AAӅuHL$0Ht2 ~Pu DKHHXH%HN`LL$0AADuHL$0HtHl؅)tF tHt t9t;u#ftttt fDθH\$WH HH3HtTH)HHtn@8tKLMt?MHHHIHHtC5UJHHuLǃǃUHHt蝺HrϿHHDϋH\$0H _H\$Hl$Ht$WAVAWH E3IHAMu AiWAM1A--;t_t %H8bHHL ohLpHHHH0@LLx L9HH(D8tHHHfD94XuH70HHLp@HHH CjLp(HHcHHH `H8LHt8HHcL gHHHH0Lp@LHP HHH(MLD8tHHHfD94XuHg0HH+HA0HH@LpHHH ]hnH0辿HteHNPH0袿HtIHHͮ0胿Ht*H@LpHHH fLp Lp(HIHL97u2AEH\$@Ht$PHl$HH A_A^_H\$Hl$Ht$WATAUAVAWH0ELLD3H5:A~Pu>tCIH=HXH IHPHH DLAIDuHHcHrFIHcHXH HI΋H L7D A׹@HD$ 1H\$`Hl$hHt$pAH0A_A^A]A\_H\$WH H$tHOHH\$0H _@SH HTdHHHt Ht HKHcHH [`@VWATAVAWH0HD$ H\$`Hl$hMALE3AMu AyWM!AdAhAiD8tHHHfD9$Xu3H00HHt0ILaAHALa(H9fHHcHHA IIgH߫0蕼HHD$xHt:IHXHILfFHFLf Lf(HOgHII6EM9&u 2EH\$`Hl$hH0A_A^A\_^̋ƒdtEt8t+tt1H+H"H HHH̋ƒdt,t"ttUA A A A AAA@USVWATAUAVAWHHhHvH3HEHEhDepEDd$(HHHD$ NHNH[oHDE3HFHtLúH-AF D8u8HHOf虺HHuxfD(A"HòHxHHN`LAiA׋LmEdEeEfEgEhEL}HaHXHLEHN`LMAӋuIL9mtCHHXH AHHMȋHMHtAILmIcHrHMH3蟸HhA_A^A]A\_^[]H\$Hl$Ht$WATAUAVAWH0ELL63L5}A>itCIH={HXHfAIHPHHNELAI׋uIHcHs@IHcHXHH5}IϋD Lzչ@HD$ H\$`Ht$pHl$hH0A_A^A]A\_H\$WH H$tH述HH\$0H _@SH H|^HHHt Ht jsHH [HHXHhHpHx AVH E3IHAMu AYWAM1- t}t D8tHHHfD94xu2H0tHtpHLp@HHH `Lp(HHcHHH CHx0.Ht*HLp@HHH bLp HLp(IHL96u 2EHl$8Ht$@H|$HH\$0H A^̋- tHH̋- t?A AAAHHXHhHpHx AVH0l$hAHhHD$`HD$ [E3D8u3HqHFANdHHuXAfD0;"t6H&HxHHN`LA!׋؅uDHl$HHt$PH|$XH\$@H0A^H\$Hl$Ht$WATAUAVAWH0ELL63L5syIH=HXHlAIHPHHTELAI׋uIHcHrRIL5yHcHXAIHcHXH,H5qIϋD Lnչ@HD$ H\$`Ht$pHl$hH0A_A^A]A\_H\$WH HH3HLVHQHHLHLJHHHHLJHHH H>VHH@L(H0LJ8HHHPHpH\$0LXH`LJhHxHHH _H\$WH H$tH迣HH\$0H _H\$WH HPHHHX]H(QHHCUHK0H_H/H#HH\$0H _!@VWATAVAWH0HD$ H\$`Hl$hMHE3AMu AiWM!A-[- ? %t Hk0!LHD$xHt^HXHHZHA HHcHHZH) HMgAGIGMg(HASIHHIG MH8蝩LHD$xHtbHHHZH HHcHHZH HMgAGIGIO0IO(HaPIHIG HMH_0LHD$xHt^H(HHZH5 HHcHHZH HMgAGIGMg(H5RIHHIG MHޗ0蔨LHD$xHt^HHHZH HHcHHZH HMgAGIGMg(HQIHHIG MM>HW8 HtvHL`@HHHH0HH(HOHUHP HCH 0Ht*L`@HHHL` L`(H PHIIM9&u 2EH\$`Hl$hH0A_A^A\_^H\$WH -tptcthtc- tS tEt"ttIHXHH(HHXH6 HHHHH\$0H _̋- tAt8t/t$tttE3%AAAA AAAAH\$Ht$WH0D$hAHD$(HD$`HD$ $t^"փt<t.t tt)tt u-HXH(HHE؅u3"t.UJHHuHh@XԺHt$HH\$@H0_̋P9Tu09u"9u9u3H\$Ht$WH H(HHHXHGHHXHHXH+HHHHXHHHHHXHHH\$0Ht$83H _H\$WH HH3HIH NHHHLJ,HHH=HHHH\$0HLJ/HHH~H0H8H@ HHH _H\$WH H$tHHH\$0H _H\$WH HHHHH@tHtHHHt#Ht蘛HHHt臛H0HtHHt]H'HgH\H(HHH\$0H _@VWATAVAWH0HD$ H\$`Hl$hMHE3AAMu AiWM!0D;}&A-,t D8tH@HtHHfD9$Xu@HN0HHH@LaAHALa(HSKHHcHHA ~H8跡HHtbH0LaAHAHI6Hɐ0HHt*L`@H HAH^JLa(La HIIED8tHHHtHHfD9$Xu@HO0HHtHHA1AA 7AAdH0蟠LHD$xHtgHHXHHHcHHXHHMgAGIGMg(HIIHHIG MH\0LHD$xHtgHHXH5HHcHHXHHMgAGIGMg(H)IIHHIG MM>H̎0肟HH)L`@HGxHALa La(HFHFH|02Ht*L`@HHHL` L`(HFHIIM9&u 2EH\$`Hl$hH0A_A^A\_^H\$WH 0;wHt=-,t+ttt1H@zH0HnH eHH\1tMv v7tuHHHHXHmH HAxHH\$0H _̋--tTtJt?t5-tDt$tttE31A'A!AAA A A AAAHHXHhHpWAVAWH@$AHhH$HD$ F؃":L5I3E3Ht L8LxDxIH0HuXD8H?L|$0HXH%HO`LL$0A1Ӌ؅HL$0HHL8L|$0M>HXHHO`MA-Ӌ؅]IHQHHfD9HXHeHO`MA.Ӌ؅M9>HBLHM>HXH#HO`MA0Ӌ؅M9> tEt tAAAD8tHHtHHfD9$Xu@HɃ0HHlHLaAHALa(H=HHcHHA <Hy8/HHHLaAHAH<H:8HHHLaAHAHA0HA(H:HUHQ HH8蚓HHHfH0qHHtbL`@HHAHP<6H09HHt*L`@HHAH;La(La HIID8tHHtHHfD9$Xu@H 0迒HHtH?AA pA A <AAxH8LLHD$xHtkH`HXHoH`HcH`HXHOH`MgAGIGIO0IO(H9IHIG HMH8軑LHD$xHtkH HXHH HcH HXHH MgAGIGIO0IO(Hv8IHIG HMHt0*LHD$xHtgHHXHMHHcHHXH-HMgAGIGMg(HA:IHHIG MH0蝐LHD$xHtgHHXHHHcHHXHHMgAGIGMg(H9IHHIG MM>CHZ0HHL`@HGxHAH7DM9&u 2EH\$`Hl$hH0A_A^A\_^H\$WH ;;tuv[;tCv)tHHHHHHH}Htrg vY t3 t"tu?H`H HHHHXHH HAxH\$0H _̋-tstht]tStI-qt^t9t.t$tttE3CA9A3A1A'A!AA A A A AAALI[IkIsI{ ATAVAWH@H$D$AE{ICH萻E3؅"DpH-|HApHt L L`D`IHHu HI:Ht L L`D`IHHtD8HQLd$0HXH7HN`LL$0AAӋ؅^HL$0HP HLLd$0M&HXHHN`MAAӋ؅IHHHHfD9$JuHHLHHHHM&HXHqHN`MAAӋ؅IHHfD9$iuHHLHHhH(M&HXHHN`MAAӋ؅9M9&0HLM&HXHHN`MAAӋ؅M9&tKt>t"tt:t-tHH衲؅mH`H 耲؅LHչHHu H0NTHչfD 轊HHu HZN.fD L9u0UJHHuHrN@跟Hl$hHt$pH|$xH\$`H@A_A^A\̋9u09u"H9Lu9u3H\$Ht$WH H`HHHXHHHHHXHHH HHXHHHHHXHHH\$0Ht$83H _H\$Hl$Ht$WATAUAVAWH0ELL&D3H5FMAu>uCIH=NHXH9IHPHH"DLAIDuHHcHrSIL%LHcHXAtHY}HH\$0H _HA0̋A8A̸̸HAHA(H=0H@SH H#0HHt|HH [H\$WH H tHo|HH\$0H _H\$Ht$WH HAHHpH~1u HWH H?H|1HtHCH@HCHcHHCH@HK{HcHcH\$0Ht$8H _HL$SH0HD$ HكaHaHaHQ H.H}HC8@1HC8H@HC8HHC8H@Hc@THCP@1HCPH@HCPHHCPH@HcX+HCh@1HChH@HChHHChH@HcpH@1HH@HHHH@HH@1HH@HHHH@HC(-HH0[H\$WH H, tHozHH\$0H _H\$WH H tH/zHH\$0H _H\$Ht$H|$H:I03LWLFAAMA;r'v#II+MIF E9rw+yۊEE; r#wAM+EM@G E9r wD+yuu F9GH\$Ht$H|$HHHHAVH@H@HXHpHHAHH;t`HK(.y{1tHd$ E3E333軅4HCx1uHHx1tHC H;Xu HH@x1tHH;^uHt$PHFHXL{1u!IVH3 M6HxIA~1tHFH@HfHFHHFH@H\$XHt$`H@A^H\$ UVWATAUAVAWHHpHR;H3HE33EE3LLEEEEEEE-E.E0E/E1E2IHXHBT5Iӻ@HtFD5IW EIHD$ VuIHcHs"HcLIDˋDDL؋׉D$ tLpD׋HMH3}H$HpA_A^A]A\_^]HHXHhHpHx ATAVAWHPH`HvLHX0AEHHHL$MuH D@A~W葓2H$I&HtH#HD$@EDHD$0Hd$(HỈt$ ;Ht$@H路d迹HuGtBHt=HH$3H}HH+H H$HHtJH$3H}HH+H H$IH5CD@|HtHHHlHӅtL/C׹@L\$PI[ Ik(Is0I{8IA_A^A\HSVWATAUAVAWHH@H08H3H$EEDD$@LLH$HD$X3H|$PHtHX0HIӉD$`H9|$XuDwWHB@葑HL$PHL$0H|$(Dd$ EDII9DL|$P}I˭؅;H>kH{HHt 8HxHxHHt$hHuDvLNBAֹ@蹑ID$`uKtFHAEԩu2A1t,H|$HHH}HH+D HHHD$HHFHoH|$HHH}HH+D HHHD$HHFBDB4$H$HD$XLhI]IA@8{1u9HHSAH$uAEtHH[@8{1tHD$XHEtoI;uu%H$HL$ LAHT$pH@8~1tHN8H@8x1uHH@@8x1t HF H;u HH@@8x1t@8y1HDHAH$Ȏy"H$HD$ LEHT$xHL$X>HH|$hDl$@Dt$@L|$PHt$hH\$PHl$`H0A^_^H\$Hl$VWATAVAWH03EMHDfHt$`HqMhHmHX0HtIDN3I֋HD$`HHD$(DD|$ X.Ht$`"L3E9aTuXEAXEuAJAQPtBt8t4t t,t u*AQLAQLttuE;tAuE;3AE9aTuuAHT$8HD$0LHD$ I@2l8O!tHW4H8H!uHH@8H!tHG H;u HH@8H!t8J!HDHLD$0Qt EHT$@HL7@&AHL$`H3hL\$pI[@IsHIA_A^A]A\_HHXHpHxUATAUAVAWHhHHaHHMHX0MEHˉUHLaIDHHLEIHHE3PHEHEHEEHEfEL}DELmL}At1t t~2H3AۃAۃ! Aۃ HUHMHEHD$0HEEHD$(EDÉD$ @t"Hk3DEĹ@2}Hu_HuHHXHHH΋GtL5й@~!tDH5@=}Mt ICHtHHHHӅtL5׹@}L$I[0Is8I{@IA_A^A]A\]H\$Hl$VWAVH`H_HAHX0HHL _IDHHH$4HHd$@d$HHd$PH$EHD$0HD$@DHD$(Hf|$Xt$ M?H$@tH1DEƋ͍{|UHHXHHH΋$FtL74Ћ|UtH84DË{HtHHHHӅtL=4׋4|L\$`I[ Ik(IA^_^@SVWATAUAVAWHHD$pHi!H3H$EDL$PIHD$hT$4HL$@H$HL$`3E22ۈ\$0@2@|$1DNDF HT$xHG3҅u3L2EADD;d$x:LD$8AHL$h3҅ L|$8HD$`HXH{L HWLD$8n3҄tHLH?8W!tL;t MFHT$8D3҄u Lt$HHD$H H\$XHD$XH9t AHqRIO_3҄tArHD$8H5t95t0A5t\$0uDt$1Aވ\$0Et AE\$0t @|$1@t t$4E\$0@|$1Dd$4L|$@EtEAI}3҅tAAI\3҅e@tAAI:3҅CDLl$@D;|$x,LD$8AHL$h<3҅Ld$8HD$`HXH{L HWLD$83҄tHLH?8W!tL;tMFHT$8u Lt$XHD$X H\$HHD$HH9t AHPIL$3҄tAnHD$8H5t05t'A5uAFuA AAfD$ ML$DD$PT$4ItEtL0ֹ@dxH$H3ZaHĐA_A^A]A\_^[HUATAUAVAWHhHHE/HXHpHxELHE3Lu'LuALuLuAHE@!HEH@HEHHEH@LuAHE@!HEH@HEHHEH@LuHYHX0HIӉEL%:H |:LELM'EIHPDH}'AHYHX(HwHEHD$PH|$HH9HD$@Hd$8H9HD$0Hd$(H9HD$ L 9MAID=uqHME3HtUtKD9uuEMt@HXHHLt$0Lt$(Lt$ M $EHUID=uAE3E$E3EtL.Aֹ@HvE3HMHt*LMLEHU#uûDL.HtLMLEHU#HtLEMtHUILEHMHtHU|LEHMMt%HEHD$ AAIDu5HMHt,EAAD HEHD$ LAIUDE3HWHHHMHt HEtL.Aֹ@uH}HH;uKHwHD8f!u%HSHM&HHSWHD8c!tH}HLeHEHHEH@mH;tlHD8c!tLd$ E3E333c4HCD8`!uHHD8`!tHC H;Xu HH@D8`!tHLHUHM H;uH}HVLeLeHEHxHD8g!u%HSHM%HHVHD8c!tHEH@LeHEHHEH@HMVVAL$I[0Is8I{@IA_A^A]A\]H\$Ht$WH HAHHpH~!u HWH1%H?HU!HtHCH@HCHcHHCH@HKUHcHcH\$0Ht$8H _HHXHhHpHx AVH EHHHtuHtpHTUHX0H?Hөu O Ewu 8Ft tu@HUHXXHDAHWH\$0Hl$8Ht$@H|$HH A^H\$Hl$VWAWH0d$PAHA@HuyWH8+A|qLD$P7tLNLF+A rY |$PH~ t)#D$hTD$ d$ D$hH THXPHLL$hAgHӋt L*4HSHXPHýHNLL$ AhӋt L*@HVDH HSHXHzHNAӅtIL*Aq_LFH2*AϿ9pI|$Pt&HVDH1u-HLFH*AϿotL*ApH*AoH\$XHl$`H0A__^H\$Ht$ UWATAVAWHH`HH3HEHRLEHX0H3HnHDAǃdHYRHX8HDHEqEEEEEEABDHQHX8HHH}sHEDOEHD$(HID|$ Ɔ8LuDu*IHtADHUЉ<A4HE^PMtIHHfIAcHXQHX0HCHHMAHL$(IDHD|$ (HuDHtHHHHAHMH3WL\$`I[@IsHIA_A^A\_]H\$Hl$Ht$WH HPHHX8HHLPIX0H|HӃtOt#uT̓tat^t u1PKttt>t8!t u $ tt t3H\$0Hl$8Ht$@H _HHXD@HHUVWATAUAVAWH03LE3Hx HO3HX03HIDtuH5/o H5/E3ItaDHL$pH$HD$($EIՉD$ 8H$Du3Ht"HHH AWH3H$AHD;rHtHHHָHAH\$xH0A_A^A]A\_^]HHXD@HHUVWATAUAVAWH03LE3Hx HN3HX03HjIDt tu#H5.H5.H5.E3IXtaDHL$pH$HD$($EIԉD$ H$Du3Ht"HHHʷAWH3H$AHD;rHtHHHHAH\$xH0A_A^A]A\_^]H(Ht=Ht89sH%A2j0HhH )MH3AWH %AHjWH(H\$Hl$Ht$WATAUAVAWH 3EMLHu HQ% HHf94yu_HcH Af9\tf9/t HC3+HcHtLHuxHz%HcIIH,LhG3HcfA4/HU(-HHuHn%@xiV3HDB(YHcHN(HIVLnLHHN8hHFE3AN@HBfD4tSHHt(HLsLsLsLs Ls(HLs0Ls8IHuH %@{hhHK0HtH;t cLs0l$pHs0MHˋHwntL$й@hHAt %Ft FFEċH2t L$HD$xH0IHt!H6HtHHHHIHl#W@gH\$PHl$XHt$`H A_A^A]A\_H\$Hl$Ht$WH@HHHAH AAtH$@{ gYHS H ;$AtL$$H%$@{fHD$pHKDHD$(Lʼn|$ Hl$XHt$`H\$PH@_H(HtHt H(H#@dfWH(HUATAUAVAWHhHHEHXHpHx MDHE3E! At$@H 7FHGD!eWfEHEH^HEHE@p1HEH@HEHHEH@L!eHE'@p1HE'H@HE'HHE'H@L!e/E,EHHM|؅tL?#й@fHEH9G DEHWHJ ؅utHEH9G WEgukE3HugD9&uHE >u!HEHD$ EDHWH"؅u(AHIcHrE'AuHEHG H D?@EH"uH"dtL"ӹ@;eHML$I[8Is@I{HIA_A^A]A\]H\$Ht$WH HHH dDAH"@dHtE3DHHWL"@dH DaHt$8H\$0H _HtOH\$Ht$WH H1HHtHHHHH'HH\$0Ht$8H _@SHHD$ H{ H3H$MAMuH!@ cWDDHL$0u;$IHL$0?ytDH!@bHL$0ǁP؅tDH!@bHHD$0HL$0uH$H3=LH[HHXHhHpWH0H` HTEHHX0AHH6HHL$XA"HL$(HDH։|$ tL!й@bH|$XHtHHHݮHH\$@Hl$HHt$PH0_@SH HHXHt&HKAE3AQkHxiL!Dˋӹ@bH [H\$WH HHxHtBHWE3AHyHiHOfDJDB%HhL Dˋӹ@aH\$0H _HHXHhHp WATAUAVAWH0E3HED!pHCD!t$ HX0EHHxHӋHuH} @_WT`EuH؅DpHT$`H؅H"CHX8H HDEtgu)t$HALI<u؅H؅[EHHDp?؅tlL&EHH؅t LEHH؅t LEHH؅t L|$`uAH؅D$ EtH؅t Lv/E3Et5H<ALH^؅tILй@a_0A.u As uEHH؋D$`!L$ uEt|HpEtkHLpMtDIVDAI+fINfDJDB:IfLD΋ֹ@^u99\$`uF9\$ u@Ett7AH؅t&Lй@m^Lӹ@Z^Hl$pHt$xH\$hH0A_A^A]A\_w3MuAAWÃuJEtA HHXHpHx AVH@H`MMu AxWA HuyWH*@\HD$`E3HD$0Hd$(T$ HQEA'Ht$`tH@\vHHXHHH΋&tLeй@)]HHXHcHI%@xu.I>HHX(H-HH1L[N蛁gIIHHtHHX(HͧHRIHHt-HHX0HHӋt4L)Ћ2[H*fZtLG*֋[I>HHXH;HIl$uYt$誀$DHY_I>WHHX(HHHLY3LЋuZD멽@H:WYt3HDƋYMtIbtIHHHteH\$`Hl$hHt$pH@A_A^_@SH0Hd$(DHQHA A,HD$ ؅tLй@YH0[H\$Hl$Ht$WH AHHAu utuDHHGHt!H;HXHAHH\$0Hl$8Ht$@H _HHXHhHpHx AVH AHLH0;HX0HHDHI΋ugu_tZDHI)uFut*u H:HHHӄuuE3DHIo H\$0Hl$8H|$HHt$@H A^LI[IkIsWAVAWH@H$AALHHH$IsEICЋ$DÉD$ 3tHDDŹ@VzH>HHXHHH!tL й@qW=@}H D@VH@WvVt`Ht%L>MtIHHZIH&HM Dǹ@4VMtIS_tIHHHtaH\$`Hl$hHt$pH@A_A^_HHXHhHpWAVAWH@H` H8LHX0EHHHAHՋHD$xIHD$0Hd$(DDt$ H|$xHq{t HLAHtH"D@1U=u5t0HtHHHHELI34HtHHHHH\$`Hl$hHt$pH@A_A^_HHXD@HHUVWATAUAVAWH@3LE3H!p H73HX0HtIDtuL5{n L5kE3$EH$H$HD$0Hd$(EIՉ\$ H$Hipdt#uzu`ELNjIuAHt*HHHHӋ$3H$AID;RHH D@gSHtHHHWHӋH$H@A_A^A]A\_^]HD@HPHHSUVWATAUAVAWHXL3AH!xH6HHX0E3E3HHDD$@t!tu%L=AL=L=A!$EEHD$HEHD$0Hd$(HI͉t$ nAAE3tRуt6t*ttt#tt u`{tmA`t2t'ttt!tt u.70뺃 tt tt3 /,H4HHHӋSLt$HIH!Et@ HEHXH=HH 74Hy`HH$4HEH=4HXHHHhHHH$LDH׋ulI9mNMt!IHHIE3Lt$H$IÉ$A;Dt$@$L$LFDι@PRLH{@W P/HLtDHHL$(@Dt$ PLt$HMtIHHߜIӅtL׹@vPHXA_A^A]A\_^][HH\$Hl$Ht$WH HBHHH;t+Hw2HxHbHKAHH9^uHFHHHFH@HfH;NtHF2HH;^uH\$0Hl$8Ht$@H _@SVWATAUAVAWHHD$HH H3H$MEDLH$0H|$@3Ht$0HD$0HD$ MEAI؅uMAHL$0HHD$0HHD$8HwLL$8LFHF HHGHH+Hs9H=HL$POHT$PH$HHH$?HHGHVHBH3 \$8H|$@Ht$0DޅtH׋Lӹ@[NH$H3Q7HA_A^A]A\_^[HHXHhHp D@WATAUAVAWH0L$3IDHDMtHuH@#MI6LMuH1@A_WLHnidu ps؅t L#IH=/HXHIHHHMLAH׋؅t=t LI96IH=h/HXHSIIHZHH6IHHHD|$pLLAHLt$(D|$ 3؅tLpй@LpAuAt I@8U9u&9t$H.HX0HHӃuAH.HXXHIEAӋ؅ttLӹ@ LHl$hHt$xH\$`H0A_A^A]A\_HDH D@HPHHSUVWHxH@3H!l$H33H-HX0HH$ӋDH@Jt-tu7HH\$H}+HH\$HHH\$HH\$HH!t$XHcHD$`HL$5HHD$PHtHFHf3@HDDHDJD$@Hd$PHL$PHL$0Hd$($L$ ADH$H$NH|$Pu#Ht$ LD$T$@H$HtHHHHH\$HtDH @UIH~'DH@.IHFHH;$H{H|$PDHH$eD$HH$)7HD$Hu'8t"D$HH$SH+HHHL$PׄtJHD$Hu=8$t8$uu)DDHT$PH$$HH9^H֋qHFHHHFH@HfH;NtH+HH;^uHN*HfH*3HD$XHHD$XH\$HHH\$HH;D$`}RQDH"DHDHf DH @lG"Hj YGH$ƀ8HtNH֋HFHHHFH@HfH;NtH8*HH;^uHN&*HfH*tLfչ@GHx_^][@USVWHl$HHEHH3HE'DMDEHUHM3HEH@HH!uH!uH;CEHC(HEHk)HHSLMLEUHM׋3HUHJLUI9J @EHeHeHeEHEHD$0HEHD$(ED$ ADEHUIeH}H}u|HEHD$ LDEUHM7uZHEM<HtHH8HVHM3H}DEHUHMtu2DEHUHMHtHH8H;HMH}t"H*(HxHAHMׅL ֹ@E RDEHUIEMDH'HHHMׄEu6Hf/HEHtHUH蛫HEHeFH'Ht.HHEHE3HHEwHwHwHG H;HHG8@1HG8H@HG8HHG8H@Hw@HGP@1HGPH@HGPHHGPH@HwXHGh@1HGhH@HGhHHGhH@HwpG(0H!uHuHrHHxHNDEHUH׋EEEEE!EHMHMEHEHHxHUHMHt$HD$ DMDEHUHMEEHMHHMHHrHEHH8HHMHeH~%HxHiE33HMׅu|He{1tHd$ E3E33324HCx1uHHx1tHC H;Xu HH@x1tHHEH;Xt/zL~ L L ֹ@BH}Ht!H$HXHAHH}HtHHHHӅtLd ֹ@ BHM'H3+H_^[]HL$H8HD$ #HD$@HtHHHHtHH8HHHWH0H@HXHpIIHڹy#HHD$@HtHHtH8HQHtHHHH\$HHt$PH0_E3HLALALALA LA(H0L8L@DHHXL`LhDpH[LHDDHLLH\$WH H$tH"HH\$0H _HHHWH0H@HXHpHHHHHtHHHHӐHHHH\$HHt$PH0_Q̋'D;P3ɅC0tà XtLAAAAD+tD;AtJD+t6D+t'AtD;ov l bX Njt^A>A/AA\AgATAtD;AtCAt4AJA^AKAVA/ AA+AtqAtfAtZD+AuBQ")p+{At&D+tAt At AA AAHHXHhHpHx ATAVAWH0L$AELHMuH @AnWHtHHHWHI&H\$PHt$`H|$hHl$XH0A_A^A\HHXHhHpHx ATAVAWH0L3EILHMtIHHچWIHHuH@}W9HHX(HHDD$pLHD$xAԉD$(HHIDDHD$ H*OHHux.H BHH*IOHυJ|H\$PHl$XHt$`H|$hH0A_A^A\H\$WH HH'u HHSH\$0H _H\$Ht$WATAUAVAWH DDLH}3@c8IHX(Ht$PHRILI98tI8HHXNI8HuI@AHIHH"HHHpI@HI@HtHHI8AHI@HYDA9t$MI\$AIHpHDALL$PI3H\$PHRH "HHpI@HI@HtHAI8AHI@AHXE;l$\DA9t$ MI\$AIHpHуDALL$PI֋H\$PHHZ!Ht!H`IhHIhHt0HA1H|$PnID$AD HM$@L6nI`ApIhAHXE;l$ sK6ID$AHD IHHtHHHHӿH\$XHt$`H A_A^A]A\_@SH HHt,~#yHoDù@53H [H\$WH HOHHtHeHH\$0H _A!t\t89t!t(DA A A tDAtDBAE3A ~(~DAAA wAo"tIt<t/t#tt uODAIAAA9A1A)A!tt uDB AA A̋ Jt@t4t(ttHHHHHuHÃt4t(ttHlHHHlH<HlÃGt= t0t$tt uAHXHHHHHÃt'ttt3HH,H HH\$WH HHHtHeHH\$0H _A"- tdtMt>t/t tDAAAAA A t>t/t tvDB mA bAWALAAt>t/t t(DBAA AAE3A ~0~AAA At:t.t"tt uDByAqAiAaAYAQ.tFt:t.t"tt u4DA!.A &AAAAAA̋ntdtXtLt@t4t(ttBHaHH!HHHiHH1HIà tXtLt@t4t(ttHTHHHHHDHH H<ÃktatTtHtt. H~AA;7EA.A #A t/t tDB A AA t!A+tDBAAt A+tEAA{E3vAn"t< t/t"tt uSDAMAEA=A5A-t"tt uDBAAAA̋ VtLt@t4t(ttH HHyHIHH)HaÃt4t(ttHHHhHHHÃGt= t0t$tt uEHHH|HLHHÃt3t'ttt3HHHHH|H\$WH H?HH tH HH\$0H _̋RtHtHoLdHHuf8H LOAHc؅uHH LO D@c؅t=~ u H cHt$8H\$0H _3ttttt tWH\$Ht$WH 3HDB(I&HgPgXg\HRHO(HGHGHy`GHG @w薍 H\$0HHt$8HLj H _@SH HH(eHKPHt  HcPcXc\H [H\$Hl$Ht$WH HHHuWb9t[9Hu39y@~'3Hx_;{@}ZHC8H phH;{@|HK8Ht Hc8c@cDHKEe#3H\$0Hl$8Ht$@H _ú萐HHXHhHpHx AVH 9HtLHqH;qs5H.Ht#Lu MtIHXHjIHe HH;wrHO d'H\$0Hl$8Ht$@H|$HH A^@SH HAH_HzHHH [@SH@HH?tHhhHtH@[Ëu!H H ; HHL$ aHHL$ H%g@SH@HHtHgHtH@[Ëu!H qH ;v HSHL$ aH*HL$ VHHD$ HiH3H$HvHL$(I^HT$(HL$PE\HHL$P HHD$ H H3H$HsvHL$(]E3HT$(HL$PdHHL$P H(fHHHuH 3H(HHXHpHxL` AUAVAWH 3ML!DeH%0HXH;t/a3HluAt L5QMtiH5UMLHI;rtHH>HgH H"L;uL;tLLLHIyeH=H==EH= 3 eH%0DHXH;t>`3H{uAt  dH]L-]kI;s(uH3Ht HfHI;r\HU]H \Eu HHH9=At-H 8k tH(H7fMǺI$H\$@Ht$HH|$PLd$XH A_A^A]H\$Ht$WH IHu LNjHH\$0Ht$8H _LD$T$HL$SVWAVAWH@Lމ\$ ;wu9lu 3ۉ\$ B;L==MtJF;DƉ;I.eL$IA׋؉D$ 3ۉ\$ s$xL$pL$I؉D$ 3ۉ\$ s$xL$pKL$IA؉D$ 3ۉ\$ s$xL$p;E33I@$xL$p\$ E33I$xL$p\$ L=Mt.IdE33IA$xL$p\$ tuxL$I؉D$ 3ۉ\$ s$xL$pL=Mt:=t1IcL$IA׋؉D$ 3ۉ\$ s$x;w sH@A_A^_^[ffH; iuHfuHHLH D@HPSVWAVH8MIcH`HHHHxˉ\$pxH+H|$`IHbHAD$ H8A^_^[H\$DD$HL$VWAVH@IALHˉ\$pxI+H|$`HpbHH\$hH@A^_^H8HD$ HD$PH87H\$WH H^tHHH\$0H _%_H8LHt53HBII;s'7 Hd$ E3E333 N3H8MIH8 @SH H3ZHZ[ HH [H%DHp,DHXDHHMH@HWH@HPL@UH HHHMPH ]@UH HHHMPH ]HLHLHHtCH@H@GH@ H@H@)H@DZH@H@H nVH@0uH@H@H 4VHT$UH HHU@l33HHHT$UH HH,H ]HHFHT$UH HHhH ]HFHr HT$UH HHH ]H HHT$UH HHH ]HHT(HT$UH HH)H ]HHXHT$UH HHdH ]HbHH THHT$UH HHmH ]HHH MTHչHT$UH HHtH ]HHH TH錹HT$UH HH{H ]HHH SHCHT$UH HHH ]H>HH rSHHT$UH HHH ]HHH )SH鱸HT$UH HHH ]HHH RHhHT$UH HHH ]HcHH RHHT$UH HHH ]HxHT$UH HHcH ]H MHT$UH HE HH ]H HxqGHPHhHhH0H0HT$UH HE HH ]H=H=HT$UH HHH ]HHHT$UH HHH ]H`FH(H(H8<@UH HHUPHM([H ]H0HT$UH HHUP332HAH HT$UH HHH ]H@HHHT$UH HHH ]HHHT$UH HHXH ]HHPHT$UH HH H ]HKHHT$UH HH&$H ]HHHT$UH HH'H ]HHHT$UH HH*H ]HHlHT$UH HH[.H ]H@H%%=HT$UH HHHHt*3HHHs3HM@5HƆHM@HH^7H ]HT$UH HE3H833H@HNHT$UH HHm_H ]HT$UH HH*`H ]HT$UH HH`H ]HT$UH HH`H ]H(8HT$UH HHU@詵33HT$UH HHU@胵33HT$UH0HHZ33HT$UH0H33HT$UH H33cHT$UH H33FHT$UH HHU@33 HT$UH0HHMP赀33H@HH`C@UH HHHH ]HHw8HH8H(HT$UH HDžHH ]HhH(HHpHT$UH HEpHH ]HpLHT$UH HEhHH ]HH8x7HpH @UH HHdH@H ]HH"7HH@H0HT$UH HDžHH ]Hx[HIHpMHT$UH HEpHH ]Hp HT$UH HEhHH ]@UH HHU@HM(TH ]HT$UH HHU@334@UH HHHH ]HT$UH HEpAHGH|H ]HT$UH HHU@i33HT$UH HHU@C33@UH HH ]H=>H()5HHX 5H>HH=HT$UH HE`H>H ]HT$UH HHH ]HT$UH HHU@d33@UH HHHM8gH ]@UH HHiHM8HH ]@UH HHJHM8)H ]@UH HH+HM8 H ]@UH HH HM8H ]@UH HHHM8H ]@UH HHHM8H ]@UH HHHMxH ]@UH HHHMxcH ]@UH HHeHMxDH ]@UH HHFHMx%H ]@UH HH'HMxH ]@UH HHHMxH ]@UH HHHMxH ]H@PH@H0~PH@HHnPH@H`^PH@HxNPHT$UH0HHSH0]HT$UH@HE@L@HYH@]H@`OH@H0OH@HHOHP.OHPH0OHPHHOHPH`zOHPHxjOHPHWOH@NH@H05OH@HH%OH@H`OHT$UH0HLk@HhH0]HT$UH0HE4L̠@HUnH0]HT$UH0HE4L@dHnH0]HtH`stH@MH@H0%NH@XH0HP.HT$UH0HE8LJ@HH0]@UH HHHMPH ]@UH HHHMpH ]@UH HHHMpuH ]HpLHpH07MHpHH'MHT$UH HHU@338HT$UH HHU@ժ33H@a@UH HH3Ɂ8H ]@UH HHHHUPEP=csmuHMPEE0E0E0H ]@UH HHHHUpEp=csmuHMpE8E8E8H ]@UH HH0HHU`E`=csmuHM`EHEHEHH ]@UH HH HH=csmuH@E$E$E$H ]@UH HHHHU(E(=csmuHM(E4E4E4H ]@UH HHHHU@E@=csmuHM@ELELELH ]@UH HH(HHUXEX=csmuHMXDEhEhEhH ]@UH HH8HHUxEx=csmuHMx DžH ]@UH Hꃽxw H ]@UH H} uLMxDEpHUhHM`*H ]@UH HHM8HM(HE(HHM0HE08csmt E E ~,H ]HT$UH HHePH8H ]@UH HH ]@UH H} uLMpDE$HUXHMPiH ]@UH HH3Ɂ8H ]H!PH H"IH iH(HMH H ʺHt H%%%H(H H!TH ҺH˺HTH ҺH˺dT42p  4 2p t dT42  td42t d 4 r d T 4 rp" "4 p `Phv@%d4 PHd42 pT42 p d T 42p  p`P0 dT 4 Rp bp` P 0 d T 42p2 !d!4! p PHp t d T 4R204Bp ` P 0  t42p  dT42&Rp`0د@8F  2Pد&Rp`0@8 X]e  2P"r p ` 08@8Rd  2P&Rp`0`+@78l 7  2P`"r p ` 08Xd@t8 6SX]t  2P8&Rp`0T@8Pbp  2P"r p ` 0@8<  2Pd 4 Rp td42d 4 Rp!Ed 4 Rpp3   d 4 RpHE   d 4 Rp [   d 4 Rpm %d T 4 rp 4 2p`P4 2 p`P##4 Rp`ЭD@8 .   2PЭd42p! ` 0@H8!!!" ""8#  RP6 %4ZR p`P##$%%}%%%& t d T 42B0 4RH p`PH0 Lp`P0HP/ dT4SN PH`d 4R p, 4bZ p`PH b::::2P&p`0XT{(<@98@`80;;;; <'<_<==9  2PXd T 4Rp0=>5>3 %4 p`P,@@ B(BB t dT424 4 p`0!@H@H,DLEEF9GGGGH  RP%4 pH (4VPp`PHp3_p`0P" NwN:P^PU/ 4  p`PH@ -4p`/;h@GHWW XXXXXdY{YG  RP2 $t9$d8$47$0PHp- Etd4C PHP- Etd4C PHPT4 r p `d T4+ +t'd#4r Phh(iEo dT4 t d T 4 r tdT 4  tdT4' 't'd'4'Pd 4  p 4 p `:b~O 4 p `: i dT4pd T 4 r dT 4 rpd T 4Rp9 5+t$d43 PHp@ /t]+d\'4[T P@zȎ*.2Ob  4 pd T42pd 4R pd T42p4ph&Zd 4 R p4pƧ  4 Rp4p4pȿܼ4p@f4px&\4pPt d 4 rd T 4 rp4 p`P(-4 p`P]d4 pd4 p4 p`Pؾ-4 p`P }C" "d4 pP4 p`P`M4 p`P8 } dT 4 pT4 p `T 4 rp`pj4 p`Pd4p !!4 p `P2T 4 rp`pj4 p`P4 p`P" "d4pPp"4 p `Pd4pHUdT4p4p 4ppD dT4p4pмP v  4 p`P4 p`Pe" "d4 pPXP4 p`P04 p`PMd4 p4##L$T 4 rp``**V+d4 p34l4d4 ph445d4 p@P5554 p`99:4 p@:::' 't#d4PȺ ;x;;<< d T 42p4p`P#p ` 0 PFRlEEEBGG4 RpxdtGGHH3%t !d4 PH?.tB'dA 4@: PH$ $4+$ p`PT4 p ` d4 p P% %4%%p`P  4 pT4 r p `T 4 Rp`Pklll%mT 42 p `d T 4 Rp  4 2p:q r r R0:drrr& &d"4 pP(rrs 4 p`P T4 p`\vvvw#wNwww dT4 Rpr0d 4 Rpع||}d 4 Rp}~@~d 4 Rp"8ld 4 Rp`4hˀd 4 Rp8F܁d 4 RpX؂ 0d 4 Rpjv1U_d 4 Rphd 4 Rp1U_d 4 Rppцd 4 RpHHqd 4 Rp 5?d 4 RpՈ߈d 4 Rpз(Qud 4 Rpȉ+d 4 Rp1Ud 4 RpX8a R00 b @8Xy  2Pd T42pb p`0@8<5:B  2Pb p`0%1<@=8x=  2Pb p`0^j@v8,q#+v  2Pb p`0h@8c  2Phb p`0@X@8$i~#  2P@b p`0  @!8ݙX!  2Pb p`0BN^@j8 Rgܛj  2Pb p`0ȵ@8\Ӝ,19  2Pȵb p`0P@8#U|  2Pb p`0x)9@E8BWs̟џٟE  2Pxb p`0Pfr@8Là!)  2PPb p`0(@8^  2P(b p`0`@ 8J_{ԣ٣   2Pb p`0شAM]$@i8Tˤ$)1i  2PشR p`0@8   2P*4 p`[@8t"Cdn  2P0 4 p``'3@?8ۨ1b̩#Cc?LS  2P`b p`08gs@8ի 05=  2P8b p`0@@8 )PU]  2P4 rp`P Ԯڮ d T 4 Rpd 4 Rp\3 dT 4 rp-4p` ,!!t d 4 r p1@=89\b=J  2Pp t d T 4 Rb p`0Hco@{8h {  2PHd T42pd 4 Rp %t d42d 4 r pb p`0@8]r  2Pd 4 Rpв8ab p`0 @85\ai  2Pd 4 Rp%b p`0X ,!@88X 8  2PXd 4 Rp0xb p`0Ye"@q8=Ruq  2Pd 4 RpAeb p`0x#@8<AI  2Pd 4 Rpb p`0h\$@88}  2Phd 4 Rp@Xb p`0@%@82U|  2Pd 4 Rp ! E 4 RpȰ= 9 i H`4 Rp   4 RpxM  20 p`0P&&@Q8@8d Q^l  2PP4 Rp(Lq4 RpL2 p ` 0d 4 Rp3h  RP/ td4~|PH  `0: -  $1 #t#d#4#PHT 4 2 p `4 2 p`P B::1?1?1 td4P t d 42d42 p4 R p`p$)p89:x:  2Pp0HS)p8:;X;  2PH R0 ,*@*p;8pV8;;;;;;  2P  T4 R p `T 4 2 p `4 R`-4p`AAB*p`0wDDDd 4 Rpp+@8hIII  2P  4 2p b+@8JJJ  2P p ` 0Xx,,@H@HJLVLLL  RPX"0|MM b@-@8MMM"  2P b-@28 NN3N2?  2P4 p`  4 p- td4PHh  p`0PH@  4 rpT 4 R p `  p`0  0P b.@O8t]]]O\  2Pd 4 rp,/@uH]]^u  RP d T 4 2pd T429 U+S&p`0Pؽggghhh i3i3iiiij1j1jkkk   p `0:Znnnmoo p4p4pq.q.q  4 p:qrr t d 4 R:rrrrrr 4 R p `:ssss%t%t^ttttuu8ufufu 4 R p `:v+v+v d 4 Rp:vww3wUwUwwwww x x  p ` 0:{}} ~~~ td4P R0hPp 42 p:4JJdT4 p@p΂) )h%t!d4  03p8&Bv(d&0  2P* *d&4 pPDP؇  T4r p`VXER p`0ht4p8pωXi  2P4R p`5p8ȊUɋ  2P T4 p`xdT4pP<. R0ҏ R0(Xx( (h$d 4 p :JVb@7pn8В+G{/j)7n{  2P T4r p`lz T4r p`R p`08p8ט  2PR p`0`l9p8K   2P`# #t%#d$#4##Pd 4 2 p-4p`8Op!!t d 4 R x:@;8$);H  2P04 p `PԦ$H 4$ p`PT4 p `T4 p `'  p`0PH%  p`0PH dT4p# 543 p`PHH 4 rpH0  p`0P  p`0P 4 p`P 4 p ` Pp`P0 dT4 paT  td4:4p`P  p`0P'  p`0PH* 4+  p`PH- g p`0PH  4 p ` P ` P0<U+tB$dA4@S: PH( (4(p`P/ /h &p`0P9E+t$d4C PH<E+t,$d+4*C$ PH" "4"p`P9e+t"$d!4 c PH% %4%p`P  t d 4R 4 p ` P  4 2p`P- % t d 4 # RPH(R0  b:G555 d4 rp:788 d T 4 2p! !4!p`P  td:??@  t d r:AAB  d 4 r:CCD d 4 Rp:;ECEE" "t"d"4"rPT 42 p `#d T 4 rpH8 tdT 4 r dT4rpd T 4RpSH T4r p `4 r p`Ap8[[\\  2P 4p ` PT4 r p ` dT4 rp4 rp`P4 R p ` P B:jjkd 4RpT 4 R p `9U+t"$d!4 S PH4 p`P p`0PT 4 R p `*p`0Xtyyyd42 p-4p`08d 4 RpC@84h  2P= =h !4!p ` P bC@8=_  2P tdT 4 r, dW4VN pؽbEaB:. dQ4PJ p PH@4#tR#4P#NPH`d4 pHH" "d4 pPH2 !dh!4g!` p PH+ dT4pHh( 4 p`PHp%  p`0PH42 p 4r p`P td4P t d 4 RP p`P0HP* 4 p`PH" "t"d"4"P  4 p`P0 %4T#J p`PH@4 p`P +7Cxgq|4 ` p`0PU0 E4YCP p`PHpd 4 r p 4R p ` P td4P d4r p P d T 4 Rp# #t#d#4#rP'  p`0PHx td 4 rP d T 4 Rp# #4#p`P3 %4' p`Pgs`U 4 p ` P% %4%p`P d4 p P! !4!p`P 4 p ` P 4p ` PdT4p" "p`0P d T 4 p 4p ` P2 2h!4!p`P# #t#d#4#P' ) p`0PH0"  p`0PH@ tdT4 dT4p dT4p- Y p`0PHd T 4Rpd T42p% %4%p`P""p`0P% %4%p`P 4 rp`PH8 4R p ` P 4 p `P dT4pdT4p%  p`0PH!p`0PH# #t#d#4#Pd 4 r p T 4 2 p `t d4T4 p `  4 Rp" "h4 p`Pr0d4 pTLp8Loroo  2P4 R pPd 4 RpLp8qqur  2P4r p`PH0*4 p\  rPd 4 Rpp|>A>T>^>h>$ $d T 4 R p`????????!!t d 4 R h#3\@@@@@@T 4 R p ` T4 R p `/ d4 p@cVpIHLLhMIVm  RP@# #t#d#4#P.  p`0WWpHpH4Q RuRRRRSSSS,T7TOTWTT  RP+ +t 'd#4 PUUU,XYT 4 R p `' d4 p PHP 4Rp`P+ +t'd#4 P#3@fffgh$ 0E,iiit d 4 r 4rp`P p`P0dT42p.  p`0xW`ZpcH}(~n~~~cp  RPx d T 4 Rp#p`P0PdRi'p`0P(!4PxȈ% b[@78Hi}7D  2Pd 4 Rp@\@]8ߋ]j  2Pd 4 RpXȌ d 4 2 p5 %'t d4# PH% #RPH 20:{"&@t"'а  t d 42(p`0: HzzԴc%%=LLphmbp`0:Ӷ 4 rp`:)) bP'^@8LY_"  2PP'    4 2p:)n6d 4 Rp:W 0H0  4 2p:  4 2PУ_ `@ P`xaa x` @xaa `p<aa@aH@L0`xaa aP(@ cf`(A dgp(@ 8cg( A dg((A dg(0p@ cg(8@ Pc(h(@(@ `c8he8efPfff&fBf4ffzffeeeeereeO EXuao.I $)LebeeNetApiBufferFreeDsRoleGetPrimaryDomainInformationDsRoleFreeMemoryNetDfsGetClientInfoDsGetDcNameWGetUserNameExWTranslateNameWLsaConnectUntrustedLsaLookupAuthenticationPackageLsaLogonUserLsaFreeReturnBufferLsaDeregisterLogonProcessWNetGetConnectionWwnsprintfWPathIsUNCWPathIsRootWPathRemoveFileSpecWPathAddBackslashWPathRemoveBackslashWPathCreateFromUrlWUrlUnescapeW,PT`j,,hXij`a`Y`X [ZX7@89p7@`1psss@sdp@\]\P\7Pkpml@l7lj~jjjjjjjkk:kLkYkgkukkkkkkkkll%l:lGlTl_ljlxlllllllllllmm'm  !"#$%&'()*+azroles.DLLAzAddPropertyItemAzApplicationCloseAzApplicationCreateAzApplicationDeleteAzApplicationEnumAzApplicationOpenAzAuthorizationStoreDeleteAzCloseHandleAzContextAccessCheckAzContextGetAssignedScopesPageAzContextGetRolesAzFreeMemoryAzGetPropertyAzGroupCreateAzGroupDeleteAzGroupEnumAzGroupOpenAzInitializeAzInitializeContextFromNameAzInitializeContextFromTokenAzOperationCreateAzOperationDeleteAzOperationEnumAzOperationOpenAzRemovePropertyItemAzRoleCreateAzRoleDeleteAzRoleEnumAzRoleOpenAzScopeCreateAzScopeDeleteAzScopeEnumAzScopeOpenAzSetPropertyAzSubmitAzTaskCreateAzTaskDeleteAzTaskEnumAzTaskOpenAzUpdateCacheDllCanUnloadNowDllGetClassObjectDllRegisterServerDllUnregisterServerX>P@X>??@8@X>P@X>P@X>P@=??X>P@X>P@>??] fз2-+(8r3@3(r3`3r33p4P`@ PphF 0PYY@p4PhFg0b  ЗРP`p00P@`9`p`g0e@fhk of0oYY@hHsHrHtHrXtHrhtHrrHr(sHrsHrXsHrhsHr8sHrxsHrrHrsHrsHrhrHrsHrsHrsHrsHrsHrrHrXrHrsHrrHrrHrsHrrHrtHrtHrrHr(tHr8tHrd~e~f~g~hxȯ: !HH8H@8@00(0(0( 8x7H50І50=p5 =6Ph5<X6؃`6P7(6`645h564H4P7`76766x687.6-6,(6/`60x6164H6455h566 5!544H5h5d4e4f444g5h(5EnF`D0FDE0DXEDD0D`DDHXwGg  8H k hC8C`ChCCCC@C`XBBBB@A8AB@BxB-@.A08A,xA/A1A@ h@!@>>d>f>e ?gP?hx?0>@>@X>-.01LP-.0)()+*+   0H`x/,1 !1 !defghi           .0- 1defghi !.0-1 !defghif2H{I4f2H{I4L)EgddL)EgL( 0L`LLȕLЕLX88Ȗ888P h  Ȕ @H8pphP ААА@P @ؑ  0pȟLБ@p8Р А0Lx@ȕLЕ @P@<84HDp0,LLВ`ȓ00PL` `  `L` ($ 0xؓL@L@@ 8x'.?AVCAtlException@ATL@@x'.?AVlength_error@std@@x'.?AVout_of_range@std@@x'.?AVlogic_error@std@@x'.?AVbad_alloc@std@@x'.?AVexception@@`l QX!(>D7@ 0pQ`_h`h S`(.@T\(L"d(LT)l0t|ln,4dlP3<l@]!0 1 @       - (@     A P    `   =P Op/@o/`_ o )0?HYt  !8!##H&LP&&& ( ((((())..60 <0B2<H2j2dp233444P55\56<68l 9O9X9::K:T:::; ;';d0;==Q>h>>>>d>>?#@,@BBCLC&Dd,D:IdLItI|IJh(J_KhKKdKZLtLN NUVWWYYW\ll\i`p```bce,eSgThhhhoxobqhqrrBtHt0vw| |}@}Pӂx܂X`nt[dȎ2$8Б\py N`Δ N`Ε  N`Ζ  N`Y`ИS`s[pЛ0{ۜ;P>PT`[p,@>PɢdТBP  r٥Ҧ89@H |P`.@êЪS`  kˬ  N` ۯ&0fp&0fp&0fpYt`6@u p(0 uո5@U`4@ uapѽ5@!0t Q`48@ ud^p@P8@X` ux0  wP   =Pep, @fp'0gp'0gp`p]pTmtIPGPGPGP\pep%0 0dp]pDXl 3<7@w7@wBPL`,@U` u5@,0ip\ Xp     I P   E P      W`u HP, d  hp'0gp<P| 0 g p     '!0!d!p!!!!!$"0"d"p"""##e#p###n$$$$5%@%%%%&U&`&&&' 'u''''( (p((((T)`)M*`*++,,M-T- .0.g.p.....'/0/g/p///<0P000|1120222%30333334<4>5pP556U6`6667 7u77778 8p8888T9`9,:@: ; ;<0=:>|@>-?4?E@L@dElEGGHHL<L-Yd@Y\\ ^ ^~__^adacc{d\deteeef fWf`fffggGgPggggg'h0hghphMi`idjpjMk`kkkkkmmnhnohop|pqqqq(r0rSrd\rrrstu uTv\v-x0 4xy yz z{{{ {||&} 0}}}W~ ~84 Dhl   ؂G P Ah\  # HÇ c< t ( ȉB Pl 8T Ќ?PЍ?PŽ Ў?PЏ?PА?X 6$<8%,T$ Tp\4DLDLTnt(<ȭЭ .4S\FLLd{P/`?pO_ o )09@IPY`ipy 0@P/`?pO_ o )09@IPY`i!0X0\htI(Pg<p2t\L4@(/8L t| (g0!p2tXt`!9(@ox"tD" ("rt(#y(G#Pt8T $`( OX$t$  (    % R t`    d  %  & 4 &<   deD&&oxp& 3x&<^dd& DdLX'&d'|-l4' '\BP08''&$(,$E%L%&d&)@()**,h(,---1|(41M1(`13(3i4p46(667c7p77748@89(999:(:x;h);<)<(=*0=F>L>@* @(A*0A~AAwD*DbI+hIID+IJ+JJ+JuM8,|MM,MN- N;N-DNO-O:P .@P0T.@TWU`UUUTX<.`XXx&XSYX.`YZd.Z[ [G[P[b\x.h\9].@]l]dt]].] ^/(^^t^ __[bx/dbdddde/exf(ffdfl/lq00qIr0PrRs0Xsu0uvX1vZx1`xxxxdytyyYz`zzdz{{/{@{a~1p~~~~~O`2ЀGdP,2ȁ h\2p2G2PR3Xj84pŠx4Ȋ<5\45<O86Xt6{  QXȒ6Вd6l7,8d8(9  9,4>DNT9ߤ90:/8ndțԦ̫:ԫ*?HȰ;а0 ;8w4;X.}H;޾h;t*0T;\;n;t;;h<p$<N<<TwL<<E<Ld<pf<l=8(=@H=`=dt==* =0 =l=x& >!8>!%`>%''|'t'p)x>x)!,>(,,t,- -I-P--->/>D/0>01143<33>34t46> 687,@78?839<999:4?:n?P?t?SAh?\AB?BCCD?EE?EI I6O$@\(DѤDؤDkEt@E`E]EdEEEBEH7@EWF`E4FLBAIDFxhFFGE8GPHG``Gh^|GdyG|G"G(KGTMHTWH`-4H@HppELHx&P38G@H HH@H2I8(I6 !N0ڛN8NtrNxU@`Ǡ Р Ogx&HO+QXOt dhOϴOش,O4Odgx&O4?OѻP0N>T}ds8P|~˿dԿ08ZdB_PPh\POdXtP4?ldtX. P?PH P0_hd OX5K<4?IPPP9@t4?|W`_h8Q@4?5@@ox({d5<GP%07@oxd6QRJdPLyO]p  |       w  0R\ ~xRBZe p   !!'S'(p),p@P---//$0xSp00d00d 2e223d 3O3X333 5S 5O5`555>6KD6?7TP78pT8f:l:>T>>U>.?G`?@tU\@@VAApVACVCDDtE|E3HJs(t0tuuvvww]yYdy|Y|}Y}Z\ZdZB[H[\Ȍ8\hXpXʖ\Жd Y Yp١ɢ(4?0̪\ j]p]s|del*d0 9 @4]X]4<|]ݳ>]tݶD^7l^Lk^з!(\dp_ߺ __)@_d'l_HelϽdؽn7_D___0_g__0__0_ m_$7R@t\x<39T`{X XGb=XvD!<`j$E`p4 ;i?a,1=]H{<  !8S"q"#$7%QH'H'X)5);V*Vq*+(,,,,|-2I-Oo.uh/>3,55:n799;;[:aXAXCC%L MM22QQpp66UUtz+`T1j UI{W\X\XcZ7W\]}|\cchhmm 0^6QWC1 20 &0 0 / / / l7 7 7 7 7 H0 V0 j0 z0 0 3 3 3 3 3 3 p3 X3 <3 &3 3 2 2 2 2 2 2 t2 X2 @2 "2 2 1 1 0 1 1 1 |1 j1 X1 B1 21 1 1 0 0 0 0 4 (4 J4 f4 4 4 4 4 4 5 *5 >5 `5 x5 5 5 H6 6 6 6 6 6 <7 T7 . . . . . n. R. J. 8. &. * * * * * * + + 0+ >+ P+ b+ v+ + + + + + + , , <, R, `, l, , , , , , , , - - 6- J- ^- r- - - - - - - . . h6 6 6 x6 Mko+ HM  :6 *6 5 6 5 5 * ~* r* ' ' & & & & & & & & & j& T& H& (& & & % % % % % % % % % % % % % v% l% d% Z% B% 6% % $ $ $ $ $ $ $ $ |$ r$ f$ Z$ P$ B$ 8$ 7 0$ 7 7 ' :' P' n' |' ' ' ' ' ' T* :* &* * ) ) ) ) ) ) p) X) 6) ) ( ( ( ( ( z( `( F( *( ( 7 (7 / / (/ :/ N/ `/ r/ / / / 3 & H " h*  * (  . ` # / 8  /   3  h 5  <6   \6 P  6 ` ( 6  1 20 &0 0 / / / l7 7 7 7 7 H0 V0 j0 z0 0 3 3 3 3 3 3 p3 X3 <3 &3 3 2 2 2 2 2 2 t2 X2 @2 "2 2 1 1 0 1 1 1 |1 j1 X1 B1 21 1 1 0 0 0 0 4 (4 J4 f4 4 4 4 4 4 5 *5 >5 `5 x5 5 5 H6 6 6 6 6 6 <7 T7 . . . . . n. R. J. 8. &. * * * * * * + + 0+ >+ P+ b+ v+ + + + + + + , , <, R, `, l, , , , , , , , - - 6- J- ^- r- - - - - - - . . h6 6 6 x6 Mko+ HM  :6 *6 5 6 5 5 * ~* r* ' ' & & & & & & & & & j& T& H& (& & & % % % % % % % % % % % % % v% l% d% Z% B% 6% % $ $ $ $ $ $ $ $ |$ r$ f$ Z$ P$ B$ 8$ 7 0$ 7 7 ' :' P' n' |' ' ' ' ' ' T* :* &* * ) ) ) ) ) ) p) X) 6) ) ( ( ( ( ( z( `( F( *( ( 7 (7 / / (/ :/ N/ `/ r/ / / / srandswscanfj_vsnwprintfwcsrchr_wcsicmpwcsncpy_smallocMfreememcpy_swcscpy_swcscat_s_purecalld_vsnprintf ??0exception@@QEAA@AEBV0@@Z2?what@exception@@UEBAPEBDXZ??1exception@@UEAA@XZ ??0exception@@QEAA@AEBQEBD@Zmemmove_s ??0exception@@QEAA@XZstrrchrldivwcschrwcspbrkyiswspace wcsncmp _wtol_wcsnicmpqsort#bsearch_wcsuprwcsstrtowlower{iswxdigitwcstol_wtoi64memmovememsetX__C_specific_handler ??0exception@@QEAA@AEBQEBDH@Z_callnewhL_CxxThrowException\__CxxFrameHandler3V_XcptFilter_amsg_exit~_initterm0?terminate@@YAXXZmsvcrt.dll??1type_info@@UEAA@XZ_errnorealloc_lockB_unlock|__dllonexit_onexitzRtlAcquireResourceSharedRtlReleaseResourceyRtlAcquireResourceExclusiveRtlCopySidHRtlLengthSidRtlInitializeResourceRtlInitializeCriticalSection0RtlDeleteResource'RtlDeleteCriticalSectionpRtlNtStatusToDosErrorRtlConvertSharedToExclusiveNtAllocateLocallyUniqueId[RtlEnterCriticalSectionERtlLeaveCriticalSectionRtlIdentifierAuthoritySidhRtlEqualSidRtlInitStringRtlConvertExclusiveToSharedRtlInitializeGenericTableAvl RtlInsertElementGenericTableAvl)RtlDeleteElementGenericTableAvlYRtlLookupElementGenericTableAvlRtlInitUnicodeStringJRtlDosPathNameToNtPathName_UNtCreateFileRtlFreeHeapNtClose`RtlEnumerateGenericTableAvltRtlNumberGenericTableElementsAvlgRtlValidSidfRtlValidSecurityDescriptorRtlCaptureContext]RtlLookupFunctionEntrylRtlVirtualUnwindntdll.dll1CharNextW<CharUpperWPUnregisterClassAUSER32.dllCreateFileWVGetLastErrorCloseHandleMultiByteToWideCharFindResourceW`SizeofResourceLoadResourceLockResourceFreeLibraryGetProcAddressLoadLibraryExWmGetModuleHandleWlstrcmpiWLeaveCriticalSectionDRaiseException)EnterCriticalSectionFindResourceExWiGetModuleFileNameWPInitializeCriticalSectionDeleteCriticalSectionDisableThreadLibraryCallsWideCharToMultiByteLocalAllocLocalFree0GetEnvironmentVariableWCreateDirectoryWGetCurrentProcessIdWriteFileWGetLocalTimeGetVersionExWCreateTimerQueueDeleteTimerQueueExCreateTimerQueueTimerDeleteTimerQueueTimerGetCurrentThreadGetCurrentProcessGetComputerNameWGetSystemTimeAsFileTime<GetFileAttributesWGetVolumeInformationW9GetFileAttributesExWCompareFileTime DeleteFileWPGetFullPathNameWLoadLibraryWSetLastErrorCompareStringWFormatMessageWaSleepUnhandledExceptionFilterRSetUnhandledExceptionFilterpTerminateProcessOutputDebugStringA0QueryPerformanceCounterGetCurrentThreadIdGetTickCountKERNEL32.dllCoTaskMemFreeCoTaskMemRealloc~CoTaskMemAllocCoCreateInstanceStringFromGUID2CLSIDFromStringTCoInitializeExCoUninitializeCLSIDFromProgIDStringFromCLSIDole32.dllOLEAUT32.dllLsaOpenPolicyLsaNtStatusToWinErrorLsaQueryInformationPolicyLsaFreeMemoryLsaCloseCreateWellKnownSidTRegCloseKeyRegQueryInfoKeyWsRegEnumKeyExWRegOpenKeyExWRegSetValueExW]RegCreateKeyExWlRegDeleteValueWLookupAccountNameWLookupAccountSidW{ConvertSidToStringSidWConvertStringSidToSidWRegQueryValueExWJGetLengthSidoGetTokenInformationOpenThreadTokenSetThreadTokenEqualDomainSidOpenProcessTokenDuplicateTokenExCopySidInitializeAclAddAccessAllowedAceInitializeSecurityDescriptorSetSecurityDescriptorDaclSetSecurityDescriptorOwnerVGetNamedSecurityInfoWaGetSecurityDescriptorSacl\GetSecurityDescriptorDaclSetNamedSecurityInfoW^GetSecurityDescriptorLength7GetAclInformation6GetAceIsValidSidAddAccessAllowedAceExAddAccessAllowedObjectAceAddAuditAccessAceExSetSecurityDescriptorSaclAdjustTokenPrivilegesMakeSelfRelativeSDCryptReleaseContextCryptAcquireContextWCryptCreateHashCryptHashDataCryptGetHashParamCryptDestroyHashADVAPI32.dll'AuthziFreeAuditEventType,AuthziInitializeAuditEventType%AuthziAllocateAuditParams/AuthziInitializeAuditParamsWithRM+AuthziInitializeAuditEvent2AuthziLogAuditEventAuthzFreeAuditEvent(AuthziFreeAuditParamsAuthzInitializeResourceManager AuthzFreeResourceManagerAuthzFreeContext AuthzGetInformationFromContextAuthzAddSidsToContextAuthzInitializeContextFromTokenAuthzInitializeContextFromSidAuthzAccessCheckAUTHZ.dllUuidFromStringWUuidToStringW RpcStringFreeWUuidCreateUuidToStringA RpcStringFreeARPCRT4.dllDsQuoteRdnValueWDSPARSE.dllDsCrackNamesW$DsFreeNameResultWDsBindWoDsUnBindWNTDSAPI.dllODBC32.dllVirtualQueryVirtualAllocGetSystemInfoVirtualProtectBSetThreadStackGuaranteeRtlAllocateHeapRtlImageNtHeaderDelayLoadFailureHookResolveDelayLoadedAPI3PerfSetCounterRefValuePerfCreateInstance4PerfSetCounterSetInfo7PerfStartProvider9PerfStopProvidermemcmpmemcpywcscmppp0PP0p0Pp0pPP0P0ppp84`x$fghe(u@Xp         z  8U / = @R xREGISTRYFILETYPELIBMUIx4VS_VERSION_INFOD%D%?StringFileInfo040904B0LCompanyNameMicrosoft CorporationFFileDescriptionazroles Modulep(FileVersion6.3.9600.17415 (winblue_r4.141028-1500)0InternalNameazroles.LegalCopyright Microsoft Corporation. All rights reserved.8OriginalFilenameazrolesj%ProductNameMicrosoft Windows Operating SystemBProductVersion6.3.9600.17415DVarFileInfo$Translation HKCR { AzRoles.AzAuthorizationStore.1 = s 'AzAuthorizationStore Class' { CLSID = s '{b2bcff59-a757-4b0b-a1bc-ea69981da69e}' } AzRoles.AzAuthorizationStore = s 'AzAuthorizationStore Class' { CurVer = s 'AzRoles.AzAuthorizationStore.1' } NoRemove CLSID { ForceRemove {b2bcff59-a757-4b0b-a1bc-ea69981da69e} = s 'AzAuthorizationStore Class' { ProgID = s 'AzRoles.AzAuthorizationStore.1' VersionIndependentProgID = s 'AzRoles.AzAuthorizationStore' ForceRemove 'Programmable' InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Both' } } } AzRoles.AzPrincipalLocator.1 = s 'AzPrincipalLocator Class' { CLSID = s '{483afb5d-70df-4e16-abdc-a1de4d015a3e}' } AzRoles.AzPrincipalLocator = s 'AzPrincipalLocator Class' { CurVer = s 'AzRoles.AzPrincipalLocator.1' } NoRemove CLSID { ForceRemove {483afb5d-70df-4e16-abdc-a1de4d015a3e} = s 'AzPrincipalLocator Class' { ProgID = s 'AzRoles.AzPrincipalLocator.1' VersionIndependentProgID = s 'AzRoles.AzPrincipalLocator' ForceRemove 'Programmable' InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Both' } } } NoRemove Interface { ForceRemove {edbd9ca9-9b82-4f6a-9e8b-98301e450f14} = s 'IAzAuthorizationStore interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {b11e5584-d577-4273-b6c5-0973e0f8e80d} = s 'IAzAuthorizationStore2 interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {abc08425-0c86-4fa0-9be3-7189956c926e} = s 'IAzAuthorizationStore3 interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {987bc7c7-b813-4d27-bede-6ba5ae867e95} = s 'IAzApplication interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {086a68af-a249-437c-b18d-d4d86d6a9660} = s 'IAzApplication2 interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {181c845e-7196-4a7d-ac2e-020c0bb7a303} = s 'IAzApplication3 interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {929b11a9-95c5-4a84-a29a-20ad42c2f16c} = s 'IAzApplications interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {5e56b24f-ea01-4d61-be44-c49b5e4eaf74} = s 'IAzOperation interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {1f5ea01f-44a2-4184-9c48-a75b4dcc8ccc} = s 'IAzOperation2 interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {90ef9c07-9706-49d9-af80-0438a5f3ec35} = s 'IAzOperations interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {cb94e592-2e0e-4a6c-a336-b89a6dc1e388} = s 'IAzTask interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {03a9a5ee-48c8-4832-9025-aad503c46526} = s 'IAzTask2 interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {b338ccab-4c85-4388-8c0a-c58592bad398} = s 'IAzTasks interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {00e52487-e08d-4514-b62e-877d5645f5ab} = s 'IAzScope interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {ee9fe8c9-c9f3-40e2-aa12-d1d8599727fd} = s 'IAzScope2 interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {78e14853-9f5e-406d-9b91-6bdba6973510} = s 'IAzScopes interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {f1b744cd-58a6-4e06-9fbf-36f6d779e21e} = s 'IAzApplicationGroup interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {3f0613fc-b71a-464e-a11d-5b881a56cefa} = s 'IAzApplicationGroup2 interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {4ce66ad5-9f3c-469d-a911-b99887a7e685} = s 'IAzApplicationGroups interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {859e0d8d-62d7-41d8-a034-c0cd5d43fdfa} = s 'IAzRole interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {95e0f119-13b4-4dae-b65f-2f7d60d822e4} = s 'IAzRoles interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {eff1f00b-488a-466d-afd9-a401c5f9eef5} = s 'IAzClientContext interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {2b0c92b8-208a-488a-8f81-e4edb22111cd} = s 'IAzClientContext2 interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {11894fde-1deb-4b4b-8907-6d1cda1f5d4f} = s 'IAzClientContext3 interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {e192f17d-d59f-455e-a152-940316cd77b2} = s 'IAzBizRuleContext interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {fc17685f-e25d-4dcd-bae1-276ec9533cb5} = s 'IAzBizRuleParameters interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {e94128c7-e9da-44cc-b0bd-53036f3aab3d} = s 'IAzBizRuleInterfaces interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {d97fcea1-2599-44f1-9fc3-58e9fbe09466} = s 'IAzRoleDefinition interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {881f25a5-d755-4550-957a-d503a3b34001} = s 'IAzRoleDefinitions interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {55647d31-0d5a-4fa3-b4ac-2b5f9ad5ab76} = s 'IAzRoleAssignment interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {9c80b900-fceb-4d73-a0f4-c83b0bbf2481} = s 'IAzRoleAssignments interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {e5c3507d-ad6a-4992-9c7f-74ab480b44cc} = s 'IAzPrincipalLocator interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {504d0f15-73e2-43df-a870-a64f40714f53} = s 'IAzNameResolver interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } ForceRemove {63130a48-699a-42d8-bf01-c62ac3fb79f9} = s 'IAzObjectPicker interface' { ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' TypeLib = s '{11A8B8EE-BF30-409A-8EF7-3A143EF70332}' { val Version = s '1.0' } } } } HKCR { AzRoles.AzBizRuleContext.1 = s 'AzBizRuleContext Class' { CLSID = s '{5c2dc96f-8d51-434b-b33c-379bccae77c3}' } AzRoles.AzBizRuleContext = s 'AzBizRuleContext Class' { CurVer = s 'AzRoles.AzBizRuleContext.1' } NoRemove CLSID { ForceRemove {5c2dc96f-8d51-434b-b33c-379bccae77c3} = s 'AzBizRuleContext Class' { ProgID = s 'AzRoles.AzBizRuleContext.1' VersionIndependentProgID = s 'AzRoles.AzBizRuleContext' ForceRemove 'Programmable' InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Both' } } } } CREATE TABLE [dbo].[AzMan_AzApplicationGroup] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [ObjectGuid] [uniqueidentifier] NULL, [StoreID] [int] , [AppID] [int] , [ScopeID] [int] , [ParentType] [tinyint] NOT NULL , [Name] [nvarchar] (64) , [Description] [nvarchar] (1024) , [ApplicationData] [ntext] , [GroupType] [tinyint] NULL, [LdapQueryID] [int] NULL, [RowUpdateTimeStamp] [timestamp] NULL , [ChildUpdateTimeStamp] [binary] (8) NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[AzMan_AzAuthorizationStore] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [ObjectGuid] [uniqueidentifier] NULL, [Description] [nvarchar] (1024) , [Name] [nvarchar] (512) , [ApplicationData] [ntext] , [DomainTimeout] [int] NULL , [ScriptEngineTimeout] [int] NULL , [MaxScriptEngines] [int] NULL , [TargetMachine] [nvarchar] (50) , [ApplyStoreSacl] [bit] NULL , [GenerateAudits] [bit] NULL , [MajorVersion] [int] NULL, [MinorVersion] [int] NULL, [RowUpdateTimeStamp] [timestamp] NULL , [ChildUpdateTimeStamp] [binary] (8) NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[AzMan_AzApplication] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [ObjectGuid] [uniqueidentifier] NULL, [StoreID] [int] NOT NULL , [Name] [nvarchar] (512) , [Description] [nvarchar] (1024) , [ApplicationData] [ntext] , [ApplyStoreSacl] [bit] NULL , [GenerateAudits] [bit] NULL , [AuthzInterfaceClsId] [int] NULL , [ApplicationVersion] [nvarchar] (50), [RowUpdateTimeStamp] [timestamp] NULL , [ChildUpdateTimeStamp] [binary] (8) NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[AzMan_BizRule_To_Task] ( [BizRuleID] [int] NOT NULL , [TaskID] [int] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[AzMan_BizRule_To_Group] ( [BizRuleID] [int] NOT NULL , [GroupID] [int] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[AzMan_BizRule] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [ParentId] [int] NOT NULL , [ParentType] [tinyint] not NULL, [BizRuleImportedPath] [nvarchar] (512) , [BizRule] [ntext] , [BizRuleLanguage] [nvarchar] (64), [RowUpdateTimeStamp] [timestamp] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[AzMan_LDAPQuery] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [GroupID] [int] NOT NULL , [LdapQuery] [ntext] , [RowUpdateTimeStamp] [timestamp] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[AzMan_Group_SIDMember] ( [GroupID] [int] NOT NULL , [MemberSID] [varbinary] (85) NOT NULL , [Member] [bit] Not NULL , [RowUpdateTimeStamp] [timestamp] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[AzMan_Group_AppMember] ( [GroupID] [int] NOT NULL , [ChildID] [int] NOT NULL , [Member] [bit] Not NULL , [RowUpdateTimeStamp] [timestamp] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[AzMan_AzOperation] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [ObjectGuid] [uniqueidentifier] NULL, [AppID] [int] NOT NULL , [Name] [nvarchar] (64) , [Description] [nvarchar] (1024) , [ApplicationData] [ntext] , [OperationID] [int] NULL, [RowUpdateTimeStamp] [timestamp] NULL , [ChildUpdateTimeStamp] [binary] (8) NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[AzMan_AzTask] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [ObjectGuid] [uniqueidentifier] NULL, [AppID] [int], [ScopeID] [int], [ParentType] [tinyint] NOT NULL , [Name] [nvarchar] (64) , [Description] [nvarchar] (1024) , [ApplicationData] [ntext] , [IsRoleDefinition] [bit] NULL , [RowUpdateTimeStamp] [timestamp] NULL , [ChildUpdateTimeStamp] [binary] (8) NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[AzMan_AzScope] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [AppID] [int] NOT NULL , [Name] [ntext], [NameLen] [int] NOT NULL, [NameHash] [Binary] (32) NULL, [Description] [nvarchar] (1024) , [ApplicationData] [ntext] , [ObjectGuid] [uniqueidentifier] NULL, [RowUpdateTimeStamp] [timestamp] NULL , [ChildUpdateTimeStamp] [binary] (8) NULL, [HasSpecificUsers] [bit] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[AzMan_AzRoleAssignment] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [AppID] [int], [ScopeID] [int], [ParentType] [tinyint] NOT NULL , [Name] [nvarchar] (64) , [Description] [nvarchar] (1024) , [ApplicationData] [ntext] , [ObjectGuid] [uniqueidentifier] NULL , [RowUpdateTimeStamp] [timestamp] NULL , [ChildUpdateTimeStamp] [binary] (8) NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[AzMan_Role_SIDMember] ( [RoleID] [int] NOT NULL , [MemberSID] [varbinary] (85) NOT NULL, [RowUpdateTimeStamp] [timestamp] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[AzMan_Role_AppMember] ( [RoleID] [int] NOT NULL , [ChildID] [int] NOT NULL , [RowUpdateTimeStamp] [timestamp] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[AzMan_Role_To_Task_Link] ( [TaskID] [int] NOT NULL , [RoleID] [int] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[AzMan_Role_To_Operation_Link] ( [OperationID] [int] NOT NULL , [RoleID] [int] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[AzMan_Task_To_Task_Link] ( [TaskID] [int] NOT NULL , [ChildID] [int] NOT NULL ) ON [PRIMARY] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Azman_SQLRole]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[Azman_SQLRole] GO CREATE TABLE [dbo].[Azman_SQLRole] ( [uid] [int] not null, [ObjectID] [int] NULL , [ObjectType] [tinyint] NULL , [SQLRoleName] [nvarchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [RoleType] [tinyint] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[AzMan_Task_To_Operation_Link] ( [OperationID] [int] NOT NULL , [TaskID] [int] NOT NULL ) ON [PRIMARY] GO CREATE INDEX [IX_AzMan_AzApplication_StoreID] ON [dbo].[AzMan_AzApplication]([StoreID]) ON [PRIMARY] GO CREATE INDEX [IX_AzMan_AzApplicationGroup_AppID] ON [dbo].[AzMan_AzApplicationGroup]([AppID]) ON [PRIMARY] GO CREATE INDEX [IX_AzMan_AzApplicationGroup_ScopeID] ON [dbo].[AzMan_AzApplicationGroup]([ScopeID]) ON [PRIMARY] GO CREATE INDEX [IX_AzMan_AzApplicationGroup_Name] ON [dbo].[AzMan_AzApplicationGroup]([Name]) ON [PRIMARY] GO CREATE INDEX [IX_AzMan_AzOperation_Name] ON [dbo].[AzMan_AzOperation]([Name]) ON [PRIMARY] GO CREATE INDEX [IX_AzMan_AzOperation_AppID] ON [dbo].[AzMan_AzOperation]([AppID]) ON [PRIMARY] GO CREATE INDEX [IX_AzMan_AzRoleAssignment_AppID] ON [dbo].[AzMan_AzRoleAssignment]([AppID]) ON [PRIMARY] GO CREATE INDEX [IX_AzMan_AzRoleAssignment_ScopeID] ON [dbo].[AzMan_AzRoleAssignment]([ScopeID]) ON [PRIMARY] GO CREATE INDEX [IX_AzMan_AzRoleAssignment_Name] ON [dbo].[AzMan_AzRoleAssignment]([Name]) ON [PRIMARY] GO CREATE INDEX [IX_AzMan_AzScope_AppID] ON [dbo].[AzMan_AzScope]([AppID]) ON [PRIMARY] GO CREATE INDEX [IX_Azman_Scope_Name] ON [dbo].[AzMan_AzScope] ([AppID], [NameHash]) ON [PRIMARY] Go CREATE INDEX [IX_AzMan_AzTask_AppID] ON [dbo].[AzMan_AzTask]([AppID]) ON [PRIMARY] GO CREATE INDEX [IX_AzMan_AzTask_ScopeID] ON [dbo].[AzMan_AzTask]([ScopeID]) ON [PRIMARY] GO CREATE INDEX [IX_AzMan_AzTask_Name] ON [dbo].[AzMan_AzTask]([Name]) ON [PRIMARY] GO CREATE INDEX [IX_AzMan_BizRule_Parent] ON [dbo].[AzMan_BizRule]([ParentId], [ParentType]) ON [PRIMARY] GO CREATE INDEX [IX_AzMan_Group_AppMember_GroupID] ON [dbo].[AzMan_Group_AppMember]([GroupID]) ON [PRIMARY] GO CREATE INDEX [IX_AzMan_LDAPQuery_GroupID] ON [dbo].[AzMan_LDAPQuery]([GroupID]) ON [PRIMARY] GO ALTER TABLE [dbo].[AzMan_AzApplication] WITH NOCHECK ADD CONSTRAINT [PK_AzMan_AzApplication] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[AzMan_AzAuthorizationStore] WITH NOCHECK ADD CONSTRAINT [PK_AzMan_AzAuthorizationStore] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[AzMan_AzScope] WITH NOCHECK ADD CONSTRAINT [PK_AzMan_AzScope] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[AzMan_AzApplicationGroup] WITH NOCHECK ADD CONSTRAINT [PK_AzMan_AzApplicationGroup] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] , CONSTRAINT [FK_AzMan_AzAppGroup_AzMan_AzApplication] FOREIGN KEY ( [AppID] ) REFERENCES [dbo].[AzMan_AzApplication] ( [ID] ) , CONSTRAINT [FK_AzMan_AzAppGroup_AzMan_AzAuthorizationStore] FOREIGN KEY ( [StoreID] ) REFERENCES [dbo].[AzMan_AzAuthorizationStore] ( [ID] ) , CONSTRAINT [FK_AzMan_AzAppGroup_AzMan_AzScope] FOREIGN KEY ( [ScopeID] ) REFERENCES [dbo].[AzMan_AzScope] ( [ID] ) GO ALTER TABLE [dbo].[AzMan_AzApplicationGroup] WITH NOCHECK ADD CONSTRAINT [CK_AzMan_AzApplicationGroup] CHECK (sign(coalesce([StoreID],0)) + sign(coalesce([AppID],0)) + sign(coalesce([ScopeID],0)) = 1) GO ALTER TABLE [dbo].[AzMan_AzRoleAssignment] WITH NOCHECK ADD CONSTRAINT [CK_AzMan_AzRoleAssignment] CHECK (sign(coalesce([AppID],0)) + sign(coalesce([ScopeID],0)) = 1) GO ALTER TABLE [dbo].[AzMan_AzTask] WITH NOCHECK ADD CONSTRAINT [CK_AzMan_AzTask] CHECK (sign(coalesce([AppID],0)) + sign(coalesce([ScopeID],0)) = 1) GO alter table [dbo].[AzMan_AzApplicationGroup] nocheck constraint [FK_AzMan_AzAppGroup_AzMan_AzApplication] GO alter table [dbo].[AzMan_AzApplicationGroup] nocheck constraint [FK_AzMan_AzAppGroup_AzMan_AzAuthorizationStore] GO alter table [dbo].[AzMan_AzApplicationGroup] nocheck constraint [FK_AzMan_AzAppGroup_AzMan_AzScope] GO ALTER TABLE [dbo].[AzMan_AzOperation] WITH NOCHECK ADD CONSTRAINT [PK_AzMan_AzOperation] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[AzMan_AzRoleAssignment] WITH NOCHECK ADD CONSTRAINT [PK_AzMan_AzRoleAssignment] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] , CONSTRAINT [FK_AzMan_Role_To_App] FOREIGN KEY ( [AppID] ) REFERENCES [dbo].[AzMan_AzApplication] ( [ID] ) , CONSTRAINT [FK_AzMan_Role_To_Scope] FOREIGN KEY ( [ScopeID] ) REFERENCES [dbo].[AzMan_AzScope] ( [ID] ) GO alter table [dbo].[AzMan_AzRoleAssignment] nocheck constraint [FK_AzMan_Role_To_App] GO alter table [dbo].[AzMan_AzRoleAssignment] nocheck constraint FK_AzMan_Role_To_Scope GO ALTER TABLE [dbo].[AzMan_AzTask] WITH NOCHECK ADD CONSTRAINT [PK_AzMan_AzTask] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] , CONSTRAINT [FK_AzMan_AzTask_To_App] FOREIGN KEY ( [AppID] ) REFERENCES [dbo].[AzMan_AzApplication] ( [ID] ) , CONSTRAINT [FK_AzMan_AzTask_To_Scope] FOREIGN KEY ( [ScopeID] ) REFERENCES [dbo].[AzMan_AzScope] ( [ID] ) GO alter table [dbo].[AzMan_AzTask] nocheck constraint [FK_AzMan_AzTask_To_App] GO alter table [dbo].[AzMan_AzTask] nocheck constraint [FK_AzMan_AzTask_To_Scope] GO ALTER TABLE [dbo].[AzMan_BizRule] WITH NOCHECK ADD CONSTRAINT [PK_AzMan_BizRule] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[AzMan_LDAPQuery] WITH NOCHECK ADD CONSTRAINT [PK_AzMan_LDAPQuery] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[AzMan_AzOperation] WITH NOCHECK ADD CONSTRAINT [IX_AzMan_AzOperation_OpID] UNIQUE NONCLUSTERED ( [OperationID], [AppID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[AzMan_Group_AppMember] WITH NOCHECK ADD CONSTRAINT [IX_AzMan_Group_AppMember_member] UNIQUE NONCLUSTERED ( [GroupID], [ChildID], [Member] ) ON [PRIMARY] GO ALTER TABLE [dbo].[AzMan_Group_SIDMember] WITH NOCHECK ADD CONSTRAINT [IX_AzMan_Group_SIDMember_member] UNIQUE NONCLUSTERED ( [GroupID], [MemberSID], [Member] ) ON [PRIMARY] GO ALTER TABLE [dbo].[AzMan_Role_AppMember] WITH NOCHECK ADD CONSTRAINT [IX_AzMan_Role_AppMember_member] UNIQUE NONCLUSTERED ( [RoleID], [ChildID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[AzMan_Role_SIDMember] WITH NOCHECK ADD CONSTRAINT [IX_AzMan_Role_SIDMember_member] UNIQUE NONCLUSTERED ( [RoleID], [MemberSID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[AzMan_AzApplication] ADD CONSTRAINT [FK_AzMan_AzApplication_AzMan_AzAuthorizationStore] FOREIGN KEY ( [StoreID] ) REFERENCES [dbo].[AzMan_AzAuthorizationStore] ( [ID] ) ON DELETE CASCADE ON UPDATE CASCADE GO ALTER TABLE [dbo].[AzMan_AzOperation] ADD CONSTRAINT [FK_AzMan_AzOperation_AzMan_AzApplication] FOREIGN KEY ( [AppID] ) REFERENCES [dbo].[AzMan_AzApplication] ( [ID] ) ON DELETE CASCADE ON UPDATE CASCADE GO ALTER TABLE [dbo].[AzMan_AzScope] ADD CONSTRAINT [FK_AzMan_AzScope_AzMan_AzApplication] FOREIGN KEY ( [AppID] ) REFERENCES [dbo].[AzMan_AzApplication] ( [ID] ) ON DELETE CASCADE ON UPDATE CASCADE GO ALTER TABLE [dbo].[AzMan_BizRule_To_Group] ADD CONSTRAINT [FK_AzMan_BizRule_To_Group_AzMan_AzApplicationGroup] FOREIGN KEY ( [GroupID] ) REFERENCES [dbo].[AzMan_AzApplicationGroup] ( [ID] ) ON DELETE CASCADE ON UPDATE CASCADE , CONSTRAINT [FK_AzMan_BizRule_To_Group_AzManBizrule] FOREIGN KEY ( [BizRuleID] ) REFERENCES [dbo].[AzMan_BizRule] ( [ID] ) ON DELETE CASCADE ON UPDATE CASCADE , CONSTRAINT [PK_AzMan_BizRule_To_Group] PRIMARY KEY CLUSTERED ( [BizRuleID], [GroupID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[AzMan_BizRule_To_Task] ADD CONSTRAINT [FK_AzMan_BizRule_To_Task_AzMan_AzTask] FOREIGN KEY ( [TaskID] ) REFERENCES [dbo].[AzMan_AzTask] ( [ID] ) ON DELETE CASCADE ON UPDATE CASCADE , CONSTRAINT [FK_AzMan_BizRule_To_Task_AzManBizrule] FOREIGN KEY ( [BizRuleID] ) REFERENCES [dbo].[AzMan_BizRule] ( [ID] ) ON DELETE CASCADE ON UPDATE CASCADE , CONSTRAINT [PK_AzMan_BizRule_To_Task] PRIMARY KEY CLUSTERED ( [BizRuleID], [TaskID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[AzMan_Group_AppMember] ADD CONSTRAINT [FK_AzMan_Group_AppMember_AzMan_AzApplicationGroup] FOREIGN KEY ( [GroupID] ) REFERENCES [dbo].[AzMan_AzApplicationGroup] ( [ID] ) ON DELETE CASCADE ON UPDATE CASCADE , CONSTRAINT [PK_AzMan_Group_AppMember] PRIMARY KEY CLUSTERED ( [GroupID], [ChildID], [Member] ) ON [PRIMARY] GO ALTER TABLE [dbo].[AzMan_Group_SIDMember] ADD CONSTRAINT [FK_AzMan_Group_SIDMember_AzMan_AzApplicationGroup] FOREIGN KEY ( [GroupID] ) REFERENCES [dbo].[AzMan_AzApplicationGroup] ( [ID] ) ON DELETE CASCADE ON UPDATE CASCADE , CONSTRAINT [PK_AzMan_Group_SIDMember] PRIMARY KEY CLUSTERED ( [GroupID], [MemberSID], [Member] ) ON [PRIMARY] GO ALTER TABLE [dbo].[AzMan_LDAPQuery] ADD CONSTRAINT [FK_AzMan_LDAPQuery_AzMan_AzApplicationGroup] FOREIGN KEY ( [GroupID] ) REFERENCES [dbo].[AzMan_AzApplicationGroup] ( [ID] ) ON DELETE CASCADE ON UPDATE CASCADE GO ALTER TABLE [dbo].[AzMan_Role_AppMember] ADD CONSTRAINT [FK_AzMan_Role_AppMember_AzMan_AzRoleAssignment] FOREIGN KEY ( [RoleID] ) REFERENCES [dbo].[AzMan_AzRoleAssignment] ( [ID] ) ON DELETE CASCADE ON UPDATE CASCADE , CONSTRAINT [PK_AzMan_Role_AppMember] PRIMARY KEY CLUSTERED ( [RoleID], [ChildID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[AzMan_Role_SIDMember] ADD CONSTRAINT [FK_AzMan_Role_SIDMember_AzMan_AzRoleAssignment] FOREIGN KEY ( [RoleID] ) REFERENCES [dbo].[AzMan_AzRoleAssignment] ( [ID] ) ON DELETE CASCADE ON UPDATE CASCADE , CONSTRAINT [PK_AzMan_Role_SIDMember] PRIMARY KEY CLUSTERED ( [RoleID], [MemberSID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[AzMan_Role_To_Operation_Link] ADD CONSTRAINT [FK_AzMan_Role_To_Operation_Link_AzMan_AzOperation] FOREIGN KEY ( [OperationID] ) REFERENCES [dbo].[AzMan_AzOperation] ( [ID] ) ON DELETE CASCADE ON UPDATE CASCADE , CONSTRAINT [FK_AzMan_Role_To_Operation_Link_AzMan_AzRoleAssignment] FOREIGN KEY ( [RoleID] ) REFERENCES [dbo].[AzMan_AzRoleAssignment] ( [ID] ) ON DELETE CASCADE ON UPDATE CASCADE , CONSTRAINT [PK_AzMan_Role_To_Operation_Link] PRIMARY KEY CLUSTERED ( [RoleID], [OperationID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[AzMan_Role_To_Task_Link] ADD CONSTRAINT [FK_AzMan_Role_To_Task_Link_AzMan_AzRoleAssignment] FOREIGN KEY ( [RoleID] ) REFERENCES [dbo].[AzMan_AzRoleAssignment] ( [ID] ) ON DELETE CASCADE ON UPDATE CASCADE , CONSTRAINT [FK_AzMan_Role_To_Task_Link_AzMan_AzTask] FOREIGN KEY ( [TaskID] ) REFERENCES [dbo].[AzMan_AzTask] ( [ID] ) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT [PK_AzMan_Role_To_Task_Link] PRIMARY KEY CLUSTERED ( [RoleID], [TaskID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[AzMan_Task_To_Operation_Link] ADD CONSTRAINT [FK_AzMan_Task_To_Operation_Link_AzMan_AzOperation] FOREIGN KEY ( [OperationID] ) REFERENCES [dbo].[AzMan_AzOperation] ( [ID] ) ON DELETE CASCADE ON UPDATE CASCADE , CONSTRAINT [FK_AzMan_Task_To_Operation_Link_AzMan_AzTask] FOREIGN KEY ( [TaskID] ) REFERENCES [dbo].[AzMan_AzTask] ( [ID] ) ON DELETE CASCADE ON UPDATE CASCADE , CONSTRAINT [PK_AzMan_Task_To_Operation_Link] PRIMARY KEY CLUSTERED ( [OperationID], [TaskID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[AzMan_Task_To_Task_Link] ADD CONSTRAINT [FK_AzMan_Task_To_Task_Link_AzMan_AzTask] FOREIGN KEY ( [TaskID] ) REFERENCES [dbo].[AzMan_AzTask] ( [ID] ) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT [PK_AzMan_Task_To_Task_Link] PRIMARY KEY CLUSTERED ( [TaskID], [ChildID] ) ON [PRIMARY] GO --Trigger for updating Timestamps CREATE TRIGGER TR_updateStoreTimeStampOnAppDelete ON dbo.[AzMan_AzApplication] FOR delete AS UPDATE [AzMan_AzAuthorizationStore] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID in (SELECT StoreID FROM deleted) go CREATE TRIGGER TR_updateStoreTimeStampOnAppModified ON dbo.[AzMan_AzApplication] FOR INSERT,UPDATE AS UPDATE [AzMan_AzAuthorizationStore] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID in (SELECT StoreID FROM inserted) go CREATE TRIGGER TR_updateAppTimeStampOnScopeDelete ON dbo.[AzMan_AzScope] FOR delete AS UPDATE [AzMan_AzApplication] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID in (SELECT AppID FROM deleted) go CREATE TRIGGER TR_updateAppTimeStampOnScoprModified ON dbo.[AzMan_AzScope] FOR INSERT,UPDATE AS UPDATE [AzMan_AzApplication] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID in (SELECT AppID FROM inserted) go CREATE TRIGGER TR_UpdateAppTimeStampOnOpChange ON dbo.[AzMan_AzOperation] FOR INSERT,UPDATE AS UPDATE [AzMan_AzApplication] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID in (SELECT AppID FROM inserted) go CREATE TRIGGER TR_UpdateAppTimeStampOnOpDelete ON dbo.[AzMan_AzOperation] FOR delete AS UPDATE [AzMan_AzApplication] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID in (SELECT AppID FROM deleted) go Create Procedure UpdateGroupsParentTimeStamp ( @ParentId [int] , @ParentType [tinyint] ) as if @ParentType = 0 Begin UPDATE [AzMan_AzAuthorizationStore] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID=@ParentId end else if @ParentType = 1 -- App Begin UPDATE [AzMan_AzApplication] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID=@ParentId end else if @ParentType = 4 -- Scope Begin UPDATE [AzMan_AzScope] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID=@ParentId end GO Create Procedure UpdateTasksParentTimeStamp ( @ParentId [int] , @ParentType [tinyint] ) as if @ParentType = 1 -- App Begin UPDATE [AzMan_AzApplication] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID=@ParentId end else if @ParentType = 4 -- Scope Begin UPDATE [AzMan_AzScope] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID=@ParentId end GO Create Procedure UpdateRolesParentTimeStamp ( @ParentId [int] , @ParentType [tinyint] ) as if @ParentType = 1 -- App Begin UPDATE [AzMan_AzApplication] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID=@ParentId end else if @ParentType = 4 -- Scope Begin UPDATE [AzMan_AzScope] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID=@ParentId end GO CREATE TRIGGER TR_UpdateParentTimeStampOnGroupDelete ON dbo.[AzMan_AzApplicationGroup] FOR delete AS DECLARE @ParentID INT DECLARE @ParentType TinyInt Declare @StoreID INT Declare @AppID INT Declare @ScopeID INT -- We need to find the parent first SELECT @StoreID=StoreID, @AppID=AppID, @ScopeID=ScopeID, @ParentType=ParentType FROM deleted if @@RowCount = 1 Begin if @ParentType = 0 Begin set @ParentID = @StoreID End else if @ParentType = 1 Begin set @ParentID = @AppID End else if @ParentType = 4 Begin set @ParentID = @ScopeID End exec UpdateGroupsParentTimeStamp @ParentID, @ParentType End go CREATE TRIGGER TR_UpdateParentTimeStampOnGroupInsOrUpd ON dbo.[AzMan_AzApplicationGroup] FOR INSERT,UPDATE AS DECLARE @ParentID INT DECLARE @ParentType TinyInt Declare @StoreID INT Declare @AppID INT Declare @ScopeID INT SELECT @StoreID=StoreID, @AppID=AppID, @ScopeID=ScopeID, @ParentType=ParentType FROM inserted if @@RowCount = 1 Begin if @ParentType = 0 Begin set @ParentID = @StoreID End else if @ParentType = 1 Begin set @ParentID = @AppID End else if @ParentType = 4 Begin set @ParentID = @ScopeID End exec UpdateGroupsParentTimeStamp @ParentID, @ParentType End go CREATE TRIGGER TR_UpdateParentTimeStampOnTaskDelete ON dbo.[AzMan_AzTask] FOR delete AS DECLARE @ParentID INT DECLARE @ParentType TinyInt Declare @AppID INT Declare @ScopeID INT -- We need to find the parent first SELECT @AppID=AppID, @ScopeID=ScopeID, @ParentType=ParentType FROM deleted if @@RowCount = 1 Begin if @ParentType = 1 Begin set @ParentID = @AppID End else if @ParentType = 4 Begin set @ParentID = @ScopeID End exec UpdateTasksParentTimeStamp @ParentID, @ParentType end go CREATE TRIGGER TR_UpdateParentTimeStampOnTaskInsOrUpd ON dbo.[AzMan_AzTask] FOR INSERT,UPDATE AS DECLARE @ParentID INT DECLARE @ParentType TinyInt Declare @AppID INT Declare @ScopeID INT SELECT @AppID=AppID, @ScopeID=ScopeID, @ParentType=ParentType FROM inserted if @@RowCount = 1 Begin if @ParentType = 1 Begin set @ParentID = @AppID End else if @ParentType = 4 Begin set @ParentID = @ScopeID End exec UpdateTasksParentTimeStamp @ParentID, @ParentType end go CREATE TRIGGER TR_UpdateParentTimeStampOnRoleDelete ON dbo.[AzMan_AzRoleAssignment] FOR delete AS DECLARE @ParentID INT DECLARE @ParentType TinyInt Declare @AppID INT Declare @ScopeID INT -- We need to find the parent first SELECT @AppID=AppID, @ScopeID=ScopeID, @ParentType=ParentType FROM deleted if @@RowCount = 1 Begin if @ParentType = 1 Begin set @ParentID = @AppID End else if @ParentType = 4 Begin set @ParentID = @ScopeID End exec UpdateRolesParentTimeStamp @ParentID, @ParentType end go CREATE TRIGGER TR_UpdateParentTimeStampOnRoleInsOrUpd ON dbo.[AzMan_AzRoleAssignment] FOR INSERT,UPDATE AS DECLARE @ParentID INT DECLARE @ParentType TinyInt Declare @AppID INT Declare @ScopeID INT SELECT @AppID=AppID, @ScopeID=ScopeID, @ParentType=ParentType FROM inserted if @@RowCount = 1 Begin if @ParentType = 1 Begin set @ParentID = @AppID End else if @ParentType = 4 Begin set @ParentID = @ScopeID End exec UpdateRolesParentTimeStamp @ParentID, @ParentType end go CREATE TRIGGER TR_UpdateGroupsTimeStampOnSidMemberDel ON dbo.[AzMan_Group_SIDMember] FOR delete AS UPDATE [AzMan_AzApplicationGroup] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID in (SELECT GroupID FROM deleted) go CREATE TRIGGER TR_UpdateGroupsTimeStampOnSidMemberInsOrUpd ON dbo.[AzMan_Group_SIDMember] FOR INSERT,UPDATE AS UPDATE [AzMan_AzApplicationGroup] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID in (SELECT GroupID FROM inserted) go CREATE TRIGGER TR_UpdateGroupsTimeStampOnAppdMemberDel ON dbo.[AzMan_Group_AppMember] FOR delete AS UPDATE [AzMan_AzApplicationGroup] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID in (SELECT GroupID FROM deleted) go CREATE TRIGGER TR_UpdateGroupsTimeStampOnAppMemberInsOrUpd ON dbo.[AzMan_Group_AppMember] FOR INSERT,UPDATE AS UPDATE [AzMan_AzApplicationGroup] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID in (SELECT GroupID FROM inserted) go CREATE TRIGGER TR_UpdateRolesTimeStampOnSidMemberDel ON dbo.[AzMan_Role_SIDMember] FOR delete AS UPDATE [AzMan_AzRoleAssignment] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID in (SELECT RoleID FROM deleted) go CREATE TRIGGER TR_UpdateRolesTimeStampOnSidMemberInsOrUpd ON dbo.[AzMan_Role_SIDMember] FOR INSERT,UPDATE AS UPDATE [AzMan_AzRoleAssignment] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID in (SELECT RoleID FROM inserted) go CREATE TRIGGER TR_UpdateRolesTimeStampOnAppMemberDel ON dbo.[AzMan_Role_AppMember] FOR delete AS UPDATE [AzMan_AzRoleAssignment] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID in (SELECT RoleID FROM deleted) go CREATE TRIGGER TR_UpdateRolesTimeStampOnAppMemberInsOrUpd ON dbo.[AzMan_Role_AppMember] FOR INSERT,UPDATE AS UPDATE [AzMan_AzRoleAssignment] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID in (SELECT RoleID FROM inserted) go CREATE TRIGGER TR_UpdateRolesTimeStampOnOperationDelete ON dbo.AzMan_Role_To_Operation_Link FOR DELETE AS UPDATE [AzMan_AzRoleAssignment] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID in (SELECT RoleID FROM deleted) go CREATE TRIGGER TR_UpdateRolesTimeStampOnOperationInsert ON dbo.AzMan_Role_To_Operation_Link FOR INSERT AS UPDATE [AzMan_AzRoleAssignment] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID in (SELECT RoleID FROM inserted) go CREATE TRIGGER TR_UpdateRolesTimeStampOnTaskDelete ON dbo.AzMan_Role_To_Task_Link FOR DELETE AS UPDATE [AzMan_AzRoleAssignment] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID in (SELECT RoleID FROM deleted) go CREATE TRIGGER TR_UpdateRolesTimeStampOnTaskInsert ON dbo.AzMan_Role_To_Task_Link FOR INSERT AS UPDATE [AzMan_AzRoleAssignment] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID in (SELECT RoleID FROM inserted) go CREATE TRIGGER TR_UpdateTaskTimeStampOnOperationDelete ON dbo.AzMan_Task_To_Operation_Link FOR DELETE AS UPDATE [AzMan_AzTask] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID in (SELECT TaskID FROM deleted) go CREATE TRIGGER TR_UpdateTaskTimeStampOnOperationInsert ON dbo.AzMan_Task_To_Operation_Link FOR INSERT AS UPDATE [AzMan_AzTask] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID in (SELECT TaskID FROM inserted) go CREATE TRIGGER TR_UpdateTaskTimeStampOnTaskDelete ON dbo.AzMan_Task_To_Task_Link FOR DELETE AS UPDATE [AzMan_AzTask] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID in (SELECT TaskID FROM deleted) go CREATE TRIGGER TR_UpdateTaskTimeStampOnTaskInsert ON dbo.AzMan_Task_To_Task_Link FOR INSERT AS UPDATE [AzMan_AzTask] SET [ChildUpdateTimeStamp]=@@DBTS WHERE ID in (SELECT TaskID FROM inserted) go CREATE TRIGGER TR_DeleteGroupForStore ON dbo.[AzMan_AzAuthorizationStore] FOR delete AS delete [AzMan_AzApplicationGroup] where StoreID in (select ID from deleted) go CREATE TRIGGER TR_DeleteGroupForApp ON dbo.[AzMan_AzApplication] FOR delete AS delete [AzMan_AzApplicationGroup] where AppID in (SELECT ID FROM deleted) go CREATE TRIGGER TR_DeleteGroupForScope ON dbo.[AzMan_AzScope] FOR delete AS delete [AzMan_AzApplicationGroup] where ScopeID in (SELECT ID FROM deleted) go CREATE TRIGGER TR_DeleteTaskForApp ON dbo.[AzMan_AzApplication] FOR delete AS delete [AzMan_AzTask] where AppID in (SELECT ID FROM deleted) go CREATE TRIGGER TR_DeleteTaskForScope ON dbo.[AzMan_AzScope] FOR delete AS delete [AzMan_AzTask] where ScopeID in (SELECT ID FROM deleted) go CREATE TRIGGER TR_DeleteRoleForApp ON dbo.[AzMan_AzApplication] FOR delete AS delete [AzMan_AzRoleAssignment] where AppID in (SELECT ID FROM deleted) go CREATE TRIGGER TR_DeleteRoleForScope ON dbo.[AzMan_AzScope] FOR delete AS delete [AzMan_AzRoleAssignment] where ScopeID in (SELECT ID FROM deleted) go CREATE TRIGGER TR_DeleteBizRuleForTask ON dbo.[AzMan_BizRule_To_Task] FOR delete AS delete [AzMan_BizRule] where [ID] in (SELECT BizRuleID FROM deleted) go CREATE TRIGGER TR_DeleteBizRuleForGroup ON dbo.[AzMan_BizRule_To_Group] FOR delete AS delete [AzMan_BizRule] where [ID] in (SELECT BizRuleID FROM deleted) go IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SP_GenerateObjectAudit' and type = 'P') DROP PROCEDURE [AzMan_SP_GenerateObjectAudit] GO Create Procedure [AzMan_SP_GenerateObjectAudit] ( @success int, @event int, @actObjectType tinyint, @actObjectName nvarchar(512), @actObjectGuid uniqueidentifier, @targetType tinyint, @targetName nvarchar(512), @targetGuid uniqueidentifier, @otherInfo nvarchar(1024) ) AS DECLARE @UserName nvarchar(256) DECLARE @UserSid varbinary(85) SELECT @UserName = User_Name() SELECT @UserSid = SUSER_SID() -- events: -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE -- 2 for SE_AUDITID_AZ_SQL_REFERENCE_ASSIGN -- 3 for SE_AUDITID_AZ_SQL_REFERENCE_REMOVE Exec master.dbo.AzGenerateAudit @success, @event, @actObjectType, @actObjectName, @actObjectGuid, 0, @UserName, @UserSid, @targetType, @targetName, @targetGuid, @otherInfo GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SP_GenerateMemberAudit' and type = 'P') DROP PROCEDURE [AzMan_SP_GenerateMemberAudit] GO Create Procedure [AzMan_SP_GenerateMemberAudit] ( @success int, @event int, @actObjectType tinyint, @actObjectName nvarchar(512), @actObjectGuid uniqueidentifier, @memberName nvarchar(256), @memberSid varbinary(85), @memberFlag int, @otherInfo nvarchar(1024) ) AS DECLARE @UserName nvarchar(256) DECLARE @UserSid varbinary(85) SELECT @UserName = User_Name() SELECT @UserSid = SUSER_SID() -- events: -- 4 for SE_AUDITID_AZ_SQL_MEMBER_ASSIGN -- 5 for SE_AUDITID_AZ_SQL_MEMBER_REMOVE -- memberFlags: -- 0 for non-members -- 1 for members -- 2 for admins -- 3 for readers -- 4 for delegated users Exec master.dbo.AzGenerateAudit @success, @event, @actObjectType, @actObjectName, @actObjectGuid, 0, @UserName, @UserSid, @memberName, @memberSid, @memberFlag, @otherInfo GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SP_GenerateGenericAudit' and type = 'P') DROP PROCEDURE [AzMan_SP_GenerateGenericAudit] GO Create Procedure [AzMan_SP_GenerateGenericAudit] ( @success int, @actObjectType tinyint, @actObjectName nvarchar(512), @actObjectGuid uniqueidentifier, @otherInfo nvarchar(1024) ) AS DECLARE @UserName nvarchar(256) DECLARE @UserSid varbinary(85) SELECT @UserName = User_Name() SELECT @UserSid = SUSER_SID() -- events: -- 6 for SE_AUDITID_AZ_SQL_OTHER Exec master.dbo.AzGenerateAudit @success, 6, @actObjectType, @actObjectName, @actObjectGuid, 0, @UserName, @UserSid, @otherInfo GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPU_SqlRoleUpdated' and type = 'P') DROP PROCEDURE AzMan_SPU_SqlRoleUpdated GO CREATE PROCEDURE dbo.AzMan_SPU_SqlRoleUpdated ( @Return int output, @ObjectID int, @ObjectType tinyint ) AS DECLARE @OldChildTS timestamp -- We can't just manually update the row timestamp because it is a timestamp column. -- So we set-and-reset the ChildUpdateTimeStamp for the update of the timestamp column IF @ObjectType = 0 BEGIN SELECT @OldChildTS = [ChildUpdateTimeStamp] FROM [AzMan_AzAuthorizationStore] WHERE ID = @ObjectID UPDATE [AzMan_AzAuthorizationStore] SET [ChildUpdateTimeStamp]=@OldChildTS + 1 WHERE ID = @ObjectID UPDATE [AzMan_AzAuthorizationStore] SET [ChildUpdateTimeStamp]=@OldChildTS WHERE ID = @ObjectID END ELSE IF @ObjectType = 1 BEGIN SELECT @OldChildTS = [ChildUpdateTimeStamp] FROM [AzMan_AzApplication] WHERE ID = @ObjectID UPDATE [AzMan_AzApplication] SET [ChildUpdateTimeStamp]=@OldChildTS + 1 WHERE ID = @ObjectID UPDATE [AzMan_AzApplication] SET [ChildUpdateTimeStamp]=@OldChildTS WHERE ID = @ObjectID END ELSE IF @ObjectType = 4 BEGIN SELECT @OldChildTS = [ChildUpdateTimeStamp] FROM [AzMan_AzScope] WHERE ID = @ObjectID UPDATE [AzMan_AzScope] SET [ChildUpdateTimeStamp]=@OldChildTS + 1 WHERE ID = @ObjectID UPDATE [AzMan_AzScope] SET [ChildUpdateTimeStamp]=@OldChildTS WHERE ID = @ObjectID END SET @Return = @@ERROR RETURN @Return GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SP_GetRoleMemberCount' and type = 'P') DROP PROCEDURE AzMan_SP_GetRoleMemberCount GO CREATE PROCEDURE dbo.AzMan_SP_GetRoleMemberCount ( @SqlRoleName nvarchar(64), @count int output ) AS select @count = count(*) from sysusers u, sysusers g, sysmembers m where g.uid = m.groupuid and g.name = @SqlRoleName and g.issqlrole = 1 and u.uid = m.memberuid RETURN GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SP_GetSQLRole' and type = 'P') DROP PROCEDURE AzMan_SP_GetSQLRole GO Create Procedure [AzMan_SP_GetSQLRole] ( @Return [int] output, @ID [int] ,@ObjectType [tinyint] ,@RoleType [tinyint] ,@SQLRoleName [nvarchar] (64) output ) As Set @Return = 0 Select @SQLRoleName = SQLRoleName from Azman_SQLRole where ObjectID = @ID and ObjectType = @ObjectType and RoleType = @RoleType Go IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPI_SQLRole' and type = 'P') DROP PROCEDURE AzMan_SPI_SQLRole GO Create PROCEDURE dbo.AzMan_SPI_SQLRole ( @Return [int] output ,@ID int ,@ObjectType [tinyint] ,@RoleType [tinyint] ,@SQLRoleName [nvarchar] (64) output ) AS Set @SQLRoleName = '' DECLARE @myid uniqueidentifier DECLARE @RoleID smallint DECLARE @Ret [int] declare @dbName nvarchar (255) Set @Return = 0 SET @myid = NEWID() Set @SQLRoleName = CONVERT(varchar(64), @myid) Set @RoleID = 1 If Is_Member('db_owner') = 1 or Is_Member('db_securityadmin') = 1 Begin EXEC @Ret = sp_addrole @SQLRoleName End else begin Set @dbName = db_name() Exec master.dbo.xp_AzManAddRole @Ret output, @ID, @ObjectType, @dbName, @SQLRoleName End if @Ret = 0 Begin select @RoleID = uid from sysusers where (name = @SQLRoleName) and (issqlrole = 1) Insert Into [dbo].[Azman_SQLRole] ( [uid], [ObjectID], [ObjectType], [SQLRoleName], [RoleType] ) Values ( @RoleID, @ID, @ObjectType, @SQLRoleName, @RoleType ) End Else Begin Set @Return = -1 End Return @Return go IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPI_SQLRole_From_XP' and type = 'P') DROP PROCEDURE AzMan_SPI_SQLRole_From_XP GO Create PROCEDURE dbo.AzMan_SPI_SQLRole_From_XP ( @Return [int] output ,@SQLRoleName [nvarchar] (64) ) AS DECLARE @RoleID smallint DECLARE @Ret [int] Set @Return = -1 Set @RoleID = -1 EXEC @Ret = sp_addrole @SQLRoleName if @Ret = 0 Begin select @RoleID = uid from sysusers where (name = @SQLRoleName) and (issqlrole = 1) if @RoleID <> -1 Begin set @Return = 0 End End Else Begin Set @Return = -1 End Return @Return go IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPI_Add_User_To_SQLRole_From_XP' and type = 'P') DROP PROCEDURE AzMan_SPI_Add_User_To_SQLRole_From_XP GO CREATE PROCEDURE AzMan_SPI_Add_User_To_SQLRole_From_XP ( @Return [int] output ,@ID [int] ,@ObjectType [tinyint] ,@RoleType [tinyint] ,@UserName [nvarchar] (255) ) AS DECLARE @Ret [int] Declare @NameInDB [nvarchar] (255) Declare @SQLRoleName [nvarchar] (64) DECLARE @RoleMemberCount [int] Set @Return = -1 Set @SQLRoleName = NULL Exec dbo.[AzMan_SP_GetSQLRole] @Ret output, @ID, @ObjectType, @RoleType, @SQLRoleName = @SQLRoleName output if len(@SQLRoleName) > 0 Begin set @NameInDB = null SET @Ret = 0 -- if no such loging yet, then grant the user login IF NOT EXISTS (SELECT * FROM master..syslogins WHERE UPPER(loginname) = UPPER(@UserName) AND hasaccess=1) BEGIN EXEC @Ret = sp_grantlogin @UserName END -- if the user does not have access to the db IF @Ret= 0 AND NOT EXISTS (SELECT * FROM sysusers WHERE UPPER(Name) = UPPER(@UserName) AND hasdbaccess = 1) BEGIN EXEC @Ret = sp_grantdbaccess @UserName, @NameInDB output END -- workaround for now sp_grantdbaccess returns 1 when the user already has access if @Ret= 0 or len(@NameInDB) > 0 BEGIN Exec @Ret = sp_addrolemember @SQLRoleName, @UserName -- if the user is successfully added to a scope's role IF @Ret = 0 AND @ObjectType = 4 -- scope BEGIN EXEC AzMan_SP_GetRoleMemberCount @SQLRoleName, @RoleMemberCount output IF @RoleMemberCount > 0 UPDATE dbo.AzMan_AzScope SET dbo.AzMan_AzScope.HasSpecificUsers = 1 WHERE dbo.AzMan_AzScope.ID = @ID END END End Set @Return = @Ret GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPI_Add_User_To_SQLRole' and type = 'P') DROP PROCEDURE AzMan_SPI_Add_User_To_SQLRole GO CREATE PROCEDURE AzMan_SPI_Add_User_To_SQLRole ( @Return [int] output ,@ID [int] ,@ObjectType [tinyint] ,@RoleType [tinyint] ,@SQLRoleName [nvarchar] (64) ,@UserSid varbinary(85) ,@UserName [nvarchar] (255) ,@SaclIsOn [bit] ) AS DECLARE @Ret [int] Declare @NameInDB [nvarchar] (255) DECLARE @ObjectName nvarchar(512) DECLARE @ObjectGuid uniqueidentifier DECLARE @MemberType int declare @dbName nvarchar (255) DECLARE @RoleMemberCount [int] Set @Return = -1 -- get info for auditing IF @SaclIsOn = 1 BEGIN IF @ObjectType = 0 -- store SELECT @ObjectName = store.Name, @ObjectGuid=store.ObjectGuid FROM [dbo].[AzMan_AzAuthorizationStore] store WHERE store.ID=@ID IF @ObjectType = 1 -- app SELECT @ObjectName = app.Name, @ObjectGuid=app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app WHERE app.ID=@ID IF @ObjectType = 4 -- scope SELECT @ObjectName = scope.Name, @ObjectGuid=scope.ObjectGuid FROM [dbo].[AzMan_AzScope] scope WHERE scope.ID=@ID IF @RoleType = 1 -- admin SET @MemberType = 2 IF @RoleType = 2 -- reader SET @MemberType = 3 IF @RoleType = 3 -- delegated users SET @MemberType = 4 END set @NameInDB = null If Is_Member('db_owner') = 1 Begin exec AzMan_SPI_Add_User_To_SQLRole_From_XP @Return output, @ID, @ObjectType, @RoleType, @UserName End else Begin Set @dbName = db_name() Exec master.dbo.xp_AzManAddUserToRole @Return output, @ID, @ObjectType, @RoleType, @dbName, @UserName End -- trigger the parent object's update timestamp IF @Return = 0 BEGIN Exec AzMan_SPU_SqlRoleUpdated @Ret output, @ID, @ObjectType IF @ObjectType = 4 -- scope BEGIN EXEC AzMan_SP_GetRoleMemberCount @SQLRoleName, @RoleMemberCount output IF @RoleMemberCount > 0 UPDATE dbo.AzMan_AzScope SET dbo.AzMan_AzScope.HasSpecificUsers = 1 WHERE dbo.AzMan_AzScope.ID = @ID END END -- generate an audit IF @SaclIsOn = 1 BEGIN EXEC [AzMan_SP_GenerateMemberAudit] @Return, 4, -- 0 for SE_AUDITID_AZ_SQL_MEMBER_ASSIGN @ObjectType, @ObjectName, @ObjectGuid, @UserName, @UserSid, @MemberType, -- member type N'' -- no other info END Return @Return GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPI_Create_SqlRole_For_Object' and type = 'P') DROP PROCEDURE AzMan_SPI_Create_SqlRole_For_Object GO CREATE PROCEDURE AzMan_SPI_Create_SqlRole_For_Object ( @Return [int] output ,@ID [int] ,@ObjectType [tinyint] ,@RoleType [tinyint] ) AS DECLARE @Ret [int] DECLARE @SQLRoleName [nvarchar] (255) DECLARE @SaclIsOn [bit] DECLARE @AccessAtObjType tinyint Set @SaclIsOn = 0 Set @Return = 0 Exec dbo.[AzMan_SP_GetSQLRole] @Ret output, @ID, @ObjectType, @RoleType, @SQLRoleName = @SQLRoleName output if @SQLRoleName Is NULL begin Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output, @ID, @ObjectType, 1, @SaclIsOn output if @Return <> 1 begin Set @Return = -5 goto Done end -- we have proper access, then insert the role Exec AzMan_SPI_SQLRole @Return output, @ID, @ObjectType, @RoleType, @SQLRoleName = @SQLRoleName output end Done: Return @Return GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPI_Add_User_To_Role' and type = 'P') DROP PROCEDURE AzMan_SPI_Add_User_To_Role GO CREATE PROCEDURE AzMan_SPI_Add_User_To_Role ( @Return [int] output ,@ID [int] ,@ObjectType [tinyint] ,@RoleType [tinyint] ,@UserSid varbinary(85) ,@UserName [nvarchar] (255) ) AS DECLARE @Ret [int] DECLARE @SQLRoleName [nvarchar] (255) Declare @NameInDB [nvarchar] (255) DECLARE @SaclIsOn [bit] DECLARE @AccessAtObjType tinyint Set @SaclIsOn = 0 Set @Return = 0 Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output, @ID, @ObjectType, 1, @SaclIsOn output IF @Return <> 1 BEGIN Set @Return = -5 goto Done END Set @Return = -1 Exec dbo.[AzMan_SP_GetSQLRole] @Ret output, @ID, @ObjectType, @RoleType, @SQLRoleName = @SQLRoleName output if @SQLRoleName Is NULL Begin Exec AzMan_SPI_SQLRole @Return output, @ID, @ObjectType, @RoleType, @SQLRoleName = @SQLRoleName output End if @SQLRoleName is NOT NULL Begin Exec AzMan_SPI_Add_User_To_SQLRole @Return output, @ID, @ObjectType, @RoleType, @SQLRoleName, @UserSid, @UserName, @SaclIsOn End Else Begin Set @Return = -1 End Done: Return @Return GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPD_User_From_SQLRole_From_XP' and type = 'P') DROP PROCEDURE AzMan_SPD_User_From_SQLRole_From_XP GO CREATE PROCEDURE AzMan_SPD_User_From_SQLRole_From_XP ( @Return [int] output ,@SQLRoleName [nvarchar] (64) ,@UserName [nvarchar] (255) ) AS DECLARE @Ret [int] SET NOCOUNT ON Set @Return = -1 Exec @Ret = sp_droprolemember @SQLRoleName, @UserName if @Ret <> 0 Begin Set @Return = -1 End Else Begin Set @Return = 0 End SET NOCOUNT OFF Return @Return GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPD_User_From_SQLRole' and type = 'P') DROP PROCEDURE AzMan_SPD_User_From_SQLRole GO CREATE PROCEDURE AzMan_SPD_User_From_SQLRole ( @Return [int] output ,@ID [int] ,@ObjectType [tinyint] ,@RoleType [tinyint] ,@SQLRoleName [nvarchar] (64) ,@UserSid varbinary(85) ,@UserName [nvarchar] (255) ,@SaclIsOn [bit] ) AS DECLARE @Ret [int] DECLARE @ObjectName nvarchar(512) DECLARE @ObjectGuid uniqueidentifier DECLARE @MemberType int Declare @DbName [nvarchar] (255) DECLARE @RoleMemberCount int DECLARE @OtherRoleMemberCount int DECLARE @OtherRoleName [nvarchar] (64) Set @Return = -1 If is_Member('db_owner') = 1 or is_Member('db_securityadmin') = 1 or is_member('db_accessyadmin') = 1 Begin Exec @Ret = sp_droprolemember @SQLRoleName, @UserName End else begin Set @DbName = db_name() Exec master.dbo.xp_AzManRemoveUserFromRole @Ret output, @ID, @ObjectType, @DbName, @SQLRoleName, @UserName End if @Ret <> 0 Begin Set @Return = -1 End Else Begin -- trigger the parent object's update timestamp Set @Return = 0 Exec AzMan_SPU_SqlRoleUpdated @Return output, @ID, @ObjectType -- if the delete is successful to a scope role IF @Return = 0 AND @ObjectType = 4 BEGIN -- we need to get the other role's name for the scope SET @OtherRoleName = NULL IF @RoleType = 1 -- admin Exec [AzMan_SP_GetSQLRole] @Return output, @ID, @ObjectType, 2, @OtherRoleName output ELSE IF @RoleType = 2 -- reader Exec [AzMan_SP_GetSQLRole] @Return output, @ID, @ObjectType, 1, @OtherRoleName output SET @RoleMemberCount = 0 SET @OtherRoleMemberCount = 0 IF @SQLRoleName IS NOT NULL EXEC AzMan_SP_GetRoleMemberCount @SQLRoleName, @RoleMemberCount output IF @OtherRoleName IS NOT NULL EXEC AzMan_SP_GetRoleMemberCount @OtherRoleName, @OtherRoleMemberCount output IF @RoleMemberCount = 0 AND @OtherRoleMemberCount = 0 UPDATE dbo.AzMan_AzScope SET dbo.AzMan_AzScope.HasSpecificUsers = 0 WHERE dbo.AzMan_AzScope.ID = @ID END End -- get info for auditing IF @SaclIsOn = 1 BEGIN IF @ObjectType = 0 -- store SELECT @ObjectName = store.Name, @ObjectGuid=store.ObjectGuid FROM [dbo].[AzMan_AzAuthorizationStore] store WHERE store.ID=@ID IF @ObjectType = 1 -- app SELECT @ObjectName = app.Name, @ObjectGuid=app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app WHERE app.ID=@ID IF @ObjectType = 4 -- scope SELECT @ObjectName = scope.Name, @ObjectGuid=scope.ObjectGuid FROM [dbo].[AzMan_AzScope] scope WHERE scope.ID=@ID IF @RoleType = 1 -- admin SET @MemberType = 2 IF @RoleType = 2 -- reader SET @MemberType = 3 IF @RoleType = 3 -- delegated users SET @MemberType = 4 -- generate an audit EXEC [AzMan_SP_GenerateMemberAudit] @Return, 5, -- 0 for SE_AUDITID_AZ_SQL_MEMBER_REMOVE @ObjectType, @ObjectName, @ObjectGuid, @UserName, @UserSid, @MemberType, -- member type N'' -- no other info END Return @Return GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPD_User_From_Role' and type = 'P') DROP PROCEDURE AzMan_SPD_User_From_Role GO CREATE PROCEDURE AzMan_SPD_User_From_Role ( @Return [int] output ,@ID [int] ,@ObjectType [tinyint] ,@RoleType [tinyint] ,@UserSid varbinary(85) ,@UserName [nvarchar] (255) ) AS DECLARE @Ret [int] DECLARE @SQLRoleName [nvarchar] (64) DECLARE @SaclIsOn [bit] DECLARE @AccessAtObjType tinyint Set @SaclIsOn = 0 Set @Return = 0 Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output, @ID, @ObjectType, 1, @SaclIsOn output IF @Return <> 1 BEGIN Set @Return = -5 goto Done END Set @Return = -1 Exec [AzMan_SP_GetSQLRole] @Return output, @ID, @ObjectType, @RoleType, @SQLRoleName = @SQLRoleName output if @SQLRoleName Is not NULL Begin Exec AzMan_SPD_User_From_SQLRole @Return output, @ID, @ObjectType, @RoleType, @SQLRoleName, @UserSid, @UserName, @SaclIsOn End Done: Return @Return GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPS_Get_DBOwners' and type = 'P') DROP PROCEDURE AzMan_SPS_Get_DBOwners GO CREATE PROCEDURE AzMan_SPS_Get_DBOwners ( @Return [int] output, @ID [int] ) AS SET NOCOUNT ON -- @ID is not used. But our internal implementation requires non-empty -- parameter set where @Return is not considered one of them. EXEC @Return = sp_helprolemember 'db_owner' SET NOCOUNT OFF Return @Return GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPS_Get_Role_For_Object' and type = 'P') DROP PROCEDURE AzMan_SPS_Get_Role_For_Object GO CREATE PROCEDURE AzMan_SPS_Get_Role_For_Object ( @Return [int] output ,@ID [int] ,@ObjectType [tinyint] ,@RoleType [tinyint] ) AS DECLARE @SQLRoleName [nvarchar] (64) SET NOCOUNT ON Set @SQLRoleName = NULL Set @Return = 0 Select @SQLRoleName = SQLRoleName From [dbo].[Azman_SQLRole] where [ObjectID] = @ID and [ObjectType] = @ObjectType and [RoleType] = @RoleType if @SQLRoleName is not NULL Begin EXEC @Return = sp_helprolemember @SQLRoleName End SET NOCOUNT OFF Return @Return GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SP_Get_Object_Path_For_Container' and type = 'P') DROP PROCEDURE AzMan_SP_Get_Object_Path_For_Container GO Create Procedure [AzMan_SP_Get_Object_Path_For_Container] ( @Return [int] output ,@ID [int] ,@ObjectType [tinyint] ,@StoreID [int] output ,@AppID [int] output ,@ScopeID [int] output ) AS DECLARE @RowCount INT, @Error INT Declare @ParentID [int] Declare @ParentType [int] Set @StoreID = -1 Set @AppID = -1 Set @ScopeID = -1 Set @Return = 0 if @ObjectType = 0 --Store Begin Set @StoreID = @ID End if @ObjectType = 1 -- App Begin Select @StoreID=StoreID From AzMan_AzApplication where ID = @ID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @RowCount <> 1 Begin if @Error = 0 Begin Set @Return = -1168 -- Record not found End Else Begin Set @Return = @Error End End else Begin Set @AppID = @ID End End If @ObjectType = 4 -- Scope Begin Select @AppID = AppID From [AzMan_AzScope] where ID = @ID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @RowCount = 1 Begin Select @StoreID = StoreID From AzMan_AzApplication where ID = @AppID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @RowCount <> 1 Begin if @Error = 0 Begin Set @Return = -1168 -- Record not found End Else Begin Set @Return = @Error End End else Begin Set @ScopeID = @ID End End else Begin if @Error = 0 Begin Set @Return = -1168 -- Record not found End Else Begin Set @Return = @Error End End End Return @Return Go IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SP_Get_Object_Path' and type = 'P') DROP PROCEDURE AzMan_SP_Get_Object_Path GO Create Procedure [AzMan_SP_Get_Object_Path] ( @Return [int] output ,@ID [int] ,@ObjectType [tinyint] ,@StoreID [int] output ,@AppID [int] output ,@ScopeID [int] output ) AS Declare @ParentID [int] Declare @ParentType [int] DECLARE @RowCount INT, @Error INT Set @StoreID = -1 Set @AppID = -1 Set @ScopeID = -1 Set @Return = 0 if @ObjectType = 0 --Store Begin Exec AzMan_SP_Get_Object_Path_For_Container @Return output, @ID, @ObjectType , @StoreID output, @AppID output, @ScopeID output goto Return_Get_ObjPath End if @ObjectType = 1 -- App Begin Exec AzMan_SP_Get_Object_Path_For_Container @Return output, @ID, @ObjectType , @StoreID output, @AppID output, @ScopeID output goto Return_Get_ObjPath End If @ObjectType = 2 -- Operation Begin Select @AppID= AppID From [AzMan_AzOperation] where ID = @ID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @RowCount <> 1 Begin if @Error = 0 Begin Set @Return = -1168 -- Record not found End Else Begin Set @Return = @Error End End Else Begin Select @StoreID =StoreID From AzMan_AzApplication where ID = @AppID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @RowCount <> 1 Begin if @Error = 0 Begin Set @Return = -1168 -- Record not found End Else Begin Set @Return = @Error End End End goto Return_Get_ObjPath End If @ObjectType = 4 -- Scope Begin Exec AzMan_SP_Get_Object_Path_For_Container @Return output, @ID, @ObjectType , @StoreID output, @AppID output, @ScopeID output goto Return_Get_ObjPath End If @ObjectType = 3 -- Task Begin Select @ParentID = case ParentType when 1 then AppID when 4 then ScopeID end, @ParentType = ParentType from [AzMan_AzTask] where ID = @ID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT End If @ObjectType = 5 -- Group Begin Select @ParentID = case ParentType when 0 then StoreID when 1 then AppID when 4 then ScopeID end, @ParentType = ParentType from [AzMan_AzApplicationGroup] where ID = @ID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT End If @ObjectType = 6 -- Role Begin Select @ParentID = case ParentType when 1 then AppID when 4 then ScopeID end, @ParentType = ParentType from AzMan_AzRoleAssignment where ID = @ID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT End if @RowCount <> 1 Begin if @Error = 0 Begin Set @Return = -1168 -- Record not found End Else Begin Set @Return = @Error End End else Begin exec AzMan_SP_Get_Object_Path_For_Container @Return output, @ParentID, @ParentType, @StoreID output, @AppID output, @ScopeID output End Return_Get_ObjPath: Return @Return Go -- Access Check Store Procedure IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SP_AccessCheck_For_Container' and type = 'P') DROP PROCEDURE AzMan_SP_AccessCheck_For_Container GO Create Procedure [AzMan_SP_AccessCheck_For_Container] ( @Return [int] output ,@ID [int] ,@ObjectType [tinyint] ) As -- Check MemberShip starting with current node and going up Declare @SQLRoleName [nvarchar](64) Declare @SQLRoleType [TinyInt] Set @Return = -5 -- Check Admin Set @SQLRoleType = 1 Set @SQLRoleName = '' Exec [AzMan_SP_GetSQLRole] @Return output, @ID, @ObjectType, @SQLRoleType, @SQLRoleName = @SQLRoleName output -- Is a member of admin if @SQLRoleName <> '' Begin If Is_Member(@SQLRoleName) = 1 Begin Set @Return = 1 -- Admin Access Goto Exit_AzMan_SP_AccessCheck_For_Container End End -- Is a member of Reader? Set @SQLRoleType = 2 Set @SQLRoleName = '' Exec [AzMan_SP_GetSQLRole] @Return output, @ID, @ObjectType, @SQLRoleType, @SQLRoleName = @SQLRoleName output if @SQLRoleName <> '' Begin If Is_Member(@SQLRoleName) = 1 Begin Set @Return = 2 -- Reader Access Goto Exit_AzMan_SP_AccessCheck_For_Container End End -- Is a member of Delegated Users? Set @SQLRoleType = 3 Set @SQLRoleName = '' Exec [AzMan_SP_GetSQLRole] @Return output, @ID, @ObjectType, @SQLRoleType, @SQLRoleName = @SQLRoleName output if @SQLRoleName <> '' Begin If Is_Member(@SQLRoleName) = 1 Begin Set @Return = 3 -- Delegated user Access Goto Exit_AzMan_SP_AccessCheck_For_Container End End Exit_AzMan_SP_AccessCheck_For_Container: Return @Return GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SP_AccessCheck' and type = 'P') DROP PROCEDURE AzMan_SP_AccessCheck GO Create Procedure [AzMan_SP_AccessCheck] ( @Return [int] output ,@AccessAtObjType [tinyint] output ,@ID [int] ,@ObjectType [tinyint] ,@CheckSacl [bit] = 0 ,@SaclIsOn [bit] output ) As -- Check MemberShip starting with current node and going up Declare @SQLRoleName [nvarchar](64) Declare @SQLRoleType [TinyInt] Declare @StoreID [int] Declare @AppID [int] Declare @ScopeID [int] Declare @StoreAccess [int] -- If this bit is set we know access check result, but we need to do SACL Declare @CheckSaclOnly [int] Declare @TempRet [int] Set @Return = -5 Set @StoreAccess = -5 Set @AccessAtObjType = 0 -- default to SACL off Set @SaclIsOn = 0 Set @CheckSaclOnly = 0 -- If the user is a DB_Owner, he has full control if Is_Member('db_owner') = 1 Begin set @Return = 1 --print 'User is member of db_Owner' IF @CheckSacl = 0 Goto Exit_AzMan_SP_AccessCheck ELSE Set @CheckSaclOnly = 1 End else if Is_Member('db_datawriter') = 1 -- If the user is a data writer he has full control Begin set @Return = 1 --print 'User is member of db_datawriter' IF @CheckSacl = 0 Goto Exit_AzMan_SP_AccessCheck ELSE Set @CheckSaclOnly = 1 End else if Is_Member('db_datareader') = 1 -- If the user is a data reader he has read control Begin set @Return = 2 --print 'User is member of db_datareader' IF @CheckSacl = 0 Goto Exit_AzMan_SP_AccessCheck ELSE Set @CheckSaclOnly = 1 End IF @CheckSaclOnly = 1 Set @TempRet = @Return -- Go all the way up to the store -- Check Access from top to bottom Exec AzMan_SP_Get_Object_Path @Return output, @ID, @ObjectType , @StoreID output, @AppID output, @ScopeID output -- Error ? Record not found if @Return < 0 Begin goto Exit_AzMan_SP_AccessCheck End -- we honor application's SACL setting over the store's IF @CheckSacl = 1 AND @StoreID <> -1 AND @AppID <> -1 BEGIN SELECT @SaclIsOn = IsNull(ApplyStoreSacl, 0) FROM AzMan_AzApplication App WHERE App.ID = @AppID AND App.StoreID = @StoreID END ELSE IF @CheckSacl = 1 AND @StoreID <> -1 BEGIN SELECT @SaclIsOn = IsNull(ApplyStoreSacl, 0) FROM AzMan_AzAuthorizationStore Store WHERE Store.ID = @StoreID END -- if we are only to check SACL settings (in other words, we already know the answer of access) IF @CheckSaclOnly = 1 Goto Exit_AzMan_SP_AccessCheck if @StoreID <> -1 Begin set @AccessAtObjType = 0 Exec AzMan_SP_AccessCheck_For_Container @Return output, @StoreID, 0 Set @StoreAccess = @Return if @Return <= 2 Begin Goto Exit_AzMan_SP_AccessCheck End End else Begin Goto Exit_AzMan_SP_AccessCheck End if @AppID <> -1 Begin set @AccessAtObjType = 1 Exec AzMan_SP_AccessCheck_For_Container @Return output, @AppID, 1 if @Return <= 2 Begin Goto Exit_AzMan_SP_AccessCheck End End else Begin Goto Exit_AzMan_SP_AccessCheck End if @ScopeID <> -1 Begin set @AccessAtObjType = 4 Exec AzMan_SP_AccessCheck_For_Container @Return output, @ScopeID, 4 if @Return <= 2 Begin Goto Exit_AzMan_SP_AccessCheck End End Begin Goto Exit_AzMan_SP_AccessCheck End Exit_AzMan_SP_AccessCheck: IF @CheckSaclOnly = 1 Set @Return = @TempRet Return @Return GO Create PROCEDURE dbo.AzMan_SPS_Get_StoreIDByName ( @Return [int] output, @ID int OUTPUT, @Name nvarchar(512) ) AS Set @ID = -1 -- this means it doesn't exist Set @Return = 0 SELECT @ID = ID FROM AzMan_AzAuthorizationStore WHERE Name = @Name RETURN @@RowCount go Create Procedure [AzMan_SP_Check_Dup_Task_For_Given_Parent] ( @Return [int] output, @ParentID [int], @ParentType [tinyint] , @ID [int], @Name [nvarchar](64) ) AS Set @Return = 0 -- Make sure that the name doesn't exist at the same level if @ParentType = 1 Begin if Exists( Select [Name] from [dbo].[AzMan_AzTask] where ParentType = @ParentType and AppID = @ParentID and ID <> IsNULL(@ID,0) and LOWER([Name]) = LOWER(@Name) ) Begin Set @Return = -183 -- Same Name exist End End else if @ParentType = 4 Begin if Exists( Select [Name] from [dbo].[AzMan_AzTask] where ParentType = @ParentType and ScopeID = @ParentID and ID <> IsNULL(@ID,0) and LOWER([Name]) = LOWER(@Name) ) Begin Set @Return = -183 -- Same Name exist End End else Begin Set @Return = -87 -- invalid parameter End Return @Return go Create Procedure [AzMan_SP_Check_Dup_Task] ( @Return [int] output, @ParentID [int], @ParentType [tinyint] , @ID [int], @Name [nvarchar](64) ) AS Declare @ParentAppID [int] Set @Return = 0 Set @ParentAppID = 0 -- First Check the current Parent exec AzMan_SP_Check_Dup_Task_For_Given_Parent @Return output, @ParentID, @ParentType, @ID, @Name if @Return <> 0 Begin Return(@Return) End -- Behave differently depending on the object type of the parent object -- A task that is a child of an application -- cannot have the same name as any tasks that are children of any of the child scopes. if @ParentType = 1 -- Application Begin Set @ParentAppID = @ParentID if Exists( Select [Name] from [dbo].[AzMan_AzTask] where ( ParentType = 4 ) -- All Child scope and LOWER([Name]) = LOWER(@Name) and (@ParentID IN ( Select AppID from AzMan_AzScope where AppID = @ParentID and ID <> IsNULL(@ID,0)) ) ) Begin Set @Return = -183 -- Same Name exist End End else if @ParentType = 4 -- Scope Begin -- A task that is a child of a scope, -- cannot have the same name as tasks that are children of the application. -- Find the Parent App Select @ParentAppID = [AppID] from AzMan_AzScope where [ID] = @ParentID if ( @ParentAppID = 0 ) Begin Set @Return = -1 -- General Error End else Begin exec AzMan_SP_Check_Dup_Task_For_Given_Parent @Return output, @ParentAppID, 1, @ID, @Name End End -- Tasks and operations share a namespace so ensure there -- isn't an operation by this name. if @Return = 0 Begin if Exists( Select [Name] from [dbo].[AzMan_AzOperation] where LOWER([Name]) = LOWER(@Name) and (@ParentAppID = AppID) ) Begin Set @Return = -183 -- Same Name exist End End Return @Return go Create Procedure [AzMan_SP_Check_Dup_RoleAssignment] ( @Return [int] output, @ParentID [int], @ParentType [tinyint], @ID [int], @Name [nvarchar](64) ) AS Set @Return = 0 if @ParentType = 1 Begin if Exists( Select [Name] from [dbo].[AzMan_AzRoleAssignment] where ParentType = @ParentType and AppID = @ParentID and ID <> IsNULL(@ID,0) and LOWER([Name]) = LOWER(@Name) ) Begin Set @Return = -183 -- Same Name exist End End else if @ParentType = 4 Begin if Exists( Select [Name] from [dbo].[AzMan_AzRoleAssignment] where ParentType = @ParentType and ScopeID = @ParentID and ID <> IsNULL(@ID,0) and LOWER([Name]) = LOWER(@Name) ) Begin Set @Return = -183 -- Same Name exist End End Else Begin Set @Return = -1 End Return @Return go Create Procedure [AzMan_SP_Check_Dup_Application] ( @Return [int] output, @StoreID [int], @ID [int], @Name [nvarchar](512) ) AS Set @Return = 0 -- Make sure that the name doesn't exist at the same level if Exists( Select [Name] from [dbo].[AzMan_AzApplication] where StoreID = @StoreID and ID <> IsNULL(@ID,0) and LOWER([Name]) = LOWER(@Name) ) Begin Set @Return = -183 -- Same Name exist End Return @Return go Create Procedure [AzMan_SP_Check_Dup_Scope] ( @Return [int] output, @AppID [int], @ID [int], @NameHash [binary] (32) ) AS Set @Return = 0 -- Make sure that the name doesn't exist at the same level begin if Exists( Select ID from [dbo].[AzMan_AzScope] where ID <> IsNULL(@ID,0) and AppID = @AppID and [NameHash] = @NameHash ) Begin Set @Return = -183 -- Same Name exist End end Return @Return go Create Procedure [AzMan_SP_Check_Dup_Operation] ( @Return [int] output, @AppID [int], @ID [int], @Name [nvarchar](64) ) AS Set @Return = 0 -- Make sure that the name doesn't exist at the same level if Exists( Select [Name] from [dbo].[AzMan_AzOperation] where AppID = @AppID and ID <> IsNULL(@ID,0) and LOWER([Name]) = LOWER(@Name) ) Begin Set @Return = -183 -- Same Name exist End Return @Return go Create Procedure [AzMan_SP_Check_Dup_Group_For_Given_Parent] ( @Return [int] output, @ParentID [int], @ParentType [tinyint] , @ID [int], @Name [nvarchar](64) ) AS Set @Return = 0 if @ParentType = 0 Begin if Exists( Select [Name] from [dbo].[AzMan_AzApplicationGroup] where ( ParentType = @ParentType ) and (StoreID = @ParentID) and LOWER([Name]) = LOWER(@Name) and ID <> IsNULL(@ID,0) ) Begin Set @Return = -183 -- Same Name exist End End else if @ParentType = 1 Begin if Exists( Select [Name] from [dbo].[AzMan_AzApplicationGroup] where ( ParentType = @ParentType ) and (AppID = @ParentID) and LOWER([Name]) = LOWER(@Name) and ID <> IsNULL(@ID,0) ) Begin Set @Return = -183 -- Same Name exist End End else if @ParentType = 4 Begin if Exists( Select [Name] from [dbo].[AzMan_AzApplicationGroup] where ( ParentType = @ParentType ) and (ScopeID = @ParentID) and LOWER([Name]) = LOWER(@Name) and ID <> IsNULL(@ID,0) ) Begin Set @Return = -183 -- Same Name exist End End Else Begin Set @Return = -1 Return (@Return) End Return(@Return) GO Create Procedure [AzMan_SP_Check_Dup_Group] ( @Return [int] output, @ParentID [int], @ParentType [tinyint] , @ID [int], @Name [nvarchar](64) ) AS Declare @ParentStore [int] Declare @ParentAppID [int] Set @Return = 0 Set @ParentStore = 0 Set @ParentAppID = 0 -- First Check the current Parent exec AzMan_SP_Check_Dup_Group_For_Given_Parent @Return output, @ParentID, @ParentType, @ID, @Name if @Return <> 0 Begin Return(@Return) End -- Behave differently depending on the object type of the parent object -- -- A group that is a child of the authorization store, -- cannot have the same name as any groups that are children of any of the child applications, and -- cannot have the same name as any groups that are children of any of the grandchild child scopes. if @ParentType = 0 -- Auth Store Begin if Exists( Select ID from [dbo].[AzMan_AzApplicationGroup] where ( ( ID <> IsNULL(@ID,0) ) and ( [Name] = @Name ) and ( ( ( ParentType = 1 ) and -- Application ( AppID in ( select ID from AzMan_AzApplication where StoreID = @ParentID ) ) ) or ( ( ParentType = 4 ) and -- Scope ( ScopeID in ( select ID from AzMan_AzScope where AppID in (select ID from AzMan_AzApplication where StoreID = @ParentID) ) ) ) ) ) ) Begin Set @Return = -183 -- Same Name exist End End else if @ParentType = 1 -- Application Begin -- A group that is a child of an application -- cannot have the same name as groups that are children of the authorization store, -- and cannot have the same name as any groups that are children of any of the child scopes. -- Find the parent of Application Select @ParentStore = [StoreID] from AzMan_AzApplication where [ID] = @ParentID if ( @ParentStore = 0 ) Begin Set @Return = -1 -- General Error End Else Begin -- and Check for conflict exec AzMan_SP_Check_Dup_Group_For_Given_Parent @Return output, @ParentStore, 0, @ID, @Name End if ( @Return = 0 ) Begin -- Find All the Child scopes of parent and check for conflicts if Exists( Select [Name] from [dbo].[AzMan_AzApplicationGroup] where ( ParentType = 4 ) -- All Child scope and LOWER([Name]) = LOWER(@Name) and (@ParentID IN ( Select AppID from AzMan_AzScope where AppID = @ParentID and ID <> IsNULL(@ID,0)) ) ) Begin Set @Return = -183 -- Same Name exist End End End else if @ParentType = 4 -- Scope Begin -- A group that is a child of a scope, -- cannot have the same name as groups that are children of the application or authorization store -- Find the Parent App Select @ParentAppID = [AppID] from AzMan_AzScope where [ID] = @ParentID if ( @ParentAppID = 0 ) Begin Set @Return = -1 -- General Error End else Begin exec AzMan_SP_Check_Dup_Group_For_Given_Parent @Return output, @ParentAppID, 1, @ID, @Name if @Return = 0 Begin -- Find the Parent Store Select @ParentStore = [StoreID] from AzMan_AzApplication where [ID] = @ParentAppID if ( @ParentStore = 0 ) Begin Set @Return = -1 -- General Error End else Begin exec AzMan_SP_Check_Dup_Group_For_Given_Parent @Return output, @ParentStore, 0, @ID, @Name End End End End Return(@Return) GO Create Procedure [AzMan_SPI_AzAuthorizationStore] -- Inserts a new record in [AzMan_AzAuthorizationStore] table ( @Return [int] output , @ID [int] OUTPUT , @ObjectGuid [uniqueidentifier] = Null , @DomainTimeout [int] = Null , @ScriptEngineTimeout [int] = Null , @MaxScriptEngines [int] = Null , @ApplyStoreSacl [bit] = Null , @GenerateAudits [bit] = 0 , @MajorVersion [int] = 1 , @MinorVersion [int] = 0 , @TargetMachine [nvarchar](50) = Null , @Description [nvarchar](1024) = Null , @Name [nvarchar] (512) = NULL , @ApplicationData [ntext] = Null ) as DECLARE @RowCount INT, @Error INT Set @Return = 0 Set @ID = 0 Set NoCount On Begin Insert Into [dbo].[AzMan_AzAuthorizationStore] ( [ObjectGuid] , [Name] , [Description] , [ApplicationData] , [DomainTimeout] , [ScriptEngineTimeout] , [MaxScriptEngines] , [TargetMachine] , [ApplyStoreSacl] , [GenerateAudits] , [MajorVersion] , [MinorVersion] ) Values ( @ObjectGuid , @Name , @Description , @ApplicationData , @DomainTimeout , @ScriptEngineTimeout , @MaxScriptEngines , @TargetMachine , @ApplyStoreSacl , @GenerateAudits , @MajorVersion , @MinorVersion ) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @RowCount = 1 Begin Set @ID = Cast(SCOPE_IDENTITY() As [int]) End else Begin Set @Return = @Error End -- generate a generic audit EXEC [AzMan_SP_GenerateGenericAudit] @Return, 0, -- 0 for store @Name, @ObjectGuid, N'Trying to create an AzAuthorizationStore' -- generate an audit EXEC [AzMan_SP_GenerateObjectAudit] @Return, 0, -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE 0, -- 0 for store @Name, @ObjectGuid, 0, -- 0 for store @Name, @ObjectGuid, N'' -- no other info End Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPI_AzApplication] -- Inserts a new record in [AzMan_AzApplication] table ( @Return [int] output , @ID [int] = Null Output , @ObjectGuid [uniqueidentifier] = Null , @StoreId [int] , @ApplyStoreSacl [bit] = Null , @GenerateAudits [bit] = Null , @AuthzInterfaceClsId [int] = Null , @CheckDup [bit] = 1 , @ApplicationVersion [nvarchar](50) = Null , @Name [nvarchar](512) = Null , @Description [nvarchar](1024) = Null , @ApplicationData [ntext] = Null ) As Set NoCount On Begin DECLARE @RowCount INT, @Error INT DECLARE @storeName [nvarchar](512) DECLARE @storeGuid [uniqueidentifier] Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 Set @Return = 0 Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output, @StoreId, 0, 1, @SaclIsOn output -- Require Admin Access if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End -- Check for duplicate name IF @CheckDup = 1 BEGIN Exec AzMan_SP_Check_Dup_Application @Return output, @StoreId, @ID, @Name END ELSE Set @Return = 0 if @Return = 0 Begin Insert Into [dbo].[AzMan_AzApplication] ( [ObjectGuid] , [StoreID] , [Name] , [Description] , [ApplicationData] , [ApplyStoreSacl] , [GenerateAudits] , [AuthzInterfaceClsId] , [ApplicationVersion] ) Values ( @ObjectGuid , @StoreId , @Name , @Description , @ApplicationData , @ApplyStoreSacl , @GenerateAudits , @AuthzInterfaceClsId , @ApplicationVersion ) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount = 1 Begin Set @ID = Cast(SCOPE_IDENTITY() As [int]) End Else Begin Set @Return = @Error End -- generate an audit if SACL is on IF @SaclIsOn = 1 BEGIN -- get the store info SELECT @storeName = Store.Name, @storeGuid = Store.ObjectGuid FROM [dbo].[AzMan_AzAuthorizationStore] Store WHERE Store.ID = @StoreId -- generate an audit EXEC [AzMan_SP_GenerateObjectAudit] @Return, 0, -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE 0, -- 0 for store @storeName, @storeGuid, 1, -- 1 for Application @Name, @ObjectGuid, N'' -- no other info END End End Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPU_AzApplication] -- Update an existing record in [AzMan_AzApplication] table ( @Return [int] output , @ID [int] , @StoreId [int] , @ConsiderNull_Description bit = 0 , @ConsiderNull_ApplicationData bit = 0 , @ApplyStoreSacl [bit] = Null , @ConsiderNull_ApplyStoreSacl bit = 0 , @GenerateAudits [bit] = Null , @ConsiderNull_GenerateAudits bit = 0 , @AuthzInterfaceClsId [int] = Null , @ConsiderNull_AuthzInterfaceClsId bit = 0 , @ConsiderNull_ApplicationVersion bit = 0 , @ApplicationVersion [nvarchar](50) = Null , @Name [nvarchar](512) , @Description [nvarchar](1024) = Null , @ApplicationData [ntext] = Null ) As DECLARE @ObjectGuid uniqueidentifier Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 Set NoCount On Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 0, 1, @SaclIsOn output -- Require Admin Access if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End Set @Return = 0 If @ConsiderNull_Description Is Null Set @ConsiderNull_Description = 0 If @ConsiderNull_ApplicationData Is Null Set @ConsiderNull_ApplicationData = 0 If @ConsiderNull_ApplyStoreSacl Is Null Set @ConsiderNull_ApplyStoreSacl = 0 If @ConsiderNull_GenerateAudits Is Null Set @ConsiderNull_GenerateAudits = 0 If @ConsiderNull_AuthzInterfaceClsId Is Null Set @ConsiderNull_AuthzInterfaceClsId = 0 If @ConsiderNull_ApplicationVersion Is Null Set @ConsiderNull_ApplicationVersion = 0 IF @Name Is Not NULL Begin -- Check for duplicate name Exec AzMan_SP_Check_Dup_Application @Return output, @StoreId, @ID, @Name End If @Return = 0 Begin Update [dbo].[AzMan_AzApplication] Set [Name] = IsNull(@Name, [Name]) ,[Description] = Case @ConsiderNull_Description When 0 Then IsNull(@Description, [Description]) When 1 Then @Description End ,[ApplicationData] = Case @ConsiderNull_ApplicationData When 0 Then IsNull(@ApplicationData, [ApplicationData]) When 1 Then @ApplicationData End ,[ApplyStoreSacl] = Case @ConsiderNull_ApplyStoreSacl When 0 Then IsNull(@ApplyStoreSacl, [ApplyStoreSacl]) When 1 Then @ApplyStoreSacl End ,[GenerateAudits] = Case @ConsiderNull_GenerateAudits When 0 Then IsNull(@GenerateAudits, [GenerateAudits]) When 1 Then @GenerateAudits End ,[AuthzInterfaceClsId] = Case @ConsiderNull_AuthzInterfaceClsId When 0 Then IsNull(@AuthzInterfaceClsId, [AuthzInterfaceClsId]) When 1 Then @AuthzInterfaceClsId End ,[ApplicationVersion] = Case @ConsiderNull_ApplicationVersion When 0 Then IsNull(@ApplicationVersion, [ApplicationVersion]) When 1 Then @ApplicationVersion End Where ([ID] = @ID) End -- generate an audit if SACL is on IF @SaclIsOn = 1 BEGIN -- get info for auditing SELECT @ObjectGuid = app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app WHERE app.ID = @ID -- generate an audit EXEC [AzMan_SP_GenerateGenericAudit] @Return, 1, -- 0 for application @Name, @ObjectGuid, N'The shallow properties of the application may have been modified' END Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPI_AzScope] -- Inserts a new record in [AzMan_AzScope] table ( @Return [int] output , @ID [int] = Null output , @AppId [int] = Null , @NameLen [int] = 0 , @NameHash [Binary] (32) = NULL , @ObjectGuid [uniqueidentifier] = Null , @CheckDup [bit] = 1 , @Description [nvarchar](1024) = Null , @Name [ntext] , @ApplicationData [ntext] = Null ) As DECLARE @appName nvarchar(512) DECLARE @appGuid uniqueidentifier Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 Set NoCount On Begin DECLARE @RowCount INT, @Error INT Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@AppId, 1, 1, @SaclIsOn output -- Require Admin Access at App if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End IF @CheckDup = 1 BEGIN Exec AzMan_SP_Check_Dup_Scope @Return output, @AppId, -1, @NameHash End ELSE Set @Return = 0 if @Return = 0 Begin Insert Into [dbo].[AzMan_AzScope] ( [AppID] , [Name] , [NameLen] , [NameHash] , [Description] , [ApplicationData] , [ObjectGuid] ) Values ( @AppId , @Name , @NameLen , @NameHash , @Description , @ApplicationData , @ObjectGuid ) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount = 1 Begin Set @ID = Cast(SCOPE_IDENTITY() As [int]) End Else Begin Set @Return = @Error End End IF @SaclIsOn = 1 BEGIN -- get the store info for auditing SELECT @appName = app.Name, @appGuid = app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app WHERE app.ID = @AppId -- generate an audit EXEC [AzMan_SP_GenerateObjectAudit] @Return, 0, -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE 1, -- 1 for Application @appName, @appGuid, 4, -- 4 for scope @Name, @ObjectGuid, N'' -- no other info END End Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPI_AzOperation] -- Inserts a new record in [AzMan_AzOperation] table ( @Return [int] output , @ID [int] = Null Output , @OperationID [int] = Null , @AppId [int] = Null , @ObjectGuid [uniqueidentifier] = Null , @CheckDup [bit] = 1 , @Name [nvarchar](64) = Null , @Description [nvarchar](1024) = Null , @ApplicationData [ntext] = Null ) As DECLARE @appName nvarchar(512) DECLARE @appGuid uniqueidentifier DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 Set NoCount On Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] Set @Return = 0 Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output, @AppId, 1, 1, @SaclIsOn output -- Require Admin Access if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End -- if check dup IF @CheckDup = 1 BEGIN Exec AzMan_SP_Check_Dup_Operation @Return output, @AppId, @ID, @Name End ELSE Set @Return = 0 if @Return = 0 Begin Insert Into [dbo].[AzMan_AzOperation] ( [ObjectGuid] , [AppID] , [Name] , [Description] , [ApplicationData] , [OperationID] ) Values ( @ObjectGuid , @AppId , @Name , @Description , @ApplicationData , @OperationID ) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount = 1 Begin Set @ID = Cast(SCOPE_IDENTITY() As [int]) End Else Begin Set @Return = @Error End End IF @SaclIsOn = 1 BEGIN -- get the store info for auditing SELECT @appName = app.Name, @appGuid = app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app WHERE app.ID = @AppId -- generate an audit EXEC [AzMan_SP_GenerateObjectAudit] @Return, 0, -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE 1, -- 1 for Application @appName, @appGuid, 2, -- 2 for operation @Name, @ObjectGuid, N'' -- no other info END End Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPI_AzApplicationGroup] -- Inserts a new record in [AzMan_AzApplicationGroup] table ( @Return [int] output , @ID [int] = Null Output , @ParentId [int] , @ParentType [int] , @GroupType [tinyint] = Null , @ObjectGuid [uniqueidentifier] = Null , @CheckDup [bit] = 1 , @Name [nvarchar](64) = Null , @Description [nvarchar](1024) = Null ) As DECLARE @RowCount INT, @Error INT Declare @StoreID int, @AppID int , @ScopeID int -- parent name and guid is only needed for auditing DECLARE @parentName nvarchar(512) DECLARE @parentGuid uniqueidentifier Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 Set @Return = 0 set @StoreID = 0 set @AppID = 0 set @ScopeID = 0 Set NoCount On Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output, @ParentId, @ParentType, 1, @SaclIsOn output -- Require Admin Access if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End IF @CheckDup = 1 BEGIN Exec AzMan_SP_Check_Dup_Group @Return output, @ParentId, @ParentType, @ID, @Name END ELSE Set @Return = 0 if @Return = 0 Begin if @ParentType = 0 Begin set @StoreID = @ParentId -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @parentName = store.Name, @parentGuid = store.ObjectGuid FROM [dbo].[AzMan_AzAuthorizationStore] store WHERE store.ID = @ParentId END End else if @ParentType = 1 Begin set @AppID = @ParentId -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @parentName = app.Name, @parentGuid = app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app WHERE app.ID = @ParentId END End else if @ParentType = 4 Begin set @ScopeID = @ParentId -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @parentName = scope.Name, @parentGuid = scope.ObjectGuid FROM [dbo].[AzMan_AzScope] scope WHERE scope.ID = @ParentId END End Insert Into [dbo].[AzMan_AzApplicationGroup] ( [ObjectGuid] , [StoreID] , [AppID] , [ScopeID] , [ParentType] , [Name] , [Description] , [GroupType] ) Values ( @ObjectGuid , @StoreID , @AppID , @ScopeID , @ParentType , @Name , @Description , @GroupType ) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount = 1 Begin Set @ID = Cast(SCOPE_IDENTITY() As [int]) End Else Begin Set @Return = @Error End End IF @SaclIsOn = 1 BEGIN -- generate an audit EXEC [AzMan_SP_GenerateObjectAudit] @Return, 0, -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE @ParentType, -- parent type @parentName, @parentGuid, 5, -- 5 for group @Name, @ObjectGuid, N'' -- no other info END Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPI_AzTask] -- Inserts a new record in [AzMan_AzTask] table ( @Return [int] output , @ID [int] = Null Output , @IsRoleDefinition [bit] = 0 , @ParentId [int] , @ParentType [tinyint] , @ObjectGuid [uniqueidentifier] = Null , @CheckDup [bit] = 1 , @Name [nvarchar](64) = Null , @Description [nvarchar](1024) = Null , @ApplicationData [ntext] = Null ) As DECLARE @RowCount INT, @Error INT Declare @AppID [int], @ScopeID [int] DECLARE @parentName nvarchar(512) DECLARE @parentGuid uniqueidentifier Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 Set @Return = 0 Set NoCount On Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ParentId, @ParentType, 1, @SaclIsOn output -- Require Admin Access if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End Set @AppID = null Set @ScopeID = null if @ParentType = 1 Begin Set @AppID = @ParentId -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @parentName = app.Name, @parentGuid = app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app WHERE app.ID = @ParentId END End Else if @ParentType = 4 Begin Set @ScopeID = @ParentId -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @parentName = scope.Name, @parentGuid = scope.ObjectGuid FROM [dbo].[AzMan_AzScope] scope WHERE scope.ID = @ParentId END End Else Begin Set @Return = -1 goto Done End -- Make sure that the name doesn't exist at the same level IF @CheckDup = 1 BEGIN Exec AzMan_SP_Check_Dup_Task @Return output, @ParentId, @ParentType, @ID, @Name End ELSE Set @Return = 0 if @Return = 0 Begin Insert Into [dbo].[AzMan_AzTask] ( [ObjectGuid] , [AppID] , [ScopeID] , [ParentType] , [Name] , [Description] , [ApplicationData] , [IsRoleDefinition] ) Values ( @ObjectGuid , @AppID , @ScopeID , @ParentType , @Name , @Description , @ApplicationData , @IsRoleDefinition ) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount = 1 Begin Set @ID = Cast(SCOPE_IDENTITY() As [int]) End Else Begin Set @Return = @Error End End IF @SaclIsOn = 1 -- generate an audit EXEC [AzMan_SP_GenerateObjectAudit] @Return, 0, -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE @ParentType, -- parent type @parentName, @parentGuid, 3, -- 3 for task @Name, @ObjectGuid, N'' -- no other info Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPI_AzTask_Single_Operation] ( @Return [int] output , @TaskID [int] -- ID Of task , @OperationID [int] , @SaclIsOn [bit] ) As DECLARE @RowCount INT, @Error INT DECLARE @taskName nvarchar(512) DECLARE @taskGuid uniqueidentifier DECLARE @opName nvarchar(512) DECLARE @opGuid uniqueidentifier Set @Return = 0 Set NoCount On INSERT INTO [AzMan_Task_To_Operation_Link] (TaskID, OperationID) VALUES (@TaskID, @OperationID) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = -1 --Generic Error End End IF @SaclIsOn = 1 BEGIN -- get the info for auditing SELECT @taskName = Task.Name, @taskGuid = Task.ObjectGuid FROM [dbo].[AzMan_AzTask] Task WHERE Task.ID = @TaskID SELECT @opName = Op.Name, @opGuid = Op.ObjectGuid FROM [dbo].[AzMan_AzOperation] Op WHERE Op.ID = @OperationID -- generate an audit EXEC [AzMan_SP_GenerateObjectAudit] @Return, 2, -- 2 for SE_AUDITID_AZ_SQL_REFERENCE_ASSIGN 3, -- 3 for task @taskName, @taskGuid, 2, -- 2 for Operation @opName, @opGuid, N'' -- no other info END Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPD_AzTask_Single_Operation] ( @Return [int] output , @TaskID [int] -- ID Of task , @OperationID [int] , @SaclIsOn [bit] ) As Set @Return = 0 DECLARE @RowCount INT, @Error INT DECLARE @taskName nvarchar(512) DECLARE @taskGuid uniqueidentifier DECLARE @opName nvarchar(512) DECLARE @opGuid uniqueidentifier Set NoCount On delete [AzMan_Task_To_Operation_Link] where TaskID = @TaskID and OperationID = @OperationID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = -1168 --Record not found End End IF @SaclIsOn = 1 BEGIN -- get the info for auditing SELECT @taskName = Task.Name, @taskGuid = Task.ObjectGuid FROM [dbo].[AzMan_AzTask] Task WHERE Task.ID = @TaskID SELECT @opName = Op.Name, @opGuid = Op.ObjectGuid FROM [dbo].[AzMan_AzOperation] Op WHERE Op.ID = @OperationID -- generate an audit EXEC [AzMan_SP_GenerateObjectAudit] @Return, 3, -- 3 for SE_AUDITID_AZ_SQL_REFERENCE_REMOVE 3, -- 3 for task @taskName, @taskGuid, 2, -- 2 for Operation @opName, @opGuid, N'' -- no other info END Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPI_AzTask_Multi_Operations] ( @Return [int] output , @TaskID [int] -- ID Of Task , @SepChar [char] (1) = "|" , @OperationIDs [nvarchar] (4000) ) As Set @Return = 0 DECLARE @equal char DECLARE @addOrDelete nvarchar(10) DECLARE @isAdd int Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 SET @equal = '=' Set NoCount On Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@TaskID, 3, 1, @SaclIsOn output -- Require Admin Access if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End -- First parse the string -- Insert each one of them DECLARE @OperationID varchar(100), @Pos int Declare @iOperationID int SET @OperationIDs = LTRIM(RTRIM(@OperationIDs))+ @SepChar SET @Pos = CHARINDEX(@equal, @OperationIDs, 1) IF REPLACE(@OperationIDs, @SepChar, '') <> '' BEGIN WHILE @Pos > 0 BEGIN SET @OperationID = LTRIM(RTRIM(LEFT(@OperationIDs, @Pos - 1))) Set @iOperationID = CAST(@OperationID as int) -- remove the left part (the id) SET @OperationIDs = RIGHT(@OperationIDs, LEN(@OperationIDs) - @Pos) -- now move to the pipe separator SET @Pos = CHARINDEX(@SepChar, @OperationIDs, 1) SET @addOrDelete = LTRIM(RTRIM(LEFT(@OperationIDs, @Pos - 1))) Set @isAdd = CAST(@addOrDelete as int) IF @iOperationID <> 0 BEGIN -- if NNNN=0, then it means to delete IF @isAdd <> 0 BEGIN Exec AzMan_SPI_AzTask_Single_Operation @Return output, @TaskID, @iOperationID, @SaclIsOn if @Return <> 0 Begin Break End End ELSE BEGIN Exec AzMan_SPD_AzTask_Single_Operation @Return output, @TaskID, @iOperationID, @SaclIsOn if @Return <> 0 Begin Break End End END SET @OperationIDs = RIGHT(@OperationIDs, LEN(@OperationIDs) - @Pos) SET @Pos = CHARINDEX(@equal, @OperationIDs, 1) END END Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPI_AzRoleAssignment_Single_Operation] ( @Return [int] output , @RoleID [int] -- ID Of Role , @OperationID [int] , @SaclIsOn [bit] ) As DECLARE @RowCount INT, @Error INT DECLARE @roleName nvarchar(512) DECLARE @roleGuid uniqueidentifier DECLARE @opName nvarchar(512) DECLARE @opGuid uniqueidentifier Set @Return = 0 Set NoCount On INSERT INTO [AzMan_Role_To_Operation_Link] (RoleID, OperationID) VALUES (@RoleID, @OperationID) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = -1 --Generic Error End End IF @SaclIsOn = 1 BEGIN -- get the info for auditing SELECT @roleName = Role.Name, @roleGuid = Role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] Role WHERE Role.ID = @RoleID SELECT @opName = Op.Name, @opGuid = Op.ObjectGuid FROM [dbo].[AzMan_AzOperation] Op WHERE Op.ID = @OperationID -- generate an audit EXEC [AzMan_SP_GenerateObjectAudit] @Return, 2, -- 2 for SE_AUDITID_AZ_SQL_REFERENCE_ASSIGN 6, -- 6 for role @roleName, @roleGuid, 2, -- 2 for Operation @opName, @opGuid, N'' -- no other info END Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPD_AzRoleAssignment_Single_Operation] ( @Return [int] output , @RoleID [int] -- ID Of Role assignment , @OperationID [int] , @SaclIsOn [bit] ) As DECLARE @RowCount INT, @Error INT DECLARE @roleName nvarchar(512) DECLARE @roleGuid uniqueidentifier DECLARE @opName nvarchar(512) DECLARE @opGuid uniqueidentifier Set @Return = 0 Set NoCount On delete [AzMan_Role_To_Operation_Link] where RoleID = @RoleID and OperationID = @OperationID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = -1168 --Record not found End End IF @SaclIsOn = 1 BEGIN -- get the info for auditing SELECT @roleName = Role.Name, @roleGuid = Role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] Role WHERE Role.ID = @RoleID SELECT @opName = Op.Name, @opGuid = Op.ObjectGuid FROM [dbo].[AzMan_AzOperation] Op WHERE Op.ID = @OperationID -- generate an audit EXEC [AzMan_SP_GenerateObjectAudit] @Return, 3, -- 3 for SE_AUDITID_AZ_SQL_REFERENCE_REMOVE 6, -- 6 for role @roleName, @roleGuid, 2, -- 1 for Operation @opName, @opGuid, N'' -- no other info END Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPI_AzRoleAssignment_Multi_Operations] ( @Return [int] output , @RoleID [int] -- ID Of Role , @SepChar [nchar] (1) = "|" , @OperationIDs [nvarchar] (4000) ) As Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 Set @Return = 0 Set NoCount On -- First parse the string -- Insert each one of them Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleID, 6, 1, @SaclIsOn output -- Require Admin Access if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End DECLARE @OperationID nvarchar(100), @Pos int Declare @iOperationID int DECLARE @equal char DECLARE @addOrDelete nvarchar(10) DECLARE @isAdd int SET @equal = '=' SET @OperationIDs = LTRIM(RTRIM(@OperationIDs))+ @SepChar SET @Pos = CHARINDEX(@equal, @OperationIDs, 1) IF REPLACE(@OperationIDs, @SepChar, '') <> '' BEGIN WHILE @Pos > 0 BEGIN SET @OperationID = LTRIM(RTRIM(LEFT(@OperationIDs, @Pos - 1))) Set @iOperationID = CAST(@OperationID as int) -- remove the left part (the id) SET @OperationIDs = RIGHT(@OperationIDs, LEN(@OperationIDs) - @Pos) -- now move to the pipe separator SET @Pos = CHARINDEX(@SepChar, @OperationIDs, 1) SET @addOrDelete = LTRIM(RTRIM(LEFT(@OperationIDs, @Pos - 1))) Set @isAdd = CAST(@addOrDelete as int) IF @iOperationID <> 0 BEGIN -- if NNNN=0, then it means to delete IF @isAdd <> 0 BEGIN Exec AzMan_SPI_AzRoleAssignment_Single_Operation @Return output, @RoleID, @iOperationID, @SaclIsOn if @Return <> 0 Begin Break End End ELSE BEGIN Exec AzMan_SPD_AzRoleAssignment_Single_Operation @Return output, @RoleID, @iOperationID, @SaclIsOn if @Return <> 0 Begin Break End END END SET @OperationIDs = RIGHT(@OperationIDs, LEN(@OperationIDs) - @Pos) SET @Pos = CHARINDEX(@equal, @OperationIDs, 1) END END Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPI_AzTask_Single_Task] ( @Return [int] output , @TaskID [int] , @ChildID [int] , @SaclIsOn [bit] ) As DECLARE @RowCount INT, @Error INT DECLARE @taskName nvarchar(512) DECLARE @taskGuid uniqueidentifier DECLARE @refTaskName nvarchar(512) DECLARE @refTaskGuid uniqueidentifier Set @Return = 0 Set NoCount On INSERT INTO [AzMan_Task_To_Task_Link] (TaskID, ChildID) VALUES (@TaskID, @ChildID) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = -1 --Generic Error End End -- get the info for auditing IF @SaclIsOn = 1 BEGIN SELECT @taskName = Task.Name, @taskGuid = Task.ObjectGuid FROM [dbo].[AzMan_AzTask] Task WHERE Task.ID = @TaskID SELECT @refTaskName = refTask.Name, @refTaskGuid = refTask.ObjectGuid FROM [dbo].[AzMan_AzTask] refTask WHERE refTask.ID = @ChildID -- generate an audit EXEC [AzMan_SP_GenerateObjectAudit] @Return, 2, -- 2 for SE_AUDITID_AZ_SQL_REFERENCE_ASSIGN 3, -- 3 for task @taskName, @taskGuid, 3, -- 3 for task @refTaskName, @refTaskGuid, N'' -- no other info END Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPD_AzTask_Single_Task] ( @Return [int] output, @TaskID [int] , @ChildID [int] , @SaclIsOn [bit] ) As DECLARE @RowCount INT, @Error INT DECLARE @taskName nvarchar(512) DECLARE @taskGuid uniqueidentifier DECLARE @refTaskName nvarchar(512) DECLARE @refTaskGuid uniqueidentifier Set @Return = 0 Set NoCount On Delete From [AzMan_Task_To_Task_Link] where TaskID = @TaskID and ChildID = @ChildID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin Set @Return = @Error End -- get the info for auditing IF @SaclIsOn = 1 BEGIN SELECT @taskName = Task.Name, @taskGuid = Task.ObjectGuid FROM [dbo].[AzMan_AzTask] Task WHERE Task.ID = @TaskID SELECT @refTaskName = refTask.Name, @refTaskGuid = refTask.ObjectGuid FROM [dbo].[AzMan_AzTask] refTask WHERE refTask.ID = @ChildID -- generate an audit EXEC [AzMan_SP_GenerateObjectAudit] @Return, 3, -- 3 for SE_AUDITID_AZ_SQL_REFERENCE_REMOVE 3, -- 3 for task @taskName, @taskGuid, 3, -- 3 for task @refTaskName, @refTaskGuid, N'' -- no other info END Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPI_AzTask_Multi_Tasks] ( @Return [int] output , @ParentTaskId [int] -- ID Of Task , @SepChar [char] (1) = "|" , @TaskIDs [nvarchar] (4000) ) As Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 Set @Return = 0 Set NoCount On Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ParentTaskId, 3, 1, @SaclIsOn output -- Require Admin Access if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End -- First parse the string -- Insert each one of them DECLARE @TaskID varchar(100), @Pos int Declare @iTaskID int DECLARE @equal char DECLARE @addOrDelete nvarchar(10) DECLARE @isAdd int SET @equal = '=' SET @TaskIDs = LTRIM(RTRIM(@TaskIDs))+ @SepChar SET @Pos = CHARINDEX(@equal, @TaskIDs, 1) --IF REPLACE(@TaskIDs, @SepChar, '') <> '' BEGIN WHILE @Pos > 0 BEGIN SET @TaskID = LTRIM(RTRIM(LEFT(@TaskIDs, @Pos - 1))) Set @iTaskID = CAST(@TaskID as int) -- remove the left part (the id) SET @TaskIDs = RIGHT(@TaskIDs, LEN(@TaskIDs) - @Pos) -- now move to the pipe separator SET @Pos = CHARINDEX(@SepChar, @TaskIDs, 1) SET @addOrDelete = LTRIM(RTRIM(LEFT(@TaskIDs, @Pos - 1))) Set @isAdd = CAST(@addOrDelete as int) IF @iTaskID <> 0 BEGIN if @isAdd <> 0 Begin Exec AzMan_SPI_AzTask_Single_Task @Return output, @ParentTaskId, @iTaskID, @SaclIsOn if @Return <> 0 Begin Break End End else Begin Exec AzMan_SPD_AzTask_Single_Task @Return output, @ParentTaskId, @iTaskID, @SaclIsOn if @Return <> 0 Begin Break End End END SET @TaskIDs = RIGHT(@TaskIDs, LEN(@TaskIDs) - @Pos) SET @Pos = CHARINDEX(@equal, @TaskIDs, 1) END END Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPI_AzRoleAssignment_Single_Task] ( @Return [int] output, @RoleID [int] -- ID Of Role , @TaskID [int] , @SaclIsOn [bit] ) As DECLARE @RowCount INT, @Error INT DECLARE @roleName nvarchar(512) DECLARE @roleGuid uniqueidentifier DECLARE @refTaskName nvarchar(512) DECLARE @refTaskGuid uniqueidentifier Set @Return = 0 Set NoCount On INSERT INTO [AzMan_Role_To_Task_Link] (RoleID, TaskID) VALUES (@RoleID, @TaskID) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = -1 --Generic Error End End IF @SaclIsOn = 1 BEGIN -- get the info for auditing SELECT @roleName = role.Name, @roleGuid = role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] role WHERE role.ID = @RoleID SELECT @refTaskName = refTask.Name, @refTaskGuid = refTask.ObjectGuid FROM [dbo].[AzMan_AzTask] refTask WHERE refTask.ID = @TaskID -- generate an audit EXEC [AzMan_SP_GenerateObjectAudit] @Return, 2, -- 2 for SE_AUDITID_AZ_SQL_REFERENCE_ASSIGN 6, -- 6 for role @roleName, @roleGuid, 3, -- 3 for task @refTaskName, @refTaskGuid, N'' -- no other info END Set NoCount Off Return(@Return) GO Create Procedure AzMan_SPD_AzRoleAssignment_Single_Task ( @Return [int] output, @RoleId [int] -- ID Of Role Assignment , @TaskID [int] , @SaclIsOn [bit] ) As DECLARE @RowCount INT, @Error INT DECLARE @roleName nvarchar(512) DECLARE @roleGuid uniqueidentifier DECLARE @refTaskName nvarchar(512) DECLARE @refTaskGuid uniqueidentifier Set @Return = 0 Set NoCount On Delete From [AzMan_Role_To_Task_Link] where TaskID = @TaskID and RoleID = @RoleId SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = -1168 --Record not found End End -- get the info for auditing SELECT @roleName = role.Name, @roleGuid = role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] role WHERE role.ID = @RoleId SELECT @refTaskName = refTask.Name, @refTaskGuid = refTask.ObjectGuid FROM [dbo].[AzMan_AzTask] refTask WHERE refTask.ID = @TaskID IF @SaclIsOn = 1 BEGIN -- generate an audit EXEC [AzMan_SP_GenerateObjectAudit] @Return, 3, -- 3 for SE_AUDITID_AZ_SQL_REFERENCE_REMOVE 6, -- 6 for role @roleName, @roleGuid, 3, -- 3 for task @refTaskName, @refTaskGuid, N'' -- no other info END Set NoCount Off Return(@Return) go Create Procedure [AzMan_SPI_AzRoleAssignment_Multi_Tasks] ( @Return [int] output , @RoleId [int] , @SepChar [char] (1) = "|" , @TaskIDs [nvarchar] (4000) ) As Set NoCount On Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 Set @Return = 0 Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleId, 6, 1, @SaclIsOn output -- Require Admin Access if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End -- First parse the string -- Insert each one of them DECLARE @TaskID varchar(100), @Pos int Declare @iTaskID int DECLARE @equal char DECLARE @addOrDelete nvarchar(10) DECLARE @isAdd int SET @equal = '=' SET @TaskIDs = LTRIM(RTRIM(@TaskIDs))+ @SepChar SET @Pos = CHARINDEX(@equal, @TaskIDs, 1) IF REPLACE(@TaskIDs, @SepChar, '') <> '' BEGIN WHILE @Pos > 0 BEGIN SET @TaskID = LTRIM(RTRIM(LEFT(@TaskIDs, @Pos - 1))) Set @iTaskID = CAST(@TaskID as int) -- remove the left part (the id) SET @TaskIDs = RIGHT(@TaskIDs, LEN(@TaskIDs) - @Pos) -- now move to the pipe separator SET @Pos = CHARINDEX(@SepChar, @TaskIDs, 1) SET @addOrDelete = LTRIM(RTRIM(LEFT(@TaskIDs, @Pos - 1))) Set @isAdd = CAST(@addOrDelete as int) IF @iTaskID <> 0 BEGIN -- if NNNN=0, then it means to delete IF @isAdd <> 0 Begin Exec [AzMan_SPI_AzRoleAssignment_Single_Task] @Return output, @RoleId, @iTaskID, @SaclIsOn if @Return <> 0 Begin Break End End else Begin Exec [AzMan_SPD_AzRoleAssignment_Single_Task] @Return output, @RoleId, @iTaskID, @SaclIsOn if @Return <> 0 Begin Break End End END SET @TaskIDs = RIGHT(@TaskIDs, LEN(@TaskIDs) - @Pos) SET @Pos = CHARINDEX(@equal, @TaskIDs, 1) END END Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPI_AzRoleAssignment] ( @Return [int] output , @ID [int] = Null Output , @ParentId [int] , @ParentType [tinyint] , @ObjectGuid [uniqueidentifier] = Null , @CheckDup [bit] = 1 , @Name [nvarchar](64) = Null , @Description [nvarchar](1024) = Null , @ApplicationData [ntext] = Null ) As DECLARE @RowCount INT, @Error INT Declare @AppId [int] , @ScopeID [int] DECLARE @parentName nvarchar(512) DECLARE @parentGuid uniqueidentifier Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 Set @Return = 0 Set NoCount On Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ParentId, @ParentType, 1, @SaclIsOn output -- Require Admin Access if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End IF @CheckDup = 1 BEGIN Exec AzMan_SP_Check_Dup_RoleAssignment @Return output, @ParentId, @ParentType, @ID, @Name END ELSE Set @Return = 0 if @Return = 0 Begin Set @AppId = null Set @ScopeID= null if @ParentType = 1 Begin Set @AppId = @ParentId -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @parentName=app.Name, @parentGuid=app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app WHERE app.ID = @ParentId END End else if @ParentType = 4 Begin Set @ScopeID = @ParentId -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @parentName=scope.Name, @parentGuid=scope.ObjectGuid FROM [dbo].[AzMan_AzScope] scope WHERE scope.ID = @ParentId END End else Begin Set @Return = -1 Return End Insert Into [dbo].[AzMan_AzRoleAssignment] ( [ObjectGuid] , [AppID] , [ScopeID] , [ParentType] , [Name] , [Description] , [ApplicationData] ) Values ( @ObjectGuid , @AppId , @ScopeID , @ParentType , @Name , @Description , @ApplicationData ) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount = 1 Begin Set @ID = Cast(SCOPE_IDENTITY() As [int]) End Else Begin Set @Return = @Error End End -- generate an audit IF @SaclIsOn = 1 BEGIN EXEC [AzMan_SP_GenerateObjectAudit] @Return, 0, -- 0 for SE_AUDITID_AZ_SQL_OBJECT_CREATE @ParentType, @parentName, @parentGuid, 6, -- 6 for role @Name, @ObjectGuid, N'' -- no other info END Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPU_AzAuthorizationStore] -- Update an existing record in [AzMan_AzAuthorizationStore] table ( @Return [int] output , @ID [int] , @ConsiderNull_Description bit = 0 , @ConsiderNull_ApplicationData bit = 0 , @DomainTimeout [int] = Null , @ConsiderNull_DomainTimeout bit = 0 , @ScriptEngineTimeout [int] = Null , @ConsiderNull_ScriptEngineTimeout bit = 0 , @MaxScriptEngines [int] = Null , @ConsiderNull_MaxScriptEngines bit = 0 , @ConsiderNull_TargetMachine bit = 0 , @ApplyStoreSacl [bit] = Null , @ConsiderNull_ApplyStoreSacl bit = 0 , @GenerateAudits [bit] = Null , @ConsiderNull_GenerateAudits bit = 0 , @MajorVersion [int] = Null , @ConsiderNull_MajorVersion bit = 0 , @MinorVersion [int] = Null , @ConsiderNull_MinorVersion bit = 0 , @TargetMachine [nvarchar](50) = Null , @Description [nvarchar](1024) = Null , @ApplicationData [ntext] = Null ) As DECLARE @RowCount INT, @Error INT DECLARE @ObjectName nvarchar(512) DECLARE @ObjectGuid uniqueidentifier Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 Set @Return = 0 Set NoCount On Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 0, 1, @SaclIsOn output -- Require Admin Access if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End Set @Return = 0 -- no error If @ConsiderNull_Description Is Null Set @ConsiderNull_Description = 0 If @ConsiderNull_ApplicationData Is Null Set @ConsiderNull_ApplicationData = 0 If @ConsiderNull_DomainTimeout Is Null Set @ConsiderNull_DomainTimeout = 0 If @ConsiderNull_ScriptEngineTimeout Is Null Set @ConsiderNull_ScriptEngineTimeout = 0 If @ConsiderNull_MaxScriptEngines Is Null Set @ConsiderNull_MaxScriptEngines = 0 If @ConsiderNull_TargetMachine Is Null Set @ConsiderNull_TargetMachine = 0 If @ConsiderNull_ApplyStoreSacl Is Null Set @ConsiderNull_ApplyStoreSacl = 0 If @ConsiderNull_GenerateAudits Is Null Set @ConsiderNull_GenerateAudits = 0 If @ConsiderNull_MajorVersion Is Null Set @ConsiderNull_MajorVersion = 0 If @ConsiderNull_MinorVersion Is Null Set @ConsiderNull_MinorVersion = 0 Update [dbo].[AzMan_AzAuthorizationStore] Set [Description] = Case @ConsiderNull_Description When 0 Then IsNull(@Description, [Description]) When 1 Then @Description End ,[ApplicationData] = Case @ConsiderNull_ApplicationData When 0 Then IsNull(@ApplicationData, [ApplicationData]) When 1 Then @ApplicationData End ,[DomainTimeout] = Case @ConsiderNull_DomainTimeout When 0 Then IsNull(@DomainTimeout, [DomainTimeout]) When 1 Then @DomainTimeout End ,[ScriptEngineTimeout] = Case @ConsiderNull_ScriptEngineTimeout When 0 Then IsNull(@ScriptEngineTimeout, [ScriptEngineTimeout]) When 1 Then @ScriptEngineTimeout End ,[MaxScriptEngines] = Case @ConsiderNull_MaxScriptEngines When 0 Then IsNull(@MaxScriptEngines, [MaxScriptEngines]) When 1 Then @MaxScriptEngines End ,[TargetMachine] = Case @ConsiderNull_TargetMachine When 0 Then IsNull(@TargetMachine, [TargetMachine]) When 1 Then @TargetMachine End ,[ApplyStoreSacl] = Case @ConsiderNull_ApplyStoreSacl When 0 Then IsNull(@ApplyStoreSacl, [ApplyStoreSacl]) When 1 Then @ApplyStoreSacl End ,[GenerateAudits] = Case @ConsiderNull_GenerateAudits When 0 Then IsNull(@GenerateAudits, [GenerateAudits]) When 1 Then @GenerateAudits End ,[MajorVersion] = Case @ConsiderNull_MajorVersion When 0 Then IsNull(@MajorVersion, [MajorVersion]) When 1 Then @MajorVersion End ,[MinorVersion] = Case @ConsiderNull_MinorVersion When 0 Then IsNull(@MinorVersion, [MinorVersion]) When 1 Then @MinorVersion End Where ([ID] = @ID) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin Set @Return = @Error End -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @ObjectName=store.Name, @ObjectGuid = store.ObjectGuid FROM [dbo].[AzMan_AzAuthorizationStore] store WHERE store.ID = @ID -- generate an audit EXEC [AzMan_SP_GenerateGenericAudit] @Return, 0, -- 0 for store @ObjectName, @ObjectGuid, N'The shallow properties of the store may have been modified' END Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPU_AzScope] -- Update an existing record in [AzMan_AzScope] table ( @Return [int] output , @ID [int] , @AppId [int] , @ConsiderNull_Description bit = 0 , @ConsiderNull_ApplicationData bit = 0 , @NameHash [Binary] (32) = Null , @Description [nvarchar](1024) = Null , @Name [ntext] = Null , @ApplicationData [ntext] = Null ) As Set NoCount On DECLARE @RowCount INT, @Error INT DECLARE @ObjectGuid uniqueidentifier DECLARE @iScopeNameLen int Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 4, 1, @SaclIsOn output -- Require Admin Access if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End -- Only store or app admin can modify property of the scope object if ( (@AccessAtObjType <> 0) and (@AccessAtObjType <> 1) ) begin Set @Return = -5 goto Done end Set @Return = 0 If @ConsiderNull_Description Is Null Set @ConsiderNull_Description = 0 If @ConsiderNull_ApplicationData Is Null Set @ConsiderNull_ApplicationData = 0 if @Name Is NOT NULL Begin Exec AzMan_SP_Check_Dup_Scope @Return output, @AppId, @ID, @NameHash End if @Return = 0 Begin set @iScopeNameLen = DATALENGTH(@Name) Update [dbo].[AzMan_AzScope] Set [Name] = IsNull(@Name, [Name]) ,[NameHash] = IsNull(@NameHash, [NameHash]) ,[Description] = Case @ConsiderNull_Description When 0 Then IsNull(@Description, [Description]) When 1 Then @Description End ,[ApplicationData] = Case @ConsiderNull_ApplicationData When 0 Then IsNull(@ApplicationData, [ApplicationData]) When 1 Then @ApplicationData End Where ([ID] = @ID) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin Set @Return = @Error End End IF @SaclIsOn = 1 BEGIN -- get info for auditing SELECT @ObjectGuid = scope.ObjectGuid FROM [dbo].[AzMan_AzScope] scope WHERE scope.ID = @ID -- TODO Should we truncate the name for scopes? -- generate an audit EXEC [AzMan_SP_GenerateGenericAudit] @Return, 4, -- 0 for scope @Name, @ObjectGuid, N'The shallow properties of the scope may have been modified' END Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPU_AzOperation] -- Update an existing record in [AzMan_AzOperation] table ( @Return [int] output , @ID [int] , @AppId [int] , @ConsiderNull_Description bit = 0 , @ConsiderNull_ApplicationData bit = 0 , @OperationID [int] = Null , @ConsiderNull_OperationID bit = 0 , @Name [nvarchar](64) = Null , @Description [nvarchar](1024) = Null , @ApplicationData [ntext] = Null ) As Set NoCount On DECLARE @RowCount INT, @Error INT DECLARE @ObjectGuid uniqueidentifier Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 Set @Return = 0 Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 2, 1, @SaclIsOn output -- Require Admin Access if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End If @ConsiderNull_Description Is Null Set @ConsiderNull_Description = 0 If @ConsiderNull_ApplicationData Is Null Set @ConsiderNull_ApplicationData = 0 If @ConsiderNull_OperationID Is Null Set @ConsiderNull_OperationID = 0 If @Name Is Not NULL Begin Exec AzMan_SP_Check_Dup_Operation @Return output, @AppId, @ID, @Name End if @Return = 0 Begin Update [dbo].[AzMan_AzOperation] Set [Name] = IsNull(@Name, [Name]) ,[Description] = Case @ConsiderNull_Description When 0 Then IsNull(@Description, [Description]) When 1 Then @Description End ,[ApplicationData] = Case @ConsiderNull_ApplicationData When 0 Then IsNull(@ApplicationData, [ApplicationData]) When 1 Then @ApplicationData End ,[OperationID] = Case @ConsiderNull_OperationID When 0 Then IsNull(@OperationID, [OperationID]) When 1 Then @OperationID End Where ([ID] = @ID) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin Set @Return = @Error End End -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @ObjectGuid = op.ObjectGuid FROM [dbo].[AzMan_AzOperation] op WHERE op.ID = @ID -- generate an audit EXEC [AzMan_SP_GenerateGenericAudit] @Return, 2, -- 2 for operation @Name, @ObjectGuid, N'The shallow properties of the operation may have been modified' END Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPU_AzApplicationGroup] -- Update an existing record in [AzMan_AzApplicationGroup] table ( @Return [int] output , @ID [int] , @ParentType [tinyint] , @ParentID [int] , @GroupType [tinyint] = Null , @ConsiderNull_GroupType bit = 0 , @ConsiderNull_GroupDescription bit = 0 , @Name [nvarchar](64) = Null , @Description [nvarchar](1024) = Null ) As DECLARE @RowCount INT, @Error INT DECLARE @ObjectGuid uniqueidentifier Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 Set @Return = 0 Set NoCount On Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 5, 1, @SaclIsOn output -- Require Admin Access if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End If @ConsiderNull_GroupType Is Null Set @ConsiderNull_GroupType = 0 if @Name IS NOT NULL Begin Exec AzMan_SP_Check_Dup_Group @Return output, @ParentID, @ParentType, @ID, @Name End if @Return = 0 Begin Update [dbo].[AzMan_AzApplicationGroup] Set [Name] = IsNull(@Name, [Name]) ,[GroupType] = Case @ConsiderNull_GroupType When 0 Then IsNull(@GroupType, [GroupType]) When 1 Then @GroupType End ,[Description] = Case @ConsiderNull_GroupDescription When 0 Then IsNull(@Description, [Description]) When 1 Then @Description End Where ([ID] = @ID) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin Set @Return = @Error End End -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @ObjectGuid = appGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] appGroup WHERE appGroup.ID = @ID -- generate an audit EXEC [AzMan_SP_GenerateGenericAudit] @Return, 5, -- 5 for application group @Name, @ObjectGuid, N'The shallow properties of the application group may have been modified' END Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPU_AzTask] -- Update an existing record in table ( @Return [int] output , @ID [int] , @ParentID [int] , @ParentType [tinyint] , @ConsiderNull_Description bit = 0 , @IsRoleDefinition [bit] = Null , @ConsiderNull_IsRoleDefinition bit = NULL , @ConsiderNull_ApplicationData bit = NULL , @Name [nvarchar](64) = Null , @Description [nvarchar](1024) = Null , @ApplicationData [ntext] = Null ) As DECLARE @ObjectGuid uniqueidentifier Set NoCount On DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 3, 1, @SaclIsOn output -- Require Admin Access if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End Set @Return = 0 If @ConsiderNull_Description Is Null Set @ConsiderNull_Description = 0 if @ConsiderNull_IsRoleDefinition is NULL Set @ConsiderNull_IsRoleDefinition = 0 If @ConsiderNull_ApplicationData Is Null Set @ConsiderNull_ApplicationData = 0 if @Name Is Not NULL Begin Exec AzMan_SP_Check_Dup_Task @Return output, @ParentID, @ParentType, @ID, @Name End if @Return = 0 Begin Update [dbo].[AzMan_AzTask] Set [Name] = IsNull(@Name, [Name]) ,[Description] = Case @ConsiderNull_Description When 0 Then IsNull(@Description, [Description]) When 1 Then @Description End ,[IsRoleDefinition] = Case @ConsiderNull_IsRoleDefinition When 0 Then IsNull(@IsRoleDefinition, [IsRoleDefinition]) When 1 Then @IsRoleDefinition End ,[ApplicationData] = Case @ConsiderNull_ApplicationData When 0 Then IsNull(@ApplicationData, [ApplicationData]) When 1 Then @ApplicationData End Where ([ID] = @ID) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin Set @Return = @Error End End -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @ObjectGuid = task.ObjectGuid FROM [dbo].[AzMan_AzTask] task WHERE task.ID = @ID -- generate an audit EXEC [AzMan_SP_GenerateGenericAudit] @Return, 3, -- 3 for task @Name, @ObjectGuid, N'The shallow properties of the task may have been modified' END Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPU_AzRoleAssignment] -- Update an existing record in the table ( @Return [int] output , @ID [int] , @ParentID [int] , @ParentType [tinyint] , @ConsiderNull_Description bit = 0 , @ConsiderNull_ApplicationData bit = NULL , @Name [nvarchar](64) = Null , @Description [nvarchar](1024) = Null , @ApplicationData [ntext] = Null ) As Set NoCount On DECLARE @RowCount INT, @Error INT DECLARE @ObjectGuid uniqueidentifier Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 6, 1, @SaclIsOn output -- Require Admin Access if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End Set @Return = 0 If @ConsiderNull_Description Is Null Set @ConsiderNull_Description = 0 If @ConsiderNull_ApplicationData Is Null Set @ConsiderNull_ApplicationData = 0 IF @Name Is Not NULL Begin Exec AzMan_SP_Check_Dup_RoleAssignment @Return output, @ParentID, @ParentType, @ID, @Name End if @Return = 0 Begin Update [dbo].[AzMan_AzRoleAssignment] Set [Name] = IsNull(@Name, [Name]) ,[Description] = Case @ConsiderNull_Description When 0 Then IsNull(@Description, [Description]) When 1 Then @Description End ,[ApplicationData] = Case @ConsiderNull_ApplicationData When 0 Then IsNull(@ApplicationData, [ApplicationData]) When 1 Then @ApplicationData End Where ([ID] = @ID) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin Set @Return = @Error End End -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @ObjectGuid = role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] role WHERE role.ID = @ID -- generate an audit EXEC [AzMan_SP_GenerateGenericAudit] @Return, 6, -- 6 for role @Name, @ObjectGuid, N'The shallow properties of the role assignment may have been modified' END Done: Set NoCount Off Return(@Return) GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPIU_AzApplicationGroup_LDAPQuery' and type = 'P') DROP PROCEDURE AzMan_SPIU_AzApplicationGroup_LDAPQuery GO Create Procedure [AzMan_SPIU_AzApplicationGroup_LDAPQuery] -- Inserts or updates a record in [AzMan_LDAPQuery] table ( @Return [int] output , @GroupId [int] = Null -- ID Of Application Group , @ConsiderNull_LdapQuery bit = 0 , @LdapQuery [ntext] = Null -- LDAP Query ) As Set NoCount On DECLARE @RowCount INT, @Error INT DECLARE @Name nvarchar(512) DECLARE @ID [int] DECLARE @ObjectGuid uniqueidentifier Declare @ExistingLdapQueryID [int] Declare @AccessAtObjType [tinyint] Set @ExistingLdapQueryID = Null DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupId, 5, 1, @SaclIsOn output -- Require Admin Access if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End Set @Return = 0 Select @ExistingLdapQueryID = [LdapQueryID] From [dbo].[AzMan_AzApplicationGroup] Where [ID] = @GroupId SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error=0 Begin if @RowCount = 0 Begin -- Parent Group was not found Set @Return = 1 Return(1) End End else Begin Return @Error End If @ExistingLdapQueryID Is Null Begin Begin Insert Into [dbo].[AzMan_LDAPQuery] ( [GroupID] , [LdapQuery] ) Values ( @GroupId , @LdapQuery ) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount = 1 Begin Set @ID = Cast(SCOPE_IDENTITY() As [int]) -- Update the AzApplication Groups with the new ID if @ID <> 0 Begin Update [dbo].[AzMan_AzApplicationGroup] Set [LdapQueryID] = @ID where [ID] = @GroupId End End Else Begin Set @Return = @Error End End End Else Begin If @ConsiderNull_LdapQuery Is Null Set @ConsiderNull_LdapQuery = 0 Update [dbo].[AzMan_LDAPQuery] Set [GroupID] = @GroupId ,[LdapQuery] = Case @ConsiderNull_LdapQuery When 0 Then IsNull(@LdapQuery, [LdapQuery]) When 1 Then @LdapQuery End Where [ID] = @ExistingLdapQueryID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @RowCount <> 1 Set @ID = @ExistingLdapQueryID else Begin Set @Return = @Error End End -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @Name=appGroup.Name, @ObjectGuid = appGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] appGroup WHERE appGroup.ID = @GroupId -- generate an audit EXEC [AzMan_SP_GenerateGenericAudit] @Return, 5, -- 5 for group @Name, @ObjectGuid, N'The LDAP query of the application may have been modified' END Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPIU_Bizrule] ( @Return [int] output, @ParentId [int] , @ParentType [tinyint] , @BizRuleImportedPath [nvarchar](512) = Null -- for [AzMan_BizRule].[BizRuleImportedPath] column , @ConsiderNull_BizRuleImportedPath bit = 0 , @BizRule [ntext] = Null -- for [AzMan_BizRule].[BizRule] column , @ConsiderNull_BizRule bit = 0 , @BizRuleLanguage [nvarchar](64) = Null -- for [AzMan_BizRule].[BizRuleLanguage] column , @ConsiderNull_BizRuleLanguage bit = 0 ) As DECLARE @RowCount INT, @Error INT DECLARE @parentName nvarchar(512) DECLARE @parentGuid uniqueidentifier DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 Set @Return = 0 Set NoCount On Declare @ExistingBizruleID [int] Declare @AccessAtObjType [tinyint] Set @ExistingBizruleID = Null Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ParentId, @ParentType, 1, @SaclIsOn output -- Require Admin Access if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End Set @Return = 0 if @ParentType = 3 -- task Begin Select @ExistingBizruleID = [BizRuleID] From [dbo].[AzMan_BizRule_To_Task] Where [TaskID] = @ParentId End else if @ParentType = 5 -- group Begin Select @ExistingBizruleID = [BizRuleID] From [dbo].[AzMan_BizRule_To_Group] Where [GroupID] = @ParentId End SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @ExistingBizruleID Is Null or @ExistingBizruleID = 0 Begin Begin Insert Into [dbo].[AzMan_BizRule] ( [ParentId] , [ParentType] , [BizRuleImportedPath] , [BizRule] , [BizRuleLanguage] ) Values ( @ParentId ,@ParentType ,@BizRuleImportedPath ,@BizRule ,@BizRuleLanguage ) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount = 1 Begin Set @ExistingBizruleID = Cast(SCOPE_IDENTITY() As [int]) -- Update the AzApplication Groups or Task with the new ID if @ExistingBizruleID <> 0 if @ParentType = 3 -- task Begin insert [dbo].[AzMan_BizRule_To_Task] ( [TaskID] , [BizRuleID] ) Values ( @ParentId , @ExistingBizruleID ) End else if @ParentType = 5 -- group Begin insert [dbo].[AzMan_BizRule_To_Group] ( [GroupID] , [BizRuleID] ) Values ( @ParentId , @ExistingBizruleID ) End End Else Begin Set @Return = @Error End End End Else Begin If @ConsiderNull_BizRuleImportedPath Is Null set @ConsiderNull_BizRuleImportedPath = 0 If @ConsiderNull_BizRule Is Null set @ConsiderNull_BizRule = 0 If @ConsiderNull_BizRuleLanguage Is Null set @ConsiderNull_BizRuleLanguage = 0 Update [dbo].[AzMan_BizRule] Set [ParentId] = @ParentId , [ParentType] = @ParentType , [BizRuleImportedPath] = Case @ConsiderNull_BizRuleImportedPath When 0 Then IsNull(@BizRuleImportedPath, [BizRuleImportedPath]) When 1 Then @BizRuleImportedPath End , [BizRule] = Case @ConsiderNull_BizRule When 0 Then IsNull(@BizRule, [BizRule]) When 1 Then @BizRule End , [BizRuleLanguage] = Case @ConsiderNull_BizRuleLanguage When 0 Then IsNull(@BizRuleLanguage, [BizRuleLanguage]) When 1 Then @BizRuleLanguage End Where [ID] = @ExistingBizruleID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @RowCount = 0 Begin if @Error = 0 Begin Set @Return = -1168 -- Error updating the Record End Else Begin Set @Return = @Error End End End -- generate an audit IF @SaclIsOn = 1 BEGIN -- get info for auditing IF @ParentType = 3 -- task BEGIN SELECT @parentName=task.Name, @parentGuid = task.ObjectGuid FROM [dbo].[AzMan_AzTask] task WHERE task.ID = @ParentId END ELSE IF @ParentType = 5 -- app group BEGIN SELECT @parentName=appGroup.Name, @parentGuid = appGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] appGroup WHERE appGroup.ID = @ParentId END EXEC [AzMan_SP_GenerateGenericAudit] @Return, @ParentType, @parentName, @parentGuid, N'The bizrule of the object may have been modified' END Done: Set NoCount Off Return(@Return) GO Create Procedure dbo.[AzMan_SPIU_AzApplicationGroup_Bizrule] ( @Return [int] output , @GroupId [int] , @ConsiderNull_BizRuleImportedPath bit = 0 , @ConsiderNull_BizRule bit = 0 , @ConsiderNull_BizRuleLanguage bit = 0 , @BizRuleLanguage [nvarchar](64) = Null -- for [AzMan_BizRule].[BizRuleLanguage] column , @BizRuleImportedPath [nvarchar](512) = Null -- for [AzMan_BizRule].[BizRuleImportedPath] column , @BizRule [ntext] = Null -- for [AzMan_BizRule].[BizRule] column ) As Set @Return = 0 exec AzMan_SPIU_Bizrule @Return output, @GroupId, 5 , @BizRuleImportedPath , @ConsiderNull_BizRuleImportedPath , @BizRule , @ConsiderNull_BizRule , @BizRuleLanguage , @ConsiderNull_BizRuleLanguage Return @Return Go Create Procedure dbo.[AzMan_SPIU_AzTask_Bizrule] ( @Return [int] output , @TaskId [int] , @ConsiderNull_BizRuleImportedPath bit = 0 , @ConsiderNull_BizRule bit = 0 , @ConsiderNull_BizRuleLanguage bit = 0 , @BizRuleLanguage [nvarchar](64) = Null -- for [AzMan_BizRule].[BizRuleLanguage] column , @BizRuleImportedPath [nvarchar](512) = Null -- for [AzMan_BizRule].[BizRuleImportedPath] column , @BizRule [ntext] = Null -- for [AzMan_BizRule].[BizRule] column ) As Set @Return = 0 exec AzMan_SPIU_Bizrule @Return output, @TaskId, 3 , @BizRuleImportedPath , @ConsiderNull_BizRuleImportedPath , @BizRule , @ConsiderNull_BizRule , @BizRuleLanguage , @ConsiderNull_BizRuleLanguage Return @Return Go Create Procedure [AzMan_SPI_AzApplicationGroup_Single_SidMember] ( @Return [int] output, @GroupId [int] -- ID Of Application Group , @IsMember [bit] = 0 , @SidMember varbinary(85) , @SaclIsOn [bit] ) As DECLARE @RowCount INT, @Error INT DECLARE @parentName nvarchar(512) DECLARE @parentGuid uniqueidentifier Set @Return = 0 Set NoCount On INSERT INTO [AzMan_Group_SIDMember] (MemberSID, Member, GroupID) VALUES (@SidMember, @IsMember, @GroupId) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = -1 --Generic Error End End -- get the info for auditing IF @SaclIsOn = 1 BEGIN SELECT @parentName = appGroup.Name, @parentGuid = appGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] appGroup WHERE appGroup.ID = @GroupId -- generate an audit IF @IsMember = 1 EXEC [AzMan_SP_GenerateMemberAudit] @Return, 4, -- 4 for SE_AUDITID_AZ_SQL_MEMBER_ASSIGN 5, -- 5 for group @parentName, @parentGuid, N'', @SidMember, 1, -- 1 for member N'' -- no other info ELSE EXEC [AzMan_SP_GenerateMemberAudit] @Return, 4, -- 4 for SE_AUDITID_AZ_SQL_MEMBER_ASSIGN 5, -- 5 for group @parentName, @parentGuid, N'', @SidMember, 0, -- 0 for non-member N'' -- no other info END Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPD_AzApplicationGroup_Single_SidMember] ( @Return [int] output, @GroupId [int] -- ID Of Application Group , @IsMember [bit] = 1 , @SidMember varbinary(85) , @SaclIsOn [bit] ) As DECLARE @RowCount INT, @Error INT DECLARE @parentName nvarchar(512) DECLARE @parentGuid uniqueidentifier Set @Return = 0 Set NoCount On Delete From [AzMan_Group_SIDMember] where MemberSID = @SidMember and Member = @IsMember and GroupID = @GroupId SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = -1168 --REcord not found End End -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @parentName = appGroup.Name, @parentGuid = appGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] appGroup WHERE appGroup.ID = @GroupId -- generate an audit IF @IsMember = 1 EXEC [AzMan_SP_GenerateMemberAudit] @Return, 5, -- 5 for SE_AUDITID_AZ_SQL_MEMBER_REMOVE 5, -- 5 for group @parentName, @parentGuid, N'', @SidMember, 1, -- 1 for member N'' -- no other info ELSE EXEC [AzMan_SP_GenerateMemberAudit] @Return, 5, -- 5 for SE_AUDITID_AZ_SQL_MEMBER_REMOVE 5, -- 5 for group @parentName, @parentGuid, N'', @SidMember, 0, -- 0 for non-member N'' -- no other info END Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPI_AzApplicationGroup_Multi_SidMembers_Internal] ( @Return [int] output , @GroupId [int] -- ID Of Application Group , @IsMember [bit] = 1 , @SidMembers varbinary (4000) ) As DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 Set NoCount On -- SidMembers are aggregated binary data in the following format: -- The first 4 bytes is a delete/add flag (0/1); the following 4 bytes is the size of the SID, -- followed by the actual SID. The over-usage of these pieces of data is for ease of parsing -- Using string to represent such encoding, the following example which encodes 3 SIDs -- of length 24, 36, and 48 in turn, and the second one is a delete -- 00010024NNNNNNNNN00000036NNNNNNNNNN00010048NNNNNNNNNNNNNN -- Insert each one of them Declare @AccessAtObjType [tinyint] Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupId, 5, 1, @SaclIsOn output -- Require Admin Access if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End DECLARE @DataLength int DECLARE @SidLength int DECLARE @SidMember varbinary(85) DECLARE @Pos int DECLARE @isAdd int SET @DataLength = DATALENGTH(@SidMembers) Set @Return = 0 Set @Pos = 1 WHILE @DataLength - @Pos > 8 BEGIN SET @isAdd = CAST(SUBSTRING(@SidMembers, @Pos, 1) AS int) SET @Pos = @Pos + 1 SET @SidLength = CAST(SUBSTRING(@SidMembers, @Pos, 1) AS int) SET @Pos = @Pos + 1 -- make sure that we the SidLength is not lying to us! IF @SidLength >= 12 AND @SidLength < 85 AND @DataLength - @Pos >= @SidLength - 1 BEGIN SET @SidMember = CAST(SUBSTRING(@SidMembers, @Pos, @SidLength) AS varbinary) SET @Pos = @Pos + @SidLength -- if NNNN=0, then it means to delete IF @isAdd <> 0 BEGIN Exec AzMan_SPI_AzApplicationGroup_Single_SidMember @Return output, @GroupId, @IsMember, @SidMember, @SaclIsOn IF @Return <> 0 Break End ELSE BEGIN Exec AzMan_SPD_AzApplicationGroup_Single_SidMember @Return output, @GroupId, @IsMember ,@SidMember, @SaclIsOn IF @Return <> 0 Break End END ELSE SET @Pos = @DataLength END Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPI_AzApplicationGroup_Multi_SidMembers] ( @Return [int] output , @GroupId [int] -- ID Of Application Group , @SidMembers varbinary (4000) ) As Exec AzMan_SPI_AzApplicationGroup_Multi_SidMembers_Internal @Return output, @GroupId, 1 , @SidMembers Return(@Return) go Create Procedure AzMan_SPI_AzApplicationGroup_Multi_SidNonMembers ( @Return [int] output , @GroupId [int] -- ID Of Application Group , @SidMembers varbinary (4000) ) As Exec AzMan_SPI_AzApplicationGroup_Multi_SidMembers_Internal @Return output, @GroupId, 0 , @SidMembers Return(@Return) go Create Procedure [AzMan_SPI_AzApplicationGroup_Single_AppMember] ( @Return [int] output, @GroupId [int] -- ID Of Application Group , @ChildID [int] , @IsMember [bit] = 1 , @SaclIsOn [bit] ) As DECLARE @RowCount INT, @Error INT DECLARE @groupName nvarchar(512) DECLARE @groupGuid uniqueidentifier DECLARE @refGroupName nvarchar(512) DECLARE @refGroupGuid uniqueidentifier Set @Return = 0 Set NoCount On INSERT INTO [AzMan_Group_AppMember] (ChildID, Member, GroupID) VALUES (@ChildID, @IsMember, @GroupId) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = -1 --Generic Error End End -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @groupName = appGroup.Name, @groupGuid = appGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] appGroup WHERE appGroup.ID = @GroupId SELECT @refGroupName = refGroup.Name, @refGroupGuid = refGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] refGroup WHERE refGroup.ID = @ChildID -- generate an audit EXEC [AzMan_SP_GenerateObjectAudit] @Return, 2, -- 2 for SE_AUDITID_AZ_SQL_REFERENCE_ASSIGN 5, -- 5 for application group @groupName, @groupGuid, 5, -- 5 for application group @refGroupName, @refGroupGuid, N'' -- no other info END Set NoCount Off Return @Return GO Create Procedure [AzMan_SPD_AzApplicationGroup_Single_AppMember] ( @Return [int] output, @GroupId [int] -- ID Of Application Group , @ChildID [int] , @IsMember [bit] = 1 , @SaclIsOn [bit] ) As DECLARE @RowCount INT, @Error INT DECLARE @groupName nvarchar(512) DECLARE @groupGuid uniqueidentifier DECLARE @refGroupName nvarchar(512) DECLARE @refGroupGuid uniqueidentifier Set @Return = 0 Set NoCount On Delete From [AzMan_Group_AppMember] where ChildID = @ChildID and Member = @IsMember and GroupID = @GroupId SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = -1168 --Record not found End End -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @groupName = appGroup.Name, @groupGuid = appGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] appGroup WHERE appGroup.ID = @GroupId SELECT @refGroupName = refGroup.Name, @refGroupGuid = refGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] refGroup WHERE refGroup.ID = @ChildID -- generate an audit EXEC [AzMan_SP_GenerateObjectAudit] @Return, 3, -- 3 for SE_AUDITID_AZ_SQL_REFERENCE_REMOVE 5, -- 5 for application group @groupName, @groupGuid, 5, -- 5 for application group @refGroupName, @refGroupGuid, N'' -- no other info END Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPI_AzApplicationGroup_Multi_AppMembers_Internal] ( @Return [int] output, @GroupId [int] -- ID Of Application Group , @SepChar [char] (1) = "|" , @IsMember [bit] = 1 , @AppMemberIDs [nvarchar] (4000) ) As DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 Set NoCount On -- First parse the SidMembers string -- Insert each one of them Declare @AccessAtObjType [tinyint] Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupId, 5, 1, @SaclIsOn output -- Require Admin Access if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End DECLARE @AppMember varchar(100), @Pos int DECLARE @iAppMemberID int DECLARE @equal char DECLARE @addOrDelete nvarchar(10) DECLARE @isAdd int SET @equal = '=' Set @Return = 0 SET @AppMemberIDs = LTRIM(RTRIM(@AppMemberIDs))+ @SepChar SET @Pos = CHARINDEX(@equal, @AppMemberIDs, 1) IF REPLACE(@AppMemberIDs, @SepChar, '') <> '' BEGIN WHILE @Pos > 0 BEGIN SET @AppMember = LTRIM(RTRIM(LEFT(@AppMemberIDs, @Pos - 1))) Set @iAppMemberID = CAST(@AppMember as int) -- remove the left part (the id) SET @AppMemberIDs = RIGHT(@AppMemberIDs, LEN(@AppMemberIDs) - @Pos) -- now move to the pipe separator SET @Pos = CHARINDEX(@SepChar, @AppMemberIDs, 1) SET @addOrDelete = LTRIM(RTRIM(LEFT(@AppMemberIDs, @Pos - 1))) Set @isAdd = CAST(@addOrDelete as int) IF @iAppMemberID > 0 BEGIN -- if NNNN=0, then it means to delete IF @isAdd <> 0 BEGIN Exec AzMan_SPI_AzApplicationGroup_Single_AppMember @Return output, @GroupId, @iAppMemberID , @IsMember, @SaclIsOn if @Return <> 0 Begin Break End End else BEGIN Exec AzMan_SPD_AzApplicationGroup_Single_AppMember @Return output, @GroupId, @iAppMemberID , @IsMember, @SaclIsOn if @Return <> 0 Begin Break End End END SET @AppMemberIDs = RIGHT(@AppMemberIDs, LEN(@AppMemberIDs) - @Pos) SET @Pos = CHARINDEX(@equal, @AppMemberIDs, 1) END END Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPI_AzApplicationGroup_Multi_AppMembers] ( @Return [int] output , @GroupId [int] -- ID Of Application Group , @SepChar [char] (1) = "|" , @AppMemberIDs [nvarchar] (4000) ) As Exec AzMan_SPI_AzApplicationGroup_Multi_AppMembers_Internal @Return output, @GroupId, @SepChar, 1 , @AppMemberIDs Return(@Return) go Create Procedure [AzMan_SPI_AzApplicationGroup_Multi_AppNonMembers] ( @Return [int] output , @GroupId [int] -- ID Of Application Group , @SepChar [char] (1) = "|" , @AppMemberIDs [nvarchar] (4000) ) As Exec AzMan_SPI_AzApplicationGroup_Multi_AppMembers_Internal @Return output, @GroupId, @SepChar, 0 , @AppMemberIDs Return(@Return) go Create Procedure [AzMan_SPI_AzRoleAssignment_Single_SidMember] ( @Return [int] output, @RoleId [int] -- ID Of Role , @SidMember varbinary (85) , @SaclIsOn [bit] ) As DECLARE @RowCount INT, @Error INT DECLARE @roleName nvarchar(512) DECLARE @roleGuid uniqueidentifier Set @Return = 0 Set NoCount On INSERT INTO [AzMan_Role_SIDMember] (MemberSID, RoleID) VALUES (@SidMember,@RoleId) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount = 0 Begin if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = -1 -- General Error End End -- get the info for auditing IF @SaclIsOn = 1 BEGIN SELECT @roleName = Role.Name, @roleGuid = Role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] Role WHERE Role.ID = @RoleId -- generate an audit EXEC [AzMan_SP_GenerateMemberAudit] @Return, 4, -- 4 for SE_AUDITID_AZ_SQL_MEMBER_ASSIGN 6, -- 6 for role @roleName, @roleGuid, N'', @SidMember, 1, -- 1 for member N'' -- no other info END Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPD_AzRoleAssignment_Single_SidMember] ( @Return [int] output, @RoleId [int] -- ID Of RoleAssignment , @SidMember varbinary(85) , @SaclIsOn [bit] ) As DECLARE @RowCount INT, @Error INT DECLARE @roleName nvarchar(512) DECLARE @roleGuid uniqueidentifier DECLARE @userName nvarchar(512) Set NoCount On Set @Return = 0 Delete From [AzMan_Role_SIDMember] where MemberSID = @SidMember and RoleID = @RoleId SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = -1168 --Record not found End End -- get the info for auditing IF @SaclIsOn = 1 BEGIN SELECT @roleName = Role.Name, @roleGuid = Role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] Role WHERE Role.ID = @RoleId -- We can't lookup names from SID, but XP can do that SET @userName = '' -- generate an audit EXEC [AzMan_SP_GenerateMemberAudit] @Return, 5, -- 5 for SE_AUDITID_AZ_SQL_MEMBER_REMOVE 6, -- 6 for role @roleName, @roleGuid, N'', @SidMember, 1, -- 1 for member N'' -- no other info END Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPI_AzRoleAssignment_Multi_SidMembers] ( @Return [int] output , @RoleId [int] -- ID Of Role Assignment , @SidMembers varbinary (4000) ) As DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 Set NoCount On -- First parse the SidMembers string -- Insert each one of them Declare @AccessAtObjType [tinyint] Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleId, 6, 1, @SaclIsOn output -- Require Admin Access if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End DECLARE @DataLength int DECLARE @SidLength int DECLARE @Sid varbinary(85) DECLARE @Pos int DECLARE @isAdd int SET @DataLength = DATALENGTH(@SidMembers) Set @Return = 0 Set @Pos = 1 WHILE @DataLength - @Pos > 8 BEGIN SET @isAdd = CAST(SUBSTRING(@SidMembers, @Pos, 1) AS int) SET @Pos = @Pos + 1 SET @SidLength = CAST(SUBSTRING(@SidMembers, @Pos, 1) AS int) SET @Pos = @Pos + 1 -- make sure that we the SidLength is not lying to us! IF @SidLength >= 12 AND @SidLength < 85 AND @DataLength - @Pos >= @SidLength - 1 BEGIN SET @Sid = CAST(SUBSTRING(@SidMembers, @Pos, @SidLength) as varbinary) SET @Pos = @Pos + @SidLength -- if NNNN=0, then it means to delete IF @isAdd <> 0 BEGIN Exec AzMan_SPI_AzRoleAssignment_Single_SidMember @Return output, @RoleId, @Sid, @SaclIsOn IF @Return <> 0 Break End ELSE BEGIN Exec AzMan_SPD_AzRoleAssignment_Single_SidMember @Return output, @RoleId, @Sid, @SaclIsOn IF @Return <> 0 Break End END ELSE BEGIN SET @Pos = @DataLength END END Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPI_AzRoleAssignment_Single_AppMember] ( @Return [int] output, @RoleId [int] -- ID Of Role Assignment , @ChildID [int] , @SaclIsOn [bit] ) As DECLARE @RowCount INT, @Error INT DECLARE @roleName nvarchar(512) DECLARE @roleGuid uniqueidentifier DECLARE @refGroupName nvarchar(512) DECLARE @refGroupGuid uniqueidentifier Set @Return = 0 Set NoCount On INSERT INTO [AzMan_Role_AppMember] (ChildID, RoleID) VALUES (@ChildID, @RoleId) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = -1 End End -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @roleName = role.Name, @roleGuid = role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] role WHERE role.ID = @RoleId SELECT @refGroupName = refGroup.Name, @refGroupGuid = refGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] refGroup WHERE refGroup.ID = @ChildID -- generate an audit EXEC [AzMan_SP_GenerateObjectAudit] @Return, 2, -- 2 for SE_AUDITID_AZ_SQL_REFERENCE_ASSIGN 6, -- 6 for role @roleName, @roleGuid, 5, -- 5 for application group @refGroupName, @refGroupGuid, N'' -- no other info END Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPD_AzRoleAssignment_Single_AppMember] ( @Return [int] output, @RoleId [int] -- ID Of Role Assignment , @ChildID [int] , @SaclIsOn [bit] ) As DECLARE @RowCount INT, @Error INT DECLARE @roleName nvarchar(512) DECLARE @roleGuid uniqueidentifier DECLARE @refGroupName nvarchar(512) DECLARE @refGroupGuid uniqueidentifier Set @Return = 0 Set NoCount On Delete From [AzMan_Role_AppMember] where ChildID = @ChildID and RoleID = @RoleId SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = -1168 --Record not found End End -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @roleName = role.Name, @roleGuid = role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] role WHERE role.ID = @RoleId SELECT @refGroupName = refGroup.Name, @refGroupGuid = refGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] refGroup WHERE refGroup.ID = @ChildID -- generate an audit EXEC [AzMan_SP_GenerateObjectAudit] @Return, 3, -- 3 for SE_AUDITID_AZ_SQL_REFERENCE_REMOVE 6, -- 6 for role @roleName, @roleGuid, 5, -- 5 for application group @refGroupName, @refGroupGuid, N'' -- no other info END Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPI_AzRoleAssignment_Multi_AppMembers] ( @Return [int] output , @RoleId [int] -- ID Of Role Assignment , @SepChar [char] (1) = "|" , @AppMemberIDs [nvarchar] (4000) ) As Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleId, 6, 1, @SaclIsOn output -- Require Admin Access if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End Set @Return = 0 DECLARE @equal char DECLARE @addOrDelete nvarchar(10) DECLARE @isAdd int SET @equal = '=' Set NoCount On -- First parse the SidMembers string -- Insert each one of them DECLARE @AppMember varchar(100), @Pos int DECLARE @iAppMemberID int SET @AppMemberIDs = LTRIM(RTRIM(@AppMemberIDs))+ @SepChar SET @Pos = CHARINDEX(@equal, @AppMemberIDs, 1) IF REPLACE(@AppMemberIDs, @SepChar, '') <> '' BEGIN WHILE @Pos > 0 BEGIN SET @AppMember = LTRIM(RTRIM(LEFT(@AppMemberIDs, @Pos - 1))) Set @iAppMemberID = CAST(@AppMember as int) -- remove the left part (the id) SET @AppMemberIDs = RIGHT(@AppMemberIDs, LEN(@AppMemberIDs) - @Pos) -- now move to the pipe separator SET @Pos = CHARINDEX(@SepChar, @AppMemberIDs, 1) SET @addOrDelete = LTRIM(RTRIM(LEFT(@AppMemberIDs, @Pos - 1))) Set @isAdd = CAST(@addOrDelete as int) IF @iAppMemberID > 0 BEGIN IF @isAdd <> 0 BEGIN Exec AzMan_SPI_AzRoleAssignment_Single_AppMember @Return output, @RoleId, @iAppMemberID, @SaclIsOn if @Return <> 0 Begin Break End End ELSE BEGIN Exec AzMan_SPD_AzRoleAssignment_Single_AppMember @Return output, @RoleId, @iAppMemberID, @SaclIsOn if @Return <> 0 Begin Break End End END SET @AppMemberIDs = RIGHT(@AppMemberIDs, LEN(@AppMemberIDs) - @Pos) SET @Pos = CHARINDEX(@equal, @AppMemberIDs, 1) END END Done: Set NoCount Off Return(@Return) GO Create Procedure [spDrop_AzMan_Table] as drop table [AzMan_Role_To_Operation_Link] drop table [AzMan_Role_To_Task_Link] drop table [AzMan_Task_To_Task_Link] drop table [AzMan_Task_To_Operation_Link] drop table [AzMan_AzTask] drop table [AzMan_AzOperation] drop table [AzMan_LDAPQuery] drop table [AzMan_BizRule] drop table [AzMan_Group_SIDMember] drop table [AzMan_Group_AppMember] drop table [AzMan_AzApplicationGroup] drop table [AzMan_Role_SIDMember] drop table [AzMan_Role_AppMember] drop table [AzMan_AzRoleAssignment] drop table [AzMan_AzScope_Name] drop table [AzMan_AzScope] drop table [AzMan_AzApplication] drop table [AzMan_AzAuthorizationStore] Return(0) GO ----------------------------Select queries---------------------------------------------- Create Procedure [AzMan_SPS_Get_AzAuthorizationStoreByName] -- Retrieve specific records from the [AzMan_AzAuthorizationStore] table depending on the input parameters you supply. ( @Return [int] output, @Name [nvarchar] (512) ) as Begin DECLARE @RowCount INT, @Error INT DEclare @ID INT select @ID=ID from [AzMan_AzAuthorizationStore] where Name = @Name SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin If @RowCount = 0 Begin Set @Return = -1168 --Record not found End End Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 0, 0, @SaclIsOn output if @Return >= 1 Begin Select [ID] ,[DomainTimeout] ,[ScriptEngineTimeout] ,[MaxScriptEngines] ,[ApplyStoreSacl] ,[GenerateAudits] ,[MajorVersion] ,[MinorVersion] ,[ObjectGuid] ,[TargetMachine] ,[Description] ,[ApplicationData] --,[ChildUpdateTimeStamp] From [AzMan_AzAuthorizationStore] where Name = @Name SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin If @RowCount = 0 Begin Set @Return = -1168 --Record not found End End End End Return(@Return) GO Create Procedure [AzMan_SPS_Enum_AzApplications] ( @Return [int] output, @StoreID int ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@StoreID, 0, 0, @SaclIsOn output if @Return <= 0 goto Done Else if @Return = 1 or @Return = 2 Begin Select [ID], [ObjectGuid] , IsNull([ApplyStoreSacl], 0), IsNull([GenerateAudits], 0), IsNull([AuthzInterfaceClsId], 0), IsNull([ApplicationVersion], N''), [Name], IsNull([Description], N''), [ApplicationData] --[ChildUpdateTimeStamp] From [AzMan_AzApplication] where StoreID = @StoreID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = 0 End End Else if @Return = 3 -- Delegated user Begin -- Get all the child app where the current user has access Select [ID], [ObjectGuid] , [ApplyStoreSacl], [GenerateAudits], [AuthzInterfaceClsId], [ApplicationVersion], [Name], [Description], [ApplicationData] --[ChildUpdateTimeStamp] From [AzMan_AzApplication] where StoreID = @StoreID and ID in ( select ObjectID from [dbo].[Azman_SQLRole] where [dbo].[Azman_SQLRole].[ObjectType] = 1 and is_member([dbo].[Azman_SQLRole].[SQLRoleName]) = 1 ) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = 0 End End End Done: Return(@Return) GO Create Procedure [AzMan_SPS_Get_AzApplication] ( @Return [int] output, @ID int ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 1, 0, @SaclIsOn output if @Return = 1 or @Return = 2 or @Return = 3 Begin Select [StoreID], [ApplyStoreSacl], [GenerateAudits], [AuthzInterfaceClsId], [ObjectGuid], [ApplicationVersion], [Name], [Description], [ApplicationData] From [AzMan_AzApplication] where ID = @ID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin If @RowCount = 0 Begin Set @Return = -1168 --Record not found End End End End Return(@Return) GO Create Procedure [AzMan_SPS_Enum_AzScope] ( @Return [int] output, @AppID int ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at the App level Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@AppID, 1, 0, @SaclIsOn output if @Return <= 0 goto Done Else if @Return = 1 or @Return = 2 Begin Select [ID], [NameLen], IsNull([HasSpecificUsers], 0) AS HasSpecificUsers, [NameHash], [ObjectGuid] , [Description], [Name], [ApplicationData] From [AzMan_AzScope] where AppID = @AppID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = 0 End end Else if @Return = 3 -- Delegated user Begin Select [ID], [NameLen], IsNull([HasSpecificUsers], 0) AS HasSpecificUsers, [NameHash], [ObjectGuid] , [Description], [Name], [ApplicationData] From [AzMan_AzScope] where AppID = @AppID and ID in ( select ObjectID from [dbo].[Azman_SQLRole] where [dbo].[Azman_SQLRole].[ObjectType] = 4 and is_member([dbo].[Azman_SQLRole].[SQLRoleName]) = 1 ) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = 0 End End End Done: Return(@Return) GO Create Procedure [AzMan_SPS_Enum_AzApplicationGroup] ( @Return int output, @ParentID int ,@ParentType tinyint ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at the parent Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ParentID, @ParentType, 0, @SaclIsOn output if @Return <= 0 goto Done -- The user either has admin, reader or delegated uset at the parent -- So he can see the groups Else if @Return = 1 or @Return = 2 or @Return = 3 Begin if @ParentType = 0 Begin Select [ID], [GroupType] , [ObjectGuid] , [Name] , ISNULL ( [Description] , N'' ) From [AzMan_AzApplicationGroup] where (StoreID = @ParentID ) and ParentType = @ParentType End else if @ParentType = 1 Begin Select [ID], [GroupType], [ObjectGuid], [Name], ISNULL ( [Description] , N'' ) From [AzMan_AzApplicationGroup] where (AppID = @ParentID ) and ParentType = @ParentType End else if @ParentType = 4 Begin Select [ID], [GroupType], [ObjectGuid], [Name], ISNULL ( [Description] , N'' ) From [AzMan_AzApplicationGroup] where (ScopeID = @ParentID ) and ParentType = @ParentType End SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = 0 End End End Done: Return(@Return) GO Create Procedure [AzMan_SPS_Enum_AzTask] ( @Return int output, @ParentID int ,@ParentType tinyint ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at the parent Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ParentID, @ParentType, 0, @SaclIsOn output if @Return <= 0 goto Done -- The user either has admin, reader or delegated uset at the parent -- So he can see the Task Else if @Return = 1 or @Return = 2 or @Return = 3 Begin if @ParentType = 1 Begin Select [ID], [IsRoleDefinition], [ObjectGuid] , [Name] , [Description], [ApplicationData] From [AzMan_AzTask] where AppID = @ParentID End else if @ParentType = 4 Begin Select [ID], [IsRoleDefinition], [ObjectGuid] , [Name] , [Description], [ApplicationData] From [AzMan_AzTask] where ScopeID = @ParentID End else Begin Set @Return = -1 goto Done End SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = 0 End End End Done: Return(@Return) GO Create Procedure [AzMan_SPS_Enum_AzTask_Operations] ( @Return int output, @TaskID int ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at the Task Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@TaskID, 3, 0, @SaclIsOn output if @Return <= 0 goto Done -- The user either has admin, reader or delegated user at the parent -- So he can see the task Else if @Return = 1 or @Return = 2 or @Return = 3 Begin Select [ObjectGuid] From [AzMan_Task_To_Operation_Link] INNER JOIN AzMan_AzOperation ON [AzMan_Task_To_Operation_Link].[OperationID] = AzMan_AzOperation.ID where TaskID = @TaskID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = 0 End End End Done: Return(@Return) GO Create Procedure [AzMan_SPS_Enum_AzTask_Tasks] ( @Return int output, @TaskID int ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at the Task Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@TaskID, 3, 0, @SaclIsOn output if @Return <= 0 goto Done -- The user either has admin, reader or delegated user at the parent -- So he can see the task Else if @Return = 1 or @Return = 2 or @Return = 3 Begin Select [ObjectGuid] From [AzMan_Task_To_Task_Link] INNER JOIN AzMan_AzTask ON [AzMan_Task_To_Task_Link].[ChildID] = AzMan_AzTask.ID where [AzMan_Task_To_Task_Link].[TaskID] = @TaskID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = 0 End End End Done: Return(@Return) GO Create Procedure [AzMan_SPS_Enum_AzRoleAssignment_Tasks] ( @Return int output, @RoleID int ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at the Role Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleID, 6, 0, @SaclIsOn output if @Return <= 0 Begin goto Done End -- The user either has admin, reader or delegated uset at the parent -- So he can see the Role Else if @Return = 1 or @Return = 2 or @Return = 3 Begin Select [ObjectGuid] From [AzMan_Role_To_Task_Link] INNER JOIN AzMan_AzTask ON [TaskID] = AzMan_AzTask.ID where [RoleID] = @RoleID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = 0 End End End Done: Return (@Return) GO Create Procedure [AzMan_SPS_Enum_AzRoleAssignment_Operations] ( @Return int output, @RoleID int ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at the Role Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleID, 6, 0, @SaclIsOn output if @Return <= 0 Begin goto Done End -- The user either has admin, reader or delegated user at the parent -- So he can see the role Else if @Return = 1 or @Return = 2 or @Return = 3 Begin Select [ObjectGuid] From [AzMan_Role_To_Operation_Link] INNER JOIN AzMan_AzOperation ON [AzMan_Role_To_Operation_Link].OperationID = AzMan_AzOperation.ID where [RoleID] = @RoleID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = 0 End End End Done: Return(@Return) GO Create Procedure [AzMan_SPS_Enum_AzRoleAssignment] ( @Return int output, @ParentID int ,@ParentType tinyint ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at the parent Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ParentID, @ParentType, 0, @SaclIsOn output if @Return <= 0 Begin goto Done End Else if @Return = 1 or @Return = 2 or @Return = 3 Begin if @ParentType = 1 Begin Select [ID], [ObjectGuid] , [Name], [Description], [ApplicationData] From [AzMan_AzRoleAssignment] where AppID = @ParentID and ParentType = @ParentType End else if @ParentType = 4 Begin Select [ID], [ObjectGuid] , [Name], [Description], [ApplicationData] From [AzMan_AzRoleAssignment] where ScopeID = @ParentID and ParentType = @ParentType End else Begin Set @Return = -1 goto Done End SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = 0 End End End Done: Return(@Return) GO Create Procedure AzMan_SPS_Get_AzApplicationGroup ( @Return int output, @ID int ) as DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at this object Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 5, 0, @SaclIsOn output if @Return <= 0 Begin goto Done End Else if @Return = 1 or @Return = 2 or @Return = 3 BEGIN Begin Select [GroupType], [ObjectGuid] , [Name], IsNull([Description], N'') From [AzMan_AzApplicationGroup] where [ID] = @ID End SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Set @Return = @Error else Set @Return = 0 END Done: Return(@Return) GO Create Procedure [AzMan_SPS_Get_AzApplicationGroup_BizruleInfo] ( @Return int output, @ID int ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at this object Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 5, 0, @SaclIsOn output if @Return <= 0 Begin goto Done End -- The user either has admin, reader or delegated user at the parent -- So he can see this object Else if @Return = 1 or @Return = 2 or @Return = 3 Begin Select [BizRuleLanguage], [BizRuleImportedPath] , [BizRule] From [AzMan_BizRule] where ParentId = @ID and ParentType = 5 and ID in ( Select [BizRuleID] From [AzMan_BizRule_To_Group] where [GroupID] = @ID) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin If @RowCount = 0 Begin Set @Return = -1168 --Record not found End End End End Done: Return(@Return) GO Create Procedure [AzMan_SPS_Get_AzTask_BizruleInfo] ( @Return int output, @ID int ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at this object Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 3, 0, @SaclIsOn output if @Return <= 0 Begin goto Done End -- The user either has admin, reader or delegated user at the parent -- So he can see this object Else if @Return = 1 or @Return = 2 or @Return = 3 Begin Set @Return = 0 Select [BizRuleLanguage], [BizRuleImportedPath] , [BizRule] From [AzMan_BizRule] where ParentId = @ID and ParentType = 3 and ID in ( Select [BizRuleID] From [AzMan_BizRule_To_Task] where [TaskID] = @ID) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin If @RowCount = 0 Begin Set @Return = -1168 --Record not found End End End End Done: Return(@Return) GO Create Procedure [AzMan_SPS_Get_AzApplicationGroup_LDAPQuery] ( @Return int output, @GroupID int ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at this object Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupID, 5, 0, @SaclIsOn output if @Return <= 0 Begin goto Done End -- The user either has admin, reader or delegated user at the parent -- So he can see this object Else if @Return = 1 or @Return = 2 or @Return = 3 Begin Set @Return = 0 Select [LdapQuery] From [AzMan_LDAPQuery] where GroupID = @GroupID and ID in ( Select [LdapQueryID] From [AzMan_AzApplicationGroup] where ID = @GroupID ) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin If @RowCount = 0 Begin Set @Return = -1168 --Record not found End End End End Done: Return(@Return) GO Create Procedure [AzMan_SPS_Enum_AzApplicationGroup_SIDMembers] ( @Return int output, @GroupID int ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at this object Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupID, 5, 0, @SaclIsOn output if @Return <= 0 Begin goto Done End -- The user either has admin, reader or delegated user at the Group -- So he can see this object Else if @Return = 1 or @Return = 2 or @Return = 3 Begin Select [MemberSID] From [AzMan_Group_SIDMember] where GroupID = @GroupID and [Member] = 1 SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = 0 End End End Done: Return(@Return) GO Create Procedure [AzMan_SPS_Enum_AzApplicationGroup_SIDNonMembers] ( @Return int output, @GroupID int ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at this object Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupID, 5, 0, @SaclIsOn output if @Return <= 0 Begin goto Done End -- The user either has admin, reader or delegated user at the Group -- So he can see this object Else if @Return = 1 or @Return = 2 or @Return = 3 Begin Select [MemberSID] From [AzMan_Group_SIDMember] where GroupID = @GroupID and [Member] = 0 SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = 0 End End End Done: Return(@Return) GO Create Procedure [AzMan_SPS_Enum_AzApplicationGroup_AppMembers] ( @Return int output, @GroupID int ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at this object Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupID, 5, 0, @SaclIsOn output if @Return <= 0 Begin goto Done End -- The user either has admin, reader or delegated user at the Group -- So he can see this object Else if @Return = 1 or @Return = 2 or @Return = 3 Begin Select [ObjectGuid] From AzMan_AzApplicationGroup where ID in ( Select ChildID from AzMan_Group_AppMember where GroupID = @GroupID and [Member] = 1 ) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = 0 End End End Done: Return(@Return) GO Create Procedure [AzMan_SPS_Enum_AzApplicationGroup_AppNonMembers] ( @Return int output, @GroupID int ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at this object Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@GroupID, 5, 0, @SaclIsOn output if @Return <= 0 Begin goto Done End -- The user either has admin, reader or delegated user at the Group -- So he can see this object Else if @Return = 1 or @Return = 2 or @Return = 3 Begin Select [ObjectGuid] From AzMan_AzApplicationGroup where ID in ( Select ChildID from AzMan_Group_AppMember where GroupID = @GroupID and [Member] = 0 ) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = 0 End End End Done: Return(@Return) GO Create Procedure [AzMan_SPS_Enum_AzRoleAssignment_SIDMembers] ( @Return int output, @RoleID int ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at this object Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleID, 6, 0, @SaclIsOn output if @Return <= 0 Begin goto Done End -- The user either has admin, reader or delegated user at the Role -- So he can see this object Else if @Return = 1 or @Return = 2 or @Return = 3 Begin Select [MemberSID] From [AzMan_Role_SIDMember] where RoleID = @RoleID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = 0 End End End Done: Return(@Return) GO Create Procedure [AzMan_SPS_Enum_AzRoleAssignment_AppMembers] ( @Return int output, @RoleID int ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at this object Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@RoleID, 6, 0, @SaclIsOn output if @Return <= 0 Begin goto Done End -- The user either has admin, reader or delegated user at the Role -- So he can see this object Else if @Return = 1 or @Return = 2 or @Return = 3 Begin Select [ObjectGuid] From AzMan_AzApplicationGroup where ID IN ( select ChildID from [AzMan_Role_AppMember] where RoleID = @RoleID) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = 0 End End End Done: Return(@Return) go Create Procedure [AzMan_SPS_Get_AzScope] ( @Return int output, @ScopeID int ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at this object Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ScopeID, 4, 0, @SaclIsOn output if @Return <= 0 Begin goto Done End -- The user either has admin, reader or delegated user at the App -- So he can see this object Else if @Return = 1 or @Return = 2 or @Return = 3 Begin Select [AppID], [NameLen], IsNull([HasSpecificUsers], 0) AS HasSpecificUsers, [NameHash], [ObjectGuid] , [Description], [Name], [ApplicationData] From [AzMan_AzScope] where ID = @ScopeID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin If @RowCount = 0 Begin Set @Return = -1168 --Record not found End End End End Done: Return(@Return) GO Create Procedure [AzMan_SPS_Enum_AzOperation] ( @Return int output, @AppID int ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at the Application Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@AppID, 1, 0, @SaclIsOn output if @Return <= 0 Begin goto Done End -- The user either has admin, reader or delegated user at the App -- So he can see the operations Else if @Return = 1 or @Return = 2 or @Return = 3 Begin Select [ID], [OperationID], [ObjectGuid] , [Name], [Description], [ApplicationData] From [AzMan_AzOperation] where AppID = @AppID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = 0 End End End Done: Return(@Return) GO Create Procedure [AzMan_SPS_Get_AzOperation] ( @Return int output, @ID int ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at object Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 2, 0, @SaclIsOn output if @Return <= 0 Begin goto Done End -- The user either has admin, reader or delegated user at the parent -- So he can see the operation Else if @Return = 1 or @Return = 2 or @Return = 3 Begin Select [OperationID], [ObjectGuid] , [Name] , [Description], [ApplicationData] From [AzMan_AzOperation] where ID = @ID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin If @RowCount = 0 Begin Set @Return = -1168 --Record not found End End End End Done: Return (@Return) GO Create Procedure [AzMan_SPS_Get_AzTask] ( @Return int output, @ID int ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at object Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 3, 0, @SaclIsOn output if @Return <= 0 Begin goto Done End -- The user either has admin, reader or delegated user at the parent -- So he can see the object Else if @Return = 1 or @Return = 2 or @Return = 3 Begin Select [IsRoleDefinition], [ObjectGuid] , [Name], [Description], [ApplicationData] From [AzMan_AzTask] where ID = @ID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin If @RowCount = 0 Begin Set @Return = -1168 --Record not found End End End End Done: Return(@Return) GO Create Procedure [AzMan_SPS_Get_AzRoleAssignment] ( @Return int output, @ID int ) as Begin DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- we don't care about SACL (0 for the second last parameter) -- Check access at object Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 6, 0, @SaclIsOn output if @Return <= 0 Begin goto Done End -- The user either has admin, reader or delegated user at the parent -- So he can see the object Else if @Return = 1 or @Return = 2 or @Return = 3 Begin Select [ObjectGuid] , [Name] , [Description], [ApplicationData] From [AzMan_AzRoleAssignment] where ID = @ID SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT if @Error <> 0 Begin Set @Return = @Error End else Begin If @RowCount = 0 Begin Set @Return = -1168 --Record not found End End End End Done: Return (@Return) GO -- Delete Queries Create Procedure [AzMan_SPD_AzOperation] -- Delete a specific record from table [AzMan_AzOperation] ( @Return int output, @ID [int] ,@AppId [int] = Null ) As Set NoCount On DECLARE @RowCount INT, @Error INT DECLARE @parentName nvarchar(512) DECLARE @parentGuid uniqueidentifier DECLARE @childName nvarchar(512) DECLARE @childGuid uniqueidentifier Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- Check access at this object Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 2, 1, @SaclIsOn output if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End Set @Return = 0 -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @parentName = App.Name, @parentGuid = App.ObjectGuid FROM [dbo].[AzMan_AzApplication] App WHERE App.ID = @AppId SELECT @childName = Op.Name, @childGuid = Op.ObjectGuid FROM [dbo].[AzMan_AzOperation] Op WHERE Op.ID = @ID END Delete From [dbo].[AzMan_AzOperation] Where ((@ID Is Null) Or ([ID] = @ID)) And ((@AppId Is Null) Or ([AppID] = @AppId)) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = -1168 --Record not found End End -- generate an audit IF @SaclIsOn = 1 BEGIN EXEC [AzMan_SP_GenerateObjectAudit] @Return, 1, -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE 1, -- 1 for application @parentName, @parentGuid, 2, -- 2 for Operation @childName, @childGuid, N'' -- no other info END Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPD_AzScope] -- Delete a specific record from table [AzMan_AzScope] ( @Return int output, @ID [int] ,@AppId [int] = Null ) As DECLARE @parentName nvarchar(512) DECLARE @parentGuid uniqueidentifier DECLARE @childName nvarchar(512) DECLARE @childGuid uniqueidentifier Set NoCount On DECLARE @RowCount INT, @Error INT Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- Check access at this object Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 4, 1, @SaclIsOn output if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End Set @Return = 0 -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @parentName = App.Name, @parentGuid = App.ObjectGuid FROM [dbo].[AzMan_AzApplication] App WHERE App.ID = @AppId SELECT @childName = scope.Name, @childGuid = scope.ObjectGuid FROM [dbo].[AzMan_AzScope] scope WHERE scope.ID = @ID END Delete From [dbo].[AzMan_AzScope] Where ((@ID Is Null) Or ([ID] = @ID)) And ((@AppId Is Null) Or ([AppID] = @AppId)) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = -1168 --Record not found End End -- generate an audit IF @SaclIsOn = 1 BEGIN EXEC [AzMan_SP_GenerateObjectAudit] @Return, 1, -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE 1, -- 1 for application @parentName, @parentGuid, 4, -- 4 for scope @childName, @childGuid, N'' -- no other info END Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPD_AzApplication] -- Delete a specific record from table [AzMan_AzApplication] ( @Return int output, @ID [int] -- for [AzMan_AzApplication].[ID] column ,@StoreId [int] = Null ) As Set NoCount On DECLARE @RowCount INT, @Error INT DECLARE @parentName nvarchar(512) DECLARE @parentGuid uniqueidentifier DECLARE @childName nvarchar(512) DECLARE @childGuid uniqueidentifier Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- Check access at this object Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 1, 1, @SaclIsOn output if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End Set @Return = 0 -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @parentName = store.Name, @parentGuid = store.ObjectGuid FROM [dbo].[AzMan_AzAuthorizationStore] store WHERE store.ID = @StoreId SELECT @childName = app.Name, @childGuid = app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app WHERE app.ID = @ID END Delete From [dbo].[AzMan_AzApplication] Where ((@ID Is Null) Or ([ID] = @ID)) And ((@StoreId Is Null) Or ([StoreID] = @StoreId)) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = -1168 --Record not found End End -- generate an audit IF @SaclIsOn = 1 BEGIN EXEC [AzMan_SP_GenerateObjectAudit] @Return, 1, -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE 0, -- 0 for store @parentName, @parentGuid, 1, -- 1 for application @childName, @childGuid, N'' -- no other info END Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPD_AzAuthorizationStore] -- Delete a specific record from table [AzMan_AzAuthorizationStore] ( @Return int output, @ID [int] ) As Set NoCount On DECLARE @RowCount INT, @Error INT DECLARE @parentName nvarchar(512) DECLARE @parentGuid uniqueidentifier Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- Check access at this object Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 0, 1, @SaclIsOn output -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @parentName = store.Name, @parentGuid = store.ObjectGuid FROM [dbo].[AzMan_AzAuthorizationStore] store WHERE store.ID = @ID END if @Return <> 1 Begin if (@Return >= 2) Set @Return = -5 End ELSE Begin Set @Return = 0 Delete From [dbo].[AzMan_AzAuthorizationStore] Where ((@ID Is Null) Or ([ID] = @ID)) End -- generate an audit IF @SaclIsOn = 1 BEGIN EXEC [AzMan_SP_GenerateObjectAudit] @Return, 1, -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE 0, -- 0 for store @parentName, @parentGuid, 0, -- 0 for store @parentName, @parentGuid, N'' -- no other info END Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPD_AzApplicationGroup] -- Delete a specific record from table [AzMan_AzApplicationGroup] ( @Return int output, @ID [int] ,@ParentId [int] = Null ) As Set NoCount On DECLARE @RowCount INT, @Error INT DECLARE @parentName nvarchar(512) DECLARE @parentGuid uniqueidentifier DECLARE @childName nvarchar(512) DECLARE @childGuid uniqueidentifier DECLARE @ParentType tinyint Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- Check access at this object Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 5, 1, @SaclIsOn output if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End Set @Return = 0 -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @ParentType = appGroup.ParentType, @childName = appGroup.Name, @childGuid = appGroup.ObjectGuid FROM [dbo].[AzMan_AzApplicationGroup] appGroup WHERE appGroup.ID = @ID IF @ParentType = 0 -- store SELECT @parentName = store.Name, @parentGuid = store.ObjectGuid FROM [dbo].[AzMan_AzAuthorizationStore] store WHERE store.ID = @ParentId ELSE IF @ParentType = 1 -- app SELECT @parentName = app.Name, @parentGuid = app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app WHERE app.ID = @ParentId ELSE IF @ParentType = 4 -- scope SELECT @parentName = scope.Name, @parentGuid = scope.ObjectGuid FROM [dbo].[AzMan_AzScope] scope WHERE scope.ID = @ParentId END Delete From [dbo].[AzMan_AzApplicationGroup] Where ([ID] = @ID) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = -1168 --Record not found End End -- generate an audit IF @SaclIsOn = 1 BEGIN EXEC [AzMan_SP_GenerateObjectAudit] @Return, 1, -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE @ParentType, @parentName, @parentGuid, 5, -- 5 for group @childName, @childGuid, N'' -- no other info END Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPD_AzTask] -- Delete a specific record from table [AzMan_AzTask] ( @Return int output, @ID [int] ,@ParentId [int] = Null ) As Set NoCount On DECLARE @RowCount INT, @Error INT DECLARE @parentName nvarchar(512) DECLARE @parentGuid uniqueidentifier DECLARE @childName nvarchar(512) DECLARE @childGuid uniqueidentifier DECLARE @ParentType tinyint Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- Check access at this object Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 3, 1, @SaclIsOn output if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End Set @Return = 0 -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @ParentType = task.ParentType, @childName = task.Name, @childGuid = task.ObjectGuid FROM [dbo].[AzMan_AzTask] task WHERE task.ID = @ID IF @ParentType = 1 -- app SELECT @parentName = app.Name, @parentGuid = app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app WHERE app.ID = @ParentId ELSE IF @ParentType = 4 -- scope SELECT @parentName = scope.Name, @parentGuid = scope.ObjectGuid FROM [dbo].[AzMan_AzScope] scope WHERE scope.ID = @ParentId END Delete From [dbo].[AzMan_AzTask] Where ([ID] = @ID) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = -1168 --Record not found End End -- generate an audit IF @SaclIsOn = 1 BEGIN EXEC [AzMan_SP_GenerateObjectAudit] @Return, 1, -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE @ParentType, @parentName, @parentGuid, 3, -- 3 for task @childName, @childGuid, N'' -- no other info END Done: Set NoCount Off Return(@Return) GO Create Procedure [AzMan_SPD_AzRoleAssignment] -- Delete a specific record from table ( @Return int output, @ID [int] ,@ParentId [int] = Null ) As Set NoCount On DECLARE @RowCount INT, @Error INT DECLARE @parentName nvarchar(512) DECLARE @parentGuid uniqueidentifier DECLARE @childName nvarchar(512) DECLARE @childGuid uniqueidentifier DECLARE @ParentType tinyint Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 -- Check access at this object Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, 6, 1, @SaclIsOn output if @Return <> 1 Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End Set @Return = 0 -- get info for auditing IF @SaclIsOn = 1 BEGIN SELECT @ParentType = role.ParentType, @childName = role.Name, @childGuid = role.ObjectGuid FROM [dbo].[AzMan_AzRoleAssignment] role WHERE role.ID = @ID IF @ParentType = 1 -- app SELECT @parentName = app.Name, @parentGuid = app.ObjectGuid FROM [dbo].[AzMan_AzApplication] app WHERE app.ID = @ParentId ELSE IF @ParentType = 4 -- scope SELECT @parentName = scope.Name, @parentGuid = scope.ObjectGuid FROM [dbo].[AzMan_AzScope] scope WHERE scope.ID = @ParentId END Delete From [dbo].[AzMan_AzRoleAssignment] Where ([ID] = @ID) SELECT @Error = @@ERROR, @RowCount = @@ROWCOUNT If @RowCount <> 1 Begin if @Error <> 0 Begin Set @Return = @Error End else Begin Set @Return = -1168 --Record not found End End -- generate an audit IF @SaclIsOn = 1 BEGIN EXEC [AzMan_SP_GenerateObjectAudit] @Return, 1, -- 1 for SE_AUDITID_AZ_SQL_OBJECT_DELETE @ParentType, @parentName, @parentGuid, 6, -- 6 for role @childName, @childGuid, N'' -- no other info END Done: Set NoCount Off Return(@Return) GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPS_Enum_AzAuthorizationStoreUpdateTimeStamp' and type = 'P') DROP PROCEDURE AzMan_SPS_Enum_AzAuthorizationStoreUpdateTimeStamp GO -- query the timestamps of a store CREATE PROCEDURE AzMan_SPS_Enum_AzAuthorizationStoreUpdateTimeStamp ( @ReturnCode int output, @storeID int ) AS SELECT @ReturnCode = 0 SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0), IsNull([ChildUpdateTimeStamp], 0) FROM [AzMan_AzAuthorizationStore] WHERE [ID] = @storeID Return(@@RowCount) GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPS_Enum_AzApplicationUpdateTimeStamp' and type = 'P') DROP PROCEDURE AzMan_SPS_Enum_AzApplicationUpdateTimeStamp GO -- query the timestamps of applications CREATE PROCEDURE AzMan_SPS_Enum_AzApplicationUpdateTimeStamp ( @ReturnCode int output, @storeID int ) AS SELECT @ReturnCode = 0 SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0), IsNull([ChildUpdateTimeStamp], 0) FROM [AzMan_AzApplication] WHERE [StoreID] = @storeID Return(@@RowCount) GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPS_Enum_AzScopeUpdateTimeStamp' and type = 'P') DROP PROCEDURE AzMan_SPS_Enum_AzScopeUpdateTimeStamp GO -- query the timestamps of scopes CREATE PROCEDURE AzMan_SPS_Enum_AzScopeUpdateTimeStamp ( @ReturnCode int output, @appID int ) AS SELECT @ReturnCode = 0 SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0), IsNull([ChildUpdateTimeStamp], 0) FROM [AzMan_AzScope] WHERE [AppID] = @appID Return(@@RowCount) GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPS_Enum_AzApplicationGroupUpdateTimeStamp' and type = 'P') DROP PROCEDURE AzMan_SPS_Enum_AzApplicationGroupUpdateTimeStamp GO -- query the timestamps of application groups CREATE PROCEDURE AzMan_SPS_Enum_AzApplicationGroupUpdateTimeStamp ( @ReturnCode int output, @parentID int, @parentType tinyint ) AS SELECT @ReturnCode = 0 IF (@parentType = 0) SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzApplicationGroup] WHERE [StoreID] = @parentID IF (@parentType = 1) SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzApplicationGroup] WHERE [AppID] = @parentID IF (@parentType = 4) SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzApplicationGroup] WHERE [ScopeID] = @parentID Return(@@RowCount) GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPS_Enum_AzOperationUpdateTimeStamp' and type = 'P') DROP PROCEDURE AzMan_SPS_Enum_AzOperationUpdateTimeStamp GO -- query the timestamps of operations CREATE PROCEDURE AzMan_SPS_Enum_AzOperationUpdateTimeStamp ( @ReturnCode int output, @appID int ) AS SELECT @ReturnCode = 0 SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzOperation] WHERE [AppID] = @appID Return(@@RowCount) GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPS_Enum_AzRoleAssignmentUpdateTimeStamp' and type = 'P') DROP PROCEDURE AzMan_SPS_Enum_AzRoleAssignmentUpdateTimeStamp GO -- query the timestamps of roles CREATE PROCEDURE AzMan_SPS_Enum_AzRoleAssignmentUpdateTimeStamp ( @ReturnCode int output, @parentID int, @parentType tinyint ) AS SELECT @ReturnCode = 0 IF (@parentType = 1) SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzRoleAssignment] WHERE [AppID] = @parentID ELSE SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzRoleAssignment] WHERE [ScopeID] = @parentID Return(@@RowCount) GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPS_Enum_AzTaskUpdateTimeStamp' and type = 'P') DROP PROCEDURE AzMan_SPS_Enum_AzTaskUpdateTimeStamp GO -- query the timestamps of tasks CREATE PROCEDURE AzMan_SPS_Enum_AzTaskUpdateTimeStamp ( @ReturnCode int output, @parentID int, @parentType tinyint ) AS SELECT @ReturnCode = 0 IF (@parentType = 1) SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzTask] WHERE [AppID] = @parentID ELSE SELECT [ID], [ObjectGuid], IsNull([RowUpdateTimeStamp], 0) FROM [AzMan_AzTask] WHERE [ScopeID] = @parentID Return(@@RowCount) GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPD_SQLRole' and type = 'P') DROP PROCEDURE AzMan_SPD_SQLRole GO CREATE PROCEDURE AzMan_SPD_SQLRole ( @Return [int] output, @SQLRoleName [nvarchar] (64) ) AS DECLARE @Ret [int] DECLARE @member [nvarchar] (64) DECLARE roleMember_cursor CURSOR FOR ( select u.name from sysusers u, sysusers g, sysmembers m where g.name = @SQLRoleName and g.uid = m.groupuid and g.issqlrole = 1 and u.uid = m.memberuid ) OPEN roleMember_cursor FETCH NEXT FROM roleMember_cursor INTO @member WHILE @@FETCH_STATUS = 0 BEGIN EXEC @Ret = sp_droprolemember @SQLRoleName, @member FETCH NEXT FROM roleMember_cursor INTO @member END Close roleMember_cursor DEALLOCATE roleMember_cursor Set @Return = -1 Exec @Ret = sp_droprole @SQLRoleName if @Ret <> 0 Begin Set @Return = -1 End Else Begin Set @Return = 0 End Return @Return GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPD_All_SQLRole_ForObject' and type = 'P') DROP PROCEDURE AzMan_SPD_All_SQLRole_ForObject GO CREATE PROCEDURE AzMan_SPD_All_SQLRole_ForObject ( @Return [int] output, @ID [int], @ObjectType [tinyint] ) AS DECLARE @uid [int] DECLARE @SQLRoleName [nvarchar] (64) Set @Return = 0 SELECT @uid = 0 Select @uid=[uid], @SQLRoleName = [SQLRoleName] From [dbo].[Azman_SQLRole] where [ObjectID] = @ID and [ObjectType] = @ObjectType and [RoleType] = 1 IF @uid <> 0 Begin Exec AzMan_SPD_SQLRole @Return output, @SQLRoleName End SELECT @uid = 0 Select @uid=[uid], @SQLRoleName = [SQLRoleName] From [dbo].[Azman_SQLRole] where [ObjectID] = @ID and [ObjectType] = @ObjectType and [RoleType] = 2 IF @uid <> 0 Begin Exec AzMan_SPD_SQLRole @Return output, @SQLRoleName End set @uid = 0 Select @uid=[uid], @SQLRoleName = [SQLRoleName] From [dbo].[Azman_SQLRole] where [ObjectID] = @ID and [ObjectType] = @ObjectType and [RoleType] = 3 IF @uid <> 0 Begin Exec AzMan_SPD_SQLRole @Return output, @SQLRoleName End if @Return = 0 Begin DELETE Azman_SQLRole WHERE [ObjectID] = @ID AND [ObjectType] = @ObjectType Set @Return = 0 End Done: Return @Return GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPD_SQLRole_ForObject' and type = 'P') DROP PROCEDURE AzMan_SPD_SQLRole_ForObject GO CREATE PROCEDURE AzMan_SPD_SQLRole_ForObject ( @Return [int] output, @ID [int], @ObjectType [tinyint], @DeleteFlag [int] -- bitwise pattern. 0x0001 for deleting only self, 0x0002 for deleting only children ) AS SET NOCOUNT ON DECLARE @SQLRoleName [nvarchar] (64) Declare @AccessAtObjType [tinyint] DECLARE @SaclIsOn [bit] Declare @DbName [nvarchar] (255) Set @SaclIsOn = 0 Set @Return = -1 -- such role deletion audit will be generated by the object deletion. -- so we don't care about SACL (second last parameter) here Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, @ObjectType, 0, @SaclIsOn output if @Return <> 1 Begin -- if the object is deleted we will ignore as we still want to delete all the roles for the object if @Return = -1168 Begin Set @Return = 0 End Else Begin if (@Return >= 2) Begin Set @Return = -5 End goto Done End End -- our deletion flag will switch to delete all because we only need -- to make sure that the acting container object's roles are not deleted -- so that the user still has access -- if we are instructed to delete sub-container's roles if (@DeleteFlag & 2) <> 0 begin -- for applications or stores, we also need to delete the sub-container's roles DECLARE @locReturn int -- we have to press on for this action. No rollback IF @ObjectType = 0 BEGIN DECLARE @AppID int DECLARE app_cursor CURSOR FOR ( select App.ID FROM AzMan_AzApplication App WHERE App.StoreID = @ID ) OPEN app_cursor FETCH NEXT FROM app_cursor INTO @AppID WHILE @@FETCH_STATUS = 0 BEGIN -- now call recursively to delete the app's roles EXEC AzMan_SPD_SQLRole_ForObject @locReturn output, @AppID, 1, 3 FETCH NEXT FROM app_cursor INTO @AppID END Close app_cursor DEALLOCATE app_cursor END ELSE IF @ObjectType = 1 BEGIN DECLARE @ScopeID int DECLARE scope_cursor CURSOR FOR ( select Scope.ID FROM AzMan_AzScope Scope WHERE Scope.AppID = @ID ) OPEN scope_cursor FETCH NEXT FROM scope_cursor INTO @ScopeID WHILE @@FETCH_STATUS = 0 BEGIN -- now call recursively to delete the app's roles EXEC AzMan_SPD_SQLRole_ForObject @locReturn output, @ScopeID, 4, 3 FETCH NEXT FROM scope_cursor INTO @ScopeID END Close scope_cursor DEALLOCATE scope_cursor END end -- if we are instructed to delete the self roles if (@DeleteFlag & 1) <> 0 begin If Is_Member('db_owner') = 1 or Is_Member('db_securityadmin') = 1 Begin exec AzMan_SPD_All_SQLRole_ForObject @Return output , @ID, @ObjectType End else begin Set @DbName = db_name() Exec master.dbo.xp_AzManDeleteRole @Return output, @ID, @ObjectType, @DbName End end Done: SET NOCOUNT OFF Return @Return GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SPS_Get_ObjectSecurityOption' and type = 'P') DROP PROCEDURE AzMan_SPS_Get_ObjectSecurityOption GO CREATE PROCEDURE AzMan_SPS_Get_ObjectSecurityOption ( @Return [int] output, @AccessAtObjType [tinyint] output, @ID [int], @ObjectType [tinyint], @UserType [int] output ) AS DECLARE @SaclIsOn [bit] Set @SaclIsOn = 0 SET @Return = -5 SET @UserType = 0 -- illegal users IF @ObjectType = 0 OR @ObjectType = 1 OR @ObjectType = 4 BEGIN -- no need to know that SACL (Second last parameter) Exec AzMan_SP_AccessCheck @Return output, @AccessAtObjType output,@ID, @ObjectType, 0, @SaclIsOn output IF @Return >= 1 AND @Return <= 3 BEGIN SET @UserType = @Return SET @Return = 0 END END RETURN @Return GO IF EXISTS (SELECT name FROM sysobjects WHERE name = 'AzMan_SP_Grant_Permission' and type = 'P') DROP PROCEDURE AzMan_SP_Grant_Permission GO CREATE PROCEDURE AzMan_SP_Grant_Permission AS grant execute on AzMan_SP_GetSQLRole to public grant execute on AzMan_SPI_SQLRole to public --AzMan_SPI_Add_User_To_SQLRole grant execute on AzMan_SPI_Add_User_To_Role to public --AzMan_SPD_User_From_SQLRole grant execute on AzMan_SPD_User_From_Role to public --AzMan_SP_Get_Object_Path_For_Container --AzMan_SP_Get_Object_Path --AzMan_SP_AccessCheck_For_Container --AzMan_SP_AccessCheck grant execute on AzMan_SPS_Get_StoreIDByName to public --AzMan_SP_Check_Dup_Task --AzMan_SP_Check_Dup_RoleAssignment --AzMan_SP_Check_Dup_Application --AzMan_SP_Check_Dup_Scope --AzMan_SP_Check_Dup_Operation --AzMan_SP_Check_Dup_Group_For_Given_Parent --AzMan_SP_Check_Dup_Group grant execute on AzMan_SPI_AzAuthorizationStore to public grant execute on AzMan_SPI_AzApplication to public grant execute on AzMan_SPU_AzApplication to public grant execute on AzMan_SPI_AzScope to public grant execute on AzMan_SPI_AzOperation to public grant execute on AzMan_SPI_AzApplicationGroup to public grant execute on AzMan_SPI_AzTask to public --AzMan_SPI_AzTask_Single_Operation --AzMan_SPD_AzTask_Single_Operation grant execute on AzMan_SPI_AzTask_Multi_Operations to public --AzMan_SPI_AzRoleAssignment_Single_Operation --AzMan_SPD_AzRoleAssignment_Single_Operation grant execute on AzMan_SPI_AzRoleAssignment_Multi_Operations to public --AzMan_SPI_AzTask_Single_Task --AzMan_SPD_AzTask_Single_Task grant execute on AzMan_SPI_AzTask_Multi_Tasks to public --AzMan_SPI_AzRoleAssignment_Single_Task --AzMan_SPD_AzRoleAssignment_Single_Task grant execute on AzMan_SPI_AzRoleAssignment_Multi_Tasks to public grant execute on AzMan_SPI_AzRoleAssignment to public grant execute on AzMan_SPU_AzAuthorizationStore to public grant execute on AzMan_SPU_AzScope to public grant execute on AzMan_SPU_AzOperation to public grant execute on AzMan_SPU_AzApplicationGroup to public grant execute on AzMan_SPU_AzTask to public grant execute on AzMan_SPU_AzRoleAssignment to public grant execute on AzMan_SPIU_AzApplicationGroup_LDAPQuery to public grant execute on AzMan_SPIU_Bizrule to public grant execute on AzMan_SPIU_AzApplicationGroup_Bizrule to public grant execute on AzMan_SPIU_AzTask_Bizrule to public --AzMan_SPI_AzApplicationGroup_Single_SidMember --AzMan_SPD_AzApplicationGroup_Single_SidMember grant execute on AzMan_SPI_AzApplicationGroup_Multi_SidMembers to public grant execute on AzMan_SPI_AzApplicationGroup_Multi_SidNonMembers to public --AzMan_SPI_AzApplicationGroup_Single_AppMember --AzMan_SPD_AzApplicationGroup_Single_AppMember grant execute on AzMan_SPI_AzApplicationGroup_Multi_AppMembers to public grant execute on AzMan_SPI_AzApplicationGroup_Multi_AppNonMembers to public --AzMan_SPI_AzRoleAssignment_Single_SidMember --AzMan_SPD_AzRoleAssignment_Single_SidMember grant execute on AzMan_SPI_AzRoleAssignment_Multi_SidMembers to public -- AzMan_SPI_AzRoleAssignment_Single_AppMember -- AzMan_SPD_AzRoleAssignment_Single_AppMember grant execute on AzMan_SPI_AzRoleAssignment_Multi_AppMembers to public -- spDrop_AzMan_Table grant execute on AzMan_SPS_Get_AzAuthorizationStoreByName to public grant execute on AzMan_SPS_Enum_AzApplications to public grant execute on AzMan_SPS_Get_AzApplication to public --AzMan_SPS_Get_AzApplication_AppData --AzMan_SPS_Get_AzScope_AppData --AzMan_SPS_Get_AzAuthorizationStore_AppData grant execute on AzMan_SPS_Enum_AzScope to public grant execute on AzMan_SPS_Enum_AzApplicationGroup to public grant execute on AzMan_SPS_Enum_AzTask to public grant execute on AzMan_SPS_Enum_AzTask_Operations to public grant execute on AzMan_SPS_Enum_AzTask_Tasks to public grant execute on AzMan_SPS_Enum_AzRoleAssignment_Tasks to public grant execute on AzMan_SPS_Enum_AzRoleAssignment_Operations to public grant execute on AzMan_SPS_Enum_AzRoleAssignment to public grant execute on AzMan_SPS_Get_AzApplicationGroup to public grant execute on AzMan_SPS_Get_AzApplicationGroup_BizruleInfo to public grant execute on AzMan_SPS_Get_AzTask_BizruleInfo to public grant execute on AzMan_SPS_Get_AzApplicationGroup_LDAPQuery to public grant execute on AzMan_SPS_Enum_AzApplicationGroup_SIDMembers to public grant execute on AzMan_SPS_Enum_AzApplicationGroup_SIDNonMembers to public grant execute on AzMan_SPS_Enum_AzApplicationGroup_AppMembers to public grant execute on AzMan_SPS_Enum_AzApplicationGroup_AppNonMembers to public grant execute on AzMan_SPS_Enum_AzRoleAssignment_SIDMembers to public grant execute on AzMan_SPS_Enum_AzRoleAssignment_AppMembers to public grant execute on AzMan_SPS_Get_AzScope to public grant execute on AzMan_SPS_Enum_AzOperation to public grant execute on AzMan_SPS_Get_AzOperation to public grant execute on AzMan_SPS_Get_AzTask to public grant execute on AzMan_SPS_Get_AzRoleAssignment to public grant execute on AzMan_SPD_AzOperation to public grant execute on AzMan_SPD_AzScope to public grant execute on AzMan_SPD_AzApplication to public grant execute on AzMan_SPD_AzAuthorizationStore to public grant execute on AzMan_SPD_AzApplicationGroup to public grant execute on AzMan_SPD_AzTask to public grant execute on AzMan_SPD_AzRoleAssignment to public grant execute on AzMan_SPD_SQLRole_ForObject to public grant execute on AzMan_SPS_Enum_AzAuthorizationStoreUpdateTimeStamp to public grant execute on AzMan_SPS_Enum_AzApplicationUpdateTimeStamp to public grant execute on AzMan_SPS_Enum_AzScopeUpdateTimeStamp to public grant execute on AzMan_SPS_Enum_AzApplicationGroupUpdateTimeStamp to public grant execute on AzMan_SPS_Enum_AzOperationUpdateTimeStamp to public grant execute on AzMan_SPS_Enum_AzRoleAssignmentUpdateTimeStamp to public grant execute on AzMan_SPS_Enum_AzTaskUpdateTimeStamp to public grant execute on AzMan_SP_GenerateObjectAudit to public grant execute on AzMan_SP_GenerateMemberAudit to public grant execute on AzMan_SP_GenerateGenericAudit to public grant execute on AzMan_SPS_Get_ObjectSecurityOption to public grant execute on AzMan_SPS_Get_DBOwners to public grant execute on AzMan_SPS_Get_Role_For_Object to public grant execute on AzMan_SP_GetRoleMemberCount to public grant execute on AzMan_SPI_SQLRole_From_XP to dbo grant execute on AzMan_SPD_All_SQLRole_ForObject to dbo grant execute on AzMan_SPD_User_From_SQLRole_From_XP to dbo grant execute on AzMan_SPI_Add_User_To_SQLRole_From_XP to dbo grant execute on AzMan_SPU_SqlRoleUpdated to public grant execute on AzMan_SPI_Create_SqlRole_For_Object to public GO IF not EXISTS (SELECT name FROM sysobjects WHERE name = 'AzGenerateAudit' and type = 'X') exec sp_addextendedproc 'AzGenerateAudit', 'AzSqlExt.dll' GO IF not EXISTS (SELECT name FROM sysobjects WHERE name = 'xp_AzManAddUserToRole' and type = 'X') exec sp_addextendedproc 'xp_AzManAddUserToRole', 'AzSqlExt.dll' GO IF not EXISTS (SELECT name FROM sysobjects WHERE name = 'xp_AzManRemoveUserFromRole' and type = 'X') exec sp_addextendedproc 'xp_AzManRemoveUserFromRole', 'AzSqlExt.dll' GO IF not EXISTS (SELECT name FROM sysobjects WHERE name = 'xp_AzManDeleteRole' and type = 'X') exec sp_addextendedproc 'xp_AzManDeleteRole', 'AzSqlExt.dll' GO IF not EXISTS (SELECT name FROM sysobjects WHERE name = 'xp_AzManAddRole' and type = 'X') exec sp_addextendedproc 'xp_AzManAddRole', 'AzSqlExt.dll' GO grant execute on AzGenerateAudit to public grant execute on xp_AzManAddUserToRole to public grant execute on xp_AzManRemoveUserFromRole to public grant execute on xp_AzManDeleteRole to public grant execute on xp_AzManAddRole to public MSFT C)W d,X Lx@l4` ( T  H t<| ,Pl2$K0TOQ4BQ3H@4B ]`@@P4B]=x@\ 4Bk@TxP4Btl&@h4B u@P4Bu @84B|@P4Bh}@< 4B h @L P4B 8@| 4B P@ 4P4B 0 h@H P4B  @ h4B@:4BL@0D4B@ 4B@@`x<4BL@F4BD@$-4B(@ <P4B@@|\(!4BtX@|P4Bp@0 "4Bؚ@84B$@T!4Bp@hpX'4Bܜ@@4B̞@T(h4B@Hh4Bh@(hX4B80@H4B H@H4B!0`@ H&B"ģ h!!#ģ '!$ !%B%Lx!%B&L"0%B'L8"@ !(LbX"0HHxx8hP `(@X0@:>20FF킛jO0EŕJ Bld0{'Mk~SHx^m@kۦ5,`$E.}VEjL<x   0/stdole2.tlbWWW/D.x (D2.|0P"@*.$+h0/ !- 1`1( \'$8&##",+-<-0(L)8!`(d "(0d# &<#l T'l!l,h&L0 /)$*"p+( .th/P/10&-`*81 H%x")21,'H* &+X!H+t)'*$8"0(H 1<$( AZROLESLibWW8E5IAzAuthorizationStoreWWW DescriptionWppbstrDescription2ApplicationDataWpbstrApplicationData 7)DomainTimeoutWWWplPropWWЪScriptEngineTimeoutWMaxScriptEngines-GenerateAuditsWW.pbPropWW(Writable]vpfPropWW mGetPropertyW^lPropIdW varReservedW5pvarProp4 'SetPropertyWIvarPropWAddPropertyItemWDeletePropertyItemWW:PolicyAdministrators RpvarAdminsWW "PolicyReadersWWW pvarReadersWzAddPolicyAdministratorWW VbstrAdminWWW RDeletePolicyAdministratorWWWAddPolicyReaderW bstrReaderWW`JDeletePolicyReaderWW NInitializeWWlFlagsWW ;bstrPolicyURLWWW (UpdateCacheWxDeleteWWd8IAzApplicationsWdzItemIndexWWW pvarObtPtrWWd0vCountWWWplCountWdxA_NewEnum ppEnumPtrWWW nApplicationsppAppCollectionW8uIAzApplicationWWTName spbstrNameWWWAuthzInterfaceClsidWp pbstrPropWWWVersionWQApplyStoreSaclWW, 8IAzScopesWWW2ScopesWWppScopeCollectionWWW8IAzScopep8IAzApplicationGroupskWApplicationGroupsWWWppGroupCollectionWWWX8KIAzApplicationGroupWX\TypeX LdapQueryWWWX 2AAppMembersWWXT AppNonMembersWWWXtMembersWX NonMembersWWXT SpAddAppMember3bstrPropXmDeleteAppMemberWXAddAppNonMemberWXKDeleteAppNonMemberWWX rAddMemberWWWX HDeleteMemberXl 4AddNonMemberXc"DeleteNonMemberWX\SubmitWWX AddMemberNameWWWXFDeleteMemberNameXAddNonMemberNameXHKDeleteNonMemberNameWX$ MembersNameWXV@NonMembersNameWWaOpenApplicationGroup bstrGroupNameWWWVppGroupWF4CreateApplicationGroupWWDeleteApplicationGroupWW8mIAzRolesRolesWWWppRoleCollection 8^.IAzRoleW w;AddTaskW  BDeleteTaskWW  ڑAddOperation ?DeleteOperationW  ~VOperationsWW LTasksWWWSOpenRole bstrRoleName[ppRoleWW XCreateRoleWW KDeleteRoleWW48IAzTasksuMppTaskCollection8pIAzTaskWpMBizRuleW BizRuleLanguageW BizRuleImportedPathW1IsRoleDefinitionObstrOpWW(bstrTaskOpenTask _bstrTaskNameppTaskWW CreateTaskWW ϦCanBeDelegatedWWP QBizrulesWritablepPolicyAdministratorsNamed qPolicyReadersNameWWW$jAddPolicyAdministratorNameWWcDeletePolicyAdministratorNameWWWAddPolicyReaderNameW<>DeletePolicyReaderNameWW DaOpenScopeWWW +bstrScopeNameWWWppScopeW ѓCreateScopeW| ZDeleteScopeWL4 8IAzOperationsWWW BppOperationCollectionWWW 8 IAzOperation tOperationIDW OpenOperationWWW |bstrOperationNameWWW` a9ppOperationW (CreateOperationW48IAzClientContextD AccessCheckWbstrObjectNameWW  YvarScopeNamesWWWt n#varOperationsWWWVvarParameterNamesWWW IvarParameterValuesWWvarInterfaceNamesWWW -varInterfaceFlagsWWW rvarInterfacesWWW pvarResultsW GetBusinessRuleStringWWWXgpbstrBusinessRuleStringWUserDnWW UserSamCompatWWWH AddDelegatedPolicyUserNameWW sDeleteDelegatedPolicyUserNameWWW%OpenApplicationW4 KbstrApplicationNameW( ڃppApplicationWWWCreateApplicationWWWL DeleteApplicationWWW TargetMachineWWW| gpbstrTargetMachineWW opbApplyStoreSacl CloseApplication| OrlFlagWWWx 8IAzAuthorizationStore2WW8lIAzApplication2W@08}mIAzClientContext2WWW@ZGetAssignedScopesPageWWWSPageSizeD BpvarCursorWW ]pvarScopeNamesWW@;AddRolesvarRoles@AddApplicationGroupsdvarApplicationGroups@ fAddStringSidsWWWP varStringSidsWWW@X 3LDAPQueryDNWpbstrLDAPQueryDND!InitializeClientContextFromToken2WWWlulTokenHandleLowPartl~ulTokenHandleHighPartWWWInitializeClientContext2IdentifyingStringWWWxJEOpenApplication2xCreateApplication2WW8IAzAuthorizationStore3WW2IsUpdateNeededWW$PpbIsUpdateNeeded`BizruleGroupSupportedWWW ?pbSupportedWUpgradeStoresFunctionalLevel8lFunctionalLevel!IsFunctionalLevelUpgradeSupportedWWWGetSchemaVersionOplMajorVersionWWplMinorVersionWW$8mIAzApplication3W ScopeExistsWdpbExistWl4 8IAzScope2WWW 8hIAzRoleDefinitionsWWl$ RoleDefinitionsW@ppRoleDefinitionsWWW4 8IAzRoleDefinitionWWW8)IAzRoleAssignmentsWW4pVRoleAssignmentsW |bRecursiveWW~ppRoleAssignmentsWWW4AddRoleDefinitionWWWhIbstrRoleDefinitionWW4D uDeleteRoleDefinitionl8CreateRoleDefinition4bstrRoleDefinitionNameWWlKuOpenRoleDefinitionWW 8IAzRoleAssignmentWWW0ScopeWWWl CreateRoleAssignmentObstrRoleAssignmentNameWW ۮppRoleAssignmentl ]OpenRoleAssignmentWWl ]DeleteRoleAssignment OpenScope2WW&ppScope2T CreateScope2$ JDeleteScope2BizRulesEnabledWP 7pbEnabledWWW`  8 IAzOperation2WWW h8IAzTask2( 8IAzApplicationGroup2 8~mIAzClientContext3WWW \ pAccessCheck2  ]lOperationWWh#AplResult IsInRoleAssignmentWW< ިpbIsInRoleWW < <7GetOperationsWWW (O]GetTasks 88YIAzBizRuleParameters  RAddParameter  bstrParameterNameWWWl:varParameterValueWWW  AddParametersWWW nGetParameterValueWWWpvarParameterValueWW @ϱRemoveWW|]varParameterName RemoveAllWWW QBizRuleParametersWWWppBizRuleParamWWT 8IAzBizRuleInterfacesT  fAddInterface6bstrInterfaceNameWWWh4lInterfaceFlagWW varInterfaceT ´AddInterfacesWWWT &GetInterfaceValueWWW XBizRuleInterfacesWWWppBizRuleInterfacesW $ (`GetGroupsWWW [ulOptionsWWW rpGroupArrayW XSids=pStringSidArrayW 80gIAzBizRuleContextWWW TٍBusinessRuleResultWW +BusinessRuleStringWW  GetParameter @8IAzPrincipalLocatorW 84IAzNameResolverW  V3NameFromSidWHٹbstrSidW_pSidType  %9NamesFromSidsWWWvSidsWWWl XpvSidTypesWWpvNamesW  TNameResolver%ppNameResolverWW `8rIAzObjectPickerWH 8,wireHWND 8_RemotableHandle cfContext|8Z__MIDL_IWinTypes_0009WWWJhInprocW,ZhRemoteW luWWW  5GetPrincipalsWWW 4#hParentWndWW8 lbstrTitleWWWD!ZpvSidsWW t SObjectPickerzppObjectPickerWWt8|AzAuthorizationStore8^AzBizRuleContext<` 8ucAzPrincipalLocatorWW8tagAZ_PROP_CONSTANTS 0`AZ_PROP_NAME0\AZ_PROP_DESCRIPTIONW0-EAZ_PROP_WRITABLE0 AZ_PROP_APPLICATION_DATA0AZ_PROP_CHILD_CREATE0fYAZ_MAX_APPLICATION_NAME_LENGTHWW 0=AZ_MAX_OPERATION_NAME_LENGTH09mAZ_MAX_TASK_NAME_LENGTHW0WAZ_MAX_SCOPE_NAME_LENGTH 0AZ_MAX_GROUP_NAME_LENGTH 0_AZ_MAX_ROLE_NAME_LENGTHW@0$AZ_MAX_NAME_LENGTHWW02AZ_MAX_DESCRIPTION_LENGTHWWW0~bAZ_MAX_APPLICATION_DATA_LENGTHWW0AZ_SUBMIT_FLAG_ABORT0\|AZ_SUBMIT_FLAG_FLUSH0"hAZ_MAX_POLICY_URL_LENGTH!0IAZ_AZSTORE_FLAG_CREATEWW#!0DAZ_AZSTORE_FLAG_MANAGE_STORE_ONLYWWWp0AZ_AZSTORE_FLAG_BATCH_UPDATE8 !0ߏAZ_AZSTORE_FLAG_AUDIT_IS_CRITICALWWW "0pgAZ_AZSTORE_FORCE_APPLICATION_CLOSEWW80AZ_AZSTORE_NT6_FUNCTION_LEVELWWW *0AZ_AZSTORE_FLAG_MANAGE_ONLY_PASSIVE_SUBMITWW%0AZ_PROP_AZSTORE_DOMAIN_TIMEOUTWW!0AZ_AZSTORE_DEFAULT_DOMAIN_TIMEOUTWWW %0DAZ_PROP_AZSTORE_SCRIPT_ENGINE_TIMEOUTWWW0EAZ_AZSTORE_MIN_DOMAIN_TIMEOUTWWW$$0AZ_PROP_APPLICATION_AUTHZ_INTERFACE_CLSIDWWW0U}AZ_PROP_APPLICATION_VERSIONW,!0eAZ_MAX_APPLICATION_VERSION_LENGTHWWW,0AZ_PROP_APPLICATION_NAME&#0EAZ_PROP_APPLICATION_BIZRULE_ENABLEDW8 0 AZ_PROP_APPLY_STORE_SACL@(0AZ_PROP_GENERATE_AUDITSW\-0.AZ_PROP_POLICY_ADMINSWWWl.0AZ_PROP_POLICY_READERSWW %0}AZ_PROP_DELEGATED_POLICY_USERSWW-0]5AZ_PROP_POLICY_ADMINS_NAMEWW$ 04?4@@4A4B4C4D4E4F4XG4YH4I4J4K4L4M4N4O4P4Q4 R4!S4T4"U4#V4W4X4Y4Z4[4\4]4^4_4`4a4@@@@@@@@@ @ @ @ @ @@@@@@@@@@@@@@@@@@@ @!@"@#@$@%@&@'@(@)@*@+@,@-@.@/@0@1@2@3@4@5@6@7@8@9@:@;@<@=@>@?@@@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@[@\@]@^@_@`@a@x"""""#<#d#####$<$h$$$$$ %H%x%%% &8&h&&&&,'\''''(@(`((((( )L)t))))*@*`*****$+H+p++++,D,l,,,,-<-\----.<.l....0/h////(0L0|0000 181`11112D2(<Pdx,@Th|0DXl  4H\p$8L`t(<Pdx,@Th|0DXl)1 B}ԏ'F 9?On: FILEREGISTRYTYPELIBMUIMUIen-US  (08@HPXp xȬЬج (08@HPX`hpxȭЭح (08@HPX`hpxȮЮخ (08@HPX`hpxȯЯد0 (08@HPX`hpxȠРؠ (08@HPX`hpxȡСء (08@HPX`hpxȢТآ (08@HPX`hpxȣУأ (08@HPX`hpxȤФؤ (08@HPX`hpxȥХإ (08@HPX`hpxȦЦئ (08@HPX`hpxȧЧا (08@HPX`hpxȨШب (08@HPX`hpxȩЩة (08@HPX`hpxȪЪت (08@HPX`hpxȫЫث (08@HPX`hpxȬЬج (08@HPX`hpxȭЭح (08@HPX`hpxȮЮخ (08@HPX`hpxȯЯد@ (08@HPX`hpxȠРؠ (08@HPX`hpxȡСء (08@HPX`hpxȢТآ (08@HPX`hpxȣУأ (08@HPX`hpxȤФؤ (08@HPX`hpxȥХإ (08@HPX`hpxȦЦئ (08@HPX`hpxȧЧا (08@HPX`hpxȨШب (08@HPX`hpxȩЩة (08@HPX`hpxȪЪت (08@HPX`hpxȫЫث (08@HPX`hpxȬЬج (08@HPX`hpxȭЭح (08@HPX`hpxȮЮخ (08@HPX`hpxȯЯدP (08@HPX`hpxȠРؠ (08@HPX`hpxȡСء (08@HPX`hpxȢТآ (08@HPX`hpxȣУأ (08@HPX`hpxȤФؤ (08@HPX`hpxȥХإ (08@HPX`hpxȦЦئ (08@HPX`hpxȧЧا (08@HPX`hpxȨШب (08@HPX`hpxȩЩة (08@HhxȪ 0PXhȫЫ 08@HPX`hpxȬЬج (08@HPX`hpxȭЭح (08@HPX`hpxȮЮخ (08@HPX`hpxȯЯد`\ (08@HPX`hpxȠРؠ (08@HPX`hpxȡСء (08@HPX`hpxȢТآ (08@HPX`hpxȣУأ (08@HPX`hpxȤФؤ(`xȭ0pР 0@P`p@pХ@X(`xȧPh@X@XpЪ 8P(  (08H0 0`8(0HPhpȡСء 08@ثppxؠ`hpȡСء PX`hpxȢТآ (0HPX`hpx (08@X`hpxȤФؤ (08@HPX`hpxإ (08px08px08px08px08px08px08px08px8HXhx$(@P`hxȢТ 0@Hp 0`ؤ 8hХ 8PЦ@Xp 8PhȨШ(0 (XpȪЪ(0@HPЫH`xȬ(@pح 8PhЮHh0 8Ph(0PXhxȧЧ 0@Hhp08X`Щة (8HP`pxȪت(8@P`hxȫث(0PXxȬЬ @HhpЭ08HX`Юخ (8HP`pxȯد8@`hؠ(0PXhxȡС @HXhp08HX`У Hp @ l(08@HPX`pxȠРؠ (08@HPX`hpx