Id of the connection
" - }, - "name": { - "shape": "ConnectionName", - "documentation": "Name of the connection
" - }, - "authenticationType": { - "shape": "ConnectionAuthenticationTypes", - "documentation": "Number representing the type of authentication to use (2 = IAM, 3 = Username and Password). Today we only support the types 2 and 3
" - }, - "secretArn": { - "shape": "String", - "documentation": "Secret that is linked to this connection
" - }, - "databaseName": { - "shape": "DatabaseName", - "documentation": "Name of the database where the query is run
" - }, - "clusterId": { - "shape": "String", - "documentation": "Id of the cluster of the connection
" - }, - "dbUser": { - "shape": "DbUser", - "documentation": "User of the database
" - }, - "isServerless": { "shape": "Boolean" }, - "isProd": { "shape": "String" }, - "isEnabled": { "shape": "String" }, - "userSettings": { "shape": "UserSettings" }, - "recordDate": { "shape": "String" }, - "updatedDate": { "shape": "String" }, - "tags": { "shape": "Tags" }, - "databaseType": { "shape": "DatabaseType" }, - "connectableResourceType": { "shape": "String" }, - "connectableResourceIdentifier": { "shape": "ResourceIdentifier" } - } - }, - "ConnectionAuthenticationTypes": { - "type": "string", - "enum": ["2", "3", "4", "5", "6", "7", "8"], - "sensitive": true - }, - "ConnectionName": { - "type": "string", - "sensitive": true - }, - "ConnectionProperties": { - "type": "map", - "key": { "shape": "ConnectionPropertyKey" }, - "value": { "shape": "ConnectionPropertyValue" }, - "max": 50, - "min": 1 - }, - "ConnectionPropertyKey": { - "type": "string", - "max": 1000, - "min": 1 - }, - "ConnectionPropertyValue": { - "type": "string", - "max": 1000, - "min": 0 - }, - "CreateConnectionRequest": { - "type": "structure", - "required": ["name", "databaseName", "authenticationType"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "name": { - "shape": "CreateConnectionRequestNameString", - "documentation": "Name of the connection
" - }, - "databaseName": { - "shape": "CreateConnectionRequestDatabaseNameString", - "documentation": "Name of the database used for this connection
" - }, - "authenticationType": { - "shape": "CreateConnectionRequestAuthenticationTypeEnum", - "documentation": "Number representing the type of authentication to use (2 = IAM, 3 = Username and Password, 4 = Federated connection)
" - }, - "isProd": { "shape": "CreateConnectionRequestIsProdString" }, - "userSettings": { "shape": "UserSettings" }, - "secretArn": { - "shape": "CreateConnectionRequestSecretArnString", - "documentation": "secretArn for redshift cluster
" - }, - "clusterId": { - "shape": "CreateConnectionRequestClusterIdString", - "documentation": "Id of the cluster used for this connection
" - }, - "isServerless": { - "shape": "Boolean", - "documentation": "Is serverless connection
" - }, - "dbUser": { - "shape": "DbUser", - "documentation": "User of the database used for this connection
" - }, - "isStoreNewSecret": { "shape": "CreateConnectionRequestIsStoreNewSecretString" }, - "username": { - "shape": "DbUser", - "documentation": "Username used in the Username_Password connection type
" - }, - "password": { - "shape": "CreateConnectionRequestPasswordString", - "documentation": "Password of the user used for this connection
" - }, - "tags": { "shape": "Tags" }, - "host": { - "shape": "CreateConnectionRequestHostString", - "documentation": "Host address used for creating secret for Username_Password connection type
" - }, - "secretName": { "shape": "CreateConnectionRequestSecretNameString" }, - "description": { "shape": "CreateConnectionRequestDescriptionString" }, - "databaseType": { "shape": "DatabaseType" }, - "connectableResourceIdentifier": { - "shape": "CreateConnectionRequestConnectableResourceIdentifierString", - "documentation": "Id of the connectable resource used for this connection
" - }, - "connectableResourceType": { - "shape": "CreateConnectionRequestConnectableResourceTypeString", - "documentation": "Type of the connectable resource used for this connection
" - } - } - }, - "CreateConnectionRequestAuthenticationTypeEnum": { - "type": "string", - "enum": ["2", "3", "4", "5", "6", "7", "8"], - "max": 1, - "min": 1, - "sensitive": true - }, - "CreateConnectionRequestClusterIdString": { - "type": "string", - "max": 63, - "min": 1 - }, - "CreateConnectionRequestConnectableResourceIdentifierString": { - "type": "string", - "max": 63, - "min": 1, - "sensitive": true - }, - "CreateConnectionRequestConnectableResourceTypeString": { - "type": "string", - "max": 63, - "min": 1 - }, - "CreateConnectionRequestDatabaseNameString": { - "type": "string", - "max": 64, - "min": 1, - "sensitive": true - }, - "CreateConnectionRequestDescriptionString": { - "type": "string", - "max": 1000, - "min": 0 - }, - "CreateConnectionRequestHostString": { - "type": "string", - "max": 1000, - "min": 0 - }, - "CreateConnectionRequestIsProdString": { - "type": "string", - "max": 1000, - "min": 0 - }, - "CreateConnectionRequestIsStoreNewSecretString": { - "type": "string", - "max": 1000, - "min": 0 - }, - "CreateConnectionRequestNameString": { - "type": "string", - "max": 512, - "min": 1, - "sensitive": true - }, - "CreateConnectionRequestPasswordString": { - "type": "string", - "max": 64, - "min": 8, - "sensitive": true - }, - "CreateConnectionRequestSecretArnString": { - "type": "string", - "max": 1000, - "min": 1 - }, - "CreateConnectionRequestSecretNameString": { - "type": "string", - "max": 1000, - "min": 0 - }, - "CreateConnectionResponse": { - "type": "structure", - "members": { - "data": { "shape": "Connection" } - } - }, - "DatabaseAuthenticationMethod": { - "type": "string", - "enum": ["USERNAME_PASSWORD", "TEMPORARY_CREDENTIALS_WITH_IAM"] - }, - "DatabaseAuthenticationMethods": { - "type": "list", - "member": { "shape": "DatabaseAuthenticationMethod" } - }, - "DatabaseAuthenticationOption": { - "type": "structure", - "required": ["connectableResourceType", "authenticationMethods"], - "members": { - "connectableResourceType": { "shape": "String" }, - "authenticationMethods": { "shape": "DatabaseAuthenticationMethods" } - } - }, - "DatabaseAuthenticationOptions": { - "type": "list", - "member": { "shape": "DatabaseAuthenticationOption" } - }, - "DatabaseConfiguration": { - "type": "structure", - "required": [ - "databaseType", - "authenticationOptions", - "connectableResourceTypes", - "sessionSupported", - "eventAcknowledgementSupported", - "appendingLimitToQuerySupported", - "queryStatsSupported" - ], - "members": { - "databaseType": { "shape": "DatabaseType" }, - "authenticationOptions": { "shape": "DatabaseAuthenticationOptions" }, - "connectableResourceTypes": { "shape": "ConnectableResourceTypes" }, - "sessionSupported": { "shape": "Boolean" }, - "eventAcknowledgementSupported": { "shape": "Boolean" }, - "appendingLimitToQuerySupported": { "shape": "Boolean" }, - "queryStatsSupported": { "shape": "Boolean" } - } - }, - "DatabaseConfigurations": { - "type": "list", - "member": { "shape": "DatabaseConfiguration" } - }, - "DatabaseConnectionAccountSettings": { - "type": "structure", - "members": { - "masterKeyArn": { "shape": "KmsKeyArn" } - } - }, - "DatabaseConnectionConfiguration": { - "type": "structure", - "required": ["id", "type", "databaseType", "connectableResourceIdentifier", "connectableResourceType"], - "members": { - "id": { "shape": "DatabaseConnectionConfigurationIdString" }, - "type": { "shape": "DatabaseIntegrationConnectionAuthenticationTypes" }, - "auth": { "shape": "DatabaseConnectionConfigurationAuth" }, - "databaseType": { "shape": "DatabaseType" }, - "connectableResourceIdentifier": { "shape": "ResourceIdentifier" }, - "connectableResourceType": { "shape": "DatabaseConnectionConfigurationConnectableResourceTypeString" }, - "database": { "shape": "DatabaseName" } - } - }, - "DatabaseConnectionConfigurationAuth": { - "type": "structure", - "members": { - "secretArn": { "shape": "SecretKeyArn" }, - "username": { "shape": "DatabaseConnectionConfigurationAuthUsernameString" }, - "password": { "shape": "DatabaseConnectionConfigurationAuthPasswordString" } - } - }, - "DatabaseConnectionConfigurationAuthPasswordString": { - "type": "string", - "max": 1000, - "min": 0, - "sensitive": true - }, - "DatabaseConnectionConfigurationAuthUsernameString": { - "type": "string", - "max": 1000, - "min": 0, - "sensitive": true - }, - "DatabaseConnectionConfigurationConnectableResourceTypeString": { - "type": "string", - "max": 50, - "min": 0 - }, - "DatabaseConnectionConfigurationIdString": { - "type": "string", - "max": 2048, - "min": 32 - }, - "DatabaseIntegrationConnectionAuthenticationTypes": { - "type": "string", - "enum": ["4", "5", "6", "8"], - "sensitive": true - }, - "DatabaseName": { - "type": "string", - "max": 150, - "min": 0, - "sensitive": true - }, - "DatabaseType": { - "type": "string", - "enum": ["REDSHIFT", "ATHENA"] - }, - "DbUser": { - "type": "string", - "max": 127, - "min": 1, - "pattern": "[a-zA-Z0-9_][a-zA-Z_0-9+.@$-]*", - "sensitive": true - }, - "DeleteConnectionRequest": { - "type": "structure", - "required": ["connectionId"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "connectionId": { - "shape": "DeleteConnectionRequestConnectionIdString", - "documentation": "Id of connection to delete
", - "location": "uri", - "locationName": "connectionId" - } - } - }, - "DeleteConnectionRequestConnectionIdString": { - "type": "string", - "max": 1000, - "min": 1 - }, - "DeleteConnectionResponse": { - "type": "structure", - "members": {} - }, - "ErrorCode": { - "type": "string", - "enum": ["QUERY_EXECUTION_NOT_FOUND", "QUERY_EXECUTION_ACCESS_DENIED"] - }, - "ExecuteQueryRequest": { - "type": "structure", - "required": ["query", "queryExecutionType", "queryResponseDeliveryType", "maxItems"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "connectionId": { "shape": "ExecuteQueryRequestConnectionIdString" }, - "databaseType": { - "shape": "DatabaseType", - "location": "querystring", - "locationName": "databaseType" - }, - "connection": { "shape": "DatabaseConnectionConfiguration" }, - "accountSettings": { "shape": "DatabaseConnectionAccountSettings" }, - "tabId": { "shape": "ExecuteQueryRequestTabIdString" }, - "executionContext": { "shape": "ExecuteQueryRequestExecutionContextList" }, - "query": { "shape": "ExecuteQueryRequestQueryString" }, - "queryExecutionType": { "shape": "QueryExecutionType" }, - "sessionId": { "shape": "ExecuteQueryRequestSessionIdString" }, - "queryResponseDeliveryType": { "shape": "QueryResponseDeliveryType" }, - "maxItems": { "shape": "ExecuteQueryRequestMaxItemsInteger" }, - "limitQueryResults": { "shape": "ExecuteQueryRequestLimitQueryResultsInteger" }, - "isExplain": { "shape": "Boolean" }, - "ignoreHistory": { "shape": "Boolean" }, - "timeoutMillis": { "shape": "ExecuteQueryRequestTimeoutMillisInteger" } - } - }, - "ExecuteQueryRequestConnectionIdString": { - "type": "string", - "max": 2048, - "min": 32 - }, - "ExecuteQueryRequestExecutionContextList": { - "type": "list", - "member": { "shape": "ParentResource" }, - "max": 100, - "min": 0 - }, - "ExecuteQueryRequestLimitQueryResultsInteger": { - "type": "integer", - "box": true, - "max": 1000, - "min": 0 - }, - "ExecuteQueryRequestMaxItemsInteger": { - "type": "integer", - "box": true, - "max": 100, - "min": 20 - }, - "ExecuteQueryRequestQueryString": { - "type": "string", - "max": 1000000, - "min": 0, - "sensitive": true - }, - "ExecuteQueryRequestSessionIdString": { - "type": "string", - "max": 100, - "min": 0 - }, - "ExecuteQueryRequestTabIdString": { - "type": "string", - "max": 100, - "min": 1 - }, - "ExecuteQueryRequestTimeoutMillisInteger": { - "type": "integer", - "box": true, - "max": 120000, - "min": 0 - }, - "ExecuteQueryResponse": { - "type": "structure", - "required": ["queryExecutions"], - "members": { - "sessionId": { "shape": "ExecuteQueryResponseSessionIdString" }, - "queryExecutions": { "shape": "QueryExecutions" }, - "statusCode": { - "shape": "statusCode", - "location": "statusCode" - } - } - }, - "ExecuteQueryResponseSessionIdString": { - "type": "string", - "max": 100, - "min": 0 - }, - "ExportQueryResultsRequest": { - "type": "structure", - "required": ["queryExecutionId", "databaseType"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "accountSettings": { "shape": "DatabaseConnectionAccountSettings" }, - "queryExecutionId": { "shape": "ExportQueryResultsRequestQueryExecutionIdString" }, - "databaseType": { - "shape": "DatabaseType", - "location": "querystring", - "locationName": "databaseType" - }, - "fileType": { "shape": "FileType" } - } - }, - "ExportQueryResultsRequestQueryExecutionIdString": { - "type": "string", - "max": 100, - "min": 1 - }, - "ExportQueryResultsResponse": { - "type": "structure", - "required": ["queryResult", "contentType", "fileName"], - "members": { - "queryResult": { "shape": "StreamingBlob" }, - "contentType": { - "shape": "String", - "location": "header", - "locationName": "Content-Type" - }, - "fileName": { - "shape": "String", - "location": "header", - "locationName": "Content-Disposition" - } - }, - "payload": "queryResult" - }, - "FileType": { - "type": "string", - "enum": ["JSON", "CSV"] - }, - "FullQueryText": { - "type": "string", - "max": 1000000, - "min": 0, - "sensitive": true - }, - "GetConnectableResourcesRequest": { - "type": "structure", - "required": ["type", "maxItems", "databaseType"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "accountSettings": { "shape": "DatabaseConnectionAccountSettings" }, - "type": { "shape": "GetConnectableResourcesRequestTypeString" }, - "maxItems": { "shape": "GetConnectableResourcesRequestMaxItemsInteger" }, - "pageToken": { "shape": "PageToken" }, - "databaseType": { - "shape": "DatabaseType", - "location": "querystring", - "locationName": "databaseType" - } - } - }, - "GetConnectableResourcesRequestMaxItemsInteger": { - "type": "integer", - "box": true, - "max": 50, - "min": 20 - }, - "GetConnectableResourcesRequestTypeString": { - "type": "string", - "max": 150, - "min": 0 - }, - "GetConnectableResourcesResponse": { - "type": "structure", - "required": ["connectableResources"], - "members": { - "connectableResources": { "shape": "ConnectableResources" }, - "nextToken": { "shape": "String" } - } - }, - "GetConnectionRequest": { - "type": "structure", - "required": ["connectionId"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "connectionId": { - "shape": "GetConnectionRequestConnectionIdString", - "documentation": "Id of connection to delete
", - "location": "uri", - "locationName": "connectionId" - } - } - }, - "GetConnectionRequestConnectionIdString": { - "type": "string", - "max": 1000, - "min": 1 - }, - "GetConnectionResponse": { - "type": "structure", - "members": { - "data": { "shape": "Connection" } - } - }, - "GetDatabaseConfigurationsRequest": { - "type": "structure", - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "accountSettings": { "shape": "DatabaseConnectionAccountSettings" } - } - }, - "GetDatabaseConfigurationsResponse": { - "type": "structure", - "members": { - "configurations": { "shape": "DatabaseConfigurations" } - } - }, - "GetQueryExecutionHistoryRequest": { - "type": "structure", - "required": ["queryExecutionId"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "queryExecutionId": { "shape": "GetQueryExecutionHistoryRequestQueryExecutionIdString" }, - "accountSettings": { "shape": "DatabaseConnectionAccountSettings" } - } - }, - "GetQueryExecutionHistoryRequestQueryExecutionIdString": { - "type": "string", - "max": 100, - "min": 1 - }, - "GetQueryExecutionHistoryResponse": { - "type": "structure", - "members": { - "id": { "shape": "String" }, - "querySourceId": { "shape": "String" }, - "queryStartTime": { "shape": "Long" }, - "queryEndTime": { "shape": "Long" }, - "status": { "shape": "QueryExecutionStatus" }, - "queryText": { "shape": "FullQueryText" }, - "serializedMetadata": { "shape": "SerializedMetadata" }, - "serializedQueryStats": { "shape": "SerializedQueryStats" }, - "databaseType": { "shape": "DatabaseType" } - } - }, - "GetQueryResultRequest": { - "type": "structure", - "required": ["queryExecutionId", "databaseType"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "queryExecutionId": { "shape": "GetQueryResultRequestQueryExecutionIdString" }, - "accountSettings": { "shape": "DatabaseConnectionAccountSettings" }, - "pageToken": { "shape": "PageToken" }, - "databaseType": { - "shape": "DatabaseType", - "location": "querystring", - "locationName": "databaseType" - }, - "pageSize": { "shape": "GetQueryResultRequestPageSizeInteger" } - } - }, - "GetQueryResultRequestPageSizeInteger": { - "type": "integer", - "box": true, - "min": 0 - }, - "GetQueryResultRequestQueryExecutionIdString": { - "type": "string", - "max": 100, - "min": 1 - }, - "GetQueryResultResponse": { - "type": "structure", - "members": { - "queryResult": { "shape": "QueryResult" }, - "nextToken": { "shape": "String" }, - "previousToken": { "shape": "String" } - } - }, - "GetResourcesRequest": { - "type": "structure", - "required": ["parents", "type", "maxItems"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "connectionId": { "shape": "GetResourcesRequestConnectionIdString" }, - "databaseType": { - "shape": "DatabaseType", - "location": "querystring", - "locationName": "databaseType" - }, - "connection": { "shape": "DatabaseConnectionConfiguration" }, - "accountSettings": { "shape": "DatabaseConnectionAccountSettings" }, - "parents": { "shape": "ParentResources" }, - "type": { "shape": "GetResourcesRequestTypeString" }, - "maxItems": { "shape": "GetResourcesRequestMaxItemsInteger" }, - "pageToken": { "shape": "PageToken" }, - "forceRefresh": { "shape": "Boolean" }, - "forceRefreshRecursive": { "shape": "Boolean" } - } - }, - "GetResourcesRequestConnectionIdString": { - "type": "string", - "max": 2048, - "min": 32 - }, - "GetResourcesRequestMaxItemsInteger": { - "type": "integer", - "box": true, - "max": 100, - "min": 20 - }, - "GetResourcesRequestTypeString": { - "type": "string", - "max": 150, - "min": 0 - }, - "GetResourcesResponse": { - "type": "structure", - "members": { - "resources": { "shape": "Resources" }, - "nextToken": { "shape": "String" }, - "statusCode": { - "shape": "statusCode", - "location": "statusCode" - }, - "connectionProperties": { "shape": "ConnectionProperties" } - } - }, - "GetTabStatesRequest": { - "type": "structure", - "required": ["tabId"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "accountSettings": { "shape": "DatabaseConnectionAccountSettings" }, - "tabId": { "shape": "String" } - } - }, - "GetTabStatesResponse": { - "type": "structure", - "required": ["queryExecutionStates"], - "members": { - "queryExecutionStates": { "shape": "QueryExecutionStates" }, - "sessionId": { "shape": "String" } - } - }, - "Integer": { - "type": "integer", - "box": true - }, - "InternalServerError": { - "type": "structure", - "required": ["message"], - "members": { - "message": { "shape": "String" }, - "code": { "shape": "ErrorCode" } - }, - "error": { "httpStatusCode": 500 }, - "exception": true, - "fault": true - }, - "KmsKeyArn": { - "type": "string", - "max": 1000, - "min": 0, - "pattern": "arn:.*" - }, - "ListQueryExecutionHistoryRequest": { - "type": "structure", - "required": ["maxItems"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "maxItems": { "shape": "ListQueryExecutionHistoryRequestMaxItemsInteger" }, - "accountSettings": { "shape": "DatabaseConnectionAccountSettings" }, - "pageToken": { "shape": "ListQueryExecutionHistoryRequestPageTokenString" }, - "querySourceId": { "shape": "ListQueryExecutionHistoryRequestQuerySourceIdString" }, - "databaseType": { "shape": "DatabaseType" }, - "status": { "shape": "QueryExecutionStatus" }, - "startTime": { "shape": "QueryHistoryTimestamp" }, - "endTime": { "shape": "QueryHistoryTimestamp" }, - "containsText": { "shape": "ListQueryExecutionHistoryRequestContainsTextString" } - } - }, - "ListQueryExecutionHistoryRequestContainsTextString": { - "type": "string", - "max": 100, - "min": 0 - }, - "ListQueryExecutionHistoryRequestMaxItemsInteger": { - "type": "integer", - "box": true, - "max": 100, - "min": 1 - }, - "ListQueryExecutionHistoryRequestPageTokenString": { - "type": "string", - "max": 10000, - "min": 0 - }, - "ListQueryExecutionHistoryRequestQuerySourceIdString": { - "type": "string", - "max": 100, - "min": 0 - }, - "ListQueryExecutionHistoryResponse": { - "type": "structure", - "required": ["items"], - "members": { - "items": { "shape": "QueryExecutionHistoryPreviews" }, - "nextToken": { "shape": "ListQueryExecutionHistoryResponseNextTokenString" } - } - }, - "ListQueryExecutionHistoryResponseNextTokenString": { - "type": "string", - "max": 1000, - "min": 0 - }, - "ListTagsForResourceRequest": { - "type": "structure", - "required": ["resourceArn"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "resourceArn": { - "shape": "Arn", - "location": "uri", - "locationName": "resourceArn" - } - } - }, - "ListTagsForResourceResponse": { - "type": "structure", - "required": ["tags"], - "members": { - "tags": { "shape": "Tags" } - } - }, - "Long": { - "type": "long", - "box": true - }, - "PageToken": { - "type": "string", - "max": 1000, - "min": 0 - }, - "ParentResource": { - "type": "structure", - "required": ["parentId", "parentType"], - "members": { - "parentId": { "shape": "ParentResourceParentIdString" }, - "parentType": { "shape": "ParentResourceParentTypeString" } - } - }, - "ParentResourceParentIdString": { - "type": "string", - "max": 1000, - "min": 1, - "sensitive": true - }, - "ParentResourceParentTypeString": { - "type": "string", - "max": 100, - "min": 1 - }, - "ParentResources": { - "type": "list", - "member": { "shape": "ParentResource" } - }, - "PollQueryExecutionEventsRequest": { - "type": "structure", - "required": ["queryExecutionIds", "databaseType"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "queryExecutionIds": { "shape": "PollQueryExecutionEventsRequestQueryExecutionIdsList" }, - "accountSettings": { "shape": "DatabaseConnectionAccountSettings" }, - "databaseType": { - "shape": "DatabaseType", - "location": "querystring", - "locationName": "databaseType" - }, - "ackIds": { "shape": "AckIds" } - } - }, - "PollQueryExecutionEventsRequestQueryExecutionIdsList": { - "type": "list", - "member": { "shape": "PollQueryExecutionEventsRequestQueryExecutionIdsListMemberString" }, - "max": 100, - "min": 1 - }, - "PollQueryExecutionEventsRequestQueryExecutionIdsListMemberString": { - "type": "string", - "max": 100, - "min": 1 - }, - "PollQueryExecutionEventsResponse": { - "type": "structure", - "members": { - "events": { "shape": "QueryExecutionEvents" } - } - }, - "QueryCancellationStatus": { - "type": "string", - "enum": ["CANCELLED", "DOES_NOT_EXISTS", "ALREADY_FINISHED", "CANCELLATION_FAILED"] - }, - "QueryExecution": { - "type": "structure", - "required": ["queryExecutionId"], - "members": { - "queryExecutionStatus": { "shape": "QueryExecutionStatus" }, - "queryExecutionId": { "shape": "QueryExecutionQueryExecutionIdString" }, - "queryResult": { "shape": "QueryResult" }, - "queryText": { "shape": "QueryText" } - } - }, - "QueryExecutionEvent": { - "type": "structure", - "required": ["queryExecutionEventType", "queryExecutionId"], - "members": { - "queryExecutionEventType": { "shape": "QueryExecutionEventType" }, - "queryExecutionId": { "shape": "QueryExecutionEventQueryExecutionIdString" }, - "queryExecutionStatus": { "shape": "QueryExecutionStatus" }, - "queryResult": { "shape": "QueryResult" }, - "nextToken": { "shape": "String" }, - "ackId": { "shape": "String" } - } - }, - "QueryExecutionEventQueryExecutionIdString": { - "type": "string", - "max": 100, - "min": 0 - }, - "QueryExecutionEventType": { - "type": "string", - "enum": ["QUERY_EXECUTION_STATUS", "QUERY_EXECUTION_RESULT"] - }, - "QueryExecutionEvents": { - "type": "list", - "member": { "shape": "QueryExecutionEvent" } - }, - "QueryExecutionHistoryPreview": { - "type": "structure", - "members": { - "id": { "shape": "String" }, - "querySourceId": { "shape": "String" }, - "queryStartTime": { "shape": "Long" }, - "queryEndTime": { "shape": "Long" }, - "status": { "shape": "QueryExecutionStatus" }, - "queryTextPreview": { "shape": "QueryTextPreview" }, - "serializedMetadata": { "shape": "SerializedMetadata" }, - "databaseType": { "shape": "DatabaseType" } - } - }, - "QueryExecutionHistoryPreviews": { - "type": "list", - "member": { "shape": "QueryExecutionHistoryPreview" } - }, - "QueryExecutionQueryExecutionIdString": { - "type": "string", - "max": 100, - "min": 0 - }, - "QueryExecutionState": { - "type": "structure", - "required": ["queryExecutionId", "status", "databaseType"], - "members": { - "queryExecutionId": { "shape": "String" }, - "status": { "shape": "String" }, - "databaseType": { "shape": "DatabaseType" } - } - }, - "QueryExecutionStates": { - "type": "list", - "member": { "shape": "QueryExecutionState" } - }, - "QueryExecutionStatus": { - "type": "string", - "enum": ["SCHEDULED", "RUNNING", "FAILED", "CANCELLED", "FINISHED"] - }, - "QueryExecutionType": { - "type": "string", - "enum": ["PERSIST_SESSION", "NO_SESSION"] - }, - "QueryExecutionWarning": { - "type": "structure", - "members": { - "message": { "shape": "QueryExecutionWarningMessage" }, - "level": { "shape": "QueryExecutionWarningLevel" } - } - }, - "QueryExecutionWarningLevel": { - "type": "string", - "enum": ["INFO", "WARNING"] - }, - "QueryExecutionWarningMessage": { - "type": "string", - "max": 1000, - "min": 0, - "sensitive": true - }, - "QueryExecutionWarnings": { - "type": "list", - "member": { "shape": "QueryExecutionWarning" } - }, - "QueryExecutions": { - "type": "list", - "member": { "shape": "QueryExecution" } - }, - "QueryHistoryTimestamp": { - "type": "long", - "box": true - }, - "QueryResponseDeliveryType": { - "type": "string", - "enum": ["SYNC", "ASYNC"] - }, - "QueryResult": { - "type": "structure", - "members": { - "queryExecutionStatus": { "shape": "QueryExecutionStatus" }, - "headers": { "shape": "QueryResultHeaders" }, - "rows": { "shape": "Rows" }, - "affectedRows": { "shape": "Integer" }, - "totalRowCount": { "shape": "Integer" }, - "elapsedTime": { "shape": "Long" }, - "errorMessage": { "shape": "QueryResultErrorMessage" }, - "errorPosition": { "shape": "Integer" }, - "queryResultWarningCode": { "shape": "QueryResultQueryResultWarningCodeString" }, - "warnings": { "shape": "QueryExecutionWarnings" }, - "queryExecutionId": { "shape": "String" }, - "sessionId": { "shape": "String" }, - "queryText": { "shape": "QueryText" }, - "statementType": { "shape": "StatementType" }, - "serializedMetadata": { "shape": "SerializedMetadata" }, - "connectionProperties": { "shape": "ConnectionProperties" } - } - }, - "QueryResultCellType": { - "type": "string", - "enum": ["STRING", "BOOLEAN", "INTEGER", "BIG_INTEGER", "FLOAT", "BIG_DECIMAL", "DATE", "TIME", "DATETIME"] - }, - "QueryResultCellValue": { - "type": "string", - "sensitive": true - }, - "QueryResultErrorMessage": { - "type": "string", - "max": 1000, - "min": 0, - "sensitive": true - }, - "QueryResultHeader": { - "type": "structure", - "required": ["displayName", "type"], - "members": { - "displayName": { "shape": "QueryResultHeaderDisplayName" }, - "type": { "shape": "QueryResultCellType" } - } - }, - "QueryResultHeaderDisplayName": { - "type": "string", - "sensitive": true - }, - "QueryResultHeaders": { - "type": "list", - "member": { "shape": "QueryResultHeader" } - }, - "QueryResultQueryResultWarningCodeString": { - "type": "string", - "max": 100, - "min": 0 - }, - "QueryText": { - "type": "string", - "sensitive": true - }, - "QueryTextPreview": { - "type": "string", - "max": 150, - "min": 0, - "sensitive": true - }, - "Resource": { - "type": "structure", - "required": ["displayName", "identifier", "childObjectTypes"], - "members": { - "displayName": { "shape": "ResourceDisplayName" }, - "identifier": { "shape": "ResourceIdentifier" }, - "type": { "shape": "ResourceTypeString" }, - "unavailable": { "shape": "Boolean" }, - "tooltipTranslationKey": { "shape": "ResourceTooltipTranslationKeyString" }, - "childObjectTypes": { "shape": "ChildObjectTypes" }, - "allowedActions": { "shape": "ResourceActions" }, - "resourceMetadata": { "shape": "ResourceMetadataItems" } - } - }, - "ResourceAction": { - "type": "string", - "enum": ["Drop", "Truncate", "GenerateDefinition", "GenerateSelectQuery"] - }, - "ResourceActions": { - "type": "list", - "member": { "shape": "ResourceAction" } - }, - "ResourceDisplayName": { - "type": "string", - "max": 150, - "min": 0, - "sensitive": true - }, - "ResourceIdentifier": { - "type": "string", - "max": 150, - "min": 0, - "sensitive": true - }, - "ResourceMetadata": { - "type": "structure", - "members": { - "key": { "shape": "String" }, - "value": { "shape": "String" } - } - }, - "ResourceMetadataItems": { - "type": "list", - "member": { "shape": "ResourceMetadata" } - }, - "ResourceNotFoundException": { - "type": "structure", - "required": ["message"], - "members": { - "message": { "shape": "String" }, - "code": { "shape": "ErrorCode" } - }, - "error": { - "httpStatusCode": 404, - "senderFault": true - }, - "exception": true - }, - "ResourceTooltipTranslationKeyString": { - "type": "string", - "max": 50, - "min": 0 - }, - "ResourceTypeString": { - "type": "string", - "max": 50, - "min": 0 - }, - "Resources": { - "type": "list", - "member": { "shape": "Resource" } - }, - "Row": { - "type": "structure", - "members": { - "row": { "shape": "Columns" } - } - }, - "Rows": { - "type": "list", - "member": { "shape": "Row" } - }, - "SecretKeyArn": { - "type": "string", - "max": 1000, - "min": 0, - "pattern": "arn:.*" - }, - "SerializedMetadata": { - "type": "string", - "max": 1000000, - "min": 0, - "sensitive": true - }, - "SerializedQueryStats": { - "type": "string", - "max": 1000000, - "min": 0, - "sensitive": true - }, - "ServiceQuotaExceededException": { - "type": "structure", - "required": ["message"], - "members": { - "message": { "shape": "String" }, - "code": { "shape": "ErrorCode" } - }, - "error": { - "httpStatusCode": 402, - "senderFault": true - }, - "exception": true - }, - "SqlworkbenchSource": { - "type": "string", - "enum": ["SUS", "RQEV2"] - }, - "StatementType": { - "type": "string", - "enum": ["DQL", "DML", "DDL", "DCL", "Utility"] - }, - "StreamingBlob": { - "type": "blob", - "streaming": true - }, - "String": { "type": "string" }, - "TagKey": { - "type": "string", - "max": 128, - "min": 1, - "pattern": "([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)" - }, - "TagKeyList": { - "type": "list", - "member": { "shape": "TagKey" }, - "max": 6500, - "min": 1 - }, - "TagResourceRequest": { - "type": "structure", - "required": ["resourceArn", "tags"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "resourceArn": { - "shape": "Arn", - "location": "uri", - "locationName": "resourceArn" - }, - "tags": { "shape": "Tags" } - } - }, - "TagResourceResponse": { - "type": "structure", - "members": {} - }, - "TagValue": { - "type": "string", - "max": 256, - "min": 0, - "pattern": "([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)" - }, - "TagrisAccessDeniedException": { - "type": "structure", - "members": { - "message": { "shape": "TagrisExceptionMessage" } - }, - "exception": true - }, - "TagrisAccountId": { - "type": "string", - "max": 12, - "min": 12 - }, - "TagrisAmazonResourceName": { - "type": "string", - "max": 1011, - "min": 1 - }, - "TagrisExceptionMessage": { - "type": "string", - "max": 2048, - "min": 0 - }, - "TagrisInternalId": { - "type": "string", - "max": 64, - "min": 0 - }, - "TagrisInternalServiceException": { - "type": "structure", - "members": { - "message": { "shape": "TagrisExceptionMessage" } - }, - "exception": true, - "fault": true - }, - "TagrisInvalidArnException": { - "type": "structure", - "members": { - "message": { "shape": "TagrisExceptionMessage" }, - "sweepListItem": { "shape": "TagrisSweepListItem" } - }, - "exception": true - }, - "TagrisInvalidParameterException": { - "type": "structure", - "members": { - "message": { "shape": "TagrisExceptionMessage" } - }, - "exception": true - }, - "TagrisPartialResourcesExistResultsException": { - "type": "structure", - "members": { - "message": { "shape": "TagrisExceptionMessage" }, - "resourceExistenceInformation": { "shape": "TagrisSweepListResult" } - }, - "exception": true - }, - "TagrisStatus": { - "type": "string", - "enum": ["ACTIVE", "NOT_ACTIVE"] - }, - "TagrisSweepList": { - "type": "list", - "member": { "shape": "TagrisSweepListItem" } - }, - "TagrisSweepListItem": { - "type": "structure", - "members": { - "TagrisAccountId": { "shape": "TagrisAccountId" }, - "TagrisAmazonResourceName": { "shape": "TagrisAmazonResourceName" }, - "TagrisInternalId": { "shape": "TagrisInternalId" }, - "TagrisVersion": { "shape": "TagrisVersion" } - } - }, - "TagrisSweepListResult": { - "type": "map", - "key": { "shape": "TagrisAmazonResourceName" }, - "value": { "shape": "TagrisStatus" } - }, - "TagrisThrottledException": { - "type": "structure", - "members": { - "message": { "shape": "TagrisExceptionMessage" } - }, - "exception": true - }, - "TagrisVerifyResourcesExistInput": { - "type": "structure", - "required": ["TagrisSweepList"], - "members": { - "TagrisSweepList": { "shape": "TagrisSweepList" } - } - }, - "TagrisVerifyResourcesExistOutput": { - "type": "structure", - "required": ["TagrisSweepListResult"], - "members": { - "TagrisSweepListResult": { "shape": "TagrisSweepListResult" } - } - }, - "TagrisVersion": { "type": "long" }, - "Tags": { - "type": "map", - "key": { "shape": "TagKey" }, - "value": { "shape": "TagValue" }, - "max": 50, - "min": 1 - }, - "ThrottlingException": { - "type": "structure", - "required": ["message"], - "members": { - "message": { "shape": "String" }, - "code": { "shape": "ErrorCode" } - }, - "error": { - "httpStatusCode": 429, - "senderFault": true - }, - "exception": true - }, - "UntagResourceRequest": { - "type": "structure", - "required": ["resourceArn", "tagKeys"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "resourceArn": { - "shape": "Arn", - "location": "uri", - "locationName": "resourceArn" - }, - "tagKeys": { - "shape": "TagKeyList", - "location": "querystring", - "locationName": "tagKeys" - } - } - }, - "UntagResourceResponse": { - "type": "structure", - "members": {} - }, - "UpdateConnectionRequest": { - "type": "structure", - "required": ["id", "authenticationType"], - "members": { - "sqlworkbenchSource": { - "shape": "SqlworkbenchSource", - "location": "header", - "locationName": "sqlworkbench-source" - }, - "id": { - "shape": "UpdateConnectionRequestIdString", - "documentation": "Id of the connection to update
" - }, - "name": { - "shape": "UpdateConnectionRequestNameString", - "documentation": "Name of the connection
" - }, - "databaseName": { - "shape": "UpdateConnectionRequestDatabaseNameString", - "documentation": "Name of the database used for this connection
" - }, - "authenticationType": { - "shape": "UpdateConnectionRequestAuthenticationTypeEnum", - "documentation": "Number representing the type of authentication to use (2 = IAM, 3 = Username and Password, 4 = Federated connection)
" - }, - "secretArn": { - "shape": "UpdateConnectionRequestSecretArnString", - "documentation": "secretArn for redshift cluster
" - }, - "clusterId": { - "shape": "UpdateConnectionRequestClusterIdString", - "documentation": "Id of the cluster used for this connection
" - }, - "isServerless": { - "shape": "Boolean", - "documentation": "Is serverless connection
" - }, - "dbUser": { - "shape": "DbUser", - "documentation": "User of the database used for this connection
" - }, - "username": { - "shape": "DbUser", - "documentation": "Username used in the Username_Password connection type
" - }, - "password": { - "shape": "UpdateConnectionRequestPasswordString", - "documentation": "Password of the user used for this connection
" - }, - "host": { - "shape": "String", - "documentation": "Host address used for creating secret for Username_Password connection type
" - }, - "databaseType": { "shape": "DatabaseType" }, - "connectableResourceIdentifier": { - "shape": "UpdateConnectionRequestConnectableResourceIdentifierString", - "documentation": "Id of the connectable resource used for this connection
" - }, - "connectableResourceType": { - "shape": "UpdateConnectionRequestConnectableResourceTypeString", - "documentation": "Type of the connectable resource used for this connection
" - } - } - }, - "UpdateConnectionRequestAuthenticationTypeEnum": { - "type": "string", - "enum": ["2", "3", "4", "5", "6", "7", "8"], - "max": 1, - "min": 1, - "sensitive": true - }, - "UpdateConnectionRequestClusterIdString": { - "type": "string", - "max": 63, - "min": 1 - }, - "UpdateConnectionRequestConnectableResourceIdentifierString": { - "type": "string", - "max": 63, - "min": 1, - "sensitive": true - }, - "UpdateConnectionRequestConnectableResourceTypeString": { - "type": "string", - "max": 63, - "min": 1 - }, - "UpdateConnectionRequestDatabaseNameString": { - "type": "string", - "max": 64, - "min": 1, - "sensitive": true - }, - "UpdateConnectionRequestIdString": { - "type": "string", - "max": 2048, - "min": 32 - }, - "UpdateConnectionRequestNameString": { - "type": "string", - "max": 512, - "min": 1, - "sensitive": true - }, - "UpdateConnectionRequestPasswordString": { - "type": "string", - "max": 64, - "min": 8, - "sensitive": true - }, - "UpdateConnectionRequestSecretArnString": { - "type": "string", - "max": 1000, - "min": 1 - }, - "UpdateConnectionResponse": { - "type": "structure", - "members": { - "data": { "shape": "Connection" } - } - }, - "UserSettings": { - "type": "string", - "sensitive": true - }, - "ValidationException": { - "type": "structure", - "required": ["message"], - "members": { - "message": { "shape": "String" }, - "code": { "shape": "ErrorCode" } - }, - "error": { - "httpStatusCode": 400, - "senderFault": true - }, - "exception": true - }, - "statusCode": { - "type": "integer", - "box": true, - "max": 500, - "min": 100 - } - } -} diff --git a/packages/core/src/test/sagemakerunifiedstudio/shared/client/sqlWorkbenchClient.test.ts b/packages/core/src/test/sagemakerunifiedstudio/shared/client/sqlWorkbenchClient.test.ts index e4b1dc50a85..7533b15ded1 100644 --- a/packages/core/src/test/sagemakerunifiedstudio/shared/client/sqlWorkbenchClient.test.ts +++ b/packages/core/src/test/sagemakerunifiedstudio/shared/client/sqlWorkbenchClient.test.ts @@ -11,36 +11,23 @@ import { createRedshiftConnectionConfig, } from '../../../../sagemakerunifiedstudio/shared/client/sqlWorkbenchClient' import { STSClient } from '@aws-sdk/client-sts' -import globals from '../../../../shared/extensionGlobals' import { ConnectionCredentialsProvider } from '../../../../sagemakerunifiedstudio/auth/providers/connectionCredentialsProvider' +import { + DatabaseIntegrationConnectionAuthenticationTypes, + SQLWorkbench, + GetResourcesCommand, + ExecuteQueryCommand, +} from '@amzn/sql-workbench-client' describe('SQLWorkbenchClient', function () { let sandbox: sinon.SinonSandbox - let mockSqlClient: any - let mockSdkClientBuilder: any + let sendStub: sinon.SinonStub beforeEach(function () { sandbox = sinon.createSandbox() - mockSqlClient = { - getResources: sandbox.stub().returns({ - promise: sandbox.stub().resolves({ - resources: [{ name: 'test-resource' }], - nextToken: 'next-token', - }), - }), - executeQuery: sandbox.stub().returns({ - promise: sandbox.stub().resolves({ - queryExecutions: [{ queryExecutionId: 'test-execution-id' }], - }), - }), - } - - mockSdkClientBuilder = { - createAwsService: sandbox.stub().resolves(mockSqlClient), - } - - sandbox.stub(globals, 'sdkClientBuilder').value(mockSdkClientBuilder) + // Mock SDK v3 send method + sendStub = sandbox.stub(SQLWorkbench.prototype, 'send') }) afterEach(function () { @@ -83,11 +70,17 @@ describe('SQLWorkbenchClient', function () { describe('getResources', function () { it('should get resources with connection', async function () { + // Mock the send method to return expected response + sendStub.resolves({ + resources: [{ displayName: 'test-resource' }], + nextToken: 'next-token', + }) + const client = SQLWorkbenchClient.getInstance('us-east-1') const connectionConfig = { - id: 'test-id', - type: 'test-type', - databaseType: 'REDSHIFT', + id: 'arn:aws:sqlworkbench:us-east-1:123456789012:connection/test-uuid-1234', + type: DatabaseIntegrationConnectionAuthenticationTypes.FEDERATED, + databaseType: 'REDSHIFT' as const, connectableResourceIdentifier: 'test-identifier', connectableResourceType: 'CLUSTER', database: 'test-db', @@ -99,15 +92,15 @@ describe('SQLWorkbenchClient', function () { maxItems: 50, }) - assert.deepStrictEqual(result.resources, [{ name: 'test-resource' }]) + assert.deepStrictEqual(result.resources, [{ displayName: 'test-resource' }]) assert.strictEqual(result.nextToken, 'next-token') + assert.ok(sendStub.calledOnce) + assert.ok(sendStub.firstCall.args[0] instanceof GetResourcesCommand) }) it('should handle API errors', async function () { const error = new Error('API Error') - mockSqlClient.getResources.returns({ - promise: sandbox.stub().rejects(error), - }) + sendStub.rejects(error) const client = SQLWorkbenchClient.getInstance('us-east-1') @@ -115,9 +108,9 @@ describe('SQLWorkbenchClient', function () { async () => await client.getResources({ connection: { - id: '', - type: '', - databaseType: '', + id: 'arn:aws:sqlworkbench:us-east-1:123456789012:connection/test-uuid-1234', + type: DatabaseIntegrationConnectionAuthenticationTypes.FEDERATED, + databaseType: 'REDSHIFT' as const, connectableResourceIdentifier: '', connectableResourceType: '', database: '', @@ -131,11 +124,16 @@ describe('SQLWorkbenchClient', function () { describe('executeQuery', function () { it('should execute query successfully', async function () { + // Mock the send method to return expected response + sendStub.resolves({ + queryExecutions: [{ queryExecutionId: 'test-execution-id' }], + }) + const client = SQLWorkbenchClient.getInstance('us-east-1') const connectionConfig = { - id: 'test-id', - type: 'test-type', - databaseType: 'REDSHIFT', + id: 'arn:aws:sqlworkbench:us-east-1:123456789012:connection/test-uuid-1234', + type: DatabaseIntegrationConnectionAuthenticationTypes.FEDERATED, + databaseType: 'REDSHIFT' as const, connectableResourceIdentifier: 'test-identifier', connectableResourceType: 'CLUSTER', database: 'test-db', @@ -144,19 +142,19 @@ describe('SQLWorkbenchClient', function () { const result = await client.executeQuery(connectionConfig, 'SELECT 1') assert.strictEqual(result, 'test-execution-id') + assert.ok(sendStub.calledOnce) + assert.ok(sendStub.firstCall.args[0] instanceof ExecuteQueryCommand) }) it('should handle query execution errors', async function () { const error = new Error('Query Error') - mockSqlClient.executeQuery.returns({ - promise: sandbox.stub().rejects(error), - }) + sendStub.rejects(error) const client = SQLWorkbenchClient.getInstance('us-east-1') const connectionConfig = { - id: 'test-id', - type: 'test-type', - databaseType: 'REDSHIFT', + id: 'arn:aws:sqlworkbench:us-east-1:123456789012:connection/test-uuid-1234', + type: DatabaseIntegrationConnectionAuthenticationTypes.FEDERATED, + databaseType: 'REDSHIFT' as const, connectableResourceIdentifier: 'test-identifier', connectableResourceType: 'CLUSTER', database: 'test-db', diff --git a/src.gen/@amzn/sql-workbench-client/3.0.0.tgz b/src.gen/@amzn/sql-workbench-client/3.0.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..eab84f8a353168dad10c3eaf8d52e4673fb425fc GIT binary patch literal 89474 zcmYhib8x25(}x>vY(C)=CmY+gjg4*FwrzXkjW@P!+uGPV`TpK>s?PoApr>l;o}Qko zKMjn62Kny;`?~0~a$D!9r`yQ8qyF3U#7&z=Hh#>7s+d_#Hq?ew2nf8M8#=VA^+0_4LGhuKaKm%VYpc<3F`Tbw$5}RhA-|ONU?DqAh zN0$FTGWY8QM8g!}2pWU$@kD*sUA{IQ9K-1Xle&OpJPulK&W?~k$omv#+s|Y>th*0t z!Tsif;;rE<55~URpJ?OGJJ^kAEo%TJc7syD%k1fd?MU3_Y5hy6p=I{}(_l{Z3LgLc z)?GTgd(W+I^K%k)yFJF`UGcm5o>duwl|lzSmrZThxSYf#eRh-af2L>iyLEA!gc0KT zXRohs6u=&bF^3n`&6~G8rDIvvR)v0NRxG5)Vkl_K{*>e&N)+s+7D0nFe{rm?h%V5>e9TA2`8$NRlsRdA)IL95!l59k{YpsYC@&FjVxQVnUoX+w76axK zkDOy79gFsN>V6RcyPzPyf49QjIU027pTp?h;zMNV&O-@`BF#DUhA-EQj75o>vK=*c z;`ORO+-?4#3%Y2hVI`?v+a9L_ABJ?Z!;>+?8!2e~QK@tPf${G|qIa6(3qeL)p4J`) z>W8b}ob?5QInoo)+U9{_JcuDh6g0!z%!}96hbrzY%;Pr^XVQ_x3X%KsO4oT`!XXuT zWCLsJns_ukITZHPnKdMLBn4!B>G>w$rS{@K!mvJE^JoH(V(ob)3_iC7vb!Ozog|TO zegFB$`?lZvUbHemKfW4M#yF3WPv$ky@V8`>U$S2sb4#0Z@<*|LY&b#^3NS2toeA6P zqE2BE6Z#>0J>QkziASl9eST)g^-uKT8Oy*K$9zNY=$CX89B%_FRj;HY$a*Ow@bJ-X znoWRIZqQ7~{e!sPP2wF`ghbhkc)3uyyqOqdFkc?|f>0+|H3t%DzS}egl=TqG7J^ZD zV4uw`d1ux%?QtG)#pm(V9su&sF>+!V@ HE7c2bdv(EbE86pSUcGbf-H6U~W-= z>L%4;ZJPf|)&I@w2t>W>eBJ~G5xoPT2Ctl(M#ld%D*p$s;nGg>*gbfT1jTe3q1Cby zkwK4m_lVkf*ncS3KboZO;u8hQcd(}slw0lmAGj8ILLTm-lhvq^C%8-L5;_?A3=T_k zk}QIjJRcGV?n&rkhjXrhg~t;kh% EH F@KDin+V=n|Ep82oEThf zTE9~D68U6dV qnNhV~6}SJNpmSYukz@ zcuF&>bAohE5;tb?8zyO2O#hhBXoq#yfuc#;)pg!>{f4MGH@8GJuywv=Upk)rjzUR( zG!inODdFSADuQY?zH@9yH;ZBpUfY9*dW6B00N4fOL`um4sU_L8l=K+L#~#xxup{SR z!Jf1VrmIIe4)FKfQ8;wzYSu3^nNe_IzQxj^tnbj}9mFJ3R%n+#Wq#=8WBi!Vech;$ zq$NwV-L?XLA!uQOer^XOc!NmZMMGO|-3%_i4olu#2A@(ZZmJ0wn5e o1Ge~}Z4*ljW2F6v=>xvg*f~-aH(>_o{dz06@%Vo>?UF#AQAbMFdqPMw65(v& zyAq_;6HuJThAUMOPYx!gNnues`~&>Nr>-fPaE949KXLlaBe!1!cZ!;z_}cHUWa};; ze?75n4|vV%5V?rt`r!~KM`t2ED_#Z?LTNV^lKWLTbQ _j+;&+K_y_H zD%!pjPHJ?l;*n?9g?fl|oL=UQi=W9br}wOuO2 _bZYt zba3Su`m{H^x~7ql({V5-30r*H fff#* sW#>G?&+?&=$T(~AQ0+$nH2x#R*4{S6fBh`u^~Lc19MZk~ z|G{wl2H5_#pmJPW>hfyr^4z63E|@5RABT%Z{4V7EsEvG_rmOzUc2P@q^@3c+7tMwY z1lci-+Qku>8AkIqnIw6vHbM}2Pl%QM?G}a273O9~B`VZG!T7Q-h&tz4dk` XxMHzYid%` zqiVruFFI!8)`B6mKdv2jeRx!b*ayJ8M(x4 fftlQ}M( z0W#LVW-q!W@CN8XI{{#|#WoqF56cs1UrGiF?jQA}St|}ww}YA *=6#mJ(ROMl2so{3<=7D affD z%(!STsQ}MaBx&dVW@97*_CQ%Q!R+olVlC2YTCl`bGH2k=~prAkphf z@ZFw3*mIcxS|PPFA9pzj(y?k_s@R4M_fQ^ds`tkpOq1@v*q)RT?*u$MeQ2ZG*kQ~$ zqmkFH`1RDGeaZ{`uFN*Q18!Ut!cg+nvsgkgvw~sz9bJk|-*cZ$xk4XNJuJbx+RoZu zSr$A x0ElA6)KIuTWtn 5O>bbJ=6Y@kK|TQ zb~mJ5-LGZM@m ew6hl-=(8XR?Lf?DZdfU2@V95I4xMRaN(?P1ecV)7gH7JBq#v z*5c*(gfQ~Ej`u5mazSrU_h84tNOtiCT` vfLv!r3*re5dn%ht@8G&xfXIEc9NOkgbe55#r2`>`h({ zABp%MWx&<5xbB^tZdah!j?s !y`)cu|2!^%Zcx+WhP2>5YHV?j-Z zUvKN^NqkpAb!p#}+_*)&{EI*iR_m1XtF}{8W2$ Z&Fs}Wl( z^P-y0%~M@eK0PaS1S&NJR*ULSU7E}@;41D}Riz(O5^~}L(i0`UY6~g-^*KrDeSnK| z?{z0*^<^5gDM0L$2M0yzvtiM*GI(Gfaz-9omq%o9b8ghI`~_-U8`*;qk;@BO#u7hk zlwZXKiX3;5)5HlH6ryyd+If!dQL(1<=}qNyne9(n3xsmpz(3N*bu>A1P+YVb>Y_*Q zE)1tA_()qvwPS*l>s9!ZB*~I#s~<)#8KE-fkG$uGVv=n{a)npN+T5m9>aWkmCSAiM zMpWB%-U|aqSYJ0;mF|8on05TNI@#UU_Vy*C#~3ZSN9p4Fp)4uz6)_$3ym-P4zQ=xd z!crgjMB?F!Z&qSB$7Izr*?%$YMAuZ`f2q~=2BoI1#D%Z8;`Z!Q)QwUXr0!9#&y^60 z=Yp?9NIWA@ELTpOoi7`qwW}T^M1l7&3(!ugQzAnM(PX@0hVzH8+CEZ6k-bn!(rN1# z&K<7~La(VD@yX~}NZxkF9BB95Q6DZo1V8;6qdJHiHK?-|a-R1=dV`;9fy^$tz^> zd*GRpr7Eln*SJnrSx%~8_gp}@z+b(aM^Z7vPSqB!=lG=P{DV8Dj_P8A^m$QyCW<9z z82Xesp?=~SnP6K#D`Yr~E6{xO5^2u+JXMoEdVui6=0sOAb-2+M-kRwGv(nf{kpyXQ zqoNrF!i_#4-D~3TljCUBPMOYb98d4nusa()hgO?J4U@t)+FfWe)kaQixQmaIH{Cku zd|RtNQW?slpdYOf8&U6Ev+~$ulzgsG_oi)97ri{VX)#e;f6maCzEw@YQvx%eHe-0D z;WjMx$Xj;oHA1-?k{??OifO>Jrt#u%X~yRD++)`KL@v*n&p2v4Ld#Wq=f}L!J06sk zeh`;@s0ibwT?LY@N^k#YV)4^vX`#5tg-E$PEiV%~OLSwUEeB$k(`Mv>Wn32gEfYIQ zJm#gH1kz8k+F5BP^3x@*7tzW4FFb5DH#+NKY{JP~nVQjI4MMLjzVxYNDP&?4lRR$C zYqzFJtzWXyXZaG7@Vf+O6xy7YNqdhbH$h5*j PEHeW|m zwmsExJ7!wQ5^uMH2$ne uFA=1rsNbuN*>25`BlmNV z`o2CR4kbIYzG;4wt(O1DmTd5zYOtR8yuE2IL%H~@n+@X~O1!}v-MbBrfk33No$C}^ zwKQYmT;WksEA}ADPyi6o3}4s-Au^X5HvQ=d4ca?SSDe|(Z`?}ZUR|-Lqq{a-`-3Y4 zdb*zNp# zT!nTibzz5~iIH|qOr)gm@1@wj1A6mt0#wi!OQqT%;cK7^6xkTn zb_g6^n&9MG!Rgo%a1(!bvVlYUq-TtZ7CTABdT7@hgb^SNzdwjn(Rfx-FdA}>cnuz2 zhZM-eu)~f@Z~w<7YZh_icVSyn&)}C(h>S(f+U{tH%+OvhXgVZ^UblHS8t#V2Puxj* zM=}oYeEfEORVMvM-n5u^blI;13M)A|Y1v!tu{iXj5`ED#|GT;GBDxa{fed}it*xWa zEtGt@*2bxxI8WUu F=+`&4SWw(}Z z1V&PUt7dD*dm_f@z<}W_#e7+UGyD-Rp;4HVOTg-qRHp->T7G0xNXEUG{%k|Xh&O%K z^s}sqMP5t7v?Sve9jnHatvRB&6mn&$`tZP)iHi`>7O(w*7WZ>ZcW90+bHrv3zU1=t zUage}VO? ilKKl%WB4RNjl{4%u>+X92R zk#@<60Y5C5JSA(#Fq}VtaQyWBZF>rs=e8D{E(_Ru7NktPNG#sYNu$@}+GT+rurcpb zkWj)5epB2a%Af$)orPG+{ldB Vyo)5aIdYBg;UQ-RXWC=`i7vIl-|PxjK3WkofS^H8Z`l-P z!EC8|Jy>)hq1>Xeca_?`OInD!sWmS7LOGm-_20po*xq-jOq|45>j(j2;H%%zRbO!7 zPv4a7tqF(hg9YvJH}jIL2&BTDrjNuNYV{Gd#h;uU9KOL8c?>S}VqfgUzc$iu{KbEM zn>JBbW!A`PI~2o^dml{US`1D=yM^eIr|VfZsJ@1~?b`c1ZJ&00-8p1-Z0A=w(xjD1 zn- i=*{fEs z;IZKeG-!}_GyP!o$?%PY`r1T@kOa;*<}}`D*&lW| 4oTwb{Zn8Ow?&r1;^6x6MIW`2e?Dulu&qorT73p zVSx(!gAIAj&u0HuMa%=-)p^o0pEiLCoY|uG-< -}Z7?oQbZ1C2oxFu?C}WE+JrB>A @fa7!g9*{cOh_w%l|Vd!1{^L6=K1 z^=pi8Q?%>YIdO3jp;Pi8jAIii$o45GO(o%((VA`Tl6R!xV$=h-T%V_1yoHgUvYB3$ zF@glIRnh;^@uhyxX!{P#9m&u=izTi0z;9+{xG1cXX5ThZQ3Ecp4vM-mzqS6Brk|GE zxPWfrbKOKkVw4JpoLT-SbpI(}=m6hEY$%mE_;~?aMz}&D`zZE~mk|>-$KuXYmxG`3 zW)p<)z+7^gg>i0iu5|D}^=9cPB53n&ak(K>S6!yB5YPGFjE4;MRYz?RjPo8~bGA8! z-PK1zrtGAgwBYYY ;Mw`Sei-^XGjqpzyR6U#e|KEq>YmJnI(vy2^8Y zB>V95b~JwY)^WcxcB1UGlZ>hSAAeLXvDV{}j!LUqP7NAE4QY1P)G!xE&9-=93dyb& zKt4Aq$)LlGB=3VDq+r#HJiI&O=ycd^S0HW=?Ugb5R1b;Nu40>*o~F^1C!XC`v=OVQ z$~{}Net&}8d-suVIPr&lcXM=9i2s7hDGEZP{%XPfD%UVeL5?Tr5NW|LXOUi!o})G2 zfSCEcixq{t9E%H=%(z@@nW%)3RV`c6xbykC%mO(VMC2f{-P N?7S&duru t`WYxxmGebDa-iR`1> z?|tL!>vHgmYpD)&XE^S#sj)@Ew^~BCFe*c%ki_f*@TaEK(OpMT3Z_PSAdc-aVkqF@ z+0Wpto9VNCJK^51%;?F_M(169m=WInTse>DqDCbH)7dWGmU-TU)n)l;x7!K1je#&M zz&qS@`&~Ka3o-8Cqx+2_OzqQ-_EWhoHpDlM;PvOIt>QM9qFyYin3SUEz}hc)Rmq pRb-ze$9R5__TjntzYLw8d2UWQ}DPfs8`U^?r61Z zR;m~sSz1x=`yC4g>&N9>=#{?nbMPeJ=nen-S~Y#AXowB*ivxcC{B1k?|IqZ+aZ!EG z`v`&xC`u` &;?fdh6{r yJTr5lMt}0(zu@C!O{tf>NjYMP2wp)d?Ua#nM%R(wPDTObrD*nZ=%%73kS`8f zy399@0IcFapQ&G?MvK72)^>f+tQMnGa=rzl)o$QYJREC)Z;^4azD5#ldk!Vvmcl(U zz`DD8@H6_D{6Q_*gJ_0#+G+Uo3nL-XN@E{>_J$DSR^rAUHVu8{+X9DG0Lxn-Zve8e zDTO=2gH^8Ld-1ql#n|X^yLXFT#qh-Z0{J%h@ YBZD `vkHjyj zyw0r%Zi?490(7^5E3a1TH6Ylv5%d}k`j`7l4{#Aeb2r9&VH+@qOg(vh9)11LF@*Vb zi4x5~nSxTB`s+!(@prF(WQ~hy92ZB$yw@%rRR5V6lJOkFfF#z@7s!qCvs*V88+b za%Mye8P4socl0v<{9Rip_Fk@~iur0}W1 VkI< z9PD&-167vSm|X!{BvAGZfZk^iLhZP86HN&_U{xp|MsO%c$y)Z-{Y5@83<{R`!X3>y zv?$+P){PBtOQZBpfM706QHa_x0<; ?m9ZDXTKZGRl_=ple-S=R5<~ zwU_2qO8*K elm`U!-$5-vF{sIU@DPeB z0%7~kO63gAVF3Cd43-?Oi-CD91z+}$l-_}&Zb36`w8aRi69mjS7Kr;g#_I~Ey)^E2 zDfHr8FwgZjxocz{x|wfZxA2bvJn-HV{r!+2?s{FnatS2|TqMxx1|$Ah)sNn9KS=Z& zy2o08;ruSw8kk5@sJOwgT0Zo}9@M(L!!A~%^u_VCzCvTAKAbCdJb=Sw%Yn=(kPinM zDvfk$E}ztQccKd!tPOqnKFJ1!wcEMqkF8h5klq-nL;IEZT3>n15Q+3X2XF~D?$-g) z)_YLEIXK$u7-613JH|fh?1mI|3&bdlo2cl>7AT;ls})_Zj9 i)6H*UJ`CHMPyZU22qSq@yy~YUD`(<35CX1cZnTCPiZm2cO)z zvRP~fSoF1W#S5XiejPaocmJ#`!HvA*8H|YIInYb42mbv66-)A~gU%ZKR zbe&t9ey-F~hRpikN~J5xIIS4LKxR4j`6p;wjO5`1^F|Y1daiMNKaJAJUYGX(h6K_l zC`fh*TY77;PI>DgdS6rt;;-8_2N;I~={^8o&rydjz&Gl04Q&4c1n&|2N!_yNR1sUY z@09nV5eprj9o63-lrKE6r-GScq0QG(M2L|QUNjWs3 =K%CenZ?T)(;Lh}T)qa`<;XnAce)+#VO-uh{ z`62c9pJD^?FQI^*D^TYTxM0lU$sp*E-M7V#94C!kB?enarYZAFqfwTF*ctTc0VDtk zCI-BA5TIwra7fJvh~mg#<5ngl|Gj(6-9o~h^Luc(^hBi4+u?CG9xNX%8;Q#CC&^pP zG23YvgHZ6FK|uEw1Ggt|2 x>9`EuGuTz7Akh0aTi_h7(Ry=2P13&~S{1Bsl3#!JLfh~cgj$XG!56!KZohr-7(T!= zy0GQ<8$#L_!}|C+-f4RAsdj{|W0h7e7&S=|g4LI1FzNsb{jodrP*#)Z*)RTI5};T2 zn`ij3n-#O~&A%aJ(gY05c KeE7nM;@Y^7qvmiVMTS@w0eZ3p zRzmyyHUw{>pokkJR4JHvb`Ia9 wd657|roPj^_ zOAp36f6;u{FCpm Ou`L#7Dr$VB6l)_*Uhv6cWnJBA zqa7?fgy;tv-HB0sdHytlM^aVvuMLRVUWDlT)%Id>w=Yv%|9@52DY11O>`z r5; z*1pXz>0YgU(sBcA4T4gU&~ylpN4 m398 N z_YNYs=QGKFPqj!IyUo&lryfM4D*o$_6-eg@8)w|NB>ka2gjUD-wdOLNYatBVgC3&H zN8~Ti(5cHH%+X#z>(|Hk!2dW?rU=GW+zp;m8SnSLOQM%^^TvG=b1NQgIN|I&k)Cnl zEH68v {-?C@9v51W9!l^#$cnwdh zj257K4&9%@Xf_DZF#@(44os4Jaek@Wc>nA)m6d!womHFQOuz2hM#F2qvL>7@n+{-n z7HJpqCwUzZlT3pGV&cvJY3ck>FAlusR~p|Q=>D~E+qif8sgO=-r1@dWU7UqHgNTGJ zOYm3Ny_UaYd7A4Arq@j**`3Ra|4=J?F7O%#VD`i~5||)&b0RF?kbdxpO`DUvTC0+r zs8$^@S$;90W1^aBWBF4M&7KD^Y(0Q$`l{(;u)5XBgxh_Y65w+~b_@2*Ge&}g?x0*{ zH3 GB0~6rB3peE<8E51@=&XLF+J*o4vrj|7bAwqN~N_5DvU7L)-cT zx4+kcPF*x;?V=>uUv*6T_D_11@=-n%t4FV9#QvbhX$T|{*+BO!y#+W@xB#d f~406i*qeN&M4qPV>614_&T%wC-bB`1oC;hX^rd7yPbav)L20|U# z0{x8M*AoJq3Ml<8@OFGR09gmRP4DXb8y1DHwKsYmO6`FS=gRedlC#&!&CYANSRYO( z1l2qOWIsPPRjHP|a3A9L-sCX*^`A4wG6dWZ9iza;@xWEJ<>t?@Z%V=j{k-HfwNx~0 zk(Slc*WWn@;-j@L-zx?&vn5$uYtl?}kcIA2=so k zh0vNOkFKjT3I`fF$T=u0^kZm*J`hb6A?;bZ41Z)x@SJC$z?4XJ^>5rK$dNubTXRX^ z{O>6cM0h7 )Ger`iDg<}tSbJQ}$`fFm$)ixtgny2Mw2j(tF2V6IaC7%Y=&WCFI&)i?j6%O>a{ z+scCUdBAgk^U%ZR>%7kc{VgdGbb!j~L(CxwI5%fKTC)79{$M$^DMZ%KLC(+qBEuf6 zwKe4~*xcOD=4q>C@a?Mdp{{Nkr+kR@oy&(qusZ;|48k}Bw8qFb-8;x98m5gJ`V?IE z@T}R;&NyAS7M&GGHb=5^a9B6mFbJ)^0yKf#-Q6vA0l{r4#9iA^B;Kn(y~v)=<@F0V z<-8A+w}LMv?>L3@!tf{a@AdFG;M;G-DUHGb@?tc`OG^gQsh_mKz>da9mx2V)_;LC# zdBkxW;j5EuX!cLoAzKH2iB08TS_E)_ *+__KiE>B zjT7(d!~uBs+Yz9gt>qq+eP%v6WJE-mc5V?$IDTo6@ul<=r_EnNRpIpes-jaHEf=Zf z{E>Y?cMEhAf+U6l;!HjgWK$q&uVZxn$p|2_&`=I74CXw9ctj7~XNO! TQVL%MoiU%hOvZ9t(|&J!(#;tnR<*#HMtuBQ~#u zB;2E+xD`O=DIigg2Al=}CW0>7#`IS_UvHux#+)eYRN&rLE%;rNnU+}a>08D0gM@xU z2e7y?QtitE1wKK6b$6t`6-~e{OdHFCc%C!Om@iG4)uM7CnjvSG3u-~5yP=X|{%w-9 zQ1<*f%*zTA^Pi|yok1JAf!m#(U+Vx^_fEYhk))dm)aI&M$H8f2+@x1EV=-*xFuo0< zd+}!Wwb3a$e*lL9$i ibn%wVJ+T!sZi%d{Q1OdfE*iLA)tc k;DM4&jB)FrmvtG+Zc3n=S(QLg{=jj(WbJQb_A`?tHxXQ z1>0ol+bhJT>n6qtp_WL;2$g6(=Cw+oXB*;izp3LA+Kc?6A9(scoY?E|iw=#Q?NDsz zy$Y6<>@qRGA$=j6yEt) zwefP B_U-W;>LZkJM6xt}jZOy3CIW;Ypo5 znT48e&*Ao<9dzh}P^Rlb3{91IUABANMm-=HY^7ACVcjH5tCnlbI7@n%{5ZW{PJ8m* zQ0o;^f7q=AM=9WwVC_uSi@|-0OF>+@G`wVUEaLH(Y~(X7D2}S_kr-Pk-cc+1_iUF8 zGv(3~ZUpj)?`Q0}c&1o|hE|BTb(1u-d5h}ZrDwG|6!j*Jhcw2Mo!)zAp8>=ZU?l(; zjj{r0R_ Ym`j;8{Qz`FaXe-d^NGbR~qbW3OV4vo{BUnUI1<=I+ z5pGF4=>O$kbKHLd{dw~FlGn~tnkCnVzC+U__Sd(7=9q5o00vfqF7*bwzxXeVtv7P5 zRwj9^OKgwW-V+rZ6;HVd;lD$M8^_bBmA0$c5F2Syo&3PdD(RhlEO>GuQk62C@sInY z*^%j)rEsy=R}7o48uytrp(0;Ox3U}Rq~~AOv5jG3)S6hY#Nd5J!ks?SzA(>i;pptA zcTU)*gcAGt)n`&P)FMH@WzYG;^Y|hy_VY1}TvY76`VJ8+9=-gWFpf^l{!EmL(T3%E z%aHQ3o8@C3OrV=z>Yu&V9qPN)m*jU=0>=lxvob=<)ZR*6gny#G8<-}F2<*9+`Mk$0 z_R!Mzkbin{Ly{s|LtOsUq)wQ|m~G&5a_a&r+;U@!MKbj+jkq@xref{VVXAtl8B})k z#>E7mhV<1&CR}Nvoa+zcu8E$$Oocp0m6Rmk)W`oy1%^VGvxsZh)>CFpZg>A&%4M9G zrKc#>1f&i3?!JER(zw@I(PT6uP}odNASx|LOtP#h3H4S;Q;UhYkb&l`73JNQ>=Q}R zxOryjq)@TxyJNjjb7T@|eJF}mu;_|q`Kt4*x%Iiu{1)=W1;b*IFs-p(HjvpAGkDPk zG|vG|uP*Dx01x*-hGozQ#0lxrf{^lbU|CI0YD>n?W|0{$+*ODvWORySSy9D(-XVEZ zA)G~NlgxiS*%(pn)~GqGs2bcR80}ajOwh>a+3!+t^G#1QgA%_=0{9@dj2Fi2_4K zl3{?PsBq)HR4W7+SRj-83WbO%A21hY`5GZ^(sWk_UOU?`^WK;}IF9G~g!L|vCW$ld zUtX8q77lOC?$bg27vU(Dd-rGGKD9=d_Pt!lZmu+}6nRuYfa7jg#QpcZR#o_G>H0@6 zVt!9*JxH0ZrBeMUF8_4@?Q@8(B>qQ*nnV${%x?k)xR;uI=0nxpLzS9;>5a;WhjT6y zQ|Eca4E^Bn-<=@>dgT^+mG$=I(y3I_`4yhGRGww8rq%<~gL54O4axecikhNogr0k> zPtg3zt-;3>8BN;T?7L}Yyb~6oXO=qRGd6AFO2c$9!6LlJ>ifGFn~C6iS;nCLhqv~+ z= q2@>*#D;Q33sm_y*kvnSt#Sy>04Ijj+at!qHvS! zdo?+6+stO8F=^I^i4SP|3V&Y@oESU$P*)^e@uk#X5>x!ctbO||oKFcwq%B@`ir_JQ zy}ur^X_9jBZt!w}=Uk>r>;=Ljj!mC=b~dI8_LT55Vd#+VoiXf)-agyZ=knsR!bI;$ zQmDs!BD2wMvWb!!0$mMukwKn8g31$4-^kKS9l^3g)c-Ph#^z3i3cCyM@CYr 4aH&B91{7Yq-u;mzz+&^wn5YXTP z#2(4dAY3qksuL8Q`a5(=&xE~Gb4w0jEPdBzfue(v7}q@qPQ=>~fW99Z1~4q19=xsp zmlq>#rkbOhYD%T5Yo#}=q6;TY($p2yMQUer?>kTLC+Fa=RHtfJ#4GFBa^$<2#%d<% zQYg;tRb{<4)zQeF|Fm=eIA72sE{T9vS(a8;MJ-d6%x~64XK0Z$b6&G~CRR2*ThxP$ zjD5?jgmEm&jAB45{awa#rLT@+QsA6o?jKj;*jMUg%v!eWa^J2xn)5tlU$8b7jcWTy zju-KFVuu;TGG)JV`(vXytb5g=`-epKwDMI{r2-dm;gm+YeRO#^eLAmq!I&+1K{;DR z{70SC85yd|=n4z`6<%FlwU>0$HmOBe_tiGbgvCZB(Dibab+I~53x@7k@e}e+Cn~gY zC<2T**uJi>;Q&$IDhhnm2f|P9w7A}<-jBYTlc-hLR&(7HoSX6OOOWn!hqR>%U)BJO z?Vzd!(7uK!;Nu(U2m={G?$ssgy%{A&@6->mxC#fBOFqn_Tq3lP`#aN^0E#f$+$vXB z@-F!|cLo2Vqv7{a$rnuv%oYqx4KDrFm#P^*sO9u`# ~O<5 z1UDXm#BIB>Ce?m^GAl1#keD3$ZjLVIPo)MzbfVJJR03DOa(aSvN$K3&a0g=YMrR%H z >RX+w#^OerHyO@@(fNA3oEp zS3i%^HB1YY|3B9YLvE#?f<%|3L>q3UoN3Ti9U2Z>eY`d*=b!zUVqQMgtsY9qE+p93 z4rw7>cf_9x*PwGl>UYJor3tm;19ZP(AQ%keTCd%ikBgEcjnC>H0{-z0zd>ui%}e7N zDzx3r(`hfq!}cB^SGaTvQI*M}<>pK%rCEI%Pp%;#M)Q9$5(Y2;NB%wpY6bu=awpZZ zy4^uic=}F#JyfQ{XaXF}DI9Ugr|-pAE*O)N&w_@~jpe!#8HAyw#Kk#I0e>}1Yzz;= zhlVswv1x*b&W;Aoa4U^>dcAk1SS_3@NV$i|k4bL84>qP2HJ>)6!do_sh%toI&D{$2 z8Gs@9=Fzb2k3$IPf4(0XTAzD|F!v?cSfy4!jXbK(unLp^YFX2Aa;M(zWM{VzdKUj| z=N5FUUX6r0Bbn>t <3KmXu& z_y4@^Uk#)HryNQ@50FSZ1xfx}LYc3=1USu)1>W{z!%A3qZzt&$TCiIV+yt^})BM@B zZRHLfOz+gaQk_jrHKKrLB`B!~W 4_%TWj=pL%X0D?*#6l_hMV-Bdhy62hZgH#&U z7a(Bcz+fHllYu-mg8vt44=xgYlAIzB+I`; 1E3N8TuI{ z5ZQMwLhO~d7b{mf$67E4*Zkg6g#ZQyCKu0__h AB0IIGWQ&VP_qlRmX5aHf`T zaC6>{MQW~53~Nj(<-gwu_<^^)nr3)7$r8`=4Cz{~v 1I zjp|41y#FP3)p3pZ@RX8d?oWT%=rYi~AUnHzA5$__I%q?ujve{=E4xeKCQry!lE*na z1D?QtjT8=&uCcLya286F+13)g=nN^SqZK%r^eZsDfA%h4*Xv!{E>5K45j-MxS@}%C zT**l8_|n=}zC0(Z=^o#As!5n*JVlf3mcjmAk#i_9*nXFBPA*2@@ZuvOEYR27XnG?q zw()Oj=vVL9;wZv1Jba;?R{}`9tsexj_^+bQ7-ln#Uz_%J*u&59wyZd2v9ja8c)JtO zPw|6P1KzN|VUw{kSy=k=`q(pSbBRS;Xize^yp`( kW48d6M2pf_- zdqM_x%AF!AqjiZm8p8SB`KXy1&A!rUG}KBvxOy}0f=|hYDe{iXnrgdvwxzkF_`AGx zYNC mht94moxe*Dnx;?woM>FIh+(&}t*IZ1~c z3;yrJ6k(CUxw`LkUbUZowAMwsh10vUA4@N@kBdQRpOfpeeTz{1RM8DSX|$r1!0*dQ ztk9e>+QyxPo8$02 NZm*3ZD-Hcs7q$MCr zFk9WJZMAs*iptHJ8SIfD9D0ZIM1}Zv1@R$eu*b-{X*G|b!_QRed+w9npFIo$>UuQ+ zpA3J@3$VO+skt~qA6ez3_0fF&g8pCCQRssxWoqGFis `m{N{tUe%k3h<>NDF6ES!Ohc+R%*Yq^cZ+zavv)Gp z _vTI~)bRp#v&{DS)%8tvx%E&d2 z7}nj=G?pdOxSIIPo#Cf4nY_`Z%46TtU!_@Ip0AFaUQ0Q50jm;#uLm4`cyo;GUOief z^Q`0QdReAc#GecK_>Sm>R~;18t(B@iE5q8(#?Mdk>|(=&x>b_HDm+xHVu!c&=L|Dd z%Wr>C-{J>yE!g9Zr|X_B&Jbwu@tS9y3#6{= {?|JvChB0N8tu>5w znn7Jv230Ey`vo4$W};3;(w7%c17gYo>;jZagZx&jeuC_X_BOv(2Bnw$W6jZZJTbve zPBk{ &ZSEuM%?P z5Ua7>`kd9dR+TE1i8HHu#$-8iMz!Zve@;MWKk>m?bW||XBzG&Ff_cGnLJqD&B63N1 zPfJw{n-n$gs8F(rGLhAAI1{t57E4Vr5DBoEEtOhrXzrMeQ-G3vGugc;v52UxNPHnf zDC#v+ck(WSKZr67S(SFm7Mj8 @>RX^{Pm8@4@*7r~O0rld&v{O5yWu4PUUK4bS1+9zOnkWg!6v=EZw!)v ztXpF?NI?T-9q1@n^fm4%(A~Q(zg2z`biC{EC*Nl~Hy~h5qU&zt1oQag>)dlOM#w=b zVW}=rSZ`2(9L|$E2v_E~?zup|`9x}|X*cZV3r`^eoZdr)Y44Ygd_DLruzIyv(89a# zwL(zaBG{}OKpoE6#eP5z#hiZZNJff$(3?L>aDm=T)peO_dGb6B&7=DGsuY8icDu#_ zdHHvEP-FwZe3jfhUd1s 4|LhP%93okW 7Xd zO0$}uHn$~ Q!LGk96B`n2j6 z29ofieA8As7)Ma1_HC-2rG>4Qzdo?xac_CXPNUVXs2TlhmLuiVe=aNXMS)>osc3u* zGviI8@l86n%%bg0%D1K>Q;-6d)+8a*L8Kl&Di@1sb^v9LOO8IcI*mnVjF9YOfyIL6 z AdCC@km{<3P1%idAubPlMO}{wVM^mZ3(?n8h8L%*rFS?Q z7j_iDVlx{)&neDUAD(kFOn~Qvk4Tc^uNAc4`cRy_d>)!RV@%myZ1ybYg6^m$R{FDm zP )MnqaHDSypW4IrNe_28C{*Sm7~qnIyz0+*WdN6Z;z}Xki=y&fzsI~SE;dk zR1&Z5MCpXE%Tz!W_`zuMubsT|Mk|SJ?$t+C{}MBw^BkA^+4!x7?Mc_cY~C$h5Hh~e z|CfExl5yS0`_{Tk^HecurzzgQ)ZM*FfGagS0OyxuU$8bhgJyuUUy{igJ+Yae{+KVx zp1H=`cFox-wSSa7dl!@a6IiE@ea+>}53S&Ip3C#1wfCx#J8f)mVfbFR{6};-rGuxP ze$EO>Vl-)8`Ebdck2mB)eq|%6ATK$$0%{89aa)gboevxxy?&L9>>E0dIQ4=x`n 9B*a$NlEr{ujF!hoy+p zfXP|7x#B(I)}_nVs^c7*Tm!ZhvLbj3SHE-jfOEl>f>rTQHz H{E3H?1|(B|$SI zHWi(`WKnHqX4}a%$rWR^xnPv^W>VBPk)5LE^w2ToeCUq^l|J 4PJDzkAXe#0#SMH z(4(D|L@1;dj=uv|thVt~?R+9K{QM2iPW3R55iuDnYLlVe&~8J!AKA!H)PF9O;k*g@ zq8r`U$uiI8=9!=szweX`ZGOtO+ D_X h9l15ugi&4Qu3^m2)&61M^& zLu9aM9JGZeZ?0LBflv_fdqIA)Xp^^sVnc{F+i=*T9=sq%FTjy)?FcWQU%U^iEVX%d z!md>4#s< PiA=v;n)7cS%jq80T^KbJ zPD<(iHDpN%gJKX+KpU)XJ-MeDrxQwYg8AS^BK0T6h(M^fBEKcFUhK8YM3l$pGpwbt zn-#UCCV#NCB;EOVVCuS6(&zK>d!Z}J=Ret$lhXLKU(Dcf9r!No3Q%_{Krip>E5C_l zt@tR}7JG7CHGR5LSQkxTr|_y5O%Y!2B*I@flig>Vm)j@atyB23f-P6ptvnfG7;e@T zD-OvHbR6nV4;KmBbh%?%0rGo%OcPe+7UV9C^}p5_LMU0gWLu^(y^|?q?MJd2tVcMR z9fHu}yz}3UVwbHVtdtjoR~CEeu*5@THs1>(UT5BaR{m5_8PZ>2MvA5VH143?LLa0$ zx8z~!#)3=!%PcSMM3^n+H+U|G&|%*DTE%*svYV@m@-dN)KHgY%vir5gl@jdj(u~#W z>I?8ZS_i4J2DS9EpvF|+KEWZ- zu;jCoSNnOcnSs-wWvPyK706x*1>VxY$A$12)wVX+l=_k&R95&p!aLTlZL6w%O3qM0 zw;N|}+=e=!e~Xxtqjp^S#G*RMyOuVzvZjUh!$eg_TKEsfZi%2ZiJqY-4WewcS7z z(vPSH9E=u^`|5|dzgknAnZ1;{GqXdFb^qBMd6kf|CkL`tjYG3J*|^`TE>BF52^IfX z_-#U&S)kQ k zfc d=_G6D?&Wh4DY+Yma0AB{U(=*PGwDTn-I1zP5b zweTHS79o!Rwf7Z-#VfS^d)D@ki65Utq591(a*z_A5PQ3>Fg<;Vq;?~2T6{%rwy5@O zg8<~34Raj?g80{1sgT-{x5dbeD?OU~1()(PlpnRaaW>%Yg81gc%^mV`bLr8jw)?l3 zZ36!q4&(>gJtolK!0UQq?a8= z~8+@T!h4vj$U1Ca=9^fgh>stE(8+} z`Qf=<7MOO+o|ADUH?Q%-c!V0oJ6c_Q(@%IclT<7lC|`%kY*jS LiV~;v(yl zt?I>J$WGSXL*4Y%xMnqgW8X8uI#teIg&p>Qo$|ScqNc}|g~X1JETn~2=b%B6^Hrst znn`8Yd`D|zAC|yuBgG#wcE=&-9De<=L@m9QRKom ENYyoP^U zfUj%4Ph{`1nDFuGF*U9C?H{4FTvTq6>6NO_3o@QK3o&Hrs?*QJHRqSsfK)P_kBTVH zePLh+@TpZscfud+{Sr8a&HpXQwLnS}Egk#vkFOYQx)fj-;zLfRi=Es3|Wx*>>(k z^FVH7;7xp?_Hh?d`S{=Esx_msdhxi(LEb{`?fXvYb!l3q^zoOpOH=04TslG>hCEkJ z>R(>y+M5i^lwUoLXcKlUoGGDayv|c_Zd|u!%g{%0`ZXbiuZ|Wv6V2Dgio{}>8Dc{= zl;W1&>wI#Xq)p@k>Go<|UHSR_l$ `A7TLI@9vF+rhYqIU;$=Ej7Z-P 8y%AH7hf0kQ%f_ zdp(c;H>`|P)2A{p)I#_+Xs5?W*VvAEak0D@V*dC02kHPX{WlgjA~){um$qVA@E30# z?$wY_07owohNHWkVyRaqc{dQqK`Lkrmh8*Ti!TmBol=kG2jSpF8ZP{7(aV39SMh?w z1=qgyWk;8L-|+Fb(0(WRE@xpYZUx_>5G-o5UTGE2{V->N;)puA{c%27qL@cd*-`7|>tI?H z)R;#JKajK9V{%Hr0@k^oxKT)qG%x+&NK(60(HpFJk p}a1 z&hhzmVqYx_vH4)?aBGJ1{TAf>37zTyBa0_7b}xbW-H%ROhn*xSMQBtko8e2Thd*Mt zjQ5O%KS=(Kq-xjxb)}}+^10=uhy35vzyCJb?z?m%i_>8#Y1?_cY|5{M@S2 z9g5K8GP{B#M5U;L6rp7Y`OnO9B$y+JX3ZafgMQKYQcv%i4d0w_qs)C2oi9N5D>xEq z!U~Yr Jd_`@%3FSt(dEgCfc$( z1P*@THL&mK`k|S-1dH)aYiBG$TgJ^lRl4FY6w&85=4ExDx6B$N-gl! +}2 z?|OT+HlF@1r41!H3X-_)?&BF;g7^ZE<*Fv&<2YZdRF|cDl=S_{u{f}IzbvHSUXXf* zUp9evl^T9PL}c;Fo$S+Fp+}Q}+KKSjBDebg9xo3afi$~lC$F?}!+C;`^$`m`WG)P+ zqnu*nL-5^@yJ5%)zk6r-&1bsp0SO%H5%>{NU^KkbYS=@Vj8ZCS%R^0`$|3yel&5FI zo~G<2 =V02T+o?y4<=|mf1TN^#blr3G;*wJa$ zlJW!&xl);%$j|dkg5b-q*RL786D{1{Yt>Y~Ot|NFZ7%Z L*&s z%3|lLV_MP%h`w;|lN?8 |M)`h53ihtT4Y&d#jhzG4SX5 z=YF(Y1z4tvFNWk5{UZkdYa^9mJC8qkV*Jx&k2;i`@KZuo_qNHSeHbQ6AxbqKUfhwd z*oJ7?L_F? % zxBavi8z6}K?|2Tl6pgrnR $3kSzN*gcSm2R;Q8Ial!8s7f6o~07)^S_2S5Egqey?S9Bb3a^ z<#4D!?@HZP$~^Bzeah_5CDvc_D8giS@8CZ`2OtQ~L#76UQ1{kA#?{xIHqY7op3slz zZ7r@TvyzIP#pWGubGj6YWOV*iZRSLwxDBb+r+a15GTz=N>auY2Ppf^Kg+716N-qV= zfn=Fi3<>hz`%D?zLUIHs((A@0CEj>TNhqEK`6~gEljvYsAUGAJx=p4AQUroucI8n) zQ(71is(OH-Jbdz5&>~&WVB6C8oUj-OowaiB=P$S0w%w*!q#n#?Ej~cCsA-kpdOs+D zD!TA}-Ictm5ka*gNfOBo|Mv9jC|y_* QOx(RIp_ zL!>MgttxZMfCXDAC`z}$1%IUjD=?t`T;AYNjn|{oz--xl*Jl)B;3sVubCk)HM>E03 zwKX?JVi>^2$d)xv_}U+CciYT4Axb9D%2xmiSoeLkYYYfGT+TZb{;JiYVPEgb9}$e{ zJ#9WI9-F<9tE*#&3r0lf;_p=4a7bvx +i*^5gGKlHYpSxZg9q zzv{(Qb!H)!b=h^)B&RG<`DiANzM#eOI1tK~FCcE4ryd0fU*g d zWUmOMUnb5F_?`Jn-dVH=)mDW@(ib<~Cun@Tmqe2=Dudqnx3b!W`BY^GyL9{t6oGJ! zr>7VhPr`Jq1}b?3mm6uh&FIxyk!9bi=DRf=j28%c$J{=a-HGSV=Gy*ELhANsn!j<} znD4Wf`0NH*4qXs5@qh|}< z=3doxqe>^d99JTPWE~BTZm{QqPT6pYM|V~bEbimX9wtW#$nEJ~FrniqY-%2Bfo>V$ zG5{?)`OHJR+Dqaz{`Z ve90c3ie_`lm6GjahfX}{Bt@CK|^(v))GgO?3Cmk#J8IwX~nX`CE=N| zFWei$^^tn$Vf50A#y?^%5no?Ay*v>9TD$FgH}&k?y7E(!;{B4TT6-#Ss0lr_sKI!s z)-GHb5-Ob;lW^j67?-~iokfe7efKP?Xz&>N;Vt#;^!1#r@g`Na=Uaii@ZK{yyZ(I& z|DQGCrv23peE-5Gh;7JsFJ|W$X$SDA!Z^j3LspVxhueRZDQZfKuK(6mH}Ib3IZPbg zU7_*PNHm+yAw3N8-hJnnpwpZ#(0?9+ydTbvHvxIPwH~CUR=({?2Git}IC@* 0NE@$JNUBdB9mo7xJ7SO Kq?){<%sEg6US}4!}Zk4X2}m*%lM|=TQ3c(_XCP4s#`fa zpF_xKtHSnR^f=CU`nxvTLg@lDl*f;)kKPWHxr1Frl v;K&hHg11J z82QZojq>$L1?R*9clYvvec0{dyr!ls)QqI9=zPadU@lnf{S*IxB`>PZZkt-_tk5GK znP`DaVCs*veg<$$M6?12G~qz!RNc|J?gmz`9q&Fk<6^$+e&cvW^yV@f&(;~u2&Ku} zAY^KmLrD=Y$Vbzu9=}nei~kY`_yAvsmH;OdSpEd4$eN;;=wAREr-8~GAJmMrStSrP z$N$?Y<8^v4U;{YhijYa=2G}O*Z=KnNvpgLlal_X|n}3`IPhlz&{*vthJs7eEQI3=f zvQ?oG5Kukp%v8;(;cF}8GfAbWSs)bLM}e!s5!yuZ!g){cXA^*cNAhbIci<+F@3hkh zAb$iTmGb?1w?7wUzNF9;Jbv14z+8uIw6^1k^bgMS?Mc^|xoYzrjJ)K}QoENAl JJpid+_G}6X**kc9;Zu+^|>n5j+M&4c~TWa6&nwtdObWT{Zh#J``^dQzxx&i zML6hYxLf5%XYwx7Qva~UV9IbGuYREJL`Nd-6M;@NSAUuID%If4SxRpXuDzdKg|a>y z2m4n$U8MK7Z7S+Q;n(tlNqj9mHIWLbX%}U$&+1RcW8lc+$zSE)f4F`PdwbD}0p?pB zt&nBm7MDr-vXtz`iEp!@Yk!K}*pu69&SxJN`&fGW{7RpWc^OmVFxa;K=-ei(pjW_s50uLl~VGj z+8Su-W$IVc+yEIXX2mQuhPzo&T>654UD)SDfVbXmI0U+Ftn>Nn#_CG0d(f4 GLqkA>j^ZZvo9!?StI=cN{DB+^{1TJSu+2 L+A2gknKUTe3X|<5m z&%dl(?aorVeyKrL`tj24PyG{$u^=VAibiQex7mZ?M?w2FUpAt1J4$N~g^KPcD>~ta zFY9%tU&JSD3!A{^EVa7In^?_H4fpsozU8WFFc}8PlSQmYuer;`NljR9*ohggj*_pA z9!?Y|^psJ!SMyvi9E0Vi!2E45SbjbrSa8|$CBANLg9l`^)vhU81%0NS{&rn5X8~*# zJMGOS;LRR6++Kc+Td<6OGZDhcKZmDUABiiV^rZA1Xym7!<>Z47!lp?%YW%j(`7+|7 zG@b%+cE{Lb)S#V*!dvIUq<61y-*n<{WnV|nGk!dzG^?R9l7Ca;HI(1VzJ4DNR|i>< zwLa>YT=j$7>lMVD1ig6bTP|Q$t@6^*g4(W@XOh%Dcv~4~Tcwn`Lpe}RSCYfFxEWSh zW7jNz@0=eBl`!|=zm+*@K;{2p?)o
2GI_@_TAJc8fpQWSknBxaF=zq?tU}Ol%y! z#xh&~UK5`PdJ-t}|FdfSB-iyZe1)cQ-rS`%+wvr R6=KyrT8>uknxs}=FlYhrIp56hXUB@eJWlgKI%T1qD|99=CvMuNT zev!zH!whWF_xgCJiy8RzNj_qo-M(#T)#=>-KM7cIIu9fD65Jh^sERw!kNA$6wK}@8 zltOlB=X9+2-;DQ}PHRhfQ+Y$8P8?VIN6~F)v+biMZ_Q 77_KLC@%Tpl@aFZ^#!d!wJ&*ld{5ob(0q3@c6t yAPrD+0DD4paaC#%o4VR_eA8K;9P+%eik58?I)muEL;5SK(Dw*IhX5wC{9E z4UW9++cXP6BhGsPiT-orUJ5s&uT9_f+;%$j)5Q)R{m98$GbmF$%4U_F;o=4*VCNGv z8CH)g`=}J>G-?l0QQ(ZPsPP&y%--7!vv)T55Iy5gX*D555QVl84ImV$9r-$IzH=>F zQ+BQI{;+D1UrHd0rQe?wELf+XGyY*@B~ t3tUHbv2>2+v;nM+jp$E^ZUh`btp| zy2BFSDe{ckQ3Hn+MPBgo2 BA5E#@Cmcx2TR?ez474V6T2&F53T)5y?n_@BRuNLb m^f82k)di6QgRlBRY zYd_fIVZD0?yi1f9Y0*!KQLql&Bi67@J?-t(Dnp$xp`*r8= onx4X{NAE~u5fRp>z{Q|)G^st|miqluxUqjzgXVB;owS=@(UTznSI#|ZN zSn8PlAJ#=T{*6ITS!6w72U5Z*OHbl8ShGQ8&@teU^$u?G9pL&cWZ_t|G1p%P3x^z+ zyqn2U^thRsIx_-*AgdP}!2T6LugAlC ?8k~9g}vqh%H~00-@`2v zQrofiyI`6>yH>#@xBNO52){xOLD|f@h`#0z`X@OaQ#%;=kSgJSi0`STH!=E13^DTG z&g%jK-Vg7Wp8+=&i!cJNl&EFkfczG>hJJEMA2)F?!ePg{tfu#v1@tfK9RNG@i~IrL z>IVNB{(I+J@d7}97|N}Dw&ixL4}HpmFd}JRno~_)q>q9tJ})9%ZlB*Kd+y#nCVM3A zK(}1@2U;q${5QkzeOm{miAIVB(#IAiWtR!`@G-*M5iZo?alJ9bR|Bu >|=)Bz>Jhl}XKnq~DXxe1lSDp!e8udqVJX{!TWQ4NX?! 0?_DQmZt7-^?{ `7yciuiz_rYIb<`eP*dif zNnw6Wk=`QRC)^tVoBc 81 yb6UiiTqRF0`ix zhd`IeF0z3EBhK&tZK<<$dmkD*ITMr5jz`E4LbxIpRH+YXEI7tAg1zuNjmRi*;mj&E z3;2*&wU2vt$Pj9DW3}-pVc&kv!i$rh&xU PISKDg~< z2OU|JZX|xPAKj;*sP5YUP8wHF0zMhtXP1oKeV!98AW}>)M>3#;E0O6isvi3KBe$>F zD*3etSwxOu{1jrtJ^0ybb(fJmK(r$9e0EooSKxU&>T7g%)^AI5R)sF2qC(9o^3db> zGsWplEiahzh}UFU;?%)-O;;NIf>jja5mQDJVe#?)BDO!m!AXmoa}f5p|8;k 8H?V0` z{&ajM3v4nAY!v^Dx&1##>5trjKXwJRQKQ{D?g)GEJ6qjq?sj;$14Wp>J#Xrs0J*lG z5{@h tkq?f#b#YVF2e4 zm2z6gQdrLgR(t;*3+nY(7jSh&NDy|>yZzMy5ZHbq1RaXyK7@xuX>Nh#XhBRohVOWc zsA&CTUe%oKv%`R1qaKT#LyX1x$Ux~r)r(K|*s}KGcvykIH|VX}MMF+?WZ36N@`IEL znr3u$hx$Hl7W2o#0GE~g7J`EI&eip`9nd-7#iczyG5G`oIS}knU2;ZbGhw5C?DHP| zt8l9PCNL|(I9?eq>5a=)v}W5ARg}5ke0vrTMe|$K4z8{{Y|wYng>oS6h>@&uElatn zQU85F>J`r@cZnLB@7N-U*7pHtEB`+0*7fH#=~;7mNT9yncZy!%3s_OI1?u<^>(wys z8_9bz5$~gvJ&V#OxuZnuM_;xh17z00M^_o{wXvjjIWJB^|9O>Yy`pIcwIjLR-^D&w zuT=46f*mpNlf^##uMUAceNO2&f?pt;SW@llJ8X}zJINA2<7GE~cPVPOocIR|LEd}X zm&VEbfni_;qtZg*Gv3kIz!7CN3$(q48SS*nGmF#i{J EkEyQtqb9Mn zz34oAscD#ghzd=Oy^*!Ow2mk|JgFMTDA4ZTwVQ})AHLCa0H=%IYkxPu;I&UAfPMwQ zN-)T6_q$mTy%4ylV~ W_qg~z#|%!)3Wd1{{U)NLB87E`)dw9`%2R(m!q?bF#W8Z77G%RQ`0 zJub){qL&Je GP9KrsA7&4ASE zhSG{-2Fs2yFEx;{#sl;5d}~T7LjpDaEy 1dm9!mfbaZ$QVJ?}?-vzyM%w z*P0FZ5dknC?Lks{s)#|rN|;(4mIRw-N)BIHfDMZ?Hf4-houLeF5CKnt>Bm?F7jvJ` ztP8{#v@YH7PY$jjessYwHPO`-#AzByFiB_~QO#JM*6Q%`QDGynq0qeGn4m&{J$G+$ z?p9v}oWz%lWdZ(e@9?7l)yGK4K)(sXTEJ{8asSDQKn{p)eKWn%q28Um3tt!aFhR`S zLto)2^N7*r4+d4-hC_4hl>DK4GrU}A<{r2JdCIkisI~!jt`X%M^u( `1|5-ul)q628uzg1mC1K@b|#9D(=MMv244|=16224*z^gyg*>ilp72@&V62rRSj z<&KGinm|_H)O_U-WP_!U#zrnfWTNS(NZNW|&oGh&_lxNz#CsO8)qKb_I0-`|izNX` zdEZEzyX5I4LZyc4|GPN7U6uUNB;?0)GEQk0li55VDs&MW_Y8dQK5A^pNK2W>IUNUc zh`=^_3LA{uu|(j2%VO~mq&|jN5|J5qm&@f#(RijVsjzRUOh5TF0zm_rnD@rm*Xt)z zeYj hrF!(Bl%Ss{ZQE{GR3;3upXRwg%R#BQdV)!j{Lu7|wf~tvB zc(*h0yT7Z8sV%Y^#)_5eXDnD^hiWnfkx?os$281lR;sKiVjCod@E;RluoCK~Og{}q z+l8az1wTWbAp5=Dk#U7sQ>T7cWY;Rnki)(-S74m3|YnK1Ay*YyZcphuw z5L?Ka<`v*Dg8)W|0_ldf7(K&ce7Zqqs9sEtUh$7wcv^0KtjK01IrI!I>f_{YtcQ|c zlnJUhJY~GfAEU0G__ rC3FIi->Zp&-dIUf zje8Q^1TgoShKBw^?qwI_%)eyrgHO~g4T-wUK+E}%`)|>(XTTPPetUtd5(TF`;?AmK zlXy5<&n9>od=e?tQ1(C3QKg$HTf?Iin1zQ!LK$kufqA4H!q3Xr6;?ga@YG<;T$I-d z0q^7lZcQ=bSTli {S~X>Xwd({RkAqjvvRv%>Rs!62#%6e3$pX zn};-L%|YmF?0aM>U6`mZ1-qd;YmKt1e}GBLR+S!q7$ 4zlN!k)6UWn~TXI=xJob5aWhitEL>hreoqifXE yfySW#R0LuCj=rPpj`mED#)#ehw y;tASXFLX_A`Y#^ngohw-=FdHm(n#0r$^u+fV<-0NlK<>(a19#W^A#wG#1GxjB zcC!7JL`F%N#J7kqxW$9^7PL*zhwx6lPYOD?w=Ul09aH%kHCYeA>=uTL9WluYX73h< zj1o54= kkBeCTU}alVEKbKi;08bG47EDEn=-FF}uU2Ix W~cS;!#JaI)H9+erE0Ii)(JLeHmYrlPn}4=Tafgd-x4OlsVMHVM0+c&Gja8#EIu zLAkH_0|z PW8uKJ#b|e3y3!6(-{-%@240g^+%P zlP+{YWYy@Wna+f*v |Ddgt@3IQ<@AseMe)4-(Z zpAAzqxgIXmK*Fo6X2}89rahyKN>quV5Y#^X`eV@O=yE!JLL #iK(FiG5mMwp(xK5>Fb(p|KWPErxa zvkZo8Nfe4k DI!F8h0CW*n}4`howS_O)2@BIZ(mVm3;)=+OF~W#YP}mZ-2v#8 z1?jE+%P#^11mPdO(A(FFKwN_C+E?0R7n$nI%{`rb`bx3wF+POT#XQy_YEbf>E=!We z(_Z6gt}c$U*Ge&gk#g)IMtAh?HXDC`GLtBR(XQ@F@}_DgycOmSixeuoUIO{i3mboo zWN46DS5$|G%M?8}M?b}ab`pYxvbI5ggY*uDxG! {?S!ftm;#~=NkUL46$R;KtU8BJOiFZ4wVE6K72 zJnvnR0+yNB2;sTZ2oH@j0FmvHXO^HN=e>zPKU(gQyj!CY@6X5@p9r#(6Iv?5xL^_k z-tOg_YT4se?WNX|Jx^4i{a{1Yi^xBjx4QA}tb;x5;?}>e{Xd3|7(+{6s=nVS-|yqL zh@=UBr2n>Wi+4Ec8RE1xZtuZ0i~TTGnH5ZSK}*iNW9bIXTn><|hpp)QyCc^o I5{3j z k@Z5Jg)BDXJ}bXo5< w_tL!?%mXqDjhaKf<#WzBO@xg6HB*E zGTD>bPAJs|s9vjn4OjOF_ndj^T)LLBqvczFJjp%%3UvhhO!-*Zk%nk@hpOlQG?pXn z%0Gu9g@T%6xc$E{WME=byJoiU2L9Nbu#Zicjr%dlC%Wq`xtyis@A}@ji_FHJg}5Lm zG10U}=)9km?tij}F5|qo !QfV*3VA*UwmW62P9lH{Kxg k{d5(%?i~RLaFO)*oPC83 zegT~gRXqXdr&AH(oyuR?3ey3N;QZKdZ8yWMSP`?j8$fm+hSJ|2u~NMyISnbNp{Xo0 zeGk(Dw#cI=buBos8x6^>uL2Ms3gre#ye}m=DN`zP%CTX_2Ks872I16{uXC2adcEct zS7?~Ky29WfGJhj|?v@dUJxM0GD{ira4JT$!;r_xFN!;~oy9rSkCl10JiecbK#6+k= zF(%=vwLn}E&5I~E7~6~NWkF;=m`gC^D$jR?-;+-UsNlkqs}M~tk|7Zx2}e4=vx`*6 zTOq#~k>2Q9Lx}6~%&|vrIgB$|9oh$W_l;F@;AcmDnhncZ9THC-*NX8D><1~V1E^!D zoEyMJjPW^+-nx*GeI{zu(Qk`%EBW5tEjZ*I{gDo6JR;_j{>8bjZGGQx+1IH*f uu#9SUV=^46~Qc$-;MS#(jzi<6J zsw;RAm@;@>jRI_c6_Of!?r>X=0)X#Yh3mehL55Pb`)0@#np$lhCNM8GGb%5SJKu;! zEoWCSwi|)PW<68@P(;0D@c}5*1%%6mYCi$B$tpS*7J<(Qh0ifJBxpmZ09Lq9e1EZb zhQCd^d6`B!szD;qR+ ;j%Tm 2el6pdQzGkyoCeE{d{?8cT#7+7!>t)Pfkruwc6bAsr=ze8e^C{Ph1xBQ;d0??t z15TK}E^c!JbqxT3+dn6Dz^!G+_sQt0m;9z%DgNa&K1TmIp6|Ms&XzD8QWpC&QM-X| za_02Fr;8EG(i-Xn7Q+aGLQdh~E7kD?U_mx!dM0o
re1A*t!3xJSZ=@Uq97c@*p_Y-L9890`#A)CPfa)R0;I5CB^yh1$a zJtR3eLekcI;L~UCafxp=pw*XX3b2g@@OJtp^zzpx`?ziX@S9j~cmhlPRc%qq{9tk6 z@a_w=BuJBm{Rz0)t-AzVT@#?byL|dqedj7JTJR5)-k@f%2dzlxRK%8XB& i@?=29)1(hRK*e?e~+PL zEWYyYJ@VJ=;-UJHOx;1Lk~e(X6M*b9Ghh!j_vY(a0BG%8{09JtehRdmH6iV;9)U<} z30;8JL_upbC_Jqz-uE5K{vw)M+=5j(UiI)_$e;8(kAL+y{oavX>|Fr>?Y5 b? z-#gjefzO|#h0lOIvuZ_S;Uy2B5LUB`=juxgbqncA&S3h}PeQ==XVx` |A&pH6*Lz0lLlq(=n1oUI6B;mwhO>@ane6@oJ9G@KXKM%#j~%66di9l) z1*TehX?p @+}NZS%)5U~t=(7a-sW&^PC)2JE~8&;a_@wAFxKFMvR+bZ~L>p9$fztljyO z!$$YV01fb1y%dS-c@d+G!^wj%(79ItaDX-*dP9Xjcjmu^fd3>6*ePOFcR3H{7~_8G zYh5W Kn8Dk7l2p ziZ}0MvtI@)=wDsN3yCBf$0tFwo$kvzd~4mFUNyR;-}>N-z2D!Zy1Sq1zy`$u@~h*O z9X>3rwa#xKskP28DO`KY*+))|8FzFXxnI2xL?h}#w`UNZ|D<+D*J3k!0O37PnmquE zR&M~X2DtBi$s$i+H7k_^6lQeE6GG|@4%l%ylhs5t{6`dsck&+trVl#LD910vE(IIY zc9{x1DQ7ZEGobT0JM-7YF<{$!_q+7V<=Z#tTfZ4eyD(Mlndk^H?JuROXtkXM7kz8Y zal^?h b{vByXg3~xGv!X1l(id`%=}W@8}Z +9PVHvqT8@7|V0wVQHQcR=tlt;4qrTlI|{2W4vwz>#t`*y&gHCSy95m0V!8 zevjif0D<^V2QZ5JUxc0#S6@5wBLKVZ@0APAhj(p#U!X{aClUj_w eRo9eeY%h{-CoJm-+EkgYgP0( z^VsQn8q)^!)`4KJwXVIHL=1ie{{wihz5h2Keq{WP1Zjftg8)U@l#T?YBLp9-Rx(H@ zO+y<2b!?!K1j)6+q7zhD06~m9ia!9IgQ0qBD0uPZWd2(10C=`O0SNN}c1z{co{lC6 zg61`Na3Ee*4j@lkn dR;Y6Z>%wMV**IIzLvv)x6{#-Z36-`=*2;P%Gr{X6c z4C5tGW|6E0-tpz@xKfJ^Tt$0bmw;1s1;A;+6A1yXwdzA%)2+yA{`G0{{w9r%Q*9<2 zrPBtze3-+DULqaa4F*2u&5741JErzo!&MI0*?O$)21IW?X=MOhWB<#PCIjr&PRayq z#b29wPm)b%SCsYNENbqX)O>$dGJjJ7w0kA|cOJ0|2>{5h$Pk~dC%eF973+S` YOLnv`WbQ^^vkuhKw{Xsl`ATN&QopmyyPrOv+18q z$j=PPOcr8%C}6e5khR!u&qsA%mg{->?!B9N{kL9+yV+NtfWqDyS7|&cjsf RW1pW`B$#7CpbYX|K&}a6BwS;T!#~na)LXllHSAnoDfJe~xJN(v+Q(QM^l5EJBjL7SA96MN< zP;n$kCZlgk ERxC 42=}2c&FR1aDyT2#!D?d^unkI(tC8F-@rN-I(>OS~8)cc1G;{T`@5}eQ1{d+5_ z*jr*;WRK7*HOtF!jUkZA;xnaJ1}KIr&wv)%V%Yk?FQ8PVS_*rs0|}}1vv2 U&!c5s&-y7}DVId0gzhBy$f3vHrI=3s&xF3+$g9Wq+o+a+0 z9a^l%XIL&ZLo*PFV+KE}zMYn=^>(r=Kven(d0!LXM1d+aKSc#leYA0`KIL^2>sCP?{pmKYnR`E*y*P7 zY}5%>>m;4t-?j2QAD+irmt+V}aDpS!7g}>&kPSvX-tnBMnAl7e>b|em7W*+w+%gKg z=U?Eq`1;OUGXUS%8E7Y8{BSO?po(PE$D1@h<7!g;nv9pvwU6a53)Oo}jG=2)s?A2K zJxs=~Iq`dwURMU_9Jk~Dl-;aOMXPOVY`Xb2v+ e>G0 z*t;dppVH j+CzeBM(%PJ$e#sq4GeC2c1 zb-UC0b+D-JZFM;%6fyzWIlI0IKk4m+hQ9h@gnt9tYp!nylU^Ro#ncCmVJ`^%_WL9f zUvn@zY$GN>19)0pj5as-5|xkkwmhfy<}Kn8XlV0(+xS710)$tE!oDqbHo)Iu??7-3 zVQ|U0k?{fqoaf}NHH08`y=27EoqmUcMn(`3 7amO8szv@8h;Tx=govT-|USWWE-U%V{ZNN3=`VjO#c}F+OK6x2z%6x|E|)L zVJ*yMIVL&oJK`X#f;Z%XZ4_Gc1(~gg;bC*N4^`MSunnWgx$%YUGPmp }6`7$=TCgk9U7RB4se_99= S|)X8=E--* z^!~aKy$}CEGfXG&yt4Ak=kwLGsiiymJuondY5n{=KvWZ7W#69wPJ35r*YW`eRqSXu zylW7^iJs>FYKn%gpie^=FNW~I094?~DNS}aH`6;Ech*~ta@8Yu{5{Bo@Xih45IL@A zZ%{x&6vZFv+Lx>BBT|fWwEr4s6Hm0x3{l958+nhXx<`$t0vX}Il_|hU^%F;oyF!?V zknSi+X%>mn;H;mw|2f=`jrsykP5^HuX!JpVSk4D6;efqmXYE5~V{r $)bHwuxDT AJsnUZ2450c zOS}{b<9V^;&-dSs#LQvF7~!QH)~ut}zXY}Pa!DdQQ z3!_z6f7vk=U#&fpBoG$91Ygz&RM@@cmevHe?w}Skpht@PO0C=041*5j-r4^=NU&*~ zfzlk0u&e8>51E5vo}+l*8#TUTNMq2vEKNCpojfL;d~Q-Ma!ypA#4KSCTO_!fFR%$f zz#ifwtR7lp6S7VjAClu-YYT{j(85X#P_U#}uH$2qs8|z^=d;QRi(z@wuutH?;6WpU zue$e(Yo>4t4&|_5?PvGMEh)ggbg!CzY-wFoNst7~ZQ {@e8q4fUhjDn&o$_Y+*l09Ik%W1m@H#D zMpceP)Y$w?(l*#?T;U+~B?gfoR1<6MbcBYDt1CCI5=8PMkY*`nT1Xp}#grynCnD+n z$t`a5@j@gz-jWoo2T3fB6l1emcq!?v>)sC|7eJ*4@Aa6&P gH9=AY?m^}*0^ z`5#ZU6pI9*u&dUNlCD)LMZ2aq`Om2Ks!-cgr?*w((c`mehmX_>?M}kA;LybnvOYHV z&&|I5Qt2}?P4BIj1PkU|WHapda 91BdNyI+K6=IjX^Ha?&14H`J#j2qo$SF}4AI zRd=f^KArtO3pRt=u4yxC#;CEkC&VSc)Iyb*qHlC&MQQ{dOOQ;*sWC}Dy!X;vK9JJa zuj@|Yp)e>yq2{nhIhrZ7?I^xb+Gk8TWT&hq