PK  &Aoa,mimetypeapplication/epub+zipPK &AiTunesMetadata.plistS artistName Oracle Corporation book-info cover-image-hash 494591612 cover-image-path OEBPS/dcommon/oracle-logo.jpg package-file-hash 625142997 publisher-unique-id E12509-01 unique-id 277605713 genre Oracle Documentation itemName Oracle® Application Express Application Migration Guide, Release 3.2 releaseDate 2009-07-27T14:04:57Z year 2009 PKXSPK &AMETA-INF/container.xml PKYuPK &AOEBPS/appmgr_overview.htm,= Overview of the Migration Process

2 Overview of the Migration Process

Whether converting from Oracle Forms or migrating from Microsoft Access, Oracle Application Express Application Migration is an effective tool to start your conversion project. This section outlines the tool's capabilities and provides important information that should be reviewed before starting a conversion project.

This section contains the following topics:

Why Migrate to Oracle Application Express?

Oracle Forms modernization projects are often undertaken to convert legacy applications to the latest Oracle Database version and enable developers to satisfy user demands for greater user interactivity and Web 2.0 capabilities.

Microsoft Access presents organizations with a myriad of manageability issues. Often simple applications grow in size and complexity and become mission critical. These same applications are often scattered throughout the network making maintenance, backups, security, and access increasingly costly and inconsistent. One key reason for migrating from Microsoft Access to an Oracle database is to consolidate the data and build common applications based on a single data source.

Migrating to Oracle Application Express provides a robust, scalable, secure application development tool that takes full advantage of the Oracle database. Oracle Application Express requires only a Web browser and no client software for development, deployment, or runtime. The resulting Web pages are rendered as hypertext mark-up language (HTML). The Oracle Application Express development environment provides many out-of-the-box features, such as interactive reports and flash charts, and enables developers to rapidly deploy Web application that greatly enhance user interactivity.

Before Starting the Conversion Process

Before starting a conversion project, it is important to learn how to build applications with Oracle Application Express. The first step is to install Oracle Application Express within an Oracle Database instance. Oracle Application Express requires an Oracle database that is release 9.2.0.3 or later. To learn more, see Oracle Application Express Installation Guide. To learn how to build applications based on existing Oracle database tables, review Oracle Database 2 Day + Application Express Developer's Guide.

The Oracle Application Express development environment utilizes wizards within a declarative environment and enables you to easily extend components using SQL and PL/SQL. You can further extend the Oracle Application Express framework by incorporating JavasScript and Asynchronous JavasScript and XML (AJAX). To learn more, see "Implementing Business Logic".

Evaluating Whether to Convert or Build an Application from Scratch

Thanks to how quickly you can build a new application with in Oracle Application Express, it may seem quicker to build an application from scratch rather than loading the source application definitions into an Oracle Application Express conversion project and then generating an initial design.

When compared with developing an application from scratch, converting an existing application provides many benefits. Once the source files for the original application are loaded into the Oracle Application Express project, all developers can review the pertinent information without needing to refer back to Oracle Forms or Microsoft Access. There is no need for developers to become familiar with the source tool development environment.

Having the forms, reports, and queries loaded into a conversion project also provides an easy way to review the functionality and application logic provided in the old application. Even if these components are not used to generate an Oracle Application Express application, you can view, copy, and reuse the underlying SQL.

When converting from Oracle Forms another major benefit is the ability to track the conversion to ensure you fully implement all the business logic within the new application. By utilizing annotations within the conversion project, you can assign priorities, resources, and add notes or tags to any component. Completion progress can also be tracked to provide low-level project management capabilities.

Understanding What Oracle Application Express Application Conversion is Not

When you convert an application to Oracle Application Express, you do not simply load the source files, press a few buttons, and magically generate a completed application. The conversion capabilities are designed to provide an initial design that you then must enhance and expand to fully replicate the original application. The generated applications use the same Create Application wizard that you use to build applications based on existing Oracle tables or views. However, instead of needing to specify the generated pages, these are determined from the information loaded into the conversion project. For more information on how various source components are generated, see "Oracle Forms Generation Capabilities and Workarounds".

Once you have generated the initial design, you can take full advantage of the rapid application development capabilities available in Oracle Application Express to enhance the generated pages. Built-in wizards also enable you to quickly expand your new application by adding new pages and links as necessary.

Key Differences with Oracle Application Express

Understanding some of the key differences between Oracle Application Express and Oracle Forms or Microsoft Access will greatly assist you in redeveloping your applications

Topics in this section include:

Stateless Web Applications

Oracle Application Express does not maintain a constant state between the client (that is, the Web browser) and the database, but performs stateless transactions. A database session is only utilized when requesting or submitting a page. Because Oracle Application Express is stateless between the start and the end of a logical transaction, (for example, when updating a record) it is imperative to use optimistic locking rather than pessimistic locking.

Oracle Forms and Microsoft Access use pessimistic locking whereby the record is locked when a user requests a record for update. This lock is maintained until the record is completed (or committed) or canceled (or rolled back). One of the key reasons for not using pessimistic locking within a stateless Web application is that if a user closes their Web browser or looses their connection in the middle of a transaction, the record would remain locked.

Once form pages are generated by the Create Application or Create Page wizards, Automatic Row Fetch and Automatic Row Processing processes are generated which incorporate the MD5 checksum validation to enforce the optimistic locking. Before the record is sent to the database to be updated or deleted the MD5 initially created is compared to the MD5 value of the current database record to ensure they are the same. If they differ then the database record has been updated since it was queried and an error displays to the user.

One consequence of an HTML application is that a rendered page does not perform actions such as validations or hiding and showing fields as the user interacts with the page. Validations are performed when the user submits the page for processing. However, you can change this default behavior by utilizing JavaScript and AJAX. The time needed to load a page is influenced by the transmission speed and the speed with which the Web browser renders the page. Therefore, it is not advisable to attempt to completely replicate the client-side interactivity within a HTML application as the weight (or size) of the page will adversely affect page performance. As a best practice, only implement critical client-side actions.

Evaluating User Interface Design

Oracle Forms and Microsoft Access use different underlying technologies to present screens to users. In contrast, Oracle HTTP Server renders HTML through a Web browser. As a consequence the design of screens and items is markedly different.

When thinking about screen design, some screen layouts commonly used in Oracle Forms are not readily reproducible in Oracle Application Express. Oracle Application Express renders a complete HTML page and does not support the concept of windows and canvases. Oracle Application Express also has a limitation of one tabular form per page. Therefore, it is important to understand that it may be difficult to exactly reproduce the screen layouts of the source application. This also presents opportunities to redesign some of the key business processes and potentially streamline them or include addition paths to provide greater flexibility.

For example, a common layout in Oracle Forms, such as a master-detail-detail form, can be redeployed using a master form with reports for each of the detail views that link to separate pages for editing these details. These same detail pages can also be accessed from elsewhere in the application very easily.

Oracle Forms often uses the same screen for both querying records and then updating a single record at a time. This is achieved by performing a query directly on the form used for updating a single record. Oracle Application Express does not support the notion of Enter Query and Execute Query. Therefore, the conversion project generates an interactive report where records can be queried with a link to a form for editing a single record.

Oracle Application Express does not support coordinate positioning of fields on a page out-of-the-box, but uses HTML tables to set out elements such as labels and items. Items can be specified with attributes (such as New Line, New Field, Column Span, and Row Span) to determine how items are located within the HTML table.

About Business Logic Replication

One of the major facets of converting from either Oracle Forms or Microsoft Access is replicating the business user interface specific logic. It is important to separate business logic from logic for manipulating the user interface. Given the differences in user interface implementation, the majority of the associated logic from the original application will no longer be relevant. Oracle Application Express uses processes, computations, and validations to implement business logic. Some logic can also be replicated by utilizing default and source values within the Oracle Application Express item definition.

The key to ensuring your new application performs correctly is to understand how and when each of these functions operates. The ability to add conditional logic to any component within Oracle Application Express (including regions, items, branches, processes, computations and validations) also provides extensive flexibility when replicating the original business logic. For more information, see "Implementing Business Logic".

Creating an Oracle Application Express Migration Project

In an Oracle Forms conversion project, the data structures are already defined in an Oracle Database and do not necessarily need to be migrated. However, with Microsoft Access the data structures and data must first be migrated across to Oracle using SQL Developer. For more information on how to migrate data structures "Migrating a Microsoft Access Application".

Once the data structures are correctly implemented into a schema accessible to Oracle Application Express, then the basic process for conducting a conversion is to load the source application files into a project. The project is designed to show all the applicable components and provide the ability to generate an initial application design. After reviewing the project components and selecting the valid screens, reports, and items to be included, you can generate an Oracle Application Express application. With both a Forms Conversion project and an Access Migration project, some components loaded into a project cannot be generated. To learn more about generation capabilities and workarounds, see "Oracle Forms Generation Capabilities and Workarounds".

PKe1=,=PK &AOEBPS/cover.htmO Cover

Oracle Corporation

PK[pTOPK &AOEBPS/title.htmh Oracle Application Express Application Migration Guide, Release 3.2

Oracle® Application Express

Application Migration Guide

Release 3.2

E12509-01

July 2009


Oracle Application Express Application Migration Guide, Release 3.2

E12509-01

Copyright © 2003, 2009, Oracle and/or its affiliates. All rights reserved.

Primary Author: Terri Jennings

Contributors: Marco Adelfio, Drue Baker, Carl Backstrom, Christina Cho, Michael Hichwa, Christopher Jones, Joel Kallman, Sharon Kennedy, and Anne Romano

This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.

The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.

If this software or related documentation is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable:

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle USA, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

This software is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications which may create a risk of personal injury. If you use this software in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure the safe use of this software. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software in dangerous applications.

Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

This software and documentation may provide access to or information on content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services.

PKVnmhPK &AOEBPS/appmgr.htm Migrating a Microsoft Access Application

3 Migrating a Microsoft Access Application

This section describes the steps to migrate applications from Microsoft Access to Oracle Application Express.

This section contains the following topics:

How to Migrate a Microsoft Access Application

Before You Begin

Read "Preparation Checklist for Migrating Microsoft Access Applications".

To migrate applications from Microsoft Access to Oracle Application Express, you must perform the steps described in this section. This graphic outlines the entire process:

Description of acmg_howto.gif follows
Description of the illustration acmg_howto.gif

The migration process consists of the following steps:

Step 1: Export Microsoft Access Metadata

Step 2: Migrate the Microsoft Access Database to Oracle

Step 3: Create a Workspace and Add Oracle Application Express Users

Step 4: Create a Migration Project

Step 5: Review Your Retrieved Objects

Step 6: Generate the Oracle Application Express Application


Important:

You must follow the steps in the exact sequence presented in this section.

Step 1: Export Microsoft Access Metadata

To export your metadata from Microsoft Access, download the correct version of the Exporter tool, as explained in this section. Then, run the Exporter and extract the metadata from the Microsoft Access .mdb file. The metadata contains the necessary database and application schema information.

The export process creates two output files:

Downloading the Exporter Tool


Note:

Follow the instructions in this section if you are downloading the Exporter tool from Oracle Application Express release 3.0 or later. Alternately, you skip the following task and access the Exporter directly from Oracle SQL Developer using the Migration menu.

To download the Exporter tool for Microsoft Access:

  1. Log in to Oracle Application Express 3.0.

  2. Under Migrations on the right side of the Workspace home page, click Application Migrations.

  3. Under Tasks on the right side of the page, click Download Exporter for Microsoft Access.

  4. In the Download column, click the zip file that corresponds to your version of Microsoft Access. For example, download the omwb2003.zip file if you are using Microsoft Access 2003.

  5. Save the file.

  6. Unzip the file. You must replace the following files with the updated versions in the msaccess_exporter directory where you unzipped Oracle Migration Workbench:

    • schema.dtd file

    • Exporter tool file: omwb<version>.mde

    • online help file: omwb.chm

    Be sure to invoke the export from this directory.

Exporting Your Metadata

To export your metadata, follow the instructions found in the help file for the Exporter tool. To find the instructions, do one of the following:

The instructions appear in the topic called Exporter Overview.

Step 2: Migrate the Microsoft Access Database to Oracle

To migrate the Microsoft Access database to Oracle:

  1. Start Oracle SQL Developer version 1.2.0 or later. For example:

    1. Create an Oracle user named MIGRATIONS with the default tablespace USER and temporary tablespace TEMP and grant it at least RESOURCE, CREATE SESSION, and CREATE VIEW privileges.

    2. Create a database connection named Migration_Repository that connects to the MIGRATIONS user.

    3. Right-click the connection, select Migration_Repository, and then select Migration Repository and then Associate Migration Repository to create the repository.

  2. Load the database metadata (.xml file) created in step 1. Select Migration and then Capture Microsoft Access Exported XML.

    This captures the schema and creates a Captured Model of the Microsoft Access database.

  3. Convert the captured database schema to Oracle. Right-click Captured Model and select Convert to Oracle Model.

  4. Generate the migrated Oracle database schema. Right-click Converted Model and select Generate.

    The generated DDL statements should execute against your Oracle database instance, to generate the migrated schema objects.

For more information about Oracle SQL Developer Migration Workbench, see:

http://www.oracle.com/technology/tech/migration//workbench/index_sqldev_omwb.html

Verifying If Generated DDL Executes Against the Appropriate Instance

When using Oracle SQL Developer Migration Workbench, you must verify that the generated DDL statements are executed against the same instance where Oracle Application Express 3.0 or later is installed. If you select a Least Privilege Schema Migration, the migrated objects can be created in an existing schema on your database instance. Otherwise, a schema of the same name as the captured database (for example, Northwind) is created on your database instance.The migrated Oracle database schema objects must be in the same instance where Oracle Application Express 3.0 is installed. If they are not, you will not be able to complete the next step.

Step 3: Create a Workspace and Add Oracle Application Express Users

A workspace is a virtual private database allowing multiple users to work within the same Oracle Application Express installation while keeping their objects, data and applications private. Each workspace has a unique ID and name.

An Oracle Application Express administrator can create a workspace manually within Oracle Application Express Administration Services or have users submit requests. Oracle Application Express Administration Services is a separate application for managing an entire Oracle Application Express instance. See "Creating Workspaces" and "Managing Workspace Requests" in Oracle Application Express Administration Guide.


See Also:

Oracle Database 2 Day + Application Express Developer's Guide if you are new to Oracle Application Express

Topics in this section include:

Creating a Workspace Manually

To create an Oracle Application Express workspace manually:

  1. Log in to Oracle Application Express Administration Services. Oracle Application Express Administration Services is a separate application for managing an entire Oracle Application Express instance. You log in using the ADMIN account and password created or reset during the installation process.

    1. In a Web browser, navigate to the Oracle Application Express Administration Services application. By default, Oracle Application Express Administration Services installs to the following location:

      • If your setup uses the embedded PL/SQL gateway, go to:

        http://hostname:port/apex/apex_admin
        

        Where:

        hostname is the name of the system where Oracle XML DB HTTP Server is installed.

        port is the port number assigned to Oracle XML DB HTTP Server. In a default installation, this number is 8080.

        apex is the database access descriptor (DAD) defined in the configuration file.

      • If your setup uses Apache and mod_plsql, go to:

        http://hostname:port/pls/apex/apex_admin
        

        Where:

        hostname is the name of the system where Oracle HTTP Server is installed.

        port is the port number assigned to Oracle HTTP Server. In a default installation, this number is 7777.

        pls is the indicator to use the mod_plsql cartridge.

        apex is the database access descriptor (DAD) defined in the mod_plsql configuration file.

    2. On the Login page:

      • In Username, enter admin.

      • In Password, enter the Oracle Application Express administrator account password you specified when you installed Oracle Application Express.

      • Click Login.


    See Also:

    See "Logging in to Oracle Application Express Administration Services" in Oracle Application Express Administration Guide.

    Next, create a workspace.

  2. Click Manage Workspaces.

  3. Under Manage Workspaces, click Create Workspace.

    The Create Workspace Wizard appears.

  4. For Identify Workspace, enter a workspace name and description and click Next.

  5. For Identify Schema, select the Oracle Forms application schema.

    1. For Re-use existing schema, select Yes.

    2. Select a schema from the list.

    3. Click Next.

  6. For Identify Administrator, enter the Workspace administrator information and click Next.

  7. Confirm your selections and click Create.

Creating Oracle Application Express Users

To create an Oracle Application Express user account:

  1. Log in to Oracle Application Express Administration Services. See "Logging in to Oracle Application Express Administration Services" in Oracle Application Express Administration Guide.

  2. Click Manage Workspaces.

  3. Under Manage Workspaces, click Manage Developers and Users.

    The Manage Developers and Users page appears.

  4. Click Create.

    The Create/Edit User page appears.

  5. Under User Attributes, enter the appropriate information. Fields marked with an asterisk are required.


    Tip:

    To learn more about a specific attribute, click the item label. When Help is available, the item label changes to red when you pass your cursor over it and the cursor changes to an arrow and question mark.

  6. Under Password, type a case-sensitive password for this account.

    If your organization has set up a password policy, be sure the password meets the requirements.

  7. Under Developer Privileges, select the appropriate privileges:

    • User is a developer - To add this user as a developer, select Yes. For end users, select No.

      Developers can create and modify applications and database objects as well as view developer activity, session state, workspace activity, application, and schema reports.

    • User is a workspace administrator - To add this user as a Workspace administrator, select Yes. For developers or end users, select No.

      In addition to having developer privileges, workspace administrators can create and edit user accounts, manage groups, alter passwords of users within the same workspace, and manage development services.

  8. Under Account Control, specify the following:

    • Account Availability - Select Unlocked to enable a user to log in to this account.

    • Require Change of Password on First Use - Select Yes to require the user to change the password immediately after logging in with the current, temporary password. Otherwise, select No.

  9. Click Create User or Create and Create Another.

Logging in to Your Oracle Application Express Workspace

Once you create a workspace, you must log in to it using your login credentials (that is, the workspace name, user name, and password).


See Also:

See "Creating Workspaces" and "Managing Workspace Requests" in Oracle Application Express Administration Guide

To log in to a workspace:

  1. In a Web browser, navigate to the Oracle Application Express Login page. By default, Oracle Application Express installs to the following location:

    • If your setup uses the embedded PL/SQL gateway, go to:

      http://hostname:port/apex
      

      Where:

      • hostname is the name of the system where Oracle XML DB HTTP Server is installed.

      • port is the port number assigned to Oracle XML DB HTTP Server. In a default installation, this number is 8080.

      • apex is the database access descriptor (DAD) defined in the configuration file.

        For users who have upgraded from earlier releases, or who have a custom configuration, this value may be htmldb or something else. Verify your DAD with your Oracle Application Express administrator.

    • If your setup uses Oracle HTTP Server (Apache) and mod_plsql, go to:

      http://hostname:port/pls/apex
      

      Where:

      • hostname is the name of the system where Oracle HTTP Server is installed.

      • port is the port number assigned to Oracle HTTP Server. In a default installation, this number is 7777. You can find information about your Oracle HTTP Server installation's port number from either of the following files:

        ORACLE_BASE\ORACLE_HOME\install\portlist.ini
        ORACLE_BASE\ORACLE_HTTPSERVER_HOME\Apache\Apache\conf\httpd.conf
        

        Be aware that if you change a port number, it is not updated in the portlist.ini file. You can only rely on this file immediately after installation.

      • pls is the indicator to use the mod_plsql cartridge.

      • apex is the database access descriptor (DAD) defined in the mod_plsql configuration file.

        For users who have upgraded from earlier releases, or who have a custom configuration, this value may be htmldb or something else. Verify your DAD with your Oracle Application Express administrator.

    The Login page appears.

  2. Under Login, enter the following:

    • In the Workspace field, enter the name of your workspace.

    • In the Username field, enter your user name.

    • In the Password field, enter your case-sensitive password.

  3. Click Login.

    Note that, depending on your setup, you might be required to change your password when you log in for the first time.

Step 4: Create a Migration Project

To create a migration project:

  1. Log in to Oracle Application Express.

    Make sure you log in to the workspace you created for your migration project (Step 3).

  2. Under Migrations on the right side of the Workspace home page, click the Application Migrations link.

  3. On the Application Migrations page, click Create Project.

    The Create Migration Project wizard appears. Note that the steps included in the wizard appear in a flowchart on the left of the page.

  4. Enter the project details:

    1. Project Name - Enter a unique name. You might want to use the same name as the Microsoft Access .mdb file you used to create the project.

    2. Type - Select Access.

    3. Description - Enter a meaningful description for this project. You might want to describe the Microsoft Access .mdb file that you used to create the project.

    4. Migration Export File - Click Browse and select the .sql file created by the Exporter tool for Microsoft Access.

    5. Schema - Select the schema.

      The default schema is the schema associated with your workspace. If multiple schemas are associated with your workspace, all associated schemas appear in the select list, arranged in alphabetical order. When this situation exists, select the schema associated with the SQL script you want to upload.

    6. Click Next.

  5. Review the project details, and click Finish.

    The project page appears.

About the Project Page

The project page initially shows a high-level overview of the Microsoft Access objects retrieved from your Microsoft Access database.

Description of acmg_prj_pg.gif follows
Description of the illustration acmg_prj_pg.gif

Specifically, the project page shows the status of these objects in your database:

  • tables

  • queries (now oracle views)

  • forms

  • reports

Additionally, for reference purposes only, the project page shows:

  • databases

  • modules

  • pages

Note that your project might not include all object types. The project page lists only object types that exist in your database.

After you generate applications from this migration project, an application list is created on the project page. To review the list, click Applications. This opens the list box where you can review application information or run an application.

Description of acmg_prj_pga.gif follows
Description of the illustration acmg_prj_pga.gif

Step 5: Review Your Retrieved Objects

Next, you want to select the objects to include in the migration. The initial list consists of the Microsoft Access application metadata that is retrieved, both valid and invalid.

To include an object, it must have a status of Valid. By default, all objects with a Valid status are selected. From within Application Migration, you can fix objects identified as invalid so that they can be included. Since the Application Migration also identifies tables without primary keys and objects without user interface defaults, you can correct those situations to maximize application design recovery.


Tip:

Extensive Oracle documentation is available for broadening your knowledge of database concepts and objects. For example, to learn more about primary keys and constraints, see Oracle Database Concepts or Oracle Database Application Developer's Guide - Fundamentals, which you can download from:

http://www.oracle.com/technology/documentation/index.html


Topics in this section include:

Reviewing Retrieved Tables

Next, review the Oracle tables retrieved from the Microsoft Access database. Application Migration identifies invalid tables without primary keys as well as those without user interface defaults, which you can add before migrating.

After you update the tables, select the ones you want to include in the migration. If you do not include a table, all forms and reports based on the table are excluded from the migration.

To review retrieved tables:

  1. From the project page, click Tables.

    The Tables page appears, showing the status of the objects ready for migration.

    Description of acmg_tbl_pg.gif follows
    Description of the illustration acmg_tbl_pg.gif

    For each Microsoft Access table, the Tables page shows:

    • Oracle Table - The corresponding Oracle table, which defaults to the Microsoft Access table name in all capital letters.

      Note that the name might also differ from the original one because of the collision management facility in Oracle Migration Workbench. For information about naming guidelines and restrictions, click Help in Oracle Migration Workbench and go to the Frequently Asked Questions section.

      If the Microsoft Access object was not successfully migrated to Oracle, then this field will not have a corresponding Oracle table name. Instead, it will contain a link to a page where you can create a corresponding Oracle table.

    • Primary Key - Indicates if a primary key exists for the table.

      A table without a primary key is considered invalid in Application Migration. You can create a primary key at this point. All tables you want to migrate vshould have a primary key.

    • Foreign Key - Indicates if a foreign key exists for the table.

      If you know a relationship exists between two tables, you should create a foreign key. You can do this in Object Browser by creating a Foreign Key Constraint. For more information, see Table 16-1 in "Browsing a Table" Oracle Application Express Application Builder User's Guide.

    • UI Defaults - Indicates if user interface defaults are set for the table.

      User interface defaults are used by Oracle Application Express to populate initial values for region and item properties. Using user interface defaults provides consistency across multiple applications or across multiple pages in an application.

    • Status - Table status as either Valid or Invalid.

      Only valid tables can be included in the migration.

  2. To create a table:

    1. On the Tables page, click the link in the Oracle Table column for the table you want to create.

      The Object Browser opens.

    2. Click the Create button.

    3. From the list of object types, select Table.

    4. Follow the on-screen instructions.

  3. To add a primary key:

    1. On the Tables page, click the Oracle table name.

    2. In the Tasks list on the right, click Create Primary Key.

    3. For Constraint Details, fill in the information.

      Description of acmg_cr_prim_key.gif follows
      Description of the illustration acmg_cr_prim_key.gif


      Tip:

      To review the list of existing columns or constraints, click the Existing Columns or Existing Constraints links.

    4. Click Next.

    5. Confirm the information and click Finish.

  4. To add an index:

    1. On the Tables page, click the Oracle table name.

    2. In the Tasks list on the right, click Create Index.

    3. Select the type of index you want to create on this table.

      For indexing NUMBER, VARCHAR, and DATE, select Normal. For indexing CLOB columns, select Text.

      Description of acmg_cr_index.gif follows
      Description of the illustration acmg_cr_index.gif

    4. Click Next.

    5. For Index Definition, fill in the information.

      The following graphic shows the fields to fill out if you selected Normal as the type of index.

      Description of acmg_cr_index_norm.gif follows
      Description of the illustration acmg_cr_index_norm.gif


      Tip:

      To review the list of existing table indexes or columns, click the Table Indexes or Table Columns links.

    6. Click Next.

    7. Confirm the information and click Finish.

  5. To set user interface defaults:

    1. On the Tables page, click the Oracle table name.

    2. In the Tasks list on the right, click UI Defaults.

    3. On the UI Defaults page, click Create Defaults.

      The Table Defaults page appears, listing column information as it will appear in forms and reports. Note that you are now working within Application Builder, the component of Oracle Application Express where you can build and modify your applications.

    4. To edit the information, click Grid Edit. You can update the column label, change the sequence the columns will appear by default, and so on.

    5. Click Apply Changes to save your updates.

  6. To include tables in the migration, select them in the left column.

  7. Click Apply Changes to save your selections.

Reviewing Retrieved Queries

Next, review the queries retrieved from the Microsoft Access export. Application Migration identifies invalid queries as well as those without user interface defaults, which you can set before migration.

After you update the views, select the ones you want to include in the migration. If you do not include a query, any forms or reports based on the query are excluded from the migration.

To review retrieved queries:

  1. From the project page, click Queries.

    The Queries page appears, showing the status of the objects ready for migration.

    Description of acmg_qry_pg.gif follows
    Description of the illustration acmg_qry_pg.gif

    For each Microsoft Access query, the Queries page shows:

    • Oracle View - The corresponding Oracle view, which defaults to the Microsoft Access query name in all capital letters.

      If the Microsoft Access object was not successfully migrated to Oracle, then this field will not have a corresponding Oracle view name. Instead, it will contain a link to a page where you can create a corresponding Oracle view.

    • Status - Query status as either Valid or Invalid.

      Only valid queries can be included in the migration.

    • UI Defaults - Indicates if user interface defaults are set for the query.

      User interface defaults are used by Oracle Application Express to populate initial values for region and item properties. Using user interface defaults provides consistency across multiple applications or across multiple pages in an application.

  2. To run a bulk process that attempts to compile all invalid queries, click Attempt to compile invalid queries.

    Using this option can validate some queries that show a status of invalid when initially migrated.

  3. To create a view:

    1. On the Queries page, click the link in the Oracle View column for the view you want to create.

      The Object Browser opens.

    2. Click the Create button.

    3. From the list of object types, select View.

    4. Follow the on-screen instructions.

  4. To edit a query:

    1. On the Queries page, click the Oracle view you want to edit.

    2. Click Compile to find the invalid part of the query.

      The Microsoft Access Query syntax appears in the edit window. It may require some modification to make it valid Oracle syntax.

    3. Click Access Query to review the initial query and compare it to the converted query.

    4. Click Edit.

    5. Update the query and recompile it.

    6. When it is validated, click the Queries breadcrumb.

    7. To include this validated query, select it in the left column on the Queries page and click Apply Changes.

  5. To set user interface defaults:

    1. On the Queries page, click the Oracle view.

    2. In the Tasks list on the right, click UI Defaults.

    3. On the UI Defaults page, click Create Defaults.

      The Table Defaults page appears, listing column information as it will appear in forms and reports. Note that you are now working in Application Builder, the component within Oracle Application Express where you build and modify applications.

    4. To edit the information, click the Grid Edit button.

      You can update the column label, change the sequence the columns will appear by default, and so on.

    5. Click Apply Changes to save your updates.

    6. To return to the Application Migration, click the Home breadcrumb. Then, select the Application Migrations link on the right, select your migration project, and click Queries.

  6. To include queries in the migration, select them in the left column.

  7. Click Apply Changes to save your selections.

Reviewing Retrieved Forms

Next, review the forms retrieved from the Microsoft Access export. Application Migration identifies invalid forms and lists additional information, such as the form's source type and source name.

For valid forms with a source type of table, you can select the type of object you want the form to become within Oracle Application Express: form (default), report and form, or tabular form.

Microsoft Access forms based on a query are migrated to Oracle Application Express forms. Microsoft Access forms based on a SQL query are migrated to Oracle Application Express reports.

After you update the forms, select the ones you want to include in the migration.

To review retrieved forms:

  1. From the project page, click Forms.

    The Forms page appears, showing the status of the objects ready for migration.

    Description of acmg_frm_pg.gif follows
    Description of the illustration acmg_frm_pg.gif

    For each Microsoft Access form, the Forms page shows the following information, if available:

    • Source type:

      • Table

      • Query - The Oracle view that was migrated from the Microsoft Access query.

      • SQL Query - The original Microsoft Access SQL query that the Microsoft Access form is based on. Note that this query has not been parsed by the Oracle Migration Workbench. Therefore, you might must edit it to make it valid Oracle SQL syntax.

      • Nothing - The form has no underlying source type.

    • Source name - The Oracle table or view name if the source type is a table or query.

    • Status - Form status as Valid or Invalid. The source of the form must have a status of Valid before you can select it for migration.

      A form's status is based on two factors: status of its underlying source object and inclusion of the source object in the migration. Specifically, a form has a status of valid if either one of these situations exists:

      • Its Source Type object (table, query, or SQL query) is valid, and it has been included in the migration. Its check box is enabled and can be selected.

      • Its Source type object has a status of valid, but the source object was not included in the migration. Its check box is disabled.

      A form has a status of invalid if either one of these situations exists:

      • No Source Type is listed. Its check box is disabled.

      • Its Source Type object (table, query, or SQL query) is invalid. Its check box is disabled.

    • Startup form - Identifies the form that displays when you open your Microsoft Access database.

    • Parent form - Indicates the form/subform relationship that existed in your Microsoft Access database. For example, the CallListSub form shows Contacts as its Parent Form.

    • Migrate to: Form, Tabular Form, or Report and Form - The select list appears if the source type is a valid table.

  2. To run a bulk process that attempts to compile all invalid SQL queries, click Attempt to compile invalid SQL queries.

    Using this option can validate some SQL queries that show a status of invalid. Note that SQL queries from Microsoft Access forms are not loaded into the Oracle Migration Workbench, and are therefore not parsed.

  3. To edit a SQL query:

    1. On the Forms page, click the SQL Query you want to edit.

    2. Click Validate to find the invalid part of the SQL query.

    3. Click Edit.

    4. Update the query and validate it.

    5. When it is validated, click the project name breadcrumb.

    6. To include the validated query, click Forms on the project page to go to the Forms page. Then select the newly validated query in the left column and click Apply Changes.

  4. To edit a query:

    1. On the Forms page, click Query for the form you want to edit.

    2. Click Compile to find the invalid part of the query.

    3. Click Access Query to review the initial query and compare it to the converted query.

    4. Click Edit.

    5. Update the query and recompile it.

    6. When it is validated, click the Queries breadcrumb.

    7. To include this validated query, select it in the left column on the Queries page and click Apply Changes.

  5. To review details about a form, click the link in the Access Form column.

  6. To include forms in the migration, select them in the left column.

  7. Click Apply Changes to save your selections.

Reviewing Retrieved Reports

Next, review the reports retrieved from the Microsoft Access export. Application Migration identifies invalid reports and lists additional information, such as the report's source type and source name.

After you update the reports, select the ones you want to include in the migration. To include a report, the source of the report must have a status of Valid.

To review retrieved reports:

  1. From the project page, click Reports.

    The Reports page appears, showing the status of the objects ready for migration.

    Description of acmg_rpt_pg.gif follows
    Description of the illustration acmg_rpt_pg.gif

    For each Microsoft Access report, the Reports page shows the following information, if available:

    • Source type:

      • Table

      • Query - The Oracle view that was migrated from the Microsoft Access query.

      • SQL Query - The original Microsoft Access SQL query that the Microsoft Access form is based on. Note that this query has not been parsed by the Oracle Migration Workbench. Therefore, you might must edit it to make it valid Oracle SQL syntax.

      • Nothing - The report has no underlying source type.

    • Source name

    • Status of the report: Valid or Invalid. The source of the report must have a status of Valid before you can select it for migration.

      A report's status is based on two factors: status of its underlying source object and inclusion of the source object in the migration. Specifically, a report has a status of valid if either one of these situations exists:

      • Its Source Type object (table, query, or SQL query) is valid, and it has been included in the migration. Its check box is enabled and can be selected.

      • Its Source type object has a status of valid, but the source object was not included in the migration. Its check box is disabled.

      A report has a status of invalid if either one of these situations exists:

      • No Source Type is listed. Its check box is disabled.

      • Its Source Type object (table, query, or SQL query) is invalid. Its check box is disabled.

  2. To run a bulk process that attempts to compile all invalid SQL queries, click Attempt to compile invalid SQL queries.

    Using this option can validate some SQL queries that show a status of invalid. Note that SQL queries from Microsoft Access forms are not loaded into the Oracle Migration Workbench and are therefore not parsed.

  3. To edit a SQL query:

    1. On the Reports page, click the SQL Query link you want to edit.

    2. Click Validate to find the invalid part of the SQL query.

    3. Click Edit.

    4. Update the query and validate it.

    5. When it is validated, click the project name breadcrumb.

    6. To include the validated query, click Reports on the project page to go to the Reports page. Then select the newly validated SQL query in the left column and click Apply Changes.

  4. To edit a query:

    1. On the Reports page, click Query for the report you want to edit.

    2. Click Compile to find the invalid part of the query.

    3. Click Access Query to review the initial query and compare it to the converted query.

    4. Click Edit.

    5. Update the query and recompile it.

    6. When it is validated, click the Queries breadcrumb.

    7. To include this validated query, select it in the left column on the Queries page and click Apply Changes.

  5. To review details about a report, click the link in the Access Report column.

  6. To include reports in the migration, select them in the left column.

  7. Click Apply Changes to save your selections.

Reviewing Database, Module, and Pages Information

From the project page, you can drill down to see information about the database, modules, and pages for the migration project.

  • Database - Displays summary information about the Microsoft Access database, including the full path and size of the .mdb file.

  • Modules - Displays the Visual Basic Code, enabling you to extract embedded SQL statements for you to use or edit in your Oracle Application Express application.

  • Pages - Displays information for reference purposes.

Step 6: Generate the Oracle Application Express Application

After validating and updating objects, you now need to generate the application in Oracle Application Express. You can create an application based on valid forms and reports, or a maintenance application based on valid tables and views.

When creating an application, a home page is defined by default. You have the option to create additional blank pages so that you can introduce further navigation possibilities.

You can then choose which user interface theme your application should be based on. By default, the application uses one level of tabs.

As a shortcut, you can also set some application defaults. These defaults are used whenever you create new applications.

Setting Up Application Defaults

To set up application defaults (optional):

  1. On the right side of the project page, click Generate Application Defaults in the Tasks list.

  2. Select the options you want to use as defaults.

    For information, click Help or click the item label. Clicking the item label opens a separate window describing the item and its options.

  3. Click Apply Changes.

    The project page appears.

Generating Applications

To generate either type of application:

  1. On the right side of the project page, click one of the following in the Tasks list:

    • Generate Application - This option generates an application based on the forms and reports you selected to include.

    • Generate Maintenance Application - This option generates an application based on the tables and queries you selected to include.

  2. In the Selected Application Objects section, you can customize specific pages.

    For example:

    • To rename a page, click the page link and enter the new name on the New Page Definition page that appears.

    • To select the type of navigation on the application's home page, click the Home Page link.

      On the New Page Definition page that appears, select Vertical Unordered List with Bullets, Vertical Images List or Horizontal Images List for Navigation.

    • To display an image on a parent page, click the page link.

      On the New Page Definition page that appears, go to the Page Icon field and select the image you want to appear on that page. You can either select an image from the select list or click the Find icon (flashlight) to open a page of options.

      Repeat this step for each parent page. If you do not explicitly select an image for a page, the default image appears for that page.

      Note that for the image to appear in your application, you must have selected either Vertical Images List or Horizontal Images List for the Home page navigation.

  3. To add a blank page to the application, scroll down to the Add Page section and click Add Page.

    Note that the new page appears at the bottom of the list in the Selected Application Objects section.

  4. Click Next to select a theme for the application, or click Create to skip the theme selection step.

    If you skip the theme step, the default is used.

  5. Select a theme for the application and click Next.

    A theme is a collection of templates that define the layout and style of an application, including buttons and pages.

  6. Confirm your selections and click Create.

  7. To preview the application, click Run Application.

  8. Log in using your Oracle Application Express workspace credentials.

    Your application now appears as a separate application in Oracle Application Express.

  9. To customize your application, scroll down to the Developer toolbar and click Edit Application.

    You might want to do the following customizations immediately after you generate your application:

    • Rename the application. Each application has a unique ID, but the migration project name becomes the application name by default. To more easily identify an application, you might want to change its name to something more meaningful by editing the application attributes.

    • Change the authentication scheme. By default, the authentication scheme is Application Express authentication. You can change this by editing the application attributes.


    See Also:

    For instructions on editing application attributes, adding pages, deploying your application, and so on, see Oracle Application Express Application Builder User's Guide or the Oracle Application Express online Help.

Deleting a Migration Project

When you delete a migration project, you delete only the metadata associated with the migration project. Deleting a migration project does not delete or impact applications you have generated from the project or any objects, such as tables or views, in the schemas associated with your workspaces.

To delete a migration project:

  1. Log in to Oracle Application Express.

  2. Under Migrations on the right side of the Workspace home page, click the Application Migrations link.

  3. On the Application Migrations page, click the project you want to delete.

  4. On the project page, click Delete Project from the Tasks list on the right.

  5. Click the Delete Project button and confirm the deletion.

PK۸-PK &AOEBPS/preface.htm8v Preface

Preface

Oracle Application Express is a hosted declarative development environment for developing and deploying database-centric Web applications. Oracle Application Express turns a single Oracle database into a shared service by enabling multiple workgroups to build and access applications as if they were running in separate databases.

Oracle Application Express Application Migration Guide describes how to convert applications from either Microsoft Access or Oracle Forms to Oracle Application Express.

This preface contains these topics:

Topic Overview

This document contains the following chapters:

TitleDescription
Getting Started with Application Migrations Workshop
Provides an overview of the steps needed to migrate a Microsoft Access application or Oracle Forms application and generate an Oracle Application Express application.
Overview of the Migration Process
Explains how specific types of logic is handled in Oracle Application Express.
Migrating a Microsoft Access Application
Explains how to migrate a Microsoft Access and generate an Oracle Application Express application.
Converting an Oracle Forms Application
Explains how to migrate an Oracle Forms application and generate an Oracle Application Express application.
Oracle Forms Generation Capabilities and Workarounds
Describe how objects are generated during the conversion process, or alternatively how the same functionality can be implemented post-generation if necessary.

Audience

Oracle Application Express Migration Guide is intended for application developers who are building database-centric Web applications using Oracle Application Express. The guide describes how to migrate a Microsoft Access application and generate an Oracle Application Express applications

To use this guide, you must have a general understanding of relational database concepts and an understanding of the operating system environment under which you are running Oracle Application Express.

Documentation Accessibility

Our goal is to make Oracle products, services, and supporting documentation accessible to all users, including users that are disabled. To that end, our documentation includes features that make information available to users of assistive technology. This documentation is available in HTML format, and contains markup to facilitate access by the disabled community. Accessibility standards will continue to evolve over time, and Oracle is actively engaged with other market-leading technology vendors to address technical obstacles so that our documentation can be accessible to all of our customers. For more information, visit the Oracle Accessibility Program Web site at http://www.oracle.com/accessibility/.

Accessibility of Code Examples in Documentation

Screen readers may not always correctly read the code examples in this document. The conventions for writing code require that closing braces should appear on an otherwise empty line; however, some screen readers may not always read a line of text that consists solely of a bracket or brace.

Accessibility of Links to External Web Sites in Documentation

This documentation may contain links to Web sites of other companies or organizations that Oracle does not own or control. Oracle neither evaluates nor makes any representations regarding the accessibility of these Web sites.

Deaf/Hard of Hearing Access to Oracle Support Services

To reach Oracle Support Services, use a telecommunications relay service (TRS) to call Oracle Support at 1.800.223.1711. An Oracle Support Services engineer will handle technical issues and provide customer support according to the Oracle service request process. Information about TRS is available at http://www.fcc.gov/cgb/consumerfacts/trs.html, and a list of phone numbers is available at http://www.fcc.gov/cgb/dro/trsphonebk.html.

Related Documents

For more information, see these Oracle resources:

For information about Oracle error messages, see Oracle Database Error Messages. Oracle error message documentation is available only in HTML. If you have access to the Oracle Database Documentation Library, you can browse the error messages by range. Once you find the specific range, use your browser's "find in page" feature to locate the specific message. When connected to the Internet, you can search for a specific error message using the error message search feature of the Oracle online documentation.

Many books in the documentation set use the sample schemas of the seed database, which is installed by default when you install Oracle. Refer to Oracle Database Sample Schemas for information on how these schemas were created and how you can use them yourself.

For additional application examples, please visit the Oracle by Examples (OBEs) Application Express page, located on Oracle's Technology Network. The OBEs provide step-by-step examples with screenshots on how to perform various tasks within Application Express.

http://www.oracle.com/technology/products/database/application_express/html/obes.html

Printed documentation is available for sale in the Oracle Store at

http://oraclestore.oracle.com/

To download free release notes, installation documentation, white papers, or other collateral, please visit the Oracle Technology Network (OTN). You must register online before using OTN; registration is free and can be done at

http://www.oracle.com/technology/membership/

If you already have a user name and password for OTN, then you can go directly to the documentation section of the OTN Web site at

http://www.oracle.com/technology/documentation/

Conventions

The following text conventions are used in this document:

ConventionMeaning
boldfaceBoldface type indicates graphical user interface elements associated with an action, or terms defined in text or the glossary.
italicItalic type indicates book titles, emphasis, or placeholder variables for which you supply particular values.
monospaceMonospace type indicates commands within a paragraph, URLs, code in examples, text that appears on the screen, or text that you enter.

PK988PK &AOEBPS/index.htmC4 Index

Index

A  B  D  F  G  L  M  O  P  R  T  U  W 

A

about, 3
Access migration project, 3
annotations
using, 4.6.8
application
creating, 4.7.2
setting up detaults, 4.7.1
application conversion
forum, 1.2.2
Application Express Administration Services, 3.4.1, 4.3.1
Application Express users
controlling account availability, 3.4.2, 4.3.2
requiring password change, 3.4.2, 4.3.2
application migration
forum, 1.1.3
overview, 2

B

business logic
about implementing, A.1.5

D

deleting
Microsoft Access migration project, 3.8
Oracle Forms project, 4.8

F

FormModules
converting to XML, 4.2.1
viewing, 4.6.3.1
Forms Menu
reviewing, 4.6.6
viewing details, 4.6.6.3
viewing summary, 4.6.6.2
Forms2XML conversion tool
about, 4.2.1.1
using from command line, 4.2.1.2
using in Java program, 4.2.1.3
forum
application conversion, 1.2.2
application migration, 1.1.3
Froms Menus
about conversion, A.4

G

generated applications
about, A.1.2
about primary keys, A.1.2.1

L

list of values
about, A.1.4

M

MDB file
analyzing, 1.1.2
MenuModules
converting to XML, 4.2.1
viewing, 4.6.6.1, 4.6.6.1
Microsoft Access
migrating to Oracle Application Express, 3
Microsoft Access application
about migrating, 1.1
analyzing MDB file, 1.1.2
checklist, 1.1.1
preparing for migration, 1.1.1
Microsoft Access migration
about, 3
about Project page, 3.5.1
adding Oracle Application Express users, 3.4
creating a migration project, 3.5
creating a workspace, 3.4
exporting metadata, 3.2
generate applications, 3.7
migrating the database, 3.3
overview, 3.1
reviewing database, 3.6.5
reviewing forms, 3.6.3
reviewing module, 3.6.5
reviewing page information, 3.6.5
reviewing queries, 3.6.2
reviewing reports, 3.6.4
reviewing retrieved objects, 3.6
reviewing tables, 3.6.1
Microsoft Access migration project
deleting, 3.8

O

object libraries
about conversion, A.5
converting to XML, 4.2.1
reviewing, 4.6.7
Oracle Application Express
about processes, A.1.5.1
about validations, A.1.5.3
computations, A.1.5.2
creating users, 3.4.2, 4.3.2
creating workspace manually, 3.4.1, 4.3.1
logging in to a workspace, 3.4.3, 4.3.3
programming concepts, 2
Oracle Forms
migrating to Oracle Application Express, 4
Oracle Forms application
about converting, 1.2
checklist, 1.2.1
Oracle Forms components
mappings, A.1
overview, A.1.1
Oracle Forms conversion
about, 4
about Associated Application box, 4.6.1.1.3
about Completion Status box, 4.6.1.1.5
about Search bar, 4.6.1.1.1
about Tasks box, 4.6.1.1.4
adding Oracle Application Express users, 4.3
converting Oracle Report, 4.2.3
converting PL/SQL library, 4.2.2
converting to XML, 4.2
Create Application button, 4.6.1.1.2
creating a conversion project, 4.5
creating a workspace, 4.3
creating an application, 4.7.2
deleting, 4.8
editing Forms metadata, 4.6
editing project details, 4.6.2
Forms2XML, 4.2.1.1
generating an Oracle Application Express application, 4.7
Project page, 4.6.1
reviewing blocks, 4.6.3.3
reviewing Forms menu, 4.6.6
reviewing Forms objects, 4.6.3
reviewing items, 4.6.3.4
reviewing object libraries, 4.6.7
reviewing Oracle Report, 4.6.4
reviewing PL/SQL libraries, 4.6.5
Run Application button, 4.6.1.1.2
selecting items, 4.6.3.4
selecting specific objects, 4.6.3.2
setting up application defaults, 4.7.1
step overview, 4.1
tracking MenuModules, 4.6.6.1
Upload File button, 4.6.1.1.2
uploading additional files, 4.6.1.2
uploading objects into schema, 4.4
using annotations, 4.6.8
viewing an imported report, 4.6.4.1
viewing blocks, 4.6.3.3
viewing Form Menu details, 4.6.6.3
viewing FormModules, 4.6.3.1
viewing Forms Menus, 4.6.6.2
viewing items, 4.6.3.4
viewing object metadata, 4.6.3.2
viewing Program Unit details, 4.6.6.3
Oracle Forms mappings
alerts, A.1.1.1
block to page region, A.1.3
blocks, A.1.1.2
canvases, A.1.1.3
coordinates, A.1.1.4
editors, A.1.1.5
list of values, A.1.1.6
master detail blocks, A.1.3.3
non-database blocks, A.1.3.4
program units, A.1.1.7
property classes, A.1.1.8
record groups, A.1.1.9
single record block, A.1.3.1
tabular forms, A.1.3.2
triggers, A.1.1.10
visual attributes, A.1.1.11
windows, A.1.1.12
Oracle Report
about conversion, A.2
converting to XML, 4.2.3
reviewing, 4.6.4
selecting, 4.6.4.2

P

PL/SQL libraries
about conversion, A.3
converting to TXT file, 4.2.2
reviewing, 4.6.5
Project page, 4.6.1
about, 3.5.1
about search bar., 4.6.1.1.1

R

related documents, Preface

T

topic overview, Preface

U

user accounts
controlling account availability, 3.4.2, 4.3.2
creating, 3.4.2, 4.3.2
requiring password change, 3.4.2, 4.3.2

W

workspace
creating, 4.3.1
logging in to, 3.4.3, 4.3.3
PK^TCCPK &AOEBPS/img/actions_menu.gif#GIF89aRRk9sZssB{B{!{9{9{J!!!!k9)9)Z9){)B)J)1c1s919119999R99R9cB9s9B9R9B{BB{BBBcJBJJRRJcRJcJ{JJJJRJZJcJRRsRRRRZJcZRZZZZZccZsZZZZZZ{ZZZkZZZc{ckcckckkskkkkkkkkkks9sR1sRRssRsskss{s{sssssksss{{{{{{{{{{{Jc֌JZΌƌƌތ֔ƔޔΌ1))kƜ֜ޜƔƭƭޜΜ眥99ƽ֭֜ޭƭޭΥ֭RR))B9RcZ{{k޽ֽ޽kkssƜƜ!!))91B9{sΌkZs{k֥֭֜kƜ9)R9ZJZZsR޵!!ZBkk{kƜ֭޽)){{1ﭥRkB1R9ZBkRsZkks{9kƵ!,k H*<Ç#JHŋ3jǏ CII8\ɲ˖'cʜy2˛8sHO6w JT%t? ZӧJ2я+~jׯ/IvMGtWa bҮ`8ϷRt#Y;a#K׬٦F qS:g>9.I?醱b2HP%3ΰ VoVyH9@J8ᡋ뚱YrfV$I%`pq"%7+#TEg$:]h/%ϟ*w5tW:h0 :К~#߄FK3aq 鰝 7X~H a+pIHI|H8$`!pa#H$D }op uvٗÑ%U&irx):hpé ^~$Htac69\r%ԏyȑ i8qJ`F &~FT '%L7 pY&H~ꨥQ-Brw**+% Y H ~7ҭ6,%A .:~xB/q~It%Ĕk&l' 7G,Wlgwq ,'L( *2 4,s8:q<,>MHdtL#tP4HTmXgu\+5G^&eaMb3}%-wp-wv6|6:l"N}7ߗl!GN_;֠nu{Dz餟:>׎Ox7]HaIP2Gߘ{" Ϻ[.?׎{{Ӈ3xC."|I⃄ D~H?U^H/;HMgt/]_/4Cy`87$=t|cxd^ YvP'4@@"T^׺Dt(ܚ m#t m!hCkTvэ/tJHN"H /8 2zEy^H=OK(hAoPLJL?͏ďh_ c@1 gTqF ~hQw "g|hn!s $`CEq{޻]#} X?Uv|HBO||$ @䉰5х/TBIRHѹo#sBmz?w 'y?{ ӛN:M&)g9 ڵ1$q(D'jR~(F78r?C*Rw;)JYҕѥ (LҙS6gMsO4>)K*ԗՠ;=*Z:PTJժJijRr[*V>;+Zuֵ⬭nDQMqSx%:E0ZqjA:6yZ f^PXh+GrpX.p,d%)v lfZ4iD^g3 W( D6XF%VPd & 1@ 7'iVa\$w}nt{ Hq;BWHyRZ`e|+G`~_ 0 oJ*ޠ`6+Ir?cإ __ ΗIIt!ɬR5dao@Z?N81\$:^K W wƂ&2@(b*i&4ަ5r)M'k8B4(X4g(hޤa[Г43sk hA ct Hy$+M`dќEiJF;ꐔzӫw@:֮+W]L׾Z](`[0>Vl ټN1[vRC I`tζG|cRm7^wm4d -#>"݄ 7:ޛ188CS.xoC\&]4e#H>gE $>G]рH~JtDΐFO<8aCt2C@ S9$vYCmMc<يNBEi/=QDnef :3qH/4I}DPT3u$皯5ʩXIfȝɎ'R&hc  n WiP@ym IZJm`)РfyYmzy` )ni v 2ɢ* = ? >yxU/*NjQz1с)R/e?EETڂ =AAԔA8z֠+j P@y9dDCTDa9wBhS/6j`w旴XטEEJBjEbڇzHcCsfQyJrڤQ8ߓF43^eGEx ~@@$DMִ ֦?r:u -YUԊjЭ>rɡEZ;mʪ=, \\4 mi tjں`ۏ;ꝽhgȱI.*Gنy5Y8616lxc7;;77kys8CK8?ks9KK9Gk,5aN牛tXZN2KJphG4 t$ QPYGP xwg˶e TJD;E vkL6h cKz ֶ"!J[ > 䅁h1dl[59}TF~)cd[EFQsɑakMRd fXlVt;kú G!qudA t HPC֋L<,V\е/Kyx[~Vj%#2w;B6x*+&k|A?E\C<=\QG\IܐKMnSOVU\^`lUXdy$ۇ8 ).L>lU 9=$U Ȅlsx"~Pȋ0\,ps|Bɞɒ\ɣLʩYv0ʖ,9OLBV11J˩ڠ˼ лMFI?tXz<Ѭ-gai>Z8L˸ 0 [03|Z|a䛖DG< 'F@|GpsWL F%4qI<, "-\ 뽪q 3pqȒ D JԒ0kȒӾ I p]_mPկ f֒s$c=׭v}נQ 9-KUH;l&@KّMH +#Η ?| m#!  Pg#;l ` $Q m0} Dj@ @ @?AhPm @ 0ѰX, X` e @ P 䃅\`6)h F Fp` `@ 0 Y!` k ! @ @ H?IGic(@nBD(;{ip!`  0 5sdڅW>{ KdC_ȫG~LPpQ Ѱ >#>tF:nK&As(dK XPAw r~ s3)FثVF U  H*}K}ޘ\>*MJ<,R$UXpa ,p ^:?="tHS(<j- FڿLN&Pu gP`)`=F&Gnn ud?29ʍ~.n B H202d:!o멊jJ#No!:rZ D,1GE:$hBtRs\dQ%D:J*F鎔Zt($K# 5KZh ;,3O=\;hs8ks:aOELMH4Ӕɏ>A$P@ USUWS[h&XeKXUSWs״v5Xa՚rXc%OdeXf]YheTZjZlR[n[pǽO\p9CɅ\wM28C #yV= !0I'oN]5' &4VVdN@'8oXE 1x\qfR^Y7h"6LF#MoVQِb[oi^9" (ɛ(DJ:\Qe9DE:1,`: G;z2m>FD!dP ka,D(C"h3mVffŐx#UH >J* *I_{8Vn- O~ӟh@ vbSEhBP6TuC%:QVԢA/Qvԣh)\hJUx%#5;dĀ ԧu):`[|A.>a N iT*РUiUkdbuC! NլghAEϢ5p3 @k^ZU~Z#Z\ڠ- zEYAh`.tA%GApv֧_Ukآ`e{#9[Γŭ?A\A\52!0=7y6>w{OLpD!`d=x HpғG6 0[)c ;߇t*t]ܴwhCw^`X.)sVW9 |tN肩ٽCG⢊ysW0Y @`x'& araxMԠΕ-m,ϸ6.[F.x@G늟K[|@A(k _ʹ2=bj-3` 3z^sDA}3+T~ځ=a k޳kل67ъ>]hÉ*ӟl 0D 2](Ȱtm|T H:8Q/vA:b$AV|A=emf L ]/ "7j U vʛn>p~ Ok~Vux%>qW涤(mT59~' AU"򑣥(9]T~719GΓɞ?\o|?Cˏ$Vʇʄ}ЫN{ѻ,yy.~ߋo|?'D%}w8jRq fGMr'3R4akt K @ dؕKhA$<_sܾD;KAt\ 9 ̾|n( /̰ P(4BD#T}/܇.h) *L}8kh1̎PÊ@BoHC0 /+D#,49|.kC; *JģMp2XLB|8JÏȜDDIL Q@BtE8gYFeDX?F bFcdE.LedFKLDER YF_uHGXE"6>J|8' x^ Z`ɜD\|ľ}z/|^h/4G!T,-,l. H^I^4IǔdɦSəI DItIoAʚ,ʧIGtəʨܹ̌J=pIJ ˲SK<ʶ˵lĠKdZ˾˿$4DTdtDŽȔLL;PK##PK &AOEBPS/img/fmb_annotation.gif!GIF89a rrjjj@@@jjjjjjjjjjrrrrrrrrrrrrwwwwwwwwwwwÑjjjjrwwϦwϮjjjjjƮƮwœϪϺrrrrròܷƑƑjƮjƑۮœϪܷԛۮjrƑۮԛ!, qH*\ȰÇ#JHŋ3jȱǏ CI,(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ZS ӧPJJիXjuӮ`ÊKٳhӪmc۷pʝKݞ_˷߿׶La+^̸ǐ#gA˕U*rCBj ʌE$^ͺ׊耚_km3S4paHrdatUw 1ٟ=Yo_~(eO-U#9us 4Aހfq܀$iyv9H`j`~ (∂_[\jq'x8jbj$[9WDYb3c$&LRuq/uhSv]Y( _(uȣr>r9d)F_p)5QֆeQgՆe{9‡h|"㖃"yft+V!G祘f 2}v0YalphR^vcV:J`jj뭸(]:*vsٱfHfخ09EoI8ޯl B&Lz.{妆sq','uG,Ol Wqwqc,$r(2W0,4l8<@-DmH'L7PGsRWmXg\w`-6Tmhlp\vtmx|=w߀.n/7GWngyה-砇.褗n:mlꬷyln{[/<ް-'o7>Woū}?{~o~٧}oo䧏w~ΛHxf0AxVPTY2l{l0@5s_(LaGPafσ 6 H"5;0 AA(JOtP`ep@ 4$p^c 8iڠ (>bMh>f2_H@D.R<HAYJ> |'h!+ܱ b,ePl^2j(9n@ePF1HbT)B p`(3yPÄsa(rN Z:Dʝ.M 6fXI1"-p.f0jM%(V"ԣ|ZvsY 5kR%V,uxKZUijWkrL(QR\;zLnK\VlOeqÖv댮vKM xH?wהàzKtͯ~}_1+~L`wk+;R;֪[N:p$5 |ְG3c:pIWC9b0< JL3, \H&q9JmLY9XHRie0C` cV!%DkF0k`l,Y[6jV:A{3 l;Nљ=ΐ~p W Bfdi[j&>״)Nu68Ҩo{i~UP9l.^wհm59Ֆ6҅}sa~+ lζd&-]d?EMnV%lA*եn^E;;~. 㦕aP.L,0p0Nj/ʻ7yRYNq{|2`'᭝V'nɛp٣ˠ׼J cl?kEul὾p&!~p<;gQ Ij$ugXVydK-ln13-k땤Ɔu}q1iykMW|7Gt3gA~FlDi_Lj'Nlp%Nn3cw}zz4ln Ll{2UbqS:X7C<ģmրMI[%MIhR.VZ(S~×;xq?d0O{ j WF%I{&eeSrmwt(_p54MHb0o}g[W5J?wSsXx6fw4=rhx5h4q$yLEӉsu(8w74Ws(Y4H4=Ps8#AtȘʸ̘HfzxuXxؘX&l8caȍE׊pc؎vhg3؎8Y8ݨos8IZ33(4A|P>bB5vJAyIVe'Iؑ6YJDmEA:YikE PwXe3(N\0C24YI3TH\IWFOL5[Igy<&IVwGJ$Z $!4puIZXi KM'KRCy3#LI 2mktzFtM_m5`l5)G NhGmxo؆ Tpd i#OTEUT'hcdi=w3P2PF 3ZRyT䛼'A۾k:Ű{ qǾk@+3; X{|. +DH Ҫt"*<&2ɨK@QI]{^.ӓũuɕĕ$`iCj˺kʣk*D~ ؜JcAB9P挺 PsIҬiy|̾FgG/D\͹2_EldXET=ф{Ȟ5=:k}"M*m_ -[)2ݳݿ3[dl:Jk. B}FҽǣN}D/q1V<}^<7 _]-Լll-|k Sm=nZm?j-t,,p>zׂ|R7"؃Qֈr{րג}ٵֆ}>ٞ]Y~3ٟՍ]٤4k}eMٮ=igի4MO2kԼ=ܵDxxL-[]ܸ8=R-=۠;:{M>c3:={}kd]x'B}>]}. ʽt-EN; ">$^&~(*,*܇m7}67\}:>9>^59BQ=u {HJLNPt0E~v {XZ\^`uSn>=n5NnulnGe>npr^]}t~N׀nD>m7sNg:Uߡc=ޖ?-#@O6{TOG^W vE֙n0#<-Z\^=Nsjܮvxz|~6cf-C~c㊿;:?&?_o;PKj7PK &AOEBPS/img/acmg_qry_pg.gifCGIF87ā|~|DBDLJLdbd ,*,DFDdfd  \Z\䌊tvtTVTԼ464TRT<:<<<ּҴʬƤtt||ddœδ,@pH,Ȥrl:ШtJZجv%xL.zn|N<+$|~0ź͌ԹІׅ gf HS?A,ȰC%$01dȲ#8z9 㢎excr1thQơZ1#FlaQK"8#I#1zТjVI-ai2*qi(k{, -Fp裈xĘ1 gN k?=`ҘAS #0#3 Fvw\cg0vX- 2ǎVgm ;>9LT9^yTr͟C'[ )7 F;vդ' n/o'7nw;:H !wo}+7*"(x1|^L8e_wF2kdcxF9ƱvtȾ*ID'v " h-`8I9ьj%+ FMziԣIL~L$IA~,b"8GJя1|/iKEֲ#e)MINљ$4G)jv2Q,&)m>Rd\YX$7KGӝe8yv3S&) 7Zs|4K9J<ђp=aS#9=o%CyӞ1&JwJ(BǨL+r!uM!>6 ܪhQfh=TF2$(i򉲪g?jRTըdh*1%H Vp3$f0zԝ3x)4WҘ 4|ݪ_>~XyzU{NC@`}d%[YX @RvʊhgA;Ǘw#i f>H  * מ MsOF빋3OkMJ/B0 S2HUV%-JOVO%!Ϳn~tVYZN>\` I=`%GTʵ>=%jҹ5][X4 a@)` `fنպfTxseZ,6I;S6p90(>ZIu9mm^*k̖^ngԮ@$l]R"y֏µi*HWWe;p*@,p/nJ,\RȔR-ͺf8[EI)C @0ىN>Jʐ`E{uvpy3~|ҍջ>}^WX_O;77L[?/cO Ore(Q#kc}Ld'eSe[eXd?XQ4Yv>FpA0LtFI6Xm6qV\^ZB|g&hQGm&@f8\āƁS7X}X@p.GsdQ$Bjl1HhKowsvKuLusj_X?3ǃXǃSpAXp?v(wAVlǖl`&Hmu$K V%wnTsswpHlU;XP&(ijTS^QVwnVoVoOlQxN^t[rm&RLO&uZ5Wn GGX(xAgqq7txoHQM8NpPplk8n}F6P@:s>t{3o& 6xfSYE. W8& fFUA_vcWv׌E凪SWqT!ُhL&Owm,ǐUXxfGk\sAwxG_D-Shf H]WyHl5)擅)zVyX\5zKɔ>wb @7fQ?yjyMn@erI>q9v=uysY|ח~9_yoyg٘9G9yٙ~9WC6kCHhA0tJBiG9@ɛ.)NY痖^ϙ^Eםީz7ieyIcٞ6)c9.Vb<ٟ:ZJ;J} ڠ}B:Z*zڡ ":$J=Z(*cp,02Z6zF8<ڣ& >B: DzHaJڤNjLR:(TzXV\ڥ i b @w``CjZmlJoZsB g fxu=juvZe@GeШʨ{Zl*{Zhi*z rک کm|z *. mf0z::|ڬzJК:Zʢ'ʫz:ۺ~:*:jڮzjZ::[zۮj뫖*jkj*Jz"뮃*ܚz/a+$ [([ ۲;+2zj⊪ڰ:kZZ 욯wUKX갟zU۵^_$C:p˶JqasK}yKGj|{~K[K۸k[];[{[A;PKSHCPK &AOEBPS/img/project_page.gif6GIF89ak9skkk!R1R91c99s999BBBBBJBRBBBBcBkB{BBJBJB{BB{BBJBRJRRJcJkJJkRJkJJR{RRRRZZZZkcZ{ZcRcccccckcBccccc{ccccckkkkkkkkkskkBkkkkkkkksssskssssssss{{s{{{{{{{B{{{{{{{{{{{{Ƅ{{{ΌBƽkkkƔƽƔ{{BƜƜ֜νΜ֥BcƜΜνƭkkkk{k{ckBck{Υεssc9Ɣƽνεε޽νƔƔkƜ{Ɯƽ{Δֵ֥ƄBΜֵޭ֭֜{{RޭkޭƔk֭cƔ!ޭcν19BJZs9!, .۳\*\ȰÇ#JHŋ3jȱǏ C)rɓ(S\ɲ˗0cʜI͛8sɳϟ@ :4۱g)]ʴӧPJJիXjʵׯ`ÊKv1hӪ]˶۷pʝKgH˷߿ Lٺ+^̸ǐ#˘3klϠaM:tRWK^ͺװcˮiklNS» Nȓ+_μ߄K73k]rˬzӫ_%cfF2nF:SDXt$PP'Ky\V^Oﰣv (9$h((vJ(4h,<"/DIH&ɢUVǸFyXboS5%4̐K,f(h M0t1<%Gl`م;e(v%袌6裐FΡf馜v駐Rj)jꩦe[A!XʬllT:J4h#ͱd2hY63;Qэ@4(mFN"kN JqRsjJanK/QׇK. (nl`Ō6*,glҔQOAX(r6nNșpMuMlRҌ:d0UpC!@pL״0`KEʱ3s _Ms`RpU,3+$*@D2NptKҮ}߀$x7P+ ̝Y@P2<KiJV]Znﰝ-JXm0.WiarLعk/cҚ̈́]ygpS0+cR$@S$&tdFɌ333y@Hc!{$\K|`lB 6t%6 ^29f3wAaP2\YKҦ$J_ J ĥ)OCStׄ*QCiTtěRp7tZP>pcJ90፯!8QKC`Wt@C{$'!^K!BvÏXS lB@R `ЪGԞ*U:JA,&nc쐘LvS%po$w0p *e ڀޅ-p8Srv;۰ M.Le-w;Cog;PZzK߰%Yէ"\%sNp\Rک՝B^ K+!# ;BOcA)8tR1Cf w! `#R۔<#0&9:,B>Vf^Ho J Җ}[ U=kpn;̎3ДnvT95 [O״~Dh4,iFzr@1]M뺦ݫIj Ny!4IVF8lMZKp! H\}UJy6&fX}h(@ +[%3)*" 1 .u6^(K݉C~FKFm )EMh!vu5,04_&W&qPzN䳻7&vckN9LH`I H#~u"ϸÎ[V s~(7but _0/~ww?YK `{_"܆;]LO=O2џ!7CʇDt`G}a'~@~gvTsg$voАEp vpwZbwwyFޠmlm@ p6nMb cC?F`:4 S?5хyԵ;XPwqqUqE&|j7 2\_r&~'s7iS7v/Wvo8~ru^7d]7rt؆C&ofe{wyrD݇qHgdUȇbXh~]H$ 8m ٰ @Z}PZlpe%bxuW7br*ȂF5q 5H1p 7M6_p zp%DH$4{熝D5se mHHm4Ás5;lV"FWvUS%W@.^`bP {ϙS _MՕ|ʝMן]ܺ۾ @ӝ]-|ܠ]T}ް ylmS-]M-=߰շn ; ]CM- P&~(*,.02>4^6~8:<>@BƠ` y}EF EHʐ MpPI `6F-S^%c~RNj~TC~0RNXsn]G[ZE>M-0`m(L ^chyVg~^G^mN:`O>궎%.`z.ONv>ЮD0^D؞ھ^S=%nb~M CM济 }`mn;'>wSXrӮNV5n_]> ?~>^(c$V>eSm)%M~< O>74RD >`b?d/K^%`n^X'^%nnxMI)e O>??^j/tozo((=s^?& o_?rM2R_Z_؟㢾En䋏/oy__ lLNASDPaBdz."hИʆ-lba A+^qdI";TQYC mdǑ'c`ȕANtiAF-$TɚTL2Xv&ˌK*wLڵc/!Wc W`l'+0s[.nY-vܵü߾}#"Yh:^YIҍýk-jжb(\߿ -\9ahPڨSjOAs=*mJNSD\-wf_ =/ϱ2ʱ76!k.ނ.:pcֻNPBTB C>Pc F*? {>CDkktk ySGsʶl ,ìu̳|@s,C S2'S|7.lSø2P*44QEeQ 8ʺm)OLsSO3SQG _NEUUL^X_V×1fk5W]Ue[/9 f]=UveU'e啎Y{U6\d ZO T'VT]T".ˌu\f߅7kcVm} _CvNW{mO_y_UfWZWx`bW|=xpťԀ5`{_`ᒝkF9~:h_F:i3ڹ(9ofy/v^kk&VF;nVm]r}y ؖa{vfU UVV'SVZ"M!%CTugJzPg 5D9;t_F6z *mcG>~.@ QVVT"c .XZm#YIf= , wPJ\T{ЏU6Yȕِ@I[ agܞ"YYꬆer&, d,xEK2D/ӷ-T'h A1U|e:H]Ӕ&Qw*tӞg>6@Hi\@$7!TcdV7"9"D!R3d4Ϭ  2I-"_I\Z L:ȠAjUiE5vxjz1j@*xFNQt攧MVխo_?S%I.?6vG@1f6t}E.Mb^k3)) az7Zٻ?`]%ʂ6~aIۭծUJ|Ys*aOMoB.\h!ZL-įړD⮤Rs.v{aOꢗoXVoۮ?V5p H n,`V4;)Pʪ *$^] 3.3_5SqisD_30ctnt{ -uFsW~i{ZЃ^ŕ@93v5K=@֓N5Z%-gJ2Nivd"t&¶=nrFw] 4Bs7chRԷ_xgߢh/Ј|s:߄Fou7ʏ4-hN {\ @X.-|[\WrOXn[!a}o2qqk0yf'\>wzqWWzֵu[}+[993S;C?M xӃ{cBA"\C;\%\>kAw<*|"@uB,BB"4@T8-Bt[)*̲08| Ú?$$B8LBk@A$B$Dct1=x "5[ӻ64{,|GtAJdAqR|N|rsVD2Ľ5fWRETBUL[lR,@^D&tEb1xjklmnopq$r4sDtTudvtwxyP{|}~rHo H}ƁDȄTȅdȆtȇHq\4Alj-SH|ȏrIƃȓDɔTɕdɖtɗɘəɚlGɜɝɞɟʠʡ$uɢDʤTʥdʦtʧʨDȣʪʫʬʭʮ|Gʰ˱$˲4˳DK˴d˶t˷˸KK˻˼˽˾˿$4DTdtDŽȔɤʴM̈́p 4DTdtׄؔ٤ڴ$4DTdtN$DTdtLNM5EUeOu Pܜqx%5U qPuPT,OHqHt !%"5,HOXMZ00Mn) KMoH0M:M0 %>Xp s45m֤S>pڬS0R$ AMB ODOENFEOGOoHaPPrR2OKL-MMTOe$%XDXyMZRp`Up,RXJ=:<S8Sؼ<]aM\Ns`^OeeV^NhmVVikuVVVH=4nҬTZҼ}WXpڵ-VU1f;HSo[n@Sn0405١Sn[kYUS6EXӴeS֙gܽ[$Y[tU%Կ5CE]ѽNM]t]mU]Е]r5PrhUZT]N:^W,<[~͵mYY]UP߮ځutbWu*Y &e1\E\5F\iu^aU`7t[F_o\l}pNB&OCNDNE~NFNGO%6PzFWyd|`\WM)R+[*)ԃeacSA]aUؐYYW_X2^i\?c>T|fffEmDݽUpgNb؇T=vvwxgdDte}~&N~ONFONNNOwgp1 |&h5fv闆i 蘦隶j&6FjMfv꧖ꩦFQ$!&6FVֈjv뷆.ж뺶뿮O&†NFV~ͽfdžfj&}Q얦lp`Q&#Q(-f>Q^&}R T._|Z lm\~TN۝]jf5oTT.g{|=TM%m"PH>OFN^@Vio@~OoJMNdGM$Xo4Ӕ\<^.][=هuVa6X]P#>OGNN'onvEvqϩZP&)^ [nLpnpkHp(:56}rMaʕ\>r,^O0gN1Nn3_4_ۭenfm.^^ss"WpmU@Nd5S4]U&'_3 cX=tFP2T5]LOTMo]NfOsP?s6n9NTg<rP^i#Ywp 憔%a!f_`ui aHX7tp8 e?Llq|rVWWgLr 507.u7t5w onowlw}oCHIz]/wx*>q'w@mT>e00p^6\Ysyw'σaq Uysy1wny8Oxo^^eqnwDguxmזG쌾Th,PNOWN}NN{ohzXЌFi'§gGW|wLJlȧʷ|=ͷM^'7GWׇ}wاwٷ߯z'Glwwˆ>mQھ~m&uRՖ͌-j W4Λeaٌ$D?nI\g „ 2l9[t6Ì7>4Gǐ"Ez9$LjQlu\ҬٰVb'P3H+Ak-3'G!њy#@MEp F 7Jn']v.܋o &CoIf"^ȍbIsyظ5/=WrKsIR4i3۬:hү17RgLR0 |.skfxaV[#ۃd-mia$p0UN s?/=HKPhG|Q_EET7G`yvst^atsyaX6bF%"B 83ĽXSm n3M$\:ђaQt,MOuaGCN$-3wAUO(^yG0,&~ $f_w曏A ~l gBjM+)z.SA Hiة+) %ZjHQOKSSC`+\EêGXd-e+\exa%AowYczJL%-y|șaDU[nP9x]#z%iq1^Koʯ*{i?D k9UҒ Fb|P#kK^Ywu^J{^k*B{;;3%ٺ+LȦyzPъܯ)N$9<bki{+Vmm7TrH'KiWf3I<WaNɚi~Z&fmfܴ'Z:/Eؾhv(pQiakKz [ĥc^*@/'mU4 1{ER^{e~ߺϗ+=z>!{ӼJ?\ݣd?)RSQt2N)tۊ<(Uy  7cG(.|! c(p) Qn>!(!jy8!B"8")4"31:"(1f<#/cÇ4k[(9ұv#=<~# )H9q<$"E24l$$#)IRv|%3Mr|&?)Q<%CqU|%,c)YҲ%.s]򲗾%0)a<&2e2|&4)iR %*mr|Ħ7)q9өujt'<)yS$'>}'@*P@!51Ѕ2_A2u#(F3Et!D*Ƒtl&=)Jkфl%XHBT#)M^ihf(]b|z0Dl4vr**0nX$@U$lh򤯄e,hN[Β5< P_׆UH!ZXjhx-__hLXطbnrq,dDowXzgpC¨q4@1T BH?sl L*[!֋Br[ԍ!|+&)S͕p8S5oX\ǂ%-q 7h%6RZ6}؁A[8!f)+̲67@/0.KOT-77{"I-= D|I ηG]'Ic~$#[?yO.z1I:ԣ>PR:ֳ^Oj^z8Ӯl*;NHӽv*~;/?<# ;PK;66PK &AOEBPS/img/applicability.gifOGIF89akskkkks99BsBBBJcccckkkkkkkkkkkkkkkkkkssssssssssssBssssss{ssƔkkkkksssBΜkkkkskƭƭέƭﵜBsBƜέƵεsƔƔkƔƭkƵޭ޵εBƜέ޵֜ޭksƔޭsƔ֜ޭ֜!,9 Ĥ*\ȰÇ#JHŋ3jȱǏ CIɓò˗0cʜI͛8sɳϟ@ JѣH*]ʴS*)>@층װ36WF`y=KO=Zw^μsp5gQXҦ}͠qZnRs,#=QO:fX€\nj块f}m= H\ȇfW[e6hȟW[ w"7#- h[gFֆ$q`A%Tpav|"v嗱aL1bh֛naW&gV8^Ug^pZrhoYH|硊Fh `f馂^&nmKĭ懄|"f$.eYx‰+jdkފf'F+o $U&mz|Jj{lݮBajA򸟁J-KkhN,Kk R kWY꜈~Yۉ("!qmgdK|3q.WI)kr@l"Sb<;4̫I2MaaGcR*pշIgl6NmzYgFxz+1 r=5}7֥wZ5e"gΪowuY~:СUzYn{%{XKx.!N'?71WOgqEU/o觯/o 'L:G Z̠7z GH(L Wx>0 gHЅ6̡w!H"H,&:P!A$,@m(F.O2BH6c88ύc1,F>QT_"GQ F-$9@k IFR5iY Oys^ITf5gJHVβauCXP֡"tW:n@^Wv %S:V>|-ͪg*X^;Z [TӊmTirF3,IQ*IQT-%:]q \*uEH.hCGru(Q&]se: $9Tlwm ] ܍x;򂯻Xr &) j]h;_~J*_*6%%h;b 0FkgQycnzw1}Y]nX>v1S(WK5MEX9|6.f<&O5 2Ӹ2|ǼێυxJY:q|,|3YmD#Yo]/J@C4%,_.6ҏ>L| mjI9UYhKzyjZ:4)S].z˖)A7G{ӧtmsrzYj]KLsM_?{~ otuMl=6cNw [}4i%@v/6+6uycy7|ILGZ3'So>qaܪZ̳2+n;׽޸q{є<yIcv8gr߼b>8=_fO4e~k?j@NT;<^GiM-k o׫ٵ>p'x3SNn<{s{V LDZjZQ%;ȑ.z==[MWRv;:3=mjԸYлמm-r|Or{Rz$x}kgzuoOt+_ bK'o}sgZKx~m '>8EuRWd]KGvuƀ*c5we}#HkGYEQDesvV`EOVpj4WJEz {HEzvttfEW]%^ f_EG0xa7wFI[6(]wHDbLE'OoKvwd8gE=gd3TUEZJoW\džOh^fKUf8Ft(zlH'(}XTI(zh_v>BT`VEEe4yfjR@n5hVhVT^VdgMWWhJZ/v'JOVaVƋĊhTՈR5&8kzKJs;f{_XO]eXȅ %qUZRybXX~TW]%jWXHH VwXXO.XOȏؑ|wX tԑ80Y!wya@>?y?vLdDL$ F9?DHEpH|?C9T\(UyKgyBdI?tVyfM?PÕe >KDz|ٗ~ @y9YC٘9y@-Yyٙٚ|9Dy/dٛě9Y$ƙʹ yYyI)ٝY晙y깞ٗYN4 D4ԟ:BJBP :B Z A.0.I V aB3&*@T$#ՕS`'a.4jCɡEġ0>L`ycYW>, ?0*>IZNC<:> 0 & X,=Uʥ bjXZ cڥ7V`zdʦB#N_9`EHX` PMqHWE 2JGh`O:7D泣!*>ZUZaJjZ&Wz?کUcB @,}*^KZ`JOIZƵaJJe`IfkFjBC: ?𣲚@Z jڭV>*?]OHZEPgАNK*NZeEAQڪ&@<ꭷjZ⚭ܺ>d⣫ eJjԯDkڲ58 tVʣ +!J A ʣKf > ?k`$(e:.k+htdEPT4:;k3iD!zr{ P H*:ڢtqHP (ۤj4F#[Eԙ皺ۺD}{<乸; ʶ{iB(ۼΛB*Q{؛ڻ۽;+>{黾-pۿSD{CCd}ePc\Z "€0md0 <8\> D'/3<؅}^؋X؊ ( d@Sm؇VH łMʇ,S ]ר-CcpڵCK}ǭC=֝MFގIxP}=]Mԫ^ݻ=} C B .C=^CCN\!B#>*.L3-/B1.@,6^Gl9;B=jLmD^ {*bLiOZwe\zquIܷb}mЀ ,̆-R[ xFZՅ^|n,Κ<=]jPHhUGTE [ d~--υWNMd&Ҹ,0-P]5Ms~N36GT`dE^[CI}(*Q0UaqeX\E5*MMjlօ-]p_RB׼雾҂MQ-ڕ[+5Oٖ:?+B> SM٤=]͘ ư-D/Kiݻ۾).]y'$j<_^x$ |%?B}Mֹ>_p_|jdݢoAnp;[f*ߝA300|/Bʯ?Kq̿ATiZ\.߯X)xqv@{|Vm^G pjQIB >QD-^ĘQF=~RH%MI%'&!iXT :/cJ0'ǝ }@J)M6G%t!x0aP]~VXe͚%ڲbNHdP =+O,3n`:{cG%${x9E8ĬX L95 Ө}$C𶄬\pō֥o є$J*,ZaϜ?mR2Rt!U2tI1vPocꃩkMT,Ԥ$"*lݺJ+&B /0ð[ J$!B <܎ -+o;#DGranD¤0ӈPʵ(w .$0K-K/ZI-rO< FTD4P32kQ;0/j|+&aG>, DM5Pk6&t2ʰ ߾SO?SǼ>(; ֫n!h*(Ijh=< DBTݛI^#Ћ# #%hS;0dS 6F ( ۏwg3 y>0:)^)k9gj67Lf뮡 Cm zkf텂v[(~ "J@۸yg>z駧z>{{?'|-C=}g}߇kB?`.1@ЀD`E@6Ё`%8A VЂ`5AvЃaE8BCa UBЅ/a e8CІ7aS;PK$#ITOPK &AOEBPS/img/project_ass_app.gif GIF89ajjjjjjjjjjjjґjҙҙ᪪˪ڪҮjjjjJǑܯ˪ҮҮڼܯjǑҮ˪ǑҮܯڼ!,DSI*\ȰÇ#JHŋ+iR@oHɓ(SXdʜI͌[yϟ@3!ѣF 4&N 68qhbu,dbT'_+VB?mi3h/pf]W5MP@K#6 #d*s&@O27!`{rW_BZ:q<k7Uɔ9BJD*SƇMov+V 6\,s\LD:Nă߭»k޲]qDtwBp=T V:xS X`pL'}NJyJ!yQy.'ČI@bI | %V^'YIYTNFy>QYn!NaN>sw{nUjťp~7 VNᙛsC2gV f{Javr^~1& d]v# jukGisZ]6l)k&ԃ 1,zVkfvmIh+k覫+k[o,o'GLWl w<., l,ër0l2362:2>1B1FkEL3 a4@AgtS tVT[=uha=_MOh]\ᖁBeQ}tU3AV70#oԀFX<t70iz0mȇ#v۳ KO۱mz1vҮcK[:>>~?=~nq`OU/ Cg=o"P\̇vo\S\&@ 6>i l ?m(L WB|#aJ(6!p p 1:"$P\_3C 0@!ъH/?.2 l\*" At(1\`#@ |cx9hx1o@ t]73BpTQ A_=zeDY^D`qYd%;sd<᭔kD*YLX 1 fh l\%ˉtӌ w;]Ru3IQt|9pQX%HGD產(Fe.NyB`t\aF43zSD)AQK|(KuV4hQӂP͈*c-z҃RDf$KF!Ȥh2qQf͙=hi@5J'FGҭVM @/)D$vSZ]ZxSxm<kZM&&{ꌇhCђl͙?Z&S_W(L<0Kn o76#TT^ٶf֬u+`&5) 0L{E WC8yrmժk0䊐vG0^K)N`- ֳ=p|ѿ n=W/4 \ޝ"8˞I { Qx%`U1fA%YUsGvMw]Wfv ث=//ƱGOX#bRcX|[\3X MW5\וcfAY o;zꀂ{^9~=GQ?W=>1EʩFfgMZzqV㋹Z5; 2;6IeO^}iS_GAbiNJ&IZr[U\jX :2Z=H@Ql!YoqKR]$n|ˌ*U J 6b Vۉ61 (JT0e>pc!ٮzeaZrzZ|.L+.˪F%rv?]Q]vDC~pu_g̳3L{ /z_hv?Y?B3~a|"/y&,<0F}gw 26 ~߀oC캞=u?q\Lzpٿ2b.)*<Tw 0W[CGk*8\}wtwNk+򛐆\$C#~"THU~f{傀M p7y.7KJUuGLN7'uFTU.7RH/g[%~MNFGDgoqw{~F6OZQwՃ܇.~g{EH.*8o8.0|2H8c}NdsdpmD9WGXRoa هj'w=^g-p \|g{_10`klwn4Zf3Ƙ|H~brt^hjDtAT,.P@&(bNڥ[]IGy4b_F,&T?80yɚ[FXr+AOr¡&p&S)Y`MhFHe!2&)riyHdbyDa੩fX %{: `&6*'V''x)vzU),=2 ߠ2bQJi)  ~|'6(*Viҏ лB%gm(`EIB8BLںod5|# 7ذE<+s+~Gڞhk?k6߮M"h]Fx8FH;-Lld`=GQ>@IH^^*?KF[f5tx-Zh)lG_6.KzMmbԍS?.݊:m l䃘%kcp|v.I騧Ύyn{)=߮1{_o< 7G/Wogw/觯ǯ>$o HL:d "H Z̠7zЂGH(LC0 g@8̡wڰ@ HHLDPĈ*ZX ixY HFm(Wύ(2:0xcWю 8A g_8.6"~r$JҐ! H-`L $8Rte,KM2$&U~.rȬ( LfDwJF:6IUfҕf'prr&1g9b0|)hBS`5x~3\9Jˀ- vs$:Cz:sͬwdcT)ӢY2U@F{$1Uh:& 2Wv4UN5p I5֜.q.N.Yֹ6iD PzVy,CQՆi#j7: J}kkôQ+Ҙs0V9e"9Vb#䵤Mnm[v rRuQs4sOyJeeg ѐÞǟLΑTgVKYNu~j:,vbB3\uc٦;P%[GGah^j.fOaѮSn'.ѸͻO[v|!/7<1A/ϐO %yZzؚڪ]I ^^b y蚮jyjwZr6yp9{گڧ TXi b/X$WIZyT*Jh+瞾bh {EN]WxYpj7m kH[ڗ) wpi3ڲojMfZkiK$qbog%fvV{sj*1wigșAVRDzB5i'lXh,mi3婶0&&_p|֝ㇹ+8K 9+r+{)(Wsg5+,*?j*$JDڧ+ˑ<٫I (yv{ev۾]{t;{6ۚۿ]k7a\v` |`Vl|+\7 \Q:&2$#WՉ&)lU*A4&t} CG$ BMTlV|ZvSų`Zb<ƫUf[\blLZnƟF@N0E@ʬ>\|؜ݜ^HB<\ʹ ܼ,=-mm}< M<M , M}lϺ +%M0 273M@B-M\]Jm(-ˑ,GU8XB=^]07-Fٜ_}aO]QMR\wnmZV&MNbԄ{gr S=u`z|\]؀p4ϚѤGؒ*]ٰ ԭԦ ڊ"Ӧmրe٬]ԡ}۞ۭ ּ֭'^^L ?>O~ L` "^N&,.02>4^6N!;PKCv6PK &AOEBPS/img/search.gif5$GIF89acs9scccc!R1R91c99R99s999B9BBcB{BJBBBBJBJJJJJRJJcJJcJsRJsJJJJRJZRRRRZZRcZR{ZRZZcZZ{ZcccccRccZcccccccBccccccckkkkckkkkkkk{kkkkkkksssskssssss{sssss{{{{{{{{B{{{{{{B{{{{Ƅccc{{{ƄތƄƌkBƜs{{{ƜƔΥcBcΜΥνƥޥƭkkk{ﵥcέεƽsscc{ƽƽνν޽ֵƽƽ޽޽ƔkƜΔνֵ֥ΔΥcΥ{νΔֽ޽ޭk޽Υν޽ƜsƔ֭ޭ֜!, _*\ȰÇ#JHŋ3jȱǏ C)o̬Dz˗0cʜI͛8sɳϟ@ JѢLӧPJJիX&U4ׯ`Êݹhz[6dsn%h'oڤ·߿ LÈ+^̸XK6Ҭ2kY3yv ;W >fzq5'L3sD5IE۸sͻ JdswN ZbZ4)tAk;͉#珦Ef˟OV7ZRˀhJ'9 @- "xI#2,!M%qM߈:堣W;G(,#t Q: D "{)Dlr<+>#MRw]/:ۆ+C5 KM8y Ѷ4!A"-}A"0BM4h,e}-˸jα?>=r |vU Ȓrz8wݭxhE381艜l=$HØ Ta(̧"Ai&nH7ڥbD (l aݚl;~GvS,3x0!D'_p?a@Kx0| (Awk0$H>ާQ/dovkX=, 9q#+ )R#ChJ  NBш 8 r?p,*[ن[A:p6d,c[(K;.x7#tr3 ?tD3Q|왉֕3vP[(GB|AXe*_-*HZ @j,.K-`\/Li ZbЊV{MsZJ,Y&>#aw8 F^xEKYQ;0zVI@鄬dNtBpf7THãjP@ PЁ h@f( [!h^ K&^Ӊ//vn,b dZ bf.<#kXpefh4"`bN#@^M0H'?hݥjK tZ?P֗wo~{V"XPɞ8X8vrc\Vf,A"F>9~b>\R̰n j/A};$HG36?|'=αwJjȂxγgoXcLv&43@i& _b.w15R1!6^ScFtRԨ.u(Tlc,fEٍVw\~.Nݝػ%#LD˻'N[GocF̂b+-|_(OW.c6/aM|&gwWOҗ zӧN[*O5R8x`NhOfYu$˻O|H;gOշ|=wޟ>F B`x &I} |[7m7_䯠 ?ˏ߾C6b Y@?1?C.|~ݐ0 @ ~ŧ+~8{7&QywŇ||x gYpWpe PW B{'yFxHJQyЇ6Wy h/Ȃ3~;|2 ~CX3'lȆW dh8|엃鷅1؂/ȃ9Ѕ91ahyqІ؈8Xxшx7xq w8=+p~~_X؋'Ȉgxʸ،Or 8Pxب1q@؍8Xx蘎긎8؍֘h؎x؏8fXx (h Yyi9)y}"9$Y丑ؑ&0Ȓ6~.):<Ɏ! @@7YBJLٔNPR9TYVyXPKѧ+W}`FyZlٖnpr \N{WЅhٗs9YYIyf ؊s( ȃ~9gy)ҙhÃ~{yxٚ  p 08 I)i ɛ9y @) opٛ#U|>H ɝi9y)IͰ y)zIɟi)蹂@iq&z( z ,,zd*y (&3* PD=Iڢ= @57z 90)^d0  18*b0:SB j6  P( h#9Yr**z.R:N9JYje'bڨ: zJJ2fЩi:I: @ Xꪰ*'J`'JI jت*zoZc:+j*j֊Fݚડbڥj H .zjF{Aj*ڨPz:JUu ౲Z˯o.*j +Z5+R겡JKڲ*F#˰.ʬ& ( = 8 p ZҊ*LJ_;:zN9ʵ^KAKW˯:U8˳D{ ۧO[|dt*iTʦqfh* ۵z۸ *_[<[i1 G Y=ʴ괆K[;[[Q4ʫۻ$[{+ګ۽{ۻ[;k о۾h[{ۿ<\˾kk<\ | l " \h|<.0/\}x¨2<>ܿQ BE՞D7 s Z|?sw2g'0О}茭蚎͂.NbǘxE1Pmo|!8WL~NJnǎ}ɮ4n}v-N~؞-vގ~>W.a╍& zš6G_s}Μ⧗N^` 裾7l.nprt3?5#X)脾|@17sKM:M|ē֕n.I sceO9OOUA/.`_q N"` _]ܞWշ~Ĝ*xat/ξ]'>q~ڞPڮ?wou^O? eyG ?x]_|IؓQ̀qu}!:37GZ5ȃ^ܺ"M@ DPB >a|-^ĘQF=~RH%MDqnc1I[IhsIV- PEETQ)>UTU+l2O2}ElZmݾ%\uޭUK}W.^… .7#?lp0bʕ-_#ȝ=^:hҥ kj֭6mX&OŎ:NM|6/OS {uۧ0I}85+o߈ PD1F7k{Bi"}C^ V 4Yi=3!0BTE/9a~0CXm F1ahlD9ħ*I/#ŹpsbUx->?Rbh,R( Gs0p/+#UX5 mt(>>pzY*r4>62nsduU !̛Y kn#ׯ![ XI~r% sB $չ VgI@\)X6$ ع~x T9]*TOVT]NWi.3!t&ܠY.u^Hr@w+mZNZ@pOW̉t43'-bn%&ʁ~hFa~uTZKbr|]"l1qZP:TըGEVTe? U:UVժWjVUvի_kX:V>*YպVխok\jֳz)rk^WuM]:Xְu*`%X6ֱV16lf ;YfȲmhEKVv@mjUکִA-ke;[2,10L Rׂ&npbpJ){ ׹+cvSj\.w\4/iҿޝk$x7d_!IV޿7\f-NEX2C_7~K+Y]Zv[`@N,+ bص"^Kb՞şQ1e Z31q#[c3W?-{] 9Br{z/$W6,3_XUW-"2_|2Nez@$7x][_jfDm'k: h$nX<М\̨|Tu2 *5'l =w^:{t75Ryյ^txZzי]Eq:ٍ&]{3sI+]@l9 ~wey;寧>Q7 :>@ qgY RcJ>Pd sP I;B,^M4{#N'?^Ɔ<]q'1ܯuvz~yo_8#>9byW g~p NѝЯӠaҴ7##?X@L88@ 0 gts"AX3|d@/{AEC ݒ3+? A¾= c'=aBxzA$.C{XnO<np)LD,[B>8@PD̾7s=? =3LEA U<~S7T?w ijbLS ?wڿUkf|F&SBc#g\Gjs x4y\T2};~ yѲA~ȁ DjSdȈdH56Bn< 4xH6Ac½kB6 4ɓ,lȻ4<˫|Bis] C#IHb:9IJ'>L??bD3}|\J8waW'l)XcaӞ K@|%lY©&c.^oäM2~U*Fv9/o~\y͎x6c5Wtƍj+w_m-œN܆Wcʐ˼7[+7} Z^Uvw޶㿃9t!p_G1Ҁ!6=f/1 C @=LE]ŒA{?.i@bj(ӄhcĥo\!x5T$b7x#>_^h[ %wQ~&̖5aY RMiTqu\ K>w75Pee1T6GAI3]vsWn cL9V:ѡvjx6ǔİO Jbd^jt5h\Ieag3-i][EY*d"%jXٱ拭u Qn뗬櫯Aol4 Ep G,<gw ,$l(,w\.0,x$<8ks-<@ À $00P7S40'X'\#0\]Iwm6SbudMp?6K=v |PNpq?47K޿P4,NA &8yz둻 =7e t~  :G#߶#zУ/' W>붫|wC}~#1@ ăc}Żdx#Jg/}; ҧf8@{ n2xN$..(^K!f9PxC"nnH'Aҝ` $#6knc':J ṿײ> hFHBL"eG=:!|$FIZ6Nz(P2h)QJ22e7JyJ 2-sy]Ȥ0riK3ⲗ$rK`:ezLsռ%5MNa!75vsG ( g5ԠxeЀ4aTs7>^,Gut i*Sғ̠`׸ibw::VM}*;KY:e3YmIҚMjWkC.򵰍m"" nlcRfq\'>'Q׺tJR ۍg9)2wEsB͙"e~'&|=i;,B?E S2/[*屎h-(CݧnxM=wcPnhUSMW8v.Jy}R1Bb &_ (~|H<ŌgCmqVK-!vK Y! "uS-hkc׹ ,^Fق]0FCa(MbM+C]ޒ:rgY3;,Y F2yoWRh~) І{>xkܼ-k]!v#^vݮdxʱa,9N,h՜$Z51niM^vs@!RN`<:yΣ6=}:q|=ۘjXϽK+k[g]ߒ?9-Y/X;_hi,m%(r_[ޠʫoV }Wxpj9mutg DyWxb4P0Up7/d~7MXfq̣b%XfVu2JUᐁI6ǰIBd@Wa$7d7" R zߖ=s:jv(s@(\auFi=LHMHfOr,wA?adYKC^9iU>}hDmF_ 4h=nPW~~7::ynxF#Ahn~8?$}|7fxz{8X{XkQӋ(7D4p4YȁȠ\`ev˸5{uF8e7Uf 3 D 3dbEgHlcB=qlkX$\cVU5etumXQ>1UEjHΖy tD"吡hry|W@9eِV4TR +y_X(hCDCzY*ٍ.ɓ3*)N(WJ9`L91NR0TY sXi0g^j|< dYfyhjl _p rYvHtyz|~Y0IjИ9 Y9ٙYٚik[Y3{t9Y``93 N! ݉\Y0@I_)l@噟2[` w1 *))  `pY* p< PP@CPLZYɢp@_@NLhڡ_ p@X:8q*@\ 00!Mڤ|*w EZpꤓ1ڥ oc0_ nڦɦ:y{9wI   :BJ~J jP40zN*ȩ`N;*j ɠkڝ~epa+|@ ;f ${a`(Ȳ.2;1;6k5{:;۳_>+@;DF{L۴NPR;T+A;PKhfWPK &AOEBPS/img/acmg_prj_pga.gifsGIF87a Ԍ||||ttʴļμƴ|~|ҼƬʼ<ov 櫄`L;6TO]"7HotcX\kXtcHG6rԣIŬQp8GN4)Z,zA#htdf?$.Q`x$c)J򊕓R{Kes]cNpnb#A DoQ]1 ̶˺A1}<'8YgʤS$͍N,g8KvST9꿀%t^4'ꕀ_L&M2.}8#>:fs/#zP+Dd;AOU%!N9Rs]9^zR =R ͥ?M*2ɇR*RяTyHHχe=7(ͺVjPuUAUD)>8Y^4YaArty(_eYr mHbzjsn[̴ukB+ NH5$HKeMTz(mL8Ǎ%_GHbgSZ0,:W\}!2ѻNL!;^KZ;=ZtۮF@NJ xxgګ%n{׼",O*ʗNRhRֳ*6>iRe.0ۘWwLc@L"Xb)&;IۓL*[YgQ~ߕ.{aYL2]a6pL:[4πMBЈNF;ѐ'MJ[Ҙδ7LӠGMRԨNWOհgMZ֘v5w^$66`FZЎMjk ` HhE?Nn\2y`~t0 t o<+'n<HH&,5#GN| r(vxMA9tv ;yW蛟FtrC.9Ƚ*v? Fz}g#_:tC/赾=sE5:ٞhw]Ay~`WI7yFpg򐯼Ѿ+Rʺ-/scr{]xƏ}@ w#7'_y3&>|OWowuO#-zs~;?ёtypܗhwgmKwwg~ ~x~wg}7}y|WmM7@ohw|{ ~s3H{:j(%7zɗt70؁Ɓf|vqGuo聛hwxx煼x'tgwzkFwHkM7pGz7hjyH}@pւx؉6'Xt`Og@f86pFXhHHjF mqoU2U7i  6ux8Xf`lǦVn4_e8iX8Ҙf0Yy ِ9Yyّ ّig$Y я*(.ג094Iq2Y8Flʖll}pDYmmn5hR9V o((oH`fwpWqHB>bٖniاqGw] _xt+rHh79txhh@x&[jyr9#(qnOut_분if|w{(jIr7wp'wSXwjI3oYw;he6xc]7}mzXG|wyvhƄ|ߙلwzz9h/HY:x))뇃맟JYx gD*ڇɂkR :s쇉)iZxxGɄw0 -Z"GGx)hYvz)! ɟ48k'G)0ZVgѷV'Xo*ؙhn9wljY (7Xv:ֆB(]jYgڧJ mNZɦGtꡇxtcx5ȜȩiVo牝ipZɪYzLJ~ChExڈ?8}:Ԋjj h⪓dg::V(8 Xy횯mYטn莓m+Ȏ6zꚡ kzK ";$[&{(۲4ɲ.+ 2[H6:۳ȳ>B[HFJ۴ȴNR[&GV=x\Y;xyب_&c[yGz:.:kl۶3yupt;Wtz~pIJf|۸7+p*K+ˡF z  ZM[躼 [˒{;ɻ{;q;֛j{Kjٻik;mifg껾۾K-j{ Q* տ栿\| | ː  \,  "<$\&|(;PK]PK &A OEBPS/img/acmg_cr_index_norm.gif="GIF87adXԬ̬LNL|z|ܤdfd씚ԼԴ܄DBDfddtrtDFD||Ĵ\b\¼̌TVT<>-r2ȐCp{McJ4dDHƣ Lkڗd<<`I<$Q%>Z&"DH)? @<HA<. asDZ:[ d % RU&1ҡ>%NG ԪxĕU÷>|+n ¦ {#5԰i6x 'ř 2<@;pzHIPmi80,8޻&=pH* rZ 0$CL+O-Y{5 ͖6Í qjM#<+d9Hs0-Ydywާ*05"RR E @Yt묳n#ԸTua`g7yjghd05`<΍<Mb#6'gǃ C ,1*u:J'z %vC;t 3-`cZCmCh„ r d$d `c$V0Ix0xu.yJԑܺҷ%D]ku" :PSHݢ HEXb M_v6m"ش&1|› tp47A c|Ft)1KخV ɩ1TAPN(7';St#PXֲo=iNΨ6;&a8p!X %Vz [8R?̦_$6΄5'}ըa!{l ղ]49צ|5&@= dմxeȦ8#ҦD<]%E)"8:HQ 2JƸ:k9$FJӶԣ(%JwzҖ&YMzn4J;TZ3$TTsVU=OTBtJS kiꦫb*YaPp}J>@׺xͫ^׾լ`Kְ-=bBB5qSB@Zͬf7b& hGKҚqMj3ԶFUl"Ims6_EoK#Mr:ЍtK]0ͮvz xKMz|KnL>~;'L ΰ7{ ^CL(N;0g8αwb@_HN#3PK)[Xr.{`N/L2c>#pa9xEg|;6 xV@c\?wWX9y4*'˟aCKygAulqG9vs.bX.}{sVO:Kw=7:^tvv|CqǮ"<1vn[r7nq›襇77?w] 5gn?{ᮇM빇Jyߍz#줧0Qp\O{֖ DϞ~~`wή~$/~G=~7xO b ؀!XXacFvh7q^amvjvv!='py؂.Vgtb灮f{l6|2׃w.B^|nfn't|I_xhe{C=V&Wz'v'x&_sp{XHjk\XTeELJgx_tB2m$A*v؈ve3xqgWqqG7upFXzU臕ȄHx7`SJ'ylq},pg؁fq|6kFi(']}xք|ܘHtRyG~{)i݆`xX؏y YycՐ9Y ] cZ "9$Y&Y 960Y )MS1: 36)e8B9Г ɒ8DLy F7@ Bt $_Aԕ`ٔni OY`7$@vy!jY{)zٖ| ~y+hJd~] s{{f dKaay9mazZںkֹ!0{fa) f{)y3{aлee›^G < k{b[_0`٫eˋ^Ƹf7ͩ] @de+ʉg8˯b^y ^ ƛ넿keK zxeFN 0;ָ]\ k3€@ .:9JipIt@lglYTJK*EJ-:F*UBµ Xjk+ļ_\tLKAiLfW_u]˖)cyblȈY[f|~`5EPǔ g a ܯ ʡ[bʢ* !XAV@Z?D6ƶj,@Ҍ_<͔\ ڼ̈́]`|Ζ<˰ <ζ9 T R` j鉗ԋ`01#kɢe< *-]^)*^[Lʛ9wL=G*0=uUܚΛK _] U3 Ԇc\)] AD]u}Pؾ'ڇq Xؖ;6Vm8x%- {a-}0]pJq+TڲPu<􋝟w]"\ Խðτ^mh;nzFٖrM׽}}uDzS ]m*1\xzݠ`(s۝ٝM=QBb d([֓k3I<] `$ .YLЙ i 3Z~M׎,&2~ȝ ':) j ەИ) @!>Xn`Nf WUn]V lm|xz~2|~Utc^`qnln~^͒>~ΐ.`Μ鞮Za`p^=k~`n ?_Mnͳ_n뎮]mg^)J4>׹pΡ`<K7=IڤmX!_]VڊwzO^~ĭݼ9ޭNv"*mȆzؤ>\k +쐬Ë,}O\:}kгﮕo(L.qMM^.ÃM@׽ $A~eZ)aߝ'/Rl.Q ڊ>?*ۮLLv^dlKBoz)q.6U$ ۈ$T9Dژ9M4nC[k,z*~{`Zʏ`Q*-doF\n}>e͝$マ?Ϩcj3/* dW(1|3i `>/ Q4qaRx:|Sy7 z u1]bK!ϥ[ m~ap BD6AR\'}r$# eS0 -o\ Xe$XҀL*}9J%qLuhJsԬ5uFf6 ^ʐ NhӐ9yrs: x*=E{s'? P;3-jЄ*3]CZ1gBtNC+ьӨG?jt$- Ҕt,mK_ Әt4MoӜtu t @}IX H(pL@- yLeyPl*_9a8)8`%DcHceAa4=$Ҏ> yӟ50J+@n@xbR,k^kBŏ =hMszהo}#p d@@B/8n4]IK:v!*&zۏo}IRP04fK5\}TG]c@Yqd XW,v܃uV[YņwY$x4ܱ|}p ]4_mGb:9yB/:xnSJozqRzmnZzisb/{en;ύ.w|ݍǎuϲz E4RfK_oB-@Jgk^6@RG^3'W9!`#!( מDZ79B&y%|N\hdP썳eňrۼ|8\g=s=JCzÅ[M{_?/5jFjjE=كqk{hx&lyVmXz`'fyv- 6ffxn6fqWya}fPo p7.脒0w ppb 0q{g2q'&rkls3džq\.'uVhgyyt}Ux臁6(h4h-,舑)((||h(8艡(0(h h8花x@hȋ苿(HhLjɨȌ((;PKΩB"="PK &AOEBPS/img/acmg_tbl_pg.gif9GIF87akĬ|~|DBDLJLdbd ,*,DFDdfd  \Z\䌊tvtTVTԼ464TRT<:<<j54]SU F̪a,8-&#2͵v[[--aYb{)f0\ky ɀo|FV, ER},6ȱ0̀3᮵wno v ͚k~e˻aCs'[v :lF}a}6er` )h̅W]8f~gY҃o,EY/F|4X" {a!:xߕCUʄ0c/P^,2d؁šq;jXbޘ$v yT$Ps0fkib zh(} % ut`+ybqKxtuqn 8hzE[Vf){Nt kVm7-y퇦faܾୖ'y]&!bZwp@[.S+'xbp-sFj쇃|,{8 Hp5`$?g-iR',>[VTЇ.WHOzW;He:ԧNTVϺַNRr`NhOpNxϻq'FOON`됏|/[>锿7sCOxߺ^SojԳ}}َ\Hfqd}c þISnh+Wz7_6΅toOў.wGJLk:܍3Ea;U-`U/~_؍afFcVaiVF6o7vg]+Q$fb(WlpRɗn>6wpVc kcրg~4~hIcZ&eTfeXn`S%f†*iƀvU2aEχ%9chFh0Qpp6n0H'R&l|ׄ6#HVUlWKX}&kjXwkETO8nɶpkRFiorXR(~SUgȇF_g_{mvmG](1ˇRv]nQVY&hjoA]qVfwSR WTHUWqxzX=h`)V'WxX,yE 8T7xoՍH؏7UYQy y^x9Yyّwx"9$Y&y( ՐْȒ.d2YG6:ٓǓ>XC9Y@{ʨE{HiZSYY{,QX7[@ؕה8^HhR8RXfiVxoh}(ׅ~Ho#r)o6{}E~}H*HWP^ZI%]ȉl8H}_GG`IeNJȘgȖȖ3hlExTy([XjǙ\؅nRb{eb茓9R%(ؚ"ńfu (dXiTg8xFW;e=e]惊(I)RGXl֘'t#(dv U X~RӷV_hb}Ufk؟!u&h  pTڛqWHkXmV?Jc8(x6*٢(:cS4ZJ6Zȥ雞YcVm{gTnRcjy؄ҩ J8*Uoo׷}*Xdxצ׌UjcfYaՈ[Rxq=v*3UتZrrrH@swP:z'Ⱥ<5:yؚںڭ w!Zz蚮 J m{::tzJ[jtUuWgbXLiX WXNPUx +U` [U|}y^Mji:{5ѷasW]yq>{]Ϲݙr/ h4KW6hUY`y.IW[TyfJ)a Fc$ʶHV5 *bxYι)Nji[l,1Vs;id9?Pƃ^lvk-<&ٸ ~jW5(J[h~+Wۡ*$긨pn ۋk[UkxڣUW>jeJ Ы/ܩc5z]z]km6m*hJBq +e9Mkx:鋈z }K[JW! XKK#;U [}Yÿ˲vt?aXCWE\31ĨկLkP\1GLLJh%ިr>m. ֨RG~|.MLՆ5k.ʋU]q㹎듮ur0US~kl_HG7ngknԮtzg^)}X:sR\_2nyФxT̨2孩g h9<=^p0T}㠍]I< $<>WB?D_O|HJ#R?T_VZ\^QM bd_zhjc<}9s߯&sEXvʑ%sekxE߿׍ߔx{+⨥Hq̔q5Wl8˕59Ur8nF9n#/j  ~ρ* ,VK <. .E͞8[yf蜻eѡ۹9^jjf@ DX,NUE(V̀X*ϢynOp Np q0 ˀq`/)(Tr1UU,L,Uvv#"#@BBw8MXxYʸ79tTz+ӳ3Tz\ɺ\:uv]9a"B^}I Uab=,a8Q8…xե$ʒډt9$(|,7i'R=+2fjTSqh2bպUO׬`&tmZOɶ]n\sqK6w7_biz`ŋ7v2‘)W|sf&othѣu&}ujիfvlٳm}wnݳmxI 7~yr˙7wztөW~{v۹w|xɗ[xzٻD~|f~Q@  T\Al% -[*̐=DcEQI<E MLy:j NZmL!4`}1SQ<6bɨL(h,j" *204 LT8zS:t;ܳ-:T BDE]G%%4I-ݳK53M=E3DRM=TU]V]}XeZm\uݕ^}`b=d]f}hjlݖnp\n;PK|5PK &AOEBPS/img/fmb_view_object.gifGIF89aCkk99BBBBcBkB{BBBBBB{BBBBBBJJJcBccc{ccccckkkkkkkkkkBkkkkkkkksss{{{{{{{{B{{{{B{{{{{{{ƄBƄƄ΄֌BƽBBƽƔƔΜ{{{{BƜBƜνΥBcνֽƭkkk{{{{k{ƭB!BcνƭέέޭﵭBc{εƵֽck9{ƌƔΜΥένֽ֥ƽƜ{ƜƜƭƵkƽ{ƽƄΔֵֽ֥֭ƄBΔΜֽ֭ޭ֭{ƄƜ֜޵{RޭkޭƔƜcƔ֭ޭ!cν19BJRZksޜ{9!,CK H*\ȰÇ#JHŋ3jȱǏ Iɓ(S\ɲ˗0cʜI͛8sɳϟ@EѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx*߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨEZͺװc˞M۸sͻ Nȓ+_μУKNسkνw"Q|ㅄ_ϾNUϿGx,f_yyxj $Mlt ($h(,0(4h8")$ (ȣ=&aTk@ĵ ʱՒr䖋)T馹lnn{ն+Bڍڴ[@/0 _ $U;$q,)n`xA˩0 gBJIa؄  .$B}X"{<\bWP|Gwl uGD̩ϊR&Z 6lװ>ݵW\u<1YL_WD)#,GcG.}<x2h IG@n< $C&򰕛QIJ^M =9ESz`CaQH,r&Ѕ%ώ}phJoVnLg1G]ގNQID.X1wМ67!Rtf,91Ė.CF\zd|4T4e+>.9VIݮV3[!iunu'M40^*w^h;e7d-E+>JjZߺևY=k[9Id!yn6HdSBlQSb(AuŮNjLC=-8Lr>$ry[Cf76,F]&ͱ|d.NL|Yl‷n-&h%>V9qق>F4MR;Ş_fp٠pjE "&|.7'vvMzηmo1NO |އnqs xtqs8-KR|(OW0g>D(#~qv<y 1n'!ǹi;PԧNu~K&: 'ZH#`tdg7pN|wvC^;񐏼i^} ܖo˓wOWֻgOϽwO9(;ЏOŶ{OOOϿ8Xx ؀8Xx؁ "8$X&x(˰,؂.0284X6x8:<؃>@B8DXFxHJL؄NPR8TXVxXZ\؅^`b8dXfxhjl؆npr8tXvxx3 ` Π8 ؈H xX`lP;H +x  hX j N u`ȃ^ .0P w Y`Ĩ+8 Ÿgx+،X`ȘXp^p0# ,H !Pː b x@ WN=] yX QT8 ָ e 0X`X dph p=H $ p I0FHX @.H ŸŀH>X U0@ 0 d` .@h,  gHYyi{ٗ?Hh# N wx F`D菑)ָ Y؋PՈ)iiȓ؅`@pɌÙٚtI@8`莲2Yi"ɖ)!Zً)(Jb8px?68ʠ9Y8p% :X9 4 y=jI& )a)94 i.ڡ](Y9fx,fؠA؉ɜA( Pꊀ ɑ8ipOɓRɓG-GVڙjJ]،y:hш͸:E ȚʺJ8 t:Zzؚں :*z:C0ڮ:`Gzگ;[{ ۰;[{۱;PKR4[PK &AOEBPS/img/acmg_cr_prim_key.gifGIF87ad+dfdԬLNL̬|z|ܔ̤Դ܄DBDfddtrtDFD||Ĵ\b\¼̌ƴμTVT<> !Jã<&lR;鳌 m0y F9>88H*ˬzZ꾋:×8XZ&CiIC-꒬01;0@i<+j_*0fK: !͐.Bn9o @€g EOajCC0e[  h@ aV|Ym+궘l6ܨ*^ { lJCs.kD?gBFyo.n ϐg8[XAe&`zj[G7n{ Ԁ0򁛆A Z҄Rw}k&m]ܴ|QX iHǸ Rd$pbaF J0VT m<0@-4B\Hj^5dGٖ;K|n?aavI)),a2  pȜ3=TfLR:,dqhJQn2Ś״ 5QpgD7NӜ < N *gq )E} h?(<9&B'JQԡI.:O> g>@Ғ(MJWҖtLgJӖ3 N@ PJԢ549RT4ݩTJQNRXէUծ:s^ X[ɎhMZֶp\xͫ^׾ `KMb:d'KZf7z hGKҚ=jWֺlgٺͭnw6pK%lp:Ѝe+Zqz /g+Mȫ.{K/~L`"H`͚+J]@v] 2L 0lG\aR$^ n @ `@ z`xE.]W̊.2qiSҒaoܮ8i}Қ&7NrI7}xt#myלӖ7'f.'@ b&-5_$'σ>t4Y0:ve>f9w7\g5FrLbE{{@}?=P^a|׺k:O+׶͝kW[<7yj=|?/қ^?Wx^kyOמqo'?yu^qgfqvnwlhbfp {dE{6gW~Gnfg}Dk(XZZu~;gjdgo`gǁR%k~E)(xr~prXփp0rB}Esf74x~L'eL'p&b&wWF'wZ8EՂ7gaGjGozwOt7fNGhYv؈gO!xuȅX؉Ȉ(X_5Պ8X+舚xT8XT HY_ ɸ̸ј0(Y͸_ب8 ؍㸎PXxW#$^ϸx@0+ ȏx@a Ȏ䨌hY#@Y Y 9 %ɐXhW#P$PW7Xη|}x")"i@9Aّ?#ٓ(I *ER9ȇMxX7 Xxœ yB'9CI>IK锊Ւ2Igg_Xvw9o姇_Xm;D @ieIiɔkɖՒIis7gqcc}cv%YIe i+Ҙ , 589ه8{Ǚ8'Y!yhB9 Д98UE9vh7 =VYa ٜ )Xn)i`5H{䉖9ڞ 56'qyWbIIi J ʠ~Zd'e/tWX:: '|;:У>W@^BZ I`GWI^KVj PvՌХ^`b:dZfzh`զnZWS^Wz0Uzڧŧ~ZE߅ڨ[GƨZERrjՋC*jxUJ:嵤#hZ Ǫ% VZFfᕏ:ea(Vn֫薬$Zjܪh mznݚJX bgZJizǮ߅*k6̊bG g?گ{* J%uJ"+:n"[& ^(]k]en@{'k H9۴PYOTU5Z۵^ŵef{hj d ]zr;t[vTʮo\p!Ժշ~+뫄\{ݐ+ڸ *fnG Ys`铫[°ѹiiɆ %":)k_i婼ŀm۴ vw噅U Y+»{;̫OՋFSiYX7Xf;9{I!ڼ˾ɘ xAa{1*j1~w~&j ¼IzЛ :ʻA9 {@al[s9Lܝb |)O|jW̽0l{狜:<ZA {2E^oKX9|yz̕̕[2| 3L9l# &cq ~emٗ(܄sƝ4VI8I|8,ɉkƍń @gʦpZF*{3\6-G|!!R]]K=V-|Z-[US^-`M\k[f}h Imc=\q{pr=xUMU׿{ Yp=X~M[0ӑvفX5#:QݛŸǰX|ͬYَy~uIT7,~|Yklگ; ܇щY}, XԽil[ܾgIYݨm~|lǰ,Uް>\.I)0Cv mJ0jN܄5m3Nc^2Λ,.Ξ\yԍ=57~8}\ɭ@CͿ] ^-ڸ KЌYq~l'FM ̝;ݯP͎<|Pmެ`̼m9n !xY( ޴5ٔ Չn ~P%Ծ] 0=ٽe> 8}ꜶG]θfNNPI[>w똗^foM^Nn[ ^[lv~co눍 ?ꄵyXMEm Ny?LܻXMf ߱pk dȝ-)8%<^:~S@B=ޟ\F ]=8o|'鏎.vBa2,.5愾YUκ=᤾-I(,|1nϊ>崌A" ~o99zϢ͎Yn[Ϙ͚$^mi/U/_Y__HN -~n#kO 8HXhx)9I P *:jҹI IK;j{[[˫:uU~ ;l~ξ;ݵG <ʽI?<ŗ;=z~mK=ͷ{wq˛?>ۻ?ۿ?`Hy` .`>aJ(ڄ^anaT"Hb&bIUb.c26ވc:XS<dBIDdJ.#L> eR>iV^e)Ve^~ \IffϘhfefr$tމg7کg~9"Jh jh.z> i8*iJJ饚nJh~ *>A*g 4pJkdV+LP"˯@P@.@+>(8PABO@@@@x m#5K͂&ɂKɖ/,  HIHl  @ \p(1R̩hAtxk lǴ /^L+@|.LJ (@@[P:M@</b_ry` - б:/3 4wk=5޸=v⑶K XAث4&PSlw093x餇++κM`yJp'ܘptў˴8lr߃:w ]N}R+9y4 l' k5}Iw4Rp=]}} 4V,bBa ,LH,/X tI p%@( o?O F<:qD$JlY'JQX+jYܢ/1qaU3Yi\W71e, O9Q]լH6:)W݆.uXd y0r $IZ–p7J}a(+QfrRa%/zM8`12Kp!KM 3U],_(+ ^s,+e/h ln_ V/D5>a4My g ЈhgK]3nī/5 ]~۟vϒg8t q '9ʱrĤE8wm]2K=7L0,!,n*R uҢhg;pbBw]'MJC**j>AkLu/ߓ@榿BO W)g3]4\.uMFH$iQB/-Dr-%aO8zKsZ(YvUNCͰbmTG d(o MqqT*G]sJJ͝u[TjDݮw?WCy'TP]{aʗ0}RI/n 7&kL"x 0LMHx/ kx? x$.Ox,n_ 8;PKpXPK &AOEBPS/img/forms_to_apex.gifGIF89a kks{{!B{!Z)))))){)1Js1s91199)99199J9Z9{9999BBJBBZBRsBRB{JB1JJcJcR9BRJJRRRRRZRZcRZsRZ{RcR{RRZJ1ZRBZZsZcZcZkZkZ{cccckcscsc{ccccck)BkJZkZJkcZkc{kkkks{kssBJssss{s{sssss{19{cR{kJ{kk{sc{{s{{{{{{{{{{{{{{{{քBJsZscksΌΔ)1BRJRZcckΔΔޜ9Bs{cs1BZck{{Υ֥Υޥޭ))1JRZckε){εε޵޵)1s{k))11BBJJZZcZks{ƄƵƵƵƽƽΥsέ{έέενƭƵ!)))19BJJRքB9JJcks{ޭ޵޽޽ƔƜƭν11Ɯέε!)J9JBZJZRcRccsk{{ƌֽRZΌ֜ޭ!,  H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJՊʵׯ`ÊKٳhӪ]6VYJݻx;nC߿ LÈ+^̸NjkMrbd˹vPӚeC.fҰc˞]ۨs6%u ~6qк۴V-߯KN>*O QcgOǐ?ђꪰ$n)(rl&툖n ӲՊkj \xz+/λ҂欧 [AYMYnuh \ګ~.\i*CPAMj%p^AD0&SV !eu2IE,CF1gʥqD>MHj7CLwpN "A`{&5mMpBI'MI"yk$ 1p 4PVCCD.̚LzⒻeL t֘;2,2tn'pyE6 `k| .;DOn v [mLz`*̩h+v駧Đjw>z?URl1(z}&1R{Pp {KFx) >Af Bg# acJ-Cs1k L!,@P|cYj4p'(xTj")@d(c#8`ހ5ڮv#"! )YSD dA WF}RYjvw1n%A2"z 5Ԡ̇Xa#͗G%Mb!eĦі̝E9MU`Q8:QNBmf5ts ^DڤA xѕc*I) |߈!=>:(B [rS$@>EV+Dar DB@:"2T+&x?o9lHWZxFNmSy6i~|*UH6Ԧ.KEFTTPVUJkKVucMZ׺VB-u[VʵvO\fQ4HfhLYIJ83IMXKGN,Jh:֘S7)]![Pn3fh8m^uV|h)diXnDRg~ wU>ذ2cOWn ^m_`7|iD/r Ӏ@#$иx@eFr{k&X`NskT.\+;MlTc ]dZ$O't3cy[Ua&Ota^j k_c=\)͒. ^vuaW{:vM=f_ !V }F٠E]ePB@"콕xƓ a 9/?p /pQXqtS}uSG7~R{*_&orWsc(:<|yF!1SdEGz,QQnSVP}ʰ x 2v8/'ldQooj8 fm'1XG!qTJww&!k73HMu7h !CPYA!=(3 CHvHow0ǐyy=|524dq7tR49p B9x*-o|DP^hLNo?>t\guxiz|hy 6,|7#)mBqT8gk-qXx PP z%~Q'%o^xIs(Gu(Vvn}X Y}s$3'S<)hLax\1}#qȍя5J~ligꨋ~S(|>h1q("N a_&E;E%5T  >S6ii cهE(X!y裈 s5ג;sFs'Jl#4 } R ъ8d&VvN(#<~+sW r4wH`SPyd>[AC0($@aԖNIaP:Yɗ-Ljq1V.BG ٕ}ˀh1#*t#x'! "$ 4 py̠vn*GfiɩvR>,Hd# 1`3҇ aE3e:!w5@S T i`@@0j @I* Ij*i r*R٢Xٛ߃ q1uzbJjЧɀP ҷ#(Kl. #dȐ%#"Mk׻  L(=+.++rO i{e#" "06 Ea"O   Jb4 !6`bo&[cRMh|v WDX:A_X9 | FxH(#; B p# y| >;asA( P+  # @Z#@*.!"b}J9 \-J8gpaGV&"aؠ 0Ur$b` `j OGݶ5i93KHLϑ Е =]KckPۀE5zǗ@XCVrYp0:C"r"C/rYQX:mH]  }@j|I] {_z0 z0c_=Z)3a0? @ ۜu~  f #c b Ɠ bא \b` Py4l*zƵ3a_$JVk&ԫ"W& γ`g~%leD2ke ˨ V| L?A ޴p :󛕒 b&P#a驉= uaa|ݜh;!!V" ڱ 9 S[`2:U )EV9@׼Iqv7G] xMp<̰9J5kwZK#ȿMa`1#4)ZTdaP?߀Ml !9 0s X|aA0s@ a`nŚ u"&-Ͱ33nٰu)v`~;SہR?&F}EHFW8k}A-:.s[a ˠ9pTA'8 *N>Vm΢peIl`x^VO΢4t0@Pnބ萪Z[s <P6@@.0#p"[Nٴ'Eb }Еbp ާk ypNi^usjZt`ۥ9έ#q}NI.3j deM-EjW^ z0E2Eߢ=37"0T.#oŚb  B[-@P`b]Yڂɡs{vXL1gAVfKh*I3ZʽO@+ .? U\QF=."ZPDy-]'̌N=}TPE @`LdMe6V;VKk-]VȚ2URl q 2.OxҖT!@?Me8޽Pn ,_X:tC 8Іi Z 4@\ōG8?͝?]:{խ_ cO#&|8P4v4ԩQ_ZF _җH;dD܄r:eY[1< c"Dc B&IL=y/(d)x PZ*.D2I%dr0frI>y ${ 'dDꮻO"ƟA/G#B##_P@/`CAlQb4AC_y@k4@KƬQwkw<TC6#XCֺX⚏!cH`$>%!+)N6:Ȃ Ô.!z m餓dgJl9fp"@p2X .▣u5H˕Fe_&h$[%ap*lI -zfeZs G/P@cB)20mRA6-U"T n>&H3l`ġ8a'?X-O6s:&s=juu"5ݨVpB+Z(ipiG+My piZ0X&Myyj"h矍7EF$jw yVrJW?ߖG䱀$fș 4D* n- d}=KAvЃsTfn KhMyȱdX0:⬘Ld>`-uud=۟zb. \2(Xf) DƲK2@ H<6*A$Bpcc 6a> XXnftE0%ё$Og3MQ *3Pg A&""pUʪЕM $WЖa.Cm?#:NdFV$DŮ\CIi;x1+&HP-Ԯw$P}36ъR XR!RƮ2͇7YV0i/!ҢQ{:> i=Z+T4#WB0vPvդ ? %^% 0 _vQS6ֽl|)[Y^6MM;xV!k1)xDӞ?]fui6%spJd6#H@qχDBF= B[#lŤTw]x(z5,Oa#ky/E2IRo| ADk?!\ )Xf0MCZXX($P^B2֕1;flЇ6t5BhQz4"]HzG@QLS#@4"ٛTdIF+&ɚmֳ'bV ~ZF"L0v ˈhj$y B v'.Tmnomr{6C?8t~ZMT{Se/6^MNZ@$15蚹k1KGW9A.NR8wLYVвr/ye.7_9s:i~3BXF{|Z6l<1K|5bA }=G-]G<>Ӏ`+ A"%u< =oo{~}O{7>po|vSԑFYzd9x|v\u܊"*N6aD={&tEO%o5V*Jӓ(SvUM16V7׀[WUX׹KJlJώA Q}ONPDȃ<,H88> R`k"Gύ "SIM(75}XlSrР YڴZ8!6RJeUH}"TG [ aYUE<-x$+d@ֆKW%U؏9%S(dPZ0$d1`^[ {q܂ckVͬ$_ o@gKM҇d 0s=Rqm$=@(Wq3L=@Dhj5F1>`yyh>胮>c\hnhEMv*%-72[%(uN[ݼLk.s}y @ ᑉc (`&>d0 ʟXd=5KS,u]Rϖ(2[)en1ng2eRDM#نh"3*l̆J[=I~F`OOxFh=@m ZpWK\kpBvm%]MF❜8 >Yl~өղىğC̔&oih6NN_ < &@ajikVXZׄM"5I3SڑlbtFqI%#T=2Ggq,j'N)( `.#~k>^~0#s8-)qbm;n1&k:+-YRS13Gz8q tQ5"C/-Tkf>HcuHtQ+ 7[]1vFnr7wR5l\ĞVp}sn't>oOPd8<&:P*`coRf[uxvklfkgx p(@J=Q'uqpw=B&O y-xYjՑzu[sF6$WCʼnZ`G {i nh:ok&G_nx)J3XGX `_0SgRyy{q8Gqw`TFRDes@f >ӖPPl>B7.*̗suȟm06Ed5L/{%Zo41_{Qw u1O}0sWQwT8LJ|fU}֑˭~l\&!k_'|yhvt~di,d,h0@cǐ !ĈʛXQŌ7bX?"CidNjWXgH5jΜ8gˠBT9(Ҥ'bV-dRjO}> D}_ǒef,:LBo"ָrҭkwb2jbkj- Èܱs qGȑ*O *jE-5 O)@6o~Yܺw_I1hR0a5Ff%Ldrg>/Z=iKs$i+|bV{?3ܱ)S *&8S)RB ]]<)QqP\%uQ]FuPҖgh8N&x=A Sd4\pcE!C=tQBitURu(}KU1|T!V i|GߐUS_U46%225`n' v!m?& cJJSIDіgee=c<@;r]ï}r\V|%vJCxaT&S0EӸ>TX.(L8ʬk2YkM krLMK<6hdK ͒rNb F5cTcg-cE UF+ٵZIE ^2x:!634RL:foC ^|4!GXY6$c22<#Qi>[B5ׅbFڶfH?V`']_Ŧ^*(vB>/sB@KZ49xA 1N{"eaXR˘K\dJȤP'76CK.YƸ-(@#Tx!LDRH @J* TMBGb82_ :cUj}k[ uv+^׽~^B(@ /Jr`#+RV^e vЄ!j9N|hvIى.ޏid Wr0#X-*?\tZOChN #8QH4L!36beRȊ 䄵UfHVnʅ ="*>0ǃx0 l|c4! _xGC,&>1Sx1c,{@d dbHE$+ jѨNTW[!瓇-*d('vІc)] )6>TAЈؤ-}#vx"`@ةa*t ;0AF9^% > w3~w0q.j&/׾?HxH@Lh SԞ1͏_mGX+Dd 2d^HRL% +Rs>2$ &V0%S G6LCV0bd'-N" M  ǡ@SzƴP )4d`h{"pRO2 4m̏9*NAJQ'bom[ r>쵳ў70\d-m~{?-[B mP^BJq16=A 6, ǞI9d8fݥbvK6Mp3:ф>Ԑpv1ՙo5 8[u `원R'M",Q8BAZJZ*Hz!C ]I8h'&P#XQW@}Jhΐܑ}FUؕbZٱT8=6xJB,5<[ ` /8xJ=NõIcxSYeAx}<-6( DМ,#{a$%Y ,B!`8`a$IS a$"<^NTq"qȡ&1R$ H5CN"IV8Ir-Nܜ=DЀ>P$)zS^\PO1@W-C.R8L BaD郧 `&F?x$<\KCFdJZa!L?`J? CL l 3nvjrz~'A"řNd@Q &AJP"P&D@2TAPMhE<CAD5Ġ %$",ZRʦn)k6B [tBmYӇ׬^ԭ)R ea@$@6 6R)l&fd>E, >l) );MicV܇GyPJ)c {؁|˖)ØY(P&@y`Zp@2(u8lCȜ+ h Y *8A$ _s':ՔUljٞ VTNP 8>&dPiCF.E^ZEYCCDF9m$CWMz^2%(CAcOU1S>ڨL&<<("f޵^,^,̢0P[*#zED 0@/,D@',<$@ƒ@ d@(,L7$@x;/$Mp&ȎG2r/ѐ#:$ Hh _,C0D4^H؂LW#4Vò>Hv$P.;y!H+g x2 Dn^G|x_ېGb".WՁoK 6@z'Xqs%A<\Ã峱@@@>hZ&<@1ktcHH /u }ǒrV<=4Yki\u1G28tF2uRi 8ppZ5z;,GO^5&XrkcYoFg;wz;2T5Tukyp5wP1P8Snآ326B)/8,d%,G``0C eBB7@ lGm3cn[nIώ(DzXCio} MYs#N<с{K\,eBvgMrH Ld\ *[*7z#k  `( uꂈKJxH+{W%-qi5 \eF@ՁhC,@,f?C<@>L_/ж-U,.Ylq ${C(l"yWے=wG6PVwgJxZ^s m @ 3M|yv/rhOGTʇOṷ&ސF-|u0<^ lM"+4]Ex9C?l8axe’:iC37XjBD'{,z1?:x9?ؐ?;l6DW`4D/ Wo[3_G+4(Y5I~,P`˒ $Z"H( #"쨠">Y̕\~x4"hClF '4<@@|o|53< X X<_N,_LYc-XL$(c*I!?JɡZ,JCp EVGlArӞ #UMdLZD'mD;lhЄij1%; ~Z !Z⎶ gF/xk1;L!]HB&Î\uG^AVPSCZX ǶiWb7p6ٗ9g硏^7z7ؾ'{`VRѰ#HtO\`*#dH 8sZ,a ct0y@E` Ph @0š`wfYT[Upk aJD"qA氣\u5`l2cq! & ;DU@D4" XD <GS~3>p ixӒap$ 4 *v .X±@B(@Cg+ 6f Z*'Hdy!SEFz7hJSJDwFa̯"!DU ID<:`)Hww fk(!  12 $p \*5KLSC^fF@Db:T JpEi' AhpW}3":tfk(h,Y8X%qǵ ҽQ͝iN] O#M̓+|DʝAS՟TkUd$IRWLīqTBNS@4@p#Co̱ BB.H_H [NidhpBU"Tw'30M$<`?R1Gh0(e_ cq#e>aErHh* x6! 0| DTz@0L2An4$@|ݸĘnɧ{7ڟRuHp2} NlLgI&%ڟٟ4EgbAc"L"DTs"":&([+(*"/" I3lm`B4r+w ˂0RYE,tp4:$# :'~Ga׾{ޡ>ׂ a @|@+gF܍#Gt.ojlDBhk`Ҡ!1%q (.Q :SpP&.Dd8bTQmc)'v)"j|lӒ3jBkB%jC爇ʎ+yW" %GyC E '_H {G" &! Ұ ]+l r&s93^䎖&#=#A2$=#E$M$?rpoiAd"&y#rj!]b2`1h]!+%TjW %F`;C i><@>a xG0h `   ";2{!!. Bb!.C Da ̠`̠ށ2!N WF P'#vMkR'׋u>4\hlL6607D7PSs47y8wL47Sxb-Rb/SHLwCT1 ''%~("|. L69|`>:a=q 2a' yD @2h@pJB D?zZB@c#<@&A! SXDа&@0 <`G=L3U3^HURS5s>cn &hjKLSƴjSДMqMM!bK-L:Y 0fEXP""{AF#Ѐ @:Fõ~@Ay=t?c?FzZ NGz04B"|><0t4SYc44D0vH<}tlr$TxrKݫ.D"jIvbj_^^mh___^ awblɛPO hk JS)QhēQ,5Poʎ i>55Tb4D*K ~T㱰g X5 !Hu %"+XiB/_C60Рz|! &X4 Bk! @2g< ZaAm=@2AH'T[Ee4fdF#H.猱4][!z 6)$Y(S>7.wr#s5s9sY',("b%V& #D0 1CEFCm#XȦ#FS! ]Q5œ$q׳gjLqFOl|q s>A1f35" gG hEqkvֳ(s¸K 铈DyAPE:?h<:y>̅k V 4fAD B 9f > C(? d5Y33Z3ӶX@BD2FA2GYD[fZ#4O"EVcű!lv3BzA2!~|lBaɋD0H D\o:no-"p͖USw=C˯- SazbNeds̖67j!;B'\-BJRGu"yEñX:~ZeĹXXĭ OSݶ' sfmP5%27ϡzڪ }c/`ё07}@%=ӷLG)aXDE"/Ù߈zwqRФ7 3u ׋؍[#^YUE70ε]Q]Nrd=R\1.t@ @ g8 J"BB=$p3M=}*]Q<{&AϜW.}4a:Zeu4P)Cgi&RC1i={ܯ:}н.ҝu7xO@ mS`F18+'9Î̆(?^w%[֋8>q&؏?J\ iYZu BmN#2"5bUB߿ <0‚:L>dʖ-і'N8fK5`phpMj 'o̙4k+@d %7\-: ZBѭ\/\41*HGk lֽkh| 8 f)1o:~\P AhTڅL(G;:լ[w:ٴk۾;~{ <?-ʕA؁\zl_* /LX fmcOwV6Q6ڈM&k 6(r. sʿ`3ss3:׼s<7sr5$L'RGMҾ(m/dݍ/lu_s-dg=M/m6nǽۚ)cɺvAH+%lI޺E'UR\J+aƁx`(7H-^n^]P`NL<ʤO2=S -OBU-aѠV8(8 ` ?>G\{Qqwi;'LPJkM0H,*p lnhɻ: a< rn*~8a,ȃ -tqu\_cc\;)" qSU-[A_8  r?dCRPyɪ+:@H9F4.(.;5,Qa+BQ&XA01<&SX?B]%.IILjҒd%?Pr)OTrD&.W$l?/ܥ/uJQr]-CTiP XL-l!M6?g!ʅOG!c%t1"i+{N8ĪnOǷ… 92c:VxŽcǩSхU؄6d$! @?Jml| ?mB1UvR mR?G"en*ě4:PO{ZHDiQʤ *ImZԥB*RP!.թS5t&=yjӄUZG[d3 hLAqa3)&h<)Aq@[%ðӇjv~2Bhh#筢-zD+5,k#ґ>,/ld1~.D`j-HjQ:F6*wɵ~Bwҭ.ukfͮ1mB /twm/{9TU bWm[5zOD*M'Tc £9 S4Y=>;͋\>MEۊΟIfkH d#c^y( "'X!>.D3LYu#c'T,ky\ɮv0yd2Dl=}K**Z09RR-܊C? `:ն90ɐEwY{1RZ6idE}Tp۱c+6< /&KhK2A8m*{.6MhCԞkk;4N p{.)lj(~V4H;hpRMgXSHĭk # [JBg09LEw~ "wA#vy#GhH|Ptka-RP()E\H< Gٞar Uw aK}qS:կS]VϚLgW! }Hy#@\/uuxcU8"Ndh6}N9r1#ٲǕzMsR;O=/mlo^Czc'5!L >_^tI"{X<'VkѴ xPk~-ZȮwP8nb&^9@ :vGxH߿Dx`wXp{|aR[?׀4|8|QȁB{`#$*Xp_zwEaQu0,.h|J'}w7X&b-&t}wO}PMy1}s cs@DpC`WY[ȅ]_aG ųiH8x<֍HӄO_t δ*sT0p+d(@.TpS]ZeaV'*Bq  y w P&UQ?YYE9K0IԉkE Payy#-G=d-"eYZʥ[] _*aJcjsUZx u''r'89(rC|kbʉBkqAw6H>xV otAcE'|QPJ+QQdGƊiZrhy8`h)L'XvV!z-d7zܐjxgBp C}C  aWzla[X1bY檫kBin'֮IetGڇRLԎ~#TFW a@̚ ; Ӻ9ȧ rl+;Wx*3+1Joꍲ+M8but؛s"|gtJpsz`A;>wך+@SA֝PEr*B- ۠4.Jy1Z:ExBDK' §saڠgf耬`;XZ<*7QLQ*dW %k1 i`.'Q &@w  1vP^ɛkzmt< E`0q8Fu&b!QoH.Ԣ1 wPAi Rm9 'ELT7c$7N  b2=ȫ,lhu곅s8Aùuȫëfw854.xжq E1`:T#Ѐ@00ǠPy"@@$U@!@v0Xu0C` "@ j$& !|pl:ojX*~ `&C+-aAIKZTCq`Y̷)|G HE{.huy1f=!!#pn iڠ! X@4@X0b p P$0jA0+)#`m?|Epxk.#\YK_fUE4V́G;bVKC ˷J sx`*4u#$R˶+@" D@% 9MΈpa0YD@@* D0l i p{@1a-ϙh[Ȏ#F+pP|}%B*B,8x,Ca b ƠX( FzD} bMg}yP,]@FQ ޗN eAGԬǬp%ӋC4 Q \,T0Brf ocl]^&h@ګ} < .ǻ=}O[+ LA.NID;-_lՇm*gZ[I v@ Ze+, Đ} -1e@ZGȐBklv#`!@m FNȀ :w+ep-r_z` 0mD +[c3T yo?,f+tQH#a.?~zҧR4f}L<' CSw}J :)LdPUJNԢ6lZ4gYqֿ&SdK낶d0}C 5`c~D yYCTc$"GLCd<41 M+':A J$K4Ⅳ @H mC2yO$(AUeգcxG`?b>$p㣉S ddLd#HGF2ژ1aIL^R&=IKJґJF-hѰ<(38n4Q/YF-hiZԲe/oK_ب6 `dLf1LdB|2f'i6l2bL"|` K1`:aGAl!9M,M5D}0R6ѰY `4)6PaJ d"FD cn@ `Ɓ!n4 D@ ?a $}SFJ"١ ~!3CSjUzUb5[Vlx Eq@qLx;VƵsk]zW{k_׿^)sZZ!D&u2yd& !D>bbus4+,sH9B8R( IR_&5 ZO;b0Dk탎BJ7*DH>@*Dt1 P@<nGNP^zDH'> 6fU&?|#ߐE055/ gk=aX|F2[E%i[j Nj/c8>mv$0%qt6@ Q" aQ/4as]H}4ޘ:nRcX@FP <]&H*!!/=ˆ+Pa)$z0&t B #{~>By܃ |iLNpX0 `"V7VNgëf] XkD~$Elj87!d=B!Y~%d,rRAok9 AEc~}reSl%$)@,H :$ @uU u /x!,̩Y/O pWOT{|'cZNuWq `™E,dqS|\eujYRnG}6\Mk !v;"j<琭S?8|aO5>>ʁ62D -PPx'iū3f =:5{;ꑏ/ $(ҏߴ J Ba 泧km^,E얳P8_r%*tp1lP:MY@:H;dt(r(wm/*2*6ۭI  dē<@8y;?<|;FRyc0op -!;s0"Vpci:<@@@5\çÞ#tك[ [ #Ǣ حcM؇t r@zA g[:)<rIDHəm(ӹICC9X)cC` pK*]<{H/=í2o$D3ۋ.D&o P.dA B<qY¡'v(BsaV \+W}ɒ#aCpzaHl@@d ԋ 4=FѣƷjwm=ƚF ^C,>] P1؆UCUg{h)qPB@"@+@*pB;.S;4,77"3Šиd,+hSJUU]UTՍSrU)mUZU[UZmyD,U/R9Ȕ D;P6F7}S8elMXM5Ģ+MDS1і c:-|Tsf`Q70x9n;#d`(,#X8XMX]XeXUX}#-^UuQ& axO]va4-}^X M)Ĉ%x^h޻ _eƭd i!Ӕv- ZCD_i ҚB"qM5p]*=1*;`ZN-'J(BD\I"=#v_XH"; m>Q%:)֎lYՖx_ ϲz@ ͤ #X@(NӐ'#iYOEP<1Ȃ$(d88PgWV䅈G`"#bVhe9<:CY [[*]^_`&jʘ:ǚ XLqZxG-y5y hb(|ax?8,8pZW)@5fPyg{<-p6觻Ä^h6 4(hE+^f\Y ehlӐfbخc % S(U2p-Y1/y 'mq;S`TzPnt%ȐM ]oHTJezg|.dހx Vyk& _PR^޶Y&Y*FFb=)[  _̹nzIqb^X6Y*)o:Ko^ojo=ǾHfڍoId譾om 8ƩbvgPxp߽ڬM#dnᶅz|㮁*EqnqqF *I:k>LhH)q *!9"A#?r$7i-?e sl.hJD3_/-,N@y1# pK5}p!nA σ1BݒFtĈ0dtF8朠qLXqIm TR7Sf[ror)朝_ Ŷ⁸_G}GH7 Ȁ 4"q 9 h~A;p`fHys}BG(nsG yPtQw :N% Mx8X*492lXSCLRS$vE^P:[ .XYφG@<ܗUxDp  K8G42H~ZA0۱D4$Dצz7AzFo Ip/ tbwCɏ3** lP4޷50=38):^RofwSy:nM Z韐uX-DYlm "[ Ń.Y"1J1dA;qN=ZۦOϞ>{Zèt)ӦNC N"͚Uc^vtQQp>Mv-۶nߪW .]Zͫw/߾wq$ Mu%cpX 4AjaG$97XXE!2%n)V ؔᘣ;nl 2ԇ7#8,p?+y^ # THGq3]ee.J T&&fH!3_hf?@("V"}kjT tcsH>&Cgu Ģ8nypg KxjH?`?t^ K/LI-k#@Ět,(?IL-vbx2R^ovTk SKzK+OǶKA[T8YXQca@D!,$1hHxlbq''YM䴧L>wW2Jlݻ K(ydU_2xM/iY`Ϝ̄NZ4/e|pZ F6M?F)B8|M r@Cnb\7 nk-c<`r!D 7I0 t#t혎tgmҐ,u=oɸ"I4h P:@ja$C) Vf"F&qF\2=Bc!OrA $12GZa8xJ3NәLKhIg\ΣAK<% liL@ ɤlDaMqP4"p73 @nJ77 <7S!Da Q]0 PXuKOɚILJ tL=̏^0;l|D</fhOO/51?@kS81#4sa * -^ѡZ!u< ajAy#[gvƌ15+(m>{p/dpփ-@ S۫B5-ehOC*-FS3D GD*(QucnF @b8.-#nΘf8Nsc(E?ԡFug|* ChT0YzAm`Ebp+V JQL1kZpbCik?&d#Uc<8TL@tsT5#܋ թ|SD?P@y@H '9 ?4*\8kߺ=Ł`Z5>; ~9B "%,L9P3&64)eF !0U9sW捕,9\Ҕm *YUO W{Hg6اfO+XZcPh]]&6aJ h P@CP[<0LoDR1q +Xa9rDE4<@<: @ p)$E.]=?8]o%E^ODɔ\]ru]8WmCQB%C,(@A,D;խpJ$[ݥF ? $ q \.?` R"MRȣObI$TcVkwB&DfkF$E&EbljFJ..`~XVC 1Y#2A=EDDIHA*eC2t6K-lB(t#LP21P'//LCHS&c2)LQ^3 )*@p(%"O%@l\ (B_yHA(NhNN@-]ҍI˥$vN%>$D P.~M)~NBAåEPߖ\8Uz^Py%6S'3,CT22,",Y c}T~Ră # \%,pEC>^X(Uu?n ]erF`>S~b@]=eIq&AW Bԙijj4i>$rLVM^q" udS C"Ĥwy @) PD\ie> }Ō*66\22&2$2(2 BҰ\-Y}l* LU, pd%'-i(-$VD<\bXB4 ňLjyҧŶCȮ*@܂-(--n.3qLcDhoͮE4V#F%F^ ZҖɭD( $CPC L RFmR``+0߂+fz$Hz&*%ud6t0eA$4n2yAnr"Q)S>찲/b]Ѐ-`?  &8A~/Ҝ>DPc Z_h"F"oo\##?)$Ӧ$cO/&Xt)^9n1kqfYwLh@r/b\zKE V< HBY8@\tC<':_AD))V5  D>udBV ];- Ѐ= Sq])u4v8Ҩ  q3hIC 2ɂhCjC600BlvMvm׶(vl,o60,)p7qwr#rwqs,Ȃ,uOwu[wvcwu,twOwxxByB/y7z7{7zw|B,B}߷}~wǂ&dxRE++-X}S*NHq5hXMS`@@$f2VHu.<hm@2D`^uhА+ ~@ :#W/yvgpɒY/%lšiyg&hnyyyn9hC34OC86 NT2ܲn7x݌ wBlhB>CP)(̪L*2B<7k#bge̜2DceyyʕY# V[˕GSȶg{ҷ{;{{GS;%{;ks{4m{|bxP}̢o:)dotzyQ8!ۂeGj5&+>R %OP  &LR؁`I7c8hum%+F%2Xs=7 ]UBˋ)~:Y{Mާ莮|= >~v⋢7;~*ѲyD+IV3*0 (+ʲ|ǰ|ǟPYJSvC|BԪB)Ё_Z`5OD@B,{fϣi"C@e?2?Zz ^/w}:V9S@i+ 1 eA .UaD)NXEku$cI4YI)!*̆ 8p N_N9BG1d55OrN0 ~x! ` .J[;0E8;ޑ:G>я~L=C-:p*܁_P8Ō@*UOJL*i-\=E 9P% NbKhҸ4'db$SLê!C%hcPw`><`0E`;$'d`PG*ATQ2 CR QQr\ŋ"S}%PB T ݀(m.G$58)CD84l=+@YOK*N_ScU΍҇S4UG@GTGxCJ,@# Ȣ;U@! ajghPIhyla9 1+(Qp1)@*ˬtP1*E->NX0 mf9Yvv$(!ZePf & Z5ءH1S`?b+[QG7o0é&[#Eو>|x?[^׼m?+dŘG x(gѾ@Iu:0RC8%iH+Z)>-6oЉKǁ#N'dcKf *<>SQ:h_^# R"Ħݡ bP'p)/GI"WF0:"PvT8gH] :Qi2X &,="o`D8!D W@uVb j۝ibS8> Ex|%q, 3ME@k^ xR u2]":(`4aG&LЮV8ClB#|fI]`LfbdrL:EZ0%&,Jhdfbn2(+hh@gR.oInh(F@<.&PÙ)f,'&2`b1J Ă(bՒ$r(9VHŸg&V ֥Kڌ )@.Jm*jH y"fN VHI*&I kb1@ v/zFq )ʩ(L* d J&Kn՚[`Bd@ (-줢X:TP;2x\-b0@fjpZݑmQq0H.KrCO@60| b YyX)2 z@-f԰+ anB)hz'@*p,ꤢ$nw2yr{2EJ&$&"?R*@n _N.qsj˨b3L.)P&(m, N" Mf8zE"Mdw",.d$H$/ eMk*LenÈE.le1,d$*d >L#J #{Dy(4,s"$JҀ2̲7G‚G{&,@&k!.\ 5nX(n*si.Pfhj./`e'/#\̯f2&A&;/ik p"0'dlvb&{/0WktBrv"Aa8afBS>fPpBdqwV.:lT2+M6 J.Kgv"7} 4m@izd4O .T)'C4C;H@TKLr3hR<׃_&S>rdSS&SEhSQn^e)@$/ f&2|K _,ph#`Jh*UK Al3ie05\u,VВ?J,?xd/l::!rb@ .@̌p^@g,CJW<Sula\a36)s&D׎-h4$2K/mZ:j2`$L#(dSBkZw;-u`=ueCUS+)+>i/v*')FkVtV "4/GV Fn2qhMA)1BNڐ'dR`h+r;!*!*+rwF.t'"Pe`"$_,Oh ucf{yP7zVu&HJ*=0 WJ3vnjEHV$@Ƣ6k*ld;VV 8IRAqwzw6zAfjF&_Y#W uZtl($%()FYchd4,cb h097+\cl)kM q94وQi ?S;v63X Ix*t[=\g3F_-X/C'^nU8roF'KvMQxq V-~UcwT`0Hه%5zRz >8n$$C)=igk{j2+.ÕyI`ՂCNz?@}uyԊd)9<:Ⱥ2k#9%8.)bYU| kGpRJ6ZJ)=߳͠ _XDy5giF4A}UŸc'&JosG(5O# i๐Q,+\ڒC@לEHg:FQڛٚ`Ez 1@Hfp!bZh=mL-Za㏥L ('%X4'&y3QŮȿDyyy;xn=.KU{킻x,ˆjU0MlCIwcqb&*khd85%EٱTzZq;mgk>o^{~竀`=T8aJ`~뭾 콾~ϾGWq%wfUh70C'l<6iRQҡȕM]\3 ]PUGUtx"N+ql7Y <*R+J}~{|__?ՠnҚ^n!Λ_?ϟϿJq!8F@0'tV< (!O8}6a5GEE DZc CI$IT 2>0cʜI͛8g~ POp0IƋH+N|xQG: Z1ӉAV͈S/)JuZYhӪE&Sj!k1\һ[joX}bÈ;9ΦcȄ4)Zi̹ϠCMMhװq"[-S4ir{S߼|ȉw-bKNZbp?$v^ pJl\51~ TA KU6?暂eF}X\)5UW/yՈ"ԉ"~ 8;%cP1DՅHb vHCPq&dlS[m\v`)d^vji4QSW>igxީgyie)(0D61 Q$O i FwD *"r%(:!+^@bl^ɬ>k`CPQPA\ Ԣŵ=6Vdavm>~7ۅԕ7xI.f:VUA@enw瞇袗No+ ^쪯:aW۩ax/l]Z8/6.&5tԗTBo4K;O'uxI{Z߉iȾGWOץxVH*؁)jI*phKi"I44 2 6zp܋GHBʆ4GPH@# >j!x@w H  VOkbl*%΀h$$k\8ZU⁌p;7<#8<ԑ#wTG;nuY2 "9r".,Ёrt&7Nz"'<@&B<}҆>( y222/%b"(Em:Eـ61M=JU‘6ilrӚXM-™qĆ6Nvf;IOyӞ2:w[nsy35h=ZЂR#xhD!*QF3эz eG4Fi:0WҖ#(Gj@S$2Gwh3yd4)e4)´AJS!%!hR史hMZ׺|o<1k&|k|p `ۏMb:d!당(2$z -( E@RKyP piADS@^^URGH[JUʤ kw!̄[[Kcp; jk,|oxb^N5$I&f]dq5C8xfY xܬ"EH}E6`il7֘@UҵWxFҁL`"/@Vl|__ȲtC$$ P~Aϰs6ê#0TxI{ZyTbU+u}VX D&4^s\BȈ~o/B_&& rW:;J[Ni}U^yիte/U9e WV8ru[w`C7/y} lZ.tY_Qb_8$wI'cζH!'s_Rv0>5 H#n] 5d2>FA \f=[qk|-od+ol,dԷ()W ye pLɐ;pGT ]33bXUчK{T#7ǁfÁb%8r1̓ENW݆ ]򶷜ẉo wź.~ $sBES,}S#k0o>VX -떤NO!fz5gOOCt{ޫA;p1؍+[(@,5.DӋWzO/Hn@Q$nw K݄ Z ip!8XxxG@Xos|Dqogv& H}qb7%~E~wP#dY4Wmb'4X5/v@{XЃ?=Cg>XJ(LxKML!%b(b?w!!R,!H#bnevnyoG`Dg6zIA2A mt57nTmt؈8xhnpd|j&k,#cH*fpjXlln,( _s{:}#Z[ȨԌ茦(8XѸ؍h8Yh6eXQ3b2}X+NJ,#B6Vn rq9 Ss  ѐ 9Yy)YX+[kِ## G(Ge`~` .T D:QccY-3BYDyFHJٔLNB(Zs&}a2ե~,^.9d0n&h_<ri9#svyb,v&>eF,^V+9dYu1y5ɖ}RFsyibXٙrWI!f~p3X_Kɘ*-[G`~UYT Aqx$ ٚ ~٘qdzכٝNėw](4Gʹ՜R^Ӊq# Ry469[虞kyh)YiHkY1ț9ZĤhogc9Wʞ j9RyRi.0U } k":Xh(Z&z5 MvLڤɟ~~!8 =*hXBX (G)mh \7QWVYJg[ڥXq*7YgZ TpS")Xh'pP- ^AXePu{$-ek}٦b\ie(pG4`Vou@0ؐepصXfY&  5 j6i֦:ǦS4"UZV 0j i%])6[pVW^]ou `?X`X5 ձ ݰlX0X0) (<rʅY) f UeմpZP҅eCe P{Z`ef n `V%0%-Vw[XQpZ,uZ@V ~ @ж {Z,`V퀸nX0 @}*yI=[R 4VC{euG մ @0  rf\ @ ސ 0Ppi p^h p  pp  y Q Ր `  0 P 5    [  вke P p鷢JJ;DI\ ]CVڼ)VJL [+;p pVUfV i np ǂطI[ `\X"P.XY<•ܲX %Pí{DsZĮWV)V#0h{ű`V"W L*]\@pe o[W-V-o-必\X[X|XPeX P ,溲L0nhP&솨5L?,ʑ\mļARi54",]0 K fE ջ$A0׵pƆK)qp pkX\X[\ZJ<X Ͳ z 5 ɧ):z|!tZV SpV `Ke!Ň ]]l,?As pwV pVҫڛ  PXзe  ;lX`<ɌýܸlM`bܡϣsqxj~-+,:evigj-\6۫p(,@pS[APƬ-Xқ@0-p!ȀÅ@ P۹uč.\.^ QZ;eжP }tM5 :H؄7/AV0( `ܴTW|-S4 P` -ꍷV06nu*X% <P$ QPXPб,-@,PQ P >ݩM*Ln9RTjr漚p sV/vx 3I ھᝎ^toMhմ0J>z jxus~86 hV x4[( }>hw _ ĜeTp]*&*~mM02?6|%/vq(T@/V?BGlK3lJhUD~Cެك !Oc?g0)GM9_W\f*N `` !  / o_/0 g|f}ʿǿҟ ƿgدg8 ֏cG8)č2\͕?ьna?_ j NΦZPB >QD-^ĘQF=~RH%M8xm޴/UTURD4+V])!֫Xeɞ:Vٵgێ-ʴֱcXW^5CTI… FXbƍ?>)@.s< /y&i) ZѦ:ilƝ{nVk4Pv;MB]tխ_nR2/c&x{"KX-[݋>f+|߷~/@p.C@dpAd.X9‚,ˮC?1DG1l#h"3B4ЊFo1GwC/H H"42I$T(BsD+2K-rʼIk'xڦ25dM7߄3N`N:3O<Գ=OA (P*dQG4RD;Ѭ~^/vXwn\zÔ{a ٦CXǓp6hm\6Y缡ݮ~` SI<w!g'( 2D J$"zCd8<0_\Zb4*/:AM]J4D&6$B̉`{6A4!FJҿu*jVfFR$w0ߴDbiZE%eD͢VitcN8B>TIEECX6Ve,5jjfRk 1XA-ؠ PkZSBk8F;n,m lZ< `)zF;lr566wz^2[&50ǰAQԪmk_pmG` h)ܠ YO6Jټo<`6p,cX΅0LTn1Y Jpku[O)xԻ8n! ''j-Q`-TIZڠ;)^nCF l!>xI\u +m[l a.bݗD JėB dCpLKgD?Sn3-qӻb-X Z@eYc_0afmR&H0\'C%d>yİ le8z 9 UGפEtKG H;ifC F8!zȳZW9%ygMk[V8^Kh8fGXJf%m Nnֳ*iDb݉m+}-c-ҺZ6w9][]e#UsggoC XH p+Qd$[$B:tʱ=qm+NBgt'qUU;H?5ŞUc5G;>EZHQUr;I a 2/clu i GHwKkȵnpy@;*eXK'tߝnkK]~{ y<΀AuΊJlM@I=?}FbE`6o#2?=K@c4v?)yym?x<)! AA4;y*l4<T@4Bq@ѣ k82|=b:C?L$P2D p$҄yyŠ7¤B5C15@2(299>`:BCуȃc+(&)A=,;-D+@0C 4Ns;ٿyds7M͌EI >CCa WzΜ,e+"\QBy@ePeQ[j%hHGƛhU+O@cDMHl?ٜ͐PR '&͑)=EZ]>`^=0Ɲ;[dC] UBF^A L>U[чxiHg ;p?d[k"QēMU#Q-%Ap| vkr\bZV\(EmP[V \EnF+5Ƃ@FȆu 7JCB.jp)*HF JTV }Vo|a#.+,+[<-ȁ$g⎣vKmBMɩI[:F``fUpP0E,P˶sX&+˰p!&md>ӋL׆md fJ#DS٬dnnMwV4y5Pb%=P HT+hH^3;؆`8g{ p9d>/ ^r5M s!6opSpJ~d >Rs= jyWYmc -$n$TkV1Lpd0O|؇hzh[RZOP.ʂþN0"ƞO^lu&1 p(󐀼4_ vM):o4(<9ii[mms@t-tj(oSEwq踔I_-C) ΂ʆy{`vPy nzq@p]WT: Fqrqu ʋO >ʣ/͂'y02LvoSsJpRAdoy n?tobtW4/pDE]t@wLJZ~]wުd6bL-G J{mZvܤ@[*xBլQGJM3J3褟g͛:e5زgOC'[mSISN{cuתi$ңcz<ڷ Ǔ// D8Ѳ uӯo>~5C$ӦR@b)s6J0'sѥKXLIed;aqDv Zh)WOHvTeWx#98P6J t "J;x E M(A 9Q_7i9]<(ejp: hZh8udVr$VGq$sry 9Gueǝvuyf CzPBK7*_P%hJTOEJ49̓CIQAYdfLxN:a"!CٯcՋ:ɘV4v-8٫Hm!0EВSB)iMP,Q {Hn 7AIMt6;Vӊl?0 vSK-U5UFflV%J g1,Pm%\or|ܡs8*]RZwVhx/S-g*Yvh"SuR=!APDCC=9DRtX؁PJ%O$ӳ&3bd^ڒ8#O<I@EB4 E0D  Z.:jԄ [A:da/E3:ŵ$ +*&)9E@PE N&fւfݖpOk3?smVvqn6z4u$eu;P; N)J"(A jpV2 X.JB)eA  ǔa Op$bP 0‰"Cj`Q1.fYA9GJX"79!2dXbB~ԹplI-GP@N H&@O*<@I\"yXb!ys#‘5{ 8Dd&&j"7e,rz(eFp8oxv9Bmc&A[ь@J@J)p 16ajM?.Q˒*M@%(,fR< &8i v@٤p+J*gQgWe(#0&-()]fQ$ELlNv9yFcK(E` @1% РzTH¡qO.)" .(3@:93N eP~*-ϙeҰsK=թ2m:q<7WQJ9Α%zzIBN֩T+3cf6)5  4Z9`CAm >Έ!:Ab,xؓvp|J5-#(P: U(4QD5 1d"tĺwl4`,6x݄ūut/5$x[冔cc#Pd:Q FMyi-5en2>2% n<$x 3W"j5<)JIB ^$AڑS,TkҬNX,l5ń`Ty8,F1TvYR接V$$PjiZM,i]\iZlA@1EqX@ bI-<ZmYLbƇB!J?)g 7_8papn x="P]Dg]}PbDMd H4i/,v"Bĕw1x`э Ȁq&eP3 Xn} N⇛(82ZƄq m[ մU] 2e]՟F%A$BJ8778 غYA`fp:F80Sh\4ZXx޼%C4SVEPABQ D1F!P&ă hT<  \ "\8e>\"TE <1 A Y4Bp[3%!]n@' Ve],aأ]  p@y&|G]߽ _Q 1DE22ȻdPlP&2 @`-PF}EaRQ@@0u326@ʀBe$ލ,W'_ZI0% pɀ> _ 2p@Ib2p @%P]VJrTW%׽"@x<` /A[5e8e[  EJC W̃CY>=Ѓ:<,H8 ځDgUňȉlR\<#Pمa2 aH}@f ; 2t%Bڂu^MhYC>lKŵJύ dB0@|LLbrf('no$ Ԁ" *H.MJ>ٙ;dL$3iTeMCWDHQ%;Rފ8TSBKH&4LIUD4K0~WڥxXNF!Cp0I LN)D4lh;m1]{DR\EzeDaf!bE2ȣ{g cMf6F%dQY>\G-wy ZӠ]Fl\]- sfnC q%=:e>9r2OU߈P'cdE6a~ XMjt^QjCB@SI_&V`b@N*E@czp" URLkpB\ց$TB"vX  @R ,P{p[5+1UPlAcBHiBD JS6%Jdȧ dT4V`'ĝCwv,B=1p j)F 0@-@@8ԄC<)ܙXly|,CkUHPAE8L8jOډ$j*P" $PB'"rL, ,$Մ ճ:3#jTN;mDrr;>8E`Hx\K> Q`IN-pW@'iHdFإ\ @{>j^f dV]D0ENj8B2d扇hqdM-m@$PB",mt , @tJnQ`$}U[t2&3I28^݀[rîCܤI3otFR8|+'d9ωT<MA*2++22,pW^'j<0~ъN8` E <`D V2yF4+r,@-+s8s-s3.we'2Lт)eC\ү/ (S:3_*G^T/s mN8= TQA$Z%2 CPP^6i뵽@A!bN@4k?؁N I󑼮@ӓ4f6r'wGtHiC4 "vpt$dJG"AvlAu7{{7{ fgmwUUχLb^/ދZYp2s2o2D.\o'e<3TU>]uZ,t9lYgюU3M`{ W#A%˒%GN7&<0S,]ݍ+gwo*j2,aKy;=Ls$Z`t)q!cĖ{@5veWfkH#QDNR@ϡG ̵h kR5{tAעsQc'|TQ $x@#2(''ICh:(' F69hz ^,Hc;KRI0O:qʒt:hpb:ꘛr)Z‰"e,fM[ތ9嬓;̓[⬷-еPcN`+db(LM'A#|"CGqgp*" ,,(mMZ Ɇv Ԡ(e#.\/Dm40[ٍuIzEƓ`X@ cq-cSn I:h543IJ VC`: @DE*hG6r Q'* "LqD %~ Z8s>!J6(RUlK*9*eFF JRS N8$.N;l=Im;n`[,4C{6%$ R5!(N!̓"3G:r"GTW كv2 mJW`gXcsk5 ݝZ9pPO1S[o6K/!۫~hO3H`b۞"*Q!qjᨂpe8B|q#<V R<,"|l0-H $K Nd (GY Q{(D#*qXx(qP|E"ja2 HB1QbG l{I"G@ b؃'n,ҙG4XA x-V\HR4NX]Зzrٍ7IL`"YFRXP;hcPhoYt# AF¤nxH}2$`HPB>Ƒ A`w0BH IPd YA^.4.YY0ma.0w8b 8Oa&k /|#%L:R)-)KUҕ/%nӑb7"ǸaQ ˣ:Bb/HFoHFİ*rg Zhe+Ic i(Ȉ4b;8hF E%G2!?Pn:[%ۭ%[+6ْnbE>T'JR,($$фW *$A{  ^բ%A*A , Yf $kh0a%KʰaEE.Q3ŚĠ%ta/};.}_ؿ`/n,XurrHEiڋ"1]]L<jdqYª<ȳjtY XЌ# 6;95ǨE6xfc (` AE2XvvS8ۆZ(cnU29M#[NԚe(ad<"(F$< >I? DC0WmL nR YZVֵ~Ҽ]F6Ll((;ܨ{4(vvliGӶv*)B0 r^Nu|5К="o! {̚4 q5kdz4Z:ji#T8AȚC@DTYo ;5 `IW} LAvDnC.)P;'>HJAs$8%I6MXx( )<(f<̘AuOGI׺/D)-T!ѭ(x7xX#OsoVwx$Ÿ )U /hqPe("x/ѱ#opb["ӒVN;(I^rd5NHi’kD`T"h`K `HiP)cY9FHÙxm$8d|*C` lb<2'A"Mj`(-/ ɧao:$ La/.DL R "#11CTH4v||"b֠ė"@ @a`D(n# ?2l[;Hh 9 /T"zgJPpi:]Hp% $ϠOdlaj.Ȥͤf5q7j e-JH'bC0>n/:A{@ 4TCc4Rirn I#h_6 O LZ0xq\LVZjOO1xpbhb 8` (*t>L %r" .<-- J-4"f7;$2|: c19ŸPjt0$W񨲇aH @D `I#а"`֨l1RL9dܱJ9R"5Ғi JK$q%,2 w-(8p,$"31.rH\;2-hNH-2ݲ@ 4b\rSC#"F&5bbߒ='Tc Ji6ao_ڃ 6-ֈxO(q6eNc G-%iN0i0JT.#s,Jxc Q82b_`s=wBs@titCwtAWt_tKWu_tAu]wuisnG96 )ih@ M C}  IiGti6Hz7:j&T[dh擆pj(klMouQB' aD>`ݠ}(K1urm졂.8A!FpŪEe4lWAYꒌ `8gXdؘhmՃoX87c7o7X!DD`uCBf4fI5%޲z7o]{=j6"з "Pm]蠋b-/(ѨXR2֖ `P CEEIe)Y aςr H1Wެ`XU3N9Qٔl_ٕUY[YcٖU9{:{7>"hAΰlxCJ ! |_`0D`LK HP$87Yovِ׌[>K,*_m[k}9` XjWxw~]uQ^y7oKpzaRv\oUt0(*9IEiބ'cUY o7c MQU:YzO=r{74x9h "?? g F jBZFnDF(ש0WT4%iD,ꪱ,[!{-1;-#:Rb%iA?exB2gahX nCĩl;;،k; wkM}-ZXq5:BC$ s[L%az@  a&o3q'BrϨVc;{h;{;|z9%$&f$ +P&"@$0DhDd&_D2@8oY i|]Bts&ԣP CV`U[.FKj/. :0n` <1AaU\4ȓEVoL1uo$țh#BG3 f?9ݜ!M21NDMՄq\~ r9C3{!l޲9AR. 0b-\B9}}?%V+#A4qPFh-Xe H3C 5/.BC8Թq.'!g!/ў5( 't:kEe2UqiDYvo]n b | 0HeAAOuگ=jjKW^@S1O0,}&:!m;6p[nWō#)+?;z,&;qpuTQy >6aA*m $Ej 2e(Rö]ıwYO=WP]g3Lm[-ǚӷޖz:CDTSR»+a?e_yaMXy(K"oPW&-o@!Ui =3KUK_Y[^`Tu>G"-1}({~~>!<]E=2nq RA*/kY=mg_b˖,$E "D!Mĉ IsV-p2ȑ$K<2ʕ,[| >pgcΎPI$\XZ_4&|NZj͆!8y-S74_%X^ cFTaU(CDTcFq^H8r߅n-1]GȔ wHATafi`flfiaGg#SYdFQhL$~՟R;5lȡN6,XC`EHheu͌FFi cC{_%i%m! bQB֥xfyh"xZ :'~ojqbd\t`QfiAvq1oj+oKoicQaQ! /p8RAU l.ڑBm척fEt8Zn RGZR (_W-I-wiV^&v=gǤijDj2qE!r:Kguq"wtBn wxtB~eSE"5ʂNJ]x烙g\89$Nz6CP-M]Z;j-'6CTY'/d@ k9R#NN9ecO9etmTsGܽM "S)o 毟&;QCL[gFzd[7 MӚ=\`0.x&,h+Hk? Nw:, J ""_djg-E-^_xBt|e~i'DFؖX [t.gKnp#)b Zpd4Zh$fTc&<+aP|׫zX[.Q ED!0C2rDHb,.I+\:yN%2S!̰C>1ڜB* ^5 lqmJLFƱTdn݆ڑJ<aTFt0Xޝ}t{ os f·-؀8"jqmQ~bݩU"@v\Yiya)cCGŞ̴_{˾b]`pY'exp'LI&UX!"eگzV9e o/XGi#ޥAOE}Unm7r\'7vla1/C~A0k링ȁ1z~Ag7"Ojn4F^xo3751}huC4ܦzn`U3#pTrygO0vցOQ8*y6S#Hpak%jN #'E1WNA !UDr}Cuqhe!(ZVHl!E+gEF013q趆D}GP$GJJca-pa!l"~IXᄄJ8~ClNrw0b'f!&Znȥy%7-Ev iXP%.s"zzhȁ}tXQLj0ȍHc׆u]qlq#ƒGeV5>!pz(wHR@ x`U1ng٠qwo?9w=%pUTp>M F`T3_5`UI_`_Y`Z_ 6>4qv@X02%-̓4 `q #Gq }2-yI'I!$ @J%@ie~ C!1i= &$ďX4kPi&dH)tHdtDHtO'7 H 0 0I )`Q rAA0+ Q@84@ X/Yi@x 4О {7C䙡ɠ Je(pvF__6"'ʡ:6lZww\HMI!Pv D  0iНDX@9 vi!؞ G I1i ԉiqG{wijo3VB>w`t//v *j/xJx.u8zADWMaG& 19qt  @т³R wِ,Xi}_LRPñМ@9pЯG(@ _K '"  `XJ*!?+0JCa %dG3o++ (r/ˇC{*FF+F+KkFedVcdwD)U  iPuX/kUC:+P?u4I'Āۋg+rƇB7W, N髾˾kNVEE qT࠯TT %$ Cp#?w}Y3X?xCchLxt$ X C$I9I4u(Wjgʽ? BC0Kl][c*2s؀X T@i[ "Tp(81$0Xk D +/bUC 1@NJ4$Њq X,V{J+c#Pf[O旿Aȍ,ЪZ;6"^ ^ləɛɨhuE+s?FpABݶ ȱȆHS:rfJ˽˿faQK!qA"$YQol͌lDLUUz1EAB4|z zXoBX@i|-'g{Q΀ iڲQ-M}3ŋ>#lG97x mnTѡ<вD}10i>|C E\w\-]ik0$5ֲD8=Crs KcWugg:p6*$%`@u@A\D@PMRܙ5c| 98)[}]1eB9F֛͠)r$jZTl5UQʣ1iZWA+ hN&ĩ6w H 4A@ƭ@m@ύAj&Fٝ=O oM<&9yc @t I ,nTrmQQRN雞R=}⩎rGX0 a IP-;n!+A02L-c[0ɰ.,] 3!pI$zin9KKCpUS@s n %p>UXu.uYY%YoYY"Vi#>#֪n8:X [ p@"PagU t[2T@E/ә湣fwIIUV6I$PU @#@0*X 0Ad9w81``` _o`C%~)}:lܢ&MQ X_u6M ωPBPuo| hIZZZ@ T@o@1 Qޓe/Zן+4 ݃ nJG@ m'K QVePfmfgfffǐ!/ .dC%NXE5nG!E$P>d'U p 9@854%@M-,pPQy$}p,HH ]!oM1z4DFD/}Gp 6{ ^= N;yXZ)#!`MHk؉bGO no'^qɃdIѥO^uٵ[u 6Jb0c++ B.\@dD`'Jp3%tT^d͔索?NT)i 26NZ%wsWj2X cL4QON$B@KԄmhZ.@@UHJ9R겏i_rXO(t2TTBy$` p̓Z. vTpdiȋxTRO.:qje0fA?]͉W+Zlo}[T{z1 H.TL^aY$)%VRj#(v 8{р66HT`e`9jdⶥ/|)p_+Df=/>R!SjmنiZ"%',R[&C \rZTCHU~J7;q_p5G;f2l, xf]S]m W3ys}Eϣ>g]Ozþgo{~|԰?|׽т |o9@" A&&kZ_?~?_???ܿ@ ?>,Y<=> d9H4@4*HKH-)jR:}͡mƴB ˟O>엧Ox""x \&YCG1@) Xx=[LU*Z@@T,%Ţ4d DP8T,E{E L` hJHt YtTSHK&`Lxk8G $K 2ղUu w'#K>ZJ'ļU/{-,C,ٓfSLJ%hfL,Ńp P_ F@dx |a E`8wb[S2r5!.{bN7 hF$x$0>xUdϤ8/$1+WN-1 w腤'MJ!A]8@$V&Fc _cBeB^ w^ d-2IfisդGhWYr΄:鐵]ҍN"nCeb=c;.NnkH84cxE !ȩnN,IҶ)Nb R[ϸqnF.amo(Oz%ir8yPZNo\:ЇNt\H;=GAHB[XϺַ{"NhOpNx{?lϘ;񐏼'O[ϼ7{GOқOWֻgOOwOO;ЏO[Ͼ{AOOϿ8Xx ؀8Xx؁ "8j&x(*,؂.0284X6x8:<؃>@B8DDpHDPL؄NPR8T؄D`.KXb8dXfxhW/砅\iXvxxX|Q 0 Bp} h3) Dn؅_(sH}ȇ4Pu`,6(Ȅ؇X+ .Њ&8hxCH)?HYrtH(x  )Ȋi< 3؍5ȌPx(8p |(8 Hp`98 ؇Qؐ(9  .Q9|xHH./84iy IY@ɏhy{ȓ)0%yY4y_;ɇFH C Z |Y9T9> NPmٖЇ CIٗ JM(I9oY_ȑU0Y ɑ(y ə9 D0pDxeɛɈIy9).КKy ) )ΉYi ܩI=ɑ|)9y靕u@ٛ`蛲: هXy9PY) *ic *ʔ) Q : ZX98i*)(J.Blj=J jYX<ʠJy*XɤI: jP>Y٣*k>jze`j_1j9J&ɔ =Js*~8yh J ʪCIZڥ9:fʛ˪ 9zjj׺j:ɫ~ʧDڪ*J(`ЩIڗEj)Yډz9ړ[Jĺ䊤 j ʇ1 9Z-;P*!F+ڱrj@+;;NR[<ˈHE; JN}_;&aۓ`+皳%p:B됹g cr+;@ٵ{HUʯ0[kʫ[˵dK :;{+ۻKKعY ̫˼ Λ[ӛk ;[{蛾껾۾ૄ;[{ۿ<\| <\| ; $\&|(*,.02<4\6|8:<>@B^~舞芾Gx^~阞>^~ꨞꪾ.-y/4}ΰ3 $-ѽ tp t3q-^A=<-ʞ耭  ڮۮPn뭍 mf0y-_ڭ^N@ 0Q. _mԳ;+(oc,b01\>,::멭F_D 2}^N,STD[O[=PXRN5 N.B lb m09!EM ] ٦d(,N 2} .׾E?HЭ  MEJ/n=ԶVTOS]ՄO޶=e}/ #=o-6noO> nFO{-P 0-P-sqCS 77 j0CniX"Dt=~ lnⶥQ9бl4.@І,TRr5 Pds~VMyU!l@ӝUvH&-bPXrHj :WݾW܇?ry RmGm[BZJGwD JuGiu*m'?Nl3iӔ3l teKGRy;pć+ϛ#ȩc-S_}.2ӕWOtxu{{^~.>gWܺwCfDLI⢌.cM2`.lM|B iK7npjlR.q!Z1Ǫ#4 m6S+;%ZPFI-&8!Ѝn *Ⱦ A{;)0X~ j8qIF!l)b4;JqTH5oRuGx.E7ڒ^{7_}e\~:0&`F8aVx_e8"`H"?9dG&" /c_9fg9.;9gwgtovg&hh K۫Yt.`e\[N:k6@Δ6 {TC4n9~nEmšcփ $AM8&zj-ndS&i;UksϗfHR kƺV38B">'5wߋF+AԴR{0l!f ih9$@Dtc znޜ{qSR%h1`bվ-, l]u|Y VjFG"6( -WІ96 ⏆5a&1"1b6! ;'D&6?8E%QKb6+r[cEьgF6Gc8G:Qww]G>яd 9HBҐDd"HF6ґtc$%9IJVҒd&5INvғe(E9JRҔDe*UJVҕe,e9KZKx6jK*C%/)D]DBHG:L EB24DVZRmPz@%ZYnA:]8_x w<6.Rsˑ8U=^ϲT։@@r%,H#x-o؛D<5cp<\ 9.$7 [l99de@91fDH182`WϽ=tAјKס#̙oЋD&4aQ:'9Q2<%*%Z{ &xc"$<-z;MN~xȮF'Pe!1,#^/PbͧIykB24VXBK6䬧(DGHNFrpj[ZJ#X@X]EV4BՁ:] =UY(N>e+PO<[)Tʪ eEV&DJaFӯv-c{ZP5FEƑ lMg[A Tծw]9dfC/TM쇾x:ބ >\ڊēqh7z73䡍y 7(RXAިVf82b[#W1 @H3QmJ3amP̭\K`c(d$.rJ8C)̖I!;-*]d\a̓l:vH2n y  p 4zj@u~9[)udE_x(e}m%hUdMrdH1I9Y"L& y( ~,F)aOtRy&D22-4a%~* I z\\~>'avґsQjhBfiI[RCzd|c|&$ze~ (?#ЂuBІR6M"JъSͨCi!>줧HGJҒF$&MJWRE٤0Lg 8ͩNE @ PJԢHMRԦ:PTJժZXͪVծz` AֲhMZֶp\xͫ^׾ `KMb:d'KZͬf-[z hGKҚMjWZvlgKͭnK pK7=r:Ѝ.h+ZͮvZr xK^zW IP|{޼j#|ҭ/^5"@w k &U!O9ԇth!MiZҔεw-M'ta\eVZ~_aF6kںґmH>}lj;|n./Ԟv7\_mo[؃Uvis;^m_gxo֛gw+~/*6pK+葛4ib0~ۙ89w8=ЇNιHOґ~;PwӣN[Sַf`ءh3 pNxϻOO>ײ.|۟[ϼ7{({GOңVOW_YԳ=a]/woOG}eOsG`U߸ܗ7nu,=d#.4m Կ~o8f`{i,WlWanFhelgfWfgfohq}R&)~"g&mM6m-n668jwvזf"qdohKh}0akЦ7nZ[>-8=(vfkk&iiInlj*ր>H_n?m腰p`W6ikƄXi'VfjVlY舨nGpcwqohXkGyHnȊXX!FhhbdE~s(gFjh7X{r֗r& s[Xᨍqfh8 t(d7xr(k؏ަY_x ŕ [k'yYyّ "9sGyw(*,ْ.m94Z2Y8u:ٓ>yYBZ FIJڤǤN($YVzXZ\w0]xg_Zfzhjl:P*pvot*|HZx|s|Ju{ڧtJtZsTYb:tZ]twj_j5q:zWs9JZIXm^&J[IƂHF}[v fٙ:U9) ڟEʊ\:`}t̹gŅ ƜIiogxŬVnٮ֊uh]zbJ嚝Y毟Zvi (ˀp  痋׈iYsY1;^C5g22j_ytT;oZX;_W\;۵`[q[d;'[hqcl])pr;t[Zڦq`sKx۷~;m{e {UY{'+[{jWi:rk븲 QgUۻF縗ۨ+Ȼr[bkMZff{:ԋ;+h껫EKr3j#hvk f$h݋:c)5{: nջWx˟f)\KWh*YLӫk+)ޛZ~Ȳ |[!m8IܚĨʡ޻Y۽f@ W ]\+ך ƛqd\K{\̙Kf:{k*i+)@e׻k3kJq6HzlV%|JkNlPʟ~LWI ynƍ]ˠf4xuƈJǮ<؄ھǤF̭iL̿~UŔE4˼ƿ3Fwi6|`(o؁y8[[Ǧ§ۜڌЩ;[=ѽL霼/lDjˠȱ LC̠% , b ȂL 4 LўGΰGɮI|<_ً+nN11A}+)F sq x+fhjݦnM1׳:lʺU z`]؆}؈؇-i {0ؔ][٘=YٜmTڢ=ڤ]o7| ٬ڮڰەٝ]ض۴ۺ6۾ܧ];IƝܞE]܋|H-rӝ|XL}iF|!*c8c%s Ky^)6\ÿu<3N޺ʚ!*-\Yfʰ&E]=̻rح7'xs{f-}資܂^܆و蔽؎qoژ难x#ڲ=^~^ڻN>^{븾ݾّ}n>5A JA9m˹]Z'} 1YnlC<.WYNWV%}8ެm{δ8?ݽ>a[FߵHYL_NPRﳗ[JX\w)>d_f.IU߰jn?p:tvz_^[ϸ7_}n9\=NӞ5MS _hYNު?n_dGNI.pgY)Ѫ5JjX*>pegOr\ EJ򫏰۪l^umܚnqR>@( CaQx,$$rYNUn]:(d1yN @ a2 nON oj*/3+JPU/spTvvȌm8hԵOOYzk1+8ٻ;5Uv/3\sȸ=3>7w n㎅B\ l s%O'ƍ9ӇNaL]z;]#Ǒ҉y)հ\8bRSRzkV[Z )ELvȖ5{mZjխumWsփ{/ٺ{ }p`6|qbŋ#rdɓ)We͛9wtfУI6}5CѩYvvձi׶}7ٹy7~yr˙7wztөW~{v۹w|xɗ7=ٷw~|׷~ <\-% 5ܐ0EqI<U\]|hQmFqܑ9l 2Ȩ|<$K2&|R%ʘ +JnTڢPrRVC٢&}\+2u钮uJSL68S >*| N.|I%z IA)'hC՗4pVn 6cF?Atuir-mwX7~[oF,&rZ8WԊYW)7{#W}- hͽh fZcFmxW_v4)b^jmT8, h ho>C_騥ꩭ:Ԫޚk)oZN^{{垛+s ?_fʁ5 =ܴAtD/;]]e* _u&gޅJu֞P |^#2+T^!izZs3>x/m4$g]?̏w4̐L6LPӜ\6^*sVH<[+OBUAI6cFI`< ^6T?uZT;Y `TW W0ob| rV $ְ6\ XEd-B)DYsUesOO)ȓ:R8A 34]")E6{d$)IVd&9MvlsH99T*YS.^YK[.yK_fق9LcrTԒLg2ϔ&`8Mkz.Ԧlw!qd~ܬNU:8fDI^cBF&]ip99x6MT(_?8b()< iQAMLodhCij," ١eUK+ z#݊COxrWBkM)t P*ˋK VˤT}OLIpRwrK 0t$h2O#+wu[hEE~̉!$V!F{Yvͤ!#Z(UmRZjb;[-nr[Vp[\%\Z.ѕt[]^oŽv(nx+Cz^|)W(~_|NDvӳJH¾N-ц|ajLXO. k8^pxB! \PG*0%^ X0 Ɓєnlţd.0)frX&fɠG6gsЬPm#^ g7ۙ/@A À@d,E LjϠ쯢5s}N蹌Ym MQ(vb8%bXC]z x`&8AA> q6妘x0jHREŏk[0EؕyZH9f]0 $@t؂v=h{Z}5E ^KAѷm'hEtYIU79Ϋů} Rg3]/$ 0 H@Qd\ƷS< ~WEo]qM sC@^p`X@.`|6o.pܗ7w,Rzv!6zPNgHU!Jמ8{8As!Ȁ4@ X`q{mMwy}/ud#5;s.u—t9V.OMtAzo;۠,@,ph칻?{^~"P hrb{hOb~$L[쇾*㤏g"`$`XboHhjm0.r#@p$/FPVngy@ :Excqp->ib\ ,wMp0  p 䰓xQÈP v5#Q* Q+r2Q7;#-U#OQW_Qm!gMoQ"w"Q QY"јm̀|m*;Ւ`ѷ&qQLNQm)1)i9  R!!# Q"+2"+#327##?RCR$ѐ$K2V%[%_&cR&g&k&o'sR'w'{'(R((()R))))I%**+++,RqR,,-R-R--.㲺R../AR//030R0 01011s.2'2+2Oi1/S373;@23CS4G4AS>@0P3T?X0\AT6c6C6c6@7as7SAj4S845Y67 8=303:s8:/9W5wS7S:s5S6s<˳6{>85:>9ݓ;?:TA1S2{0>3?3>39>:1TB˳;B#TB=>SC+:EC4E-D9tB5TETFgp|B?tCsFES4CG#>@Ew?SE}HTISJiJFps7!=5?@7U_@7AGU!T@NyRMմNUINmU[=36N+\\USpUAԵ\^[^^c^U_[_`_` 6A`VaCaav2b'b .c3Vc7c;c?dCVdGdKdOeSVeWe[e_fcVfgfkfogsVgw;PK,%%PK &AOEBPS/img/acmg_cr_index.gifGIF87aZĬ̄DBDtrtDFD||ĴԌ\b\¼̌TVT<> IBL#6F:򑐌$'IJZ򒘼"3Nz (GIR*L*WV&cIZ̥.8] 0^L2Kc2Ќ4HgR̦6)kr 8kqLg%)u)O:sI=߸Q(FΓUB}Y{Ԡ =h;=Vԍ?Qk|hDJR[6TGҏҳhKSϘ3iHUӉԡ8e)AWJT괞էRiTԩQs UFU3e*N*ԝRjIʓt\5jQӢnh]\ԶNխ7EiP*WuwUDZW|]+bSؗ& l\Kʂ<,]XU=\;ش֯y-g F6g YՒ iDq[[lfjj6 -M[ vGMrkڿڴխ^;\2׹mnOz]6 M/#6s9f׶}g;[]Wƥ,oz_ XuzNT1{;aMLjv0: 7ďaK2ōlO+VƄ/:Ϭָ9>jqcrqoﵪ {Y;A-LRˡD/LNzٟ(%6Kn\Lx >h3Mh7 ЈN4F;~'-HSҘ3N#sӞu QԮ,5WjQհ%_-ZzvwIZdMbyNe;~ki[վGm{'q[Vc]7 Xa80K-`s7=oػ7o 'tw#H@@, `Cq*'yC>r]14NҕnSjܹѸ1<\Gqe_֏N5&}N8yg#9y2 h9(\; {ݓ~~z%TɇbNyCޱgrӝn쎽3o}G׾%l{i=ﱯ߷qYGmvx^y+ ^novW&_GzBqDs 0r+'Oxpo^WG7rw%w thsEwynu%{O{'o q$s'p*zLv 'OׂQA F; (nwJhYIMF}K8qMTNSXX8NW\M[؅`xM_dMcXhL{F'kwpHb'q-|WSt^ viXp6*XnzX*\:Y8q(uO7zVquPgum}=OgXp~GQhx}y}4osXS'NJXl}y}eev؇ HGh؍&8qDvҨoJrèTȍ7GdW,~3ǎ7~؊wg˨67Rx؃ xܸw&t}")+V.u$ؑw4yeu8d<@9Dy$HL P9TydX|\&`9flqDzAdyi)Hr8GlyG$CD`.G19w^\fhyuݘ~Gw P0D*IYdPiNe0y琸uw)HGqXLW[e4Fi =Ve'%XYhךrpЛaWcFɛ9a%Eiwyi 3҉b &Z#Z%nY)[IW\kdѹ\9Ɵ ǙʉX ʝީaEZf NZKhw9uyI}5di^>:YEftqڝdo$UZcLʄNK @Ji:@:z敔TDpJh5z|ڧ~:zi(W:OZGy:?٩79ڑz𘪪Jڪ7ze:*JWTFګ:Zg0Țʺڬ:jA;PK\ PK &AOEBPS/img/acmg_howto.gifGIF89aѷ—˯նæ`pn}yNcYVW9Uj!u@܊t]۸sͻo+ 4ͩ]x;teTnMCnE ޿FDJQϿuDUfT-J%X NQvvXxjt!xxMzܴ^|0(4&)-:F0`]RY]w}褓j8 ɧ}5)diEU>:D9E)$w}Al <7Z%mgF*餔VjIMUrι'ÎPxWbg*l"S= \kRVYYAzZ*Ϊ"~ͭS=QS %(P.>G> fܾ,uF;L* 0{<#L8HSO%PN"?4B<:-DmH'L7Fぇ/s DR$"`-H"JlpL8-`< ?g}_w2EH!=RyOhY rz0kR8IjZش&(F ;L̪q$_1|`b(^#hyGЂ*h Q޿.y;:Ociwo|C-m>ɏ~+Y/K|k,ed@a0Pf6wӞ;]D"%,9T*՛/p 6A?JֲhMZֶp="jVEP, EbJ= I GMb˶&bт843.ǕT*{P^v#|GU(t5={NEЁLʃЂ @܀@@2$l DH>pf/ VD"Pca,i28 ´iQ;Z|ZA XƐv58}~P  @ LD"Č_*IkʼnL1c $1l!a)M6Mٍ60m*aO0sm0dYH :Så0 kSЁ&ivj{I !`Z""(nx6<}8'KƊCś1Rlӥa1H,A%O>(# 0`0L`B RD&Iٓ0q <虐яf'ڍ o; \ع0H ,uXI.Bk_. [r{<+@o)nS\ l{qA35??<Ⱗpk<ko`baL3%nP'$Gؼ;>[վHa[H/i_{Ync^RE !RߠQ{x6k6GNEeQ6e:PeUeYeZZ_`%`7ptv878:7׶qlj~_FxhhLhNNXQXTHiezZzz'q7q qqr3b R@`@4w}sO}w6v}R}RwtUw 6iЈsmk~~D8F~Wn@Q=@H:p؊(eVHau`}c0q`uAd;PR،|P QpTԀhhFNց!HUV%<*,8`fjfmu_7va~iDXLxfOO(VZz~z]'q`({Un_&^2 W3uB'PV*60Q&txtB7lR`}X7g}hum'~s 'Pc_up~GhvFo{ k1giihٖjlr YW f |)qf6 T gQhAcOp R t O&eJGf9m'E`G0 9 p JHGp RfSf:XVveҹe;`&'ȝ)(Fb]xlmf# `I@$N4*F 3 Gp wt' '7 N}9)uvs:}UlEֆN @ c6 czc]nP`YcJ*L*SJ逥[J^) @`.lR h P>R;T[V{Rt rN0K's"$:l&(Y,.`#6jcɪ5 ixIg_ jǕl'~&$3'ZT0=FkP p>H@v >>d؀ 5P #K;?`X{Z@ @ P{؛ڻ۽ + pۼ̛ЀGIA@2LHeթ%y`y{0=L8?O` e Z2xqp@% K,b2@ F 2֐ffր^Lf` Y-a` gP`?K52#K@>9PI>I@|̾0Rt9&lφG9~-ʔ/:3Z6O@T v)WKD +z۹KKKI0p ̸ \̿ p`_ @ N4CZ3ˤ<\ߌ˱%P0 P /w  P$.9 i|I@ J` 8D=EH sZ&x l P / OP P 6 | tPIS9:`@;e)ɂ&k'{(쩿21 n5of}77@ Ak =>6sRd?RV y؈ףR @Glr u48k@ c c e7ڪڨm6ڪw^8ZYA:iKʛ > RH+Rv}׭E¼ `| DНݸ U p 0j@Dfb5o+xdEМK7l@5m e7kP 6fX`ifc6;2Zڷ!0fދ݋02>4^4xK2jc'@WeeW RlL  )PBpu5+n_z{{`n:uiX8){G _Fǝ0P"U#Et>/6r67% ˠݿ| Hp cF qTdS ]J0 !pP` 骘٨xu}k9㈜('6>X0>s  ۰ ` .>ܠ)8P cPzqB(~\.IF'T cx0﬇xpivqQcGLTQ CBS]AO` %N.rJlRcc0o.C`c>>Vi u e䁇gz{[ v܂~K?j7[W?e a?{ ,b?s n ,9_R>x] yeZdYK b[ 1hy3]{@\~Vi cpW`_ gpw wpp097e{{iؒb2rD&Q+@6ܴl.*l +` O@} OўoPw/J=zPɃ9D䔕-ܤnӹ͛}'vٝ>=՝^qۓ?!AbJwEK{Bvdʘ?wR:ތ,`|ODDr/Rd"ǎAܿC O Ģ.@0A0d,"B B "C 3CP#D5 ь4n%Ei+܀c7(2h2t| ?$r>8%d 7HAg0ǣvY%3L1$L`bG P.ui$n77M??S$ m7Sa S|w2c2K3MN@#h 6wfMO9 % *$HO3)[w^" )ę=PXcE6YeEq =J,6[c] v[l>L갇&1œ-`0!W,T:3M;SQGܭGU LPžzF^K3i:tDFށi 3B4NA0h # 70jlI8X#mWLEEh?dqG "D>cI'*H{Yble/ǜ̗PjW<1%yH{BSPd^!=*x-qؔ  S^D&D l`uh;!M~bD:XGk 0`Z{PlkBPB @!DT@ ZhBWc"#"vJ+ >P %#V`:Xb(MRID(!(0`DD1p=)SF29 ;d`&pVc~hLcbn)8p:)C XD!zًK) \e1y"tGgYΓGhCO S%m?KkӞ&M@Uֲ5u C_ۂFlf6WT  `dH|9ΝU7Y KZ$2O~;^:\vCNzA(!VAG=T`(T+ 0vS*h>CXj%'940ͨc`b=%†&b3ũCBȄh 1r$X96'.p6D4/p; 3KX/j0ae8s`)fц=TSNcaQ|^Q̔9v$3@#gA!v=PH+UK֒g,kYKA tЇ>|X6o =a pCP ]_O@VC,\L$iFxAVA8@ 0EqG|x5qw3̩1dʉ`/yes\FpxTg>78M8q;߼=x{'pP*P,5Kz괈y눓)E-Od0@[zbhϗ|Ix _ɗktPS6Z9z(!\\E؇($`n;({ЙzD,y<ƷI4ѥtG@H`j[+cGa&gڂg/!#-40%eR3(')tJ# x 8)Y**S4U5eL7*KS{^0Sb+'){SAST6EElP P xPx0(ɇL؇DPaLH,\%̏_[5AdBeѮ&R!U)R$5%U&}RaV5X'R~҅oDK!NGI9FEtUW9uЇ5`xyW 9@\p=ņ3+Z8h4Pׅ5@APSx`u2JUH Њ]!%# S2PLЇ}@SH)Yai-RA):%Z%,UUer^_Rbu165؃/k-[S@o>x3JЋ۹[7۽۾ۿ\*p->Uŵ*hІ{0TX1(m>Hg܍N Q HJKS4jÎ{mmҚ:Sؒ"6=X :+6")y+/&N)R )ƊJI0))GɖT5ȓ !'$D a \Itlm(HȄ2&Ö[CM&h pчhP} 'pP)p#w6hBS yHPNHJSMNƪ4x%kPv uxk ` 7l i ? \o]ω*j aw Dpsuueap"I mp z ~(<'h#|n?:i=PByЇB!QF HFoE`L:,NŪ=O,ppM0ʈsu?sш77YN0z6GADHH犎C֧GWz51}ѡ(^ެ'^LG{g{z’:z[x7588#^'7GWgGt_BPʷ|0ߜR7GOq3׊ׇؗX`PH/7~@xwp觀~지 Ȁ' EHAuPwuP9 R Q$Xƒ(P0AD &ZȐ k`JQC(PPpJ&]eH'}'NExYA"c UzpH< @7N1E"c>!@0< DP2pt > 6{,*,2hRfkY{-jI -iZ}<`D;<3FW_=#O(J(K";&.Fn; p10N;$ꜵ:ֆ:Cq;rD''H2tI((ܪ#H醸^ h;.i1-Ri6m6q=܋(H"-v"QӎIYs;]*ebiZ:%5[Zd5on=`ɚr+c /N4A87?ЦL;=2 |;d=xƓ؉0A7>_w{=03!nǸ'iA{ ! R '()AGњ"$~z {E# h5d?h < D0`&6ae5hBZE,nb 7uǻ36x<h9hI[Z0G@AB>Tt0!$!L ͌D'IRd!biM<%*k;lx%,_ـ(ChG{D34Ŷ2mSnb8tMhDch09~ DHC/bX!F,|'<)ϷAlО'E'@av#D) {ģa&#V\`u"(R(ܣ+HC*ґ&=)JSҕ,]AG7AA! eTfʩ~H'P*ԡa}ݴ K@9,F$UD0ఖj3R; @?*HYEXfUA`}j#1 Ëu:Z $ʼn!cPO悡>*іV SUջ\݀6:6)^2%{7 f6 YF;>Y5 HTE^$a=TB=4ͿK $ H$=`L9UɄ/ Ch 0l$Ama><1\%Z!Za "!! )t卍 !Aaqw ĥ\%]֥]%^^%_h xU_w90 ԄyM X)D$a M} P =.-Bez@)+*+B+ g+o*$'*,@,}X_]n}'o Vhy  " Χg2tAF L:2B MxT @34M;,2 zI0؂kCV @ޤIޡS^\TةUbe!W8LZ.//?C?V("ݢƤL/V^/fNt/"EZ6thʝ4 4HXB@$'A= / k րo(p4;0+@b@V P xy z g|qr +~l㪈#P A=1;fA`#8)T8V.Q<#0k,1111 -hd&0%umBeئUf%"4r)< d A& (0n:.Fϰ)i <ȩ(A(`3.-r-$0閮6@>?!C&@2w(3SZtH^;5W36_6g37o7w388W͈; еkF`iqB2&-C%N`B;='?p`p7 $.EWE_1k0A !hTgnw 'ê'0 .' 0Ȱ~.#0u=#@&u%P@/#6,IZnLAR}DS ̃8׸((UMu8:H;<@5P>H> lZyJ dB=lyG*)jd \,_D2BЛ@iyOj9'UCe)%Mg/2Nnj1.gy a#`%ЁFRAVz;.IJ=H]q_/.700kng,A?A(t-A@p{7"h2\;777~WBr34,Ԃw_768% v%[`a^Q}<;A4 ԕ:[4)  ƯE)e XLŔT"` ι>d L% C N =TfiU+c*#LVk<28W_,pCV3_փ3CZm"4@=ǽ==YKSD# 7q"rzyXvwz'og | K ;^;[B"{]/bA<"$>/88>߻`;{Vf^Y9[ʄ|aBC*_qgc|(( 4F?am)$ ?>\?OǿϿG??.XU@s'( (%;$TÆK ʓq(d8XCg7p Dǔwڱbk'RJ( 0wd .kI0'41D DPh /?00 11n|BXd[c 8#UlcQ*rܱ#^R+/xDqcaz|"}SJdB=:D?ᙒ91wlvx#Xއw<Єլ !)dK5<`Xc@a)(/)F&ޑ=zh j >Qy1]h 1Jrh(H:\`eB 3d(䡄R2+@u/@x#٤1,mģȱMxD]‰JR a:(1B'E$"3 !g:L@>fx[[x+u5 p- bAxq49v[ jpixwwr䠠! kDgԱuD9F {B=tGjXD6D4h(ۘA/9 !?$Y7hUGp$A#ƗR+uKLJҖt0i '}H9LA6IC;Qr+ 1cT=v6)*Un]WUe5YZ {p[Wu]{앯%V⃰a/*6&1i#J0Eš֔$!6$)cmp+%A8h3!m#7YvnsfK[u7PBn@6,X;@aA$87 x <({Qb&.q_$T/}́ 3(AGHT!"%hi/:S $b%6Qb}(Fja0 PA("д0y%2%/Mve)OU򕱜e%0ktlcy\autq]9c}qZ$"qZP?aA h"d!@='L` 4?(ӔNȧ13$ x823pB!oІǘe#藿Ձ ¼|(ө^ P @ML6oGő6ѝcvI%=%cP ;dE7Y!qOsƸ(Lq"ϵnqK"$@f9K:~LINA z `G Ђ .` zP52"a Y|]HL@=M{qL> 0{"dH @1Pb{U,P2%%IA!yOE:Ao Гb[h Dl]\C M@"zFa E`x+_ GT)j;\tV1q#Oz< K;Jf"oi]h~U:>f C@(n!okf;HBoV궎ýnmg>N. €FA#D"04S"J2B2 o" I/㦊۲ gc 0 p ɰ p j(H06 I2޲`A2' !I\@0B`kHbIΤcx  `v"aDqE1M#!vdY]alUmoq vQQa e q1 mqQ Na. , pٱ^eLJ "+0T !Rr!!!!2"rDbU`"4@VJ߱۔sraa`>ɨ GJ!lC+@mhKFjI:.<@hmN諾 p?j  ?@ +A, Ȳ,2 ̠ -ղC8ĜNv`GFd zO鞀D в8)\`L0bhE>11a$Dt!04B43&%AfP352-$GBJ$Sr%[26gy, RX6! m|R(#GԂpܣqÙ&@(GA2,,,r-ղ=IDXgu^d6`//s 0sH\%I Sx5 @n 4B%tB)tB p:ሁ<J zC+4F- P 0x 4Auk`Stf%U%iEJM΁\@&( A{@!6 Sv;:c֮i;g ?@ē@+< S=ײ>1?|| kq(  D bLhpG-RԈbS=SA5TEuTE,D XTUuF,IVI <0!ɘEn%2}ɽ=}!"7i0*ԯ%֢li>~ QS!>%~)=1>9=Գ\@a*@ `"`#l x))`~%`$ ^-@>>3 &@ƶ&'*U]cou~y~~链髾^_~>!?%ߋ/}B08uߡRWq Q akvq?up0#ϫ]&Aa> ġ0 AV Jw@]/4e>~‚@  <荊rPAn[u2ȑ$K<2ʕ,[| 3̙4kڼ3Ν<{ 4Pխx| 9D ,@ d%H r"u([E9z 8 >8Ō,.FZZk`AL)` ;6j(mM;ދ7v8̛;=tE]LkB9{]˦Fv]oֶMѩ n`HIEilwm:$EYzǡ{ px_Eu\*b.#ZX 8` DxF:츓Xb(kE[Pc| H@"~\Zne^~ &IJ`Y7z!=æNeeInЄkzA{A)Uah.`c&Dَ=:N'@Jgzk)!"Sו)6JkފkJ^D\cFAj͞*{M?ߠ}Z~~ n⎻ܮA ڱ,&6| L1>QkYp? 1QTk[F$0j5kP[I*i>A TL8#E+DaP tBzjYoAm6r< )')`O @1<}#7=JmC]ezw~ 8TxsE Ֆa7#>+E4ۣB=2L}:PD~ܶu >;-x|mkV9B =<"E" H_}K/=ϳ.'NiG<).zOp|+ږx"|KGDa:&(.( y@ Kr@@" !0r@A)`p4 eI!<~ xx$yL E(`cSE9iq\=PPA%*a4>"{Η-F};:!!{H%z# `,!D*rDhG<ڡ4Mq UPhy@;wb X8'h8{cp nm%1b)nq\DPhJ*H`` whPe1;o:,uq*c4B3;N=߁O$<$"a ;qLWJV$c%FjtG?:#AgrJD SN[ctKOriJ4#pUմGͼy; BNs X%Цa3(@(t6؃==w L?P B$Xs!Q(iJve yPTT;<)Mkc@[~ [Tm K!-vmè*5`0,T"RD!<D`WQخ@ nw!ݢ)? E9O:,ȃN)S`G;BM@@LЮ7Wc`)I"[;$Y=)4oQ%PP2-r`<##PN1=(T@,k9\r? 9\yd.O'$BZ5lp3|4pYe - /f;d0ux#@}vW!E6ciL_z ?&M>l'4ܱuuk^A6~C q=FB?/w>+LTQRFnHz{ MftM %{n7E*g{^ܲi v3SIT=|*aNLZT3)Ozs֦a~x޵U@ya(T/of+(ZxℲYtm:ӟ3կ b.(ԍBt%b^r3x;ysrݧA⚠&T)z;J*+~"J (zfbiDH0E;u)ʼn}':+΋}sk>q])v_CA} ?H2񍯾  v}x;>uDpV 8}x<@Dh(Hh Ȁ  #V6+db 3x7~O!sB}!XHGP=kl+r&~/8v4 gu@ T  >bC :dĄiOQ(SHUhWYVȄd_6BWX&Q="kX}J sC6)rIV\~8@]@d XpB0@OdyC6H 8  R ` B`0a ,)=S@j m\Sp|\z8-~9: Z#7.0mY(ʨp.J-0J2Jy%OчY @B9pt` Z NTJVZZ]vPTz[jf iʦno\РrʑvjbeI4`É*!7C1EX5רZHH~ꯕZ Iz ~\ОK`pFiê z SZW>J=bJim5[c J@"n @ 0 @dX Np` G ?j!:ڮW1IF0XA@ o~J}v ɜKj5ک"؞N`P=j :O*B uиP*#˥,{ T{Z[p8:˳ujA[+E06H 0 @ p,7xYڵzî C*癘:P>жcQA`j+YJz=piP Kyk03z6[v ۱k!>`{ú{){SkK__;kx:R` L`PÞG OpKwQX_+yнI505iH>iS0#vHTͶHe| Xhff}\f+eLp+|xۜ:C +|[[ kW븜kl.[+eS$(j;>[wze7nG` Pp9lu;*9zG@SѷҫaD+ŎV49[<9xz3ˬ6|'(j z|ǀ ekȇsw;[ 7 v T,Q@l Lʊˌ0s X_j[dIE_D `Y[W FKF@G Ґ''&( F^w IDn= ԻćdNČyTY۸q 0p0kmrЬF9  `D\ `I$~̈́Ć-΅Q<1 , <^aDapm:]rpԭбѳimiۺ}*͉ pyn@ Йr}c8XRCg的F7P sB {ݠ[Mm=6, ̸s'_꯾kZǭN`|0 01 z#N> S~3j.+Ug ŏi_\ALLHENs~;`1ϽTNX|Y\;7؍_LbD㛍LAK<C?m|ML{AgpPuV pл0 X@ `Zʝ+ӑLޖ^=N0cޝfa~Vmoq/sOuowoT *;Z P0i%R)P& @WdZoa  WڎFk߾<0G9+ 8@ O 7H ;ٽ;0P ȓmxh^!A^AJ IC*ND, OG tΓJFСC\XE5ZfC[ֹidɎ$IB2{K.ĄIJKBLT"S4j=Q)Ljќ9ԕW'c4Y3h̬ekLI~L9_zr:uOXacN*%O\e̙5o\J*3axbxiԩUfuQ@ȀD7ݦ()C HQ&Mڵ#ݏ~$ C?.s~ yPÉz!o'aKÝ!bespM bB $\>r($u\Cوpp"xagH:Ak1s@L踁$x8B"tXHT$v2dAb-K@AL@4L2T3M1M8 D , E qTTSUuUVU#RTz)(L '.񡧟2 jBzʫHp1Ж1b pÅK.K/uDyXXg}ݗN) f#I8Jش<)AbP߱O>AF9fQEG1PG%D@DyiCRsyg{!^j8|*"kv&N(t>Az>4fvk!fg[|qLjEIdAУDpDa vH'kAj>쨣G@bE8 x1IBzhk)h",x&R ;#dn2#0:00ޜ=ro"bB ]N 'R9PB2tP %IЁ$Bw5xBT%`=4aL 02d&)MЃl@t M(_` IPd0;B6q B ǢLk#,B<bg7"aeK]ڐZx|؉%A`P(D)᱒BfZ/ e0KE x4S5b.&k0j5y_6ƅUO50Tsc案h`FI? Ea hh*(QD6S!M@y7D 6-iG[ZԞVemj[Z6-hKEpoЁW%nq{\&Wms11tE]Ju a J +[ |$xsX%7^:I-RJ"pI@JRf |,Kb3,!xAMqC|O"Є! `B}0KD+Cǐ` }PQ>QW&Ą r`#`ue,gY[sZqx$zK$!OuŸ.Yrb8k}v[Lm թos-Q]N$LW b^YŘVQ14I$qXTC$>5 댒%Q 8d9hf/R`{JfvlhG )cG7E~&w}nt[f7=E ߘR a:=w%zP [&81$QpnJP)< Qb\.1 8(6J!2ȡ(2$B I;y%/ x`dX)9A)`(G^euaŎ1c(21XB*B W ekek:smmTHzЅ!#Kj"{K^HƴjX\?ƺo jWg_jlB%)%p'AT&caQ9Z`_".#x1x;@ @ @ @ @ @h0SS).}ut"xA h $ "uh )z˩ʯ0b؅bxB(^Xm=B)&S(&+#إ1/+5:7L$p7|:&h1K0A1˂J52;9S,A&| yX(sx R,xiN(H?C#,E[\-E^/E`5a< c84êE="A䛔Ms4P 58r;E)$ X5y!^>{{ĆU#)zw*oC Y8rlH|HHHȉT9@v {Q M!IEY8I~ȁ"X;1@~("9B$='lB('['d9A/!.L#1,)2K:@H@)c9B&{˪C>:B:AC؂Jr(*;xO{>cQ w4x@'hGTs^ȭ~P1x~(zO?x)xpvh'bN\ PP-P=PMP=ANF[PL !|"сCA$P&9D1,Q,Rc{=Q89]Rc腾҃+. 55 M'%&])R*R*uF8Y+8R77p8S3=S476mS7}S8m??-H@'pAED8}||6C=TDET}K(%i'Ox uvhy{|SP 9臭Ϣ-y\{Gg= > U=yȄztAHFԮN瓫QGS9ΓIS,,^I(S xH`k(HS,DS|+A|HSh4V}W~] I = uIcQ,/$ȧK:Qm( en( nXc0]0c8Yc@E{Km!YAp%m6h68 60 b1ugTZZ0*0Srɇ{PQ˲p+u#P X~= L4cÂm]5x'Pͤ[ߍ_FJ̀P9X Жt(s*&p9(Oq% =e8eYlxUl1%6`9؂a.tM׌: )ӆZ Xxa1mBMAUjUUUhܛ@]{}i"F3ŏD*Llt[ hxxyyp,2ѥ\@DDHTj6˝=8~x7yzS@}` ٍz(۽]]nbÈJ5-u^KLtJ)ءtgeRU=KSDJ_f(W{5g徂D|@ddaIU  ߄ߗ`c-0%pKCXh Zb3R5U5 jNak.@{_bHp$2Z+MAzPL@Fb)CBii^ScSؕA]ǚyTbId1EFKH;^VjգKL^MvLceQ[k>RE H`칮^Rp凙S8hblɞlʮlנߊ_f߃}慕%qjށ$6t:9 .@d6(1'8fNԴ>a`F6H8XF2u3;26%f\AaUDhh` `i 0]a W 1c2v,3>cJXcu6D%pSh) 5۽`)۸ݗVp pdfyvLDvLoD typK-hlqqgG=]RHd#R S@e\$߇$_r%or&r'ru\*r+rr-GIr>(I8s1\3??MsZs6wF0pޝpخVfm6inҖ0/ K>i0.DHE0mz& FbD]4n^R~NUo!bnh[i:j&A.bwpfWvP)x}#2WA>%X! T1VلM8 mG脖y#:Jƴ)JpEc w( kK6^qCDGx5(h,JY˫@@hqwy/w-  R!=x9>KGO0|Mf6A ߄+ZMd2WhNq>uֹkLC(wWu/f8Aos5?h`AhCTt6,kXK޾n-uZ8+@U*p7uߜF 8\^/`LL\|H#$⥇SXu?߯ Y#[xHe;G9#T!PVQwv/J3>Pqf]#t۬^#{@*҆܂A  !A4+2Ȇ f?ʂ= r)JQ@}:Rd:̩&Ϟ>nHMuF"EܦY'u:Nn+;#Fځm;<}&%B-Y"JyLAɤoy3];vZs2<$(gP~(OI:"9YcBkرc -}ƒd\y1]te^\]{0Y璅 \O/ը 3lҤEk?Z\x!iQ&~PXa~\anf!AE"Hq PȣXc4EvSe3X7N;c <0@A>SfX2;TAIUW$9X5HPQD?4)H| Fl%%4AQ/h$MC X#=D%RuAV0)ְ)dųfoGNyRDaO=b>MfSRHB"SLG|2)Ds FPA|*]G(E&aR% 2x& {h){$KJU>|D)*wAoBH/`${MڕRk9y*Xj2z*]PCY(#)n=j_;՞|4 gJA<2DрND RG<Qlk$ֶNp }ȊԤ"[qY]^GDA61˳N֥˓nO B"qcH(mv@E|bjC/|g-wMl13_n8wn 6a09!vCu hͽݟUG^\''TcOM9Flȼ=-5^ :ReT=pT= ``rT CFFb,Fc#4J#`B]B^#0dWpX9zR==P%H($D&$8BS]A[<n@( (< A"x A`"A Ɂ5`AtA "LvT`_dfZ@tBfA9gf):F=o@ޟj .L:;11(>DM',zniz꧂jꨂꦆLy-ꪺjj*fnل . k.x@jز!\ \l`@`5 y9LLېОx EwxxQ5@ǹSz[czks9Vy'TdG.@>L;A۬PM<(}]x U6Z3 Aԛe8utn'/oSzAkk|}ÑՇXǻ XMNSX|;)"pT=\ wSTҒ'7s5܂C4||?/&Ρ0h|S?NChxPܵC$@մƀƻjG`BXqDžMyh؆qX%\{;ߛAA;>嘆i7@?@It_sb,{{< -ץ--0*2:3<849L-J=~~0J$ .㰺=}w ΗH\} =LCx#SX4e4G5=6A7`d, 9=ܽ,\=?3e $X& 7 .OD~DSʷ)Iipy0!q׎ݺ ) @N;yhPC5ziRK6ufTST<(llXh-˫RT݃]Ls֥^y_| ySŋZeXZ(e;#*Uݦصs yP/)2 bHn9r)cQE: dF; 9 -<UD;v1۹邥Kx/]fx1 변=,\sBK~[|_P@8A@Czxc†âڀ؈#~ "XD"qC+n%^QYE ilaZnXIۓN&Uz83WiLsSt{"G걨(Q 8!C}c(پFo!z&IO~3;*!Fn[ JP<`?Hk2W +guTf;Tє4YMk^Ӛn6MoFs ?INm$B gRwX*.5LS”eJiYBr*(GӡˍqkAȽ1CE$fYVLL3vQG Ⱥ<goGq]\#H(^W~H`S$M  P(a 5 jLc2 9 ӞUjYZ׾liڮ+6| `šuT"嵯cE+~w]^b7<;]5HR\݊Vڥ0~_驃%ih Jmuk` k &צvna $xul< QP 7!e"vycAu -.;ЅUŘQ+]qYvW/`+o<qNJ3` fniGIanEX%(ġPЌfL*4! MhBJ㣕/zq f0Ci]k[׹yk_-(6J'8AB"2!&&sry6*bڌU9ឳa r"[f;׻g8,< P,ţ׫X&ZftcMH{ p Q iW4Yb$q {%MJN:K'WyYr/yi>s爫 s8BFЉ^t*vgE")@hF+ikx B%((8 C7` KB4@4R$" ])_y_9c"L}4P7^+$$A LB.!=KX5rLfH/݌mxnvG(P#{c{-n ': шW~礙By6hBJ` dIAo0 l0 $~ NbgDOJAHa :`A ޏkom(KL m $: Ep0TҸO0B0vZLc,Z6XP dpr PkF5̽AL J,*! ,FpP,  /Aؐf[_i~а  M z  .8 n< a"vh!O` aQבۑ; m .|ME  R 1IP4CS4G4K4O5SS5W5Y+JR6g30I N 8S8888091Q*K AD< s lKA0! @ x)2带l6>Gc4 aLݜnM:*rVԯ2̽Qp.p%\sF܌6;C*H %Q NESTEWE[EJ(2!HAGDNA$AH H/* BdM10s> Sl::@y@[OAA#4'Qqz r`8.CO&̡D#  QUQQQ4܁B~@`&AĮ Aak `KtN[RD%daBdvk؆vU8GJ / >u4 gS?K LtLt4A KMqM!4QdYqTcN=o˘LNz*~8BʌxK8􌹚`X¤8@1 uAXxRdDOV.Ό'LϸzH|Ƒ&A* CYGKSWY[QٔcYIgms&A Gً]%`ƸK&5TcD}ٚYٛYǹJvLE7ٝ8a %ٟZ ڠZڡ#z{ Lʅr٘ᙣ;lfŒKڤOSZW[ڥ_U& <s:اZڨ:*ԥ,uOZ7کڪګǚm:o\@4*@:: `{" !#(+۲/{2['@΅hXG&z亮Z#['۲'6{$`%[, ۸23[Y\dKeB隵گ۰g۱%lq[{{;%P F\HҺۿe&aڵ ;;s{y[۽{`F s:KO2D aF g\\LH`b^\ `ÛKxBē\[1D (zGxǏ^  +ȃ<AWa|\o0D_{#~Hz[%P\XD7|\Na|\7] ܰ'\وЁZ[|۹AT]3ּӋ.DcE044'[cݸ{h!y92,}3,e[i6AA\[е==8,`š #՝3~Bt;/PСX=]} 7>6@ 6(^]㇞k(Di?K0N}m;}YYp7`_~~}ݻsޝ.pP~Щ[GMK^{~Ka-a}^'_NBT)JM з]ßs 79a&} ?ў̓)s==+LTDQ=ČiRj`-x<(d\D~j"tIgK6sTL8#䳂=1 hdLG.yGfOA~@E*&Zc,">+=*\}8xU~Tl;8 dFkYwD6kӴH9U5A.><'/$eKAQ>U=oLX 680 PP Qb`G8b|EE( 0 gH⬆ Jv80< k"gL!2gOBf@ 8Q.JA  2!>p,!U츃Cġ>W2A!L"yF:r'jG#ZR/|aGg#CD~ YEx#X9㕯4Azsc J@sgAxx2f:&L%Ax '8IrLg8;\@O)f.OfUd;x@Q< an䱄RT3|4o{HG*VRC8H)P08ͩNwӞ@ Nz‰T?kJЙΘ^LPծz` X V$(!B"NF$ɎE)Jc׏sUd' yPqD=#B %Pv ](4:G$ wh=2MmT(@Z/27slb'86㙪lG':#;$XMvA %X >` #6gv0T'%,ͯ~_ [9> 0\6~}pExҹ0р)xڨUP',e/YjԖBhu\ҖMmj#;mOB[mpVܹXu.tK]"nPjOΓѫg#ԣ:x+ {s;̼`#靦 3Gt:{#1ES,=0Y,?#7rs0B 2vH-p5\vm N@_!eO5ŕe..>cHxHxřOH/8w t=ODь@ dFjб'Nqصx"p{V#W~[fwn ~n򈇷߱ov: Ml8 R`{A O.+.T&<Ṏ.˥,\ 2k<w;|b~xG鰏9zIS>|̜8ŭh/b~W M:BuWI@'A$2 D(Mhv7x~?P2MZy ~MPfy[s^4pCPsw>wF'7{<؃>(VA`t @hu{|E$aW|'vȇ|ʧvm|/RW·ZրU'`  &>M  MC 0t%7p@'x1`,NpxyG]@myYR 8C8Hpu7D>`{?Xx]v(zs?WzADŽ> *@ N $N@X8׸ոָ cT@x` @) `h!֐)(~PQ>QQ'v{(''!6  8xNF O O` vX]y) `Ă%/[hspJNMR0wuuJXn;(a)p 7i~ӖljjiNtٖS0'p  MP %{}?Q0}zu8P  .b )R P Qpr8@[ٚ0i?F0Ւ2ӅPy]^XsP+`5  EYs>. ޔ;S);n`>];|. "jD)iП*`0ݐ ڠuh YPi >> ed[p!˂@r(yrʕrV'yp #x;9s͹:V7h>'I\O#SHTZ޴/8g^;oMڞC5,צnꦟPye |ڧ}M{zO`jzGC<l\fxlurl m-xFDZ݃W4m>P@VtHV`WF{bJ6M'.P P %z1#D*H*M. |wd [D[L6 lje9e2CZ:IZi!ڪ:*Iʊ V:3dD` *@ /w#J5aC&H :rl*lJy㊜yj*spsr:4{gH0Q  &p{ PLL.d@Z+zd&'k\ϥr$H#m@E ezxӲMMYt[YsTGP T:Brww*Iڱ6y#8"y ZD >pttf[^sP5% C 2د, ~3RPpGq F@P0 E`;[{蛾껾۾E nFsԝۿuN۶ڕT9O0{T͋GЋ `ڻW&|(*,.02\a,8FȺP=B\T0fW쥢F@thxW, ,R`0pL>6}RfWP npr :W̞#!J 8<2y<+?bBNTʛ8^@Lb,dƊuO[L xzlŦXt MXVX\CpҬp}U0F0Oga<,XRmsHXʮl 5!*)ױ%]l]nprt=v]x}z|~֖\Xwh+G%!ƠMAӌM݄~HkO<\.MOSwZ0ڤKԀOS^0FPȰ%n~I bCg!%f:c}ȝʽ=c{[8+M0ݶ(ӂ4 U#Wb8ʐ@ |<5P;0ԧQ^0 @ п+|C >"^$~&(*UO{|6M7 Vl[*)ΡS@IP]Ja`T0Ԛ,P.^0^(МG<CC~)]-˵kv~x|:-{o,n@T Q9;T6BM{J^\OPNMZKP@ l@GSC-a.^`` F?nJz۪)Y, qNDޔSy ~Vpnފ/8kCrn8ٟH0 E FHB0n6swyOz r`d4}u;,mtH)0^%@ }.{EN>l$s-߂A`CUN9`6O> > |p 4P c^YL0 `z.Ǿs>_ $oxVz@+*NE>` Hω% ,^DUM$ BBPSR?U?XR[ ^a cO斢`nq:1e{By7-{1YOI$ w{>VXe͞EVZmݾwDX ^7B%>)T@g];v#"Yr˭ *`!C %"ːlK>ZcILH$D$|NNa23*$PKx:,|.$6h ܐSnSŽ2m7 b:.h> Ó> &b4#0B|aNjF:utR3C7YG2l[#P=tW +-lBtGRk2aHKk1WתW"4۴׃#ϊR%f5o7|nus 7 1)qjDљec `Xu9f.tU9^A8N\`,t\`Q[nMTh-[B$ GbBL҄XS|fLt"r"D۰K0{WDZ)lqpXC8M0zW!EMh`Zʗ4l cc"G2Lh U #C+fTX18t0I;m$TP؎YҔ/;b0cӐЎ1',ɕ$3t.sP^t:))xDL)Ri4 e4JMkZf,6ho>Jo4)Jh)$,P%G֊Oڰ"->d0؅PY mVI)֥ u7Ykx ߙelh#"zie˙85Nk0`A@/ab壗xpLJ#B{`;]:5ehTF1^3nXE74/?mi HHsAZQ5@a"}уSG{[Ƥ+#W TĖ0:y#(e'K Xx4H4#/Tmƥ$K.u˚:8vPvZ@r@49 =AV٧!Rb9Irۀ`8ġ hPԼf3ԝu;UR&oC^A ZyJd] $&{+?1"<Zr0Dz` qzH h @$V@x,Ũv|H+˭z9jsT5r& ׾m,t v r;mCԽnv jxk:PG8¢VCӼf7q~u+M;[ջժ^5^Fu5~^;蒽Tn6io;H}DpNkejqz#`ylӸ*ϋYʵvǭe<"H\mlc{bp{ wOtE.l~0Co}JjvwfLU5~5 ek%QQ<ܤ7W^Z4ˁiPǜhCn:\0|>;\`+8̛8H@'pR~•/CC $xWhaC Y:??˿2B(҂?-`2j#@.Pc; @@+8ǻE&G1x8:y"H="=H$S=CjD9LS,1"#4ܫK=S0D@z{|{D,09`888`901&NJM̃D X =ZƑ$ɒ4ɑď[DF???B?ずOt;;R@{0KaǠ)yFH`Г $LCo|= $G2$373L%!۽ k 0$"5Rz @\&M4h3Qs#HZ'},* r01%253E4U1mu`i%G|İȥ]0ҁ"E:E ]rE@T#X#PTFuTG=#TIT ZDT)O?$KB?iKjc;kI26[ݶ@oCL@S{hmv{{xYZdaСa`KH8 R]F0$0o< L 21HJ6d't sAx؊؋،؍8.ّX8(|Hxp8!Ґٜٙٚٛٝ~uYNX7-k)̱ )( %B"0$X ZڮE܁r6BfsKeC0UT-V=2M6z{UYUIԶ 16QV;Ecb%x0e}f}VhVvuThN@W=ct[ڞ86Qמau9WI;+AnA+}Q$؂u31(L8+u\X?P^*7І3UM ~DT # m#(GD$TH]SjڷZ[j"*h~`WpU`UPT`Hp&P$#؁EP5QT:JUU5VE @ܷ\<Lܻ[mcMV$pum-? %_ϕ# w*ȇ2)r]ag$]RK]]׽U7ă*$;>DVEfFvGHIF&_'`}ٛ!%H xH RD( }Z~]{H"M%z)ݱ``DƱ0UP V `: `$ ?B[J2K-"[TMU$[[Xᾭ.bQMVeUbhVΥύbg%Oph%]sbh]NS@2u @*QI^dQrѶc<>Q[*bBS I&6F꠾Hd}yp zͩfMu`yeU&eR&@eH@E@v(=P R(v0eR&@kkkQnR^ ^eTDh&peX&yxxxCvS9_s!`UkGDfv#X`}HMEHT`VXjjf `T;baL}-]Q=![ṥLaNNyv;\g+@|FaeXxPPH"fVg΍VmM(vh[~,N\`WnMab?7 KU:fiR5)41`ʀk*dB̜BA?0GWgwWq`j*(w0]Mh~e(PEnN xeP hr2W k h0Pn%p{!Qy8g\QM б&uHje`&!&b#}%xS~s~0$;ހ>:GPoց*a$U5g;Uu؃#%W%O/;mI682K\&vP.d\A #'n~ڙo*o[FVW`˥z{w b2!KxriVQu )BăzR^OB~A02mWt>N{\F}br')OO0beEzd}\x8VPxኇDo_Y{oj#s&orĎH{jh#W 9&p(P0vD._ (Hk`e''{~喀n__YXYf`_Y}~ϡ`0" EOHP!{%D=%)MԷUoWo&)6&xMfe#)vhyxZ,h „ "!Љ򈎥:.IJL$IćϩD*4j =2dhΜH@t IN%1f1SLoʼ"*SN޼xܵsN:jm-ܸrҍV;O۷:D&̉Sv1fgqvF$G|w73ϟ>!)iSNϵkx@Rb[II Mh4!@D=iHb 7\BmyHzJ-LjrP0(HC¯7P_X W,hAB(·@m[ut: PƠ@z=)ERկ VV`4H #<)1&b; \Ld$;P2pQy6L@ / \8P<&K' L~CJr+DU E)lLaP`,Ӓ02ya%<^B2 fJf2e=!= f,u$aUAxe~3. =X(iTqa<1(("))"* =C F=C>d .."//"0Ke^C&C>4"(tQUMUUU` ^!3ā,Θ;b8A0C12A/.U$#B&_:VA [[ ~ּuA(0OHrACY~L̂FQF<4)B5/'P%QQ%RPC .t' VfV QTE=,WbazH9!\EձalבmYLhu >@6!b!6@ AU?6p;_\"cTh@;`"h~h&ii&jjzfef|&̓=C ԃn&oo&pp'qC P="(>Dy;A'dД UF'tBq.0x(FK`=A:n$j;.B/=ޣ1T@A:Β蔛$LDz@B( JAF`r~)llAiAĩZViiZI}P='uf\ \V(Lg^ڐرLOFdH&|~J`]U@D?$ @):t-\\.֮ffz̕%./=LMF*¨*\6oB@ A""$lBJ/zF:Vħ.1x6 3oё(xXJ([߃øB|,hTz~dƬ AVB="GZ ~L ц#KHADA =C 4mQ5ޅ<^=D> $P3kebvvN Os1PPi9X {ԓ :١q- mB=V=(HB#A?Uĝ2<])jIu5'.$ kOժ*$c+ ,vf8B 4DW bTg0ChC1.pʙiAzpJvļ 6܂rroÁtWzp_:pwro:r;9 >HA>= 'omBX%u(&Fo"B?X 8P<FY4<$=\.u{û:<[]X+6bo x8PW6o6C4G6 )@}+}[eƒeO،ᄜŜi%800D6ٗ}ࢽ Ac: Փès;Cl|?J Om*_2@ɱtP$t"KEXf̐MWGu9X)Hܴ ڃh 88iÆfM[EMO=msVQG&-8xWJO^fl*nܜ%E?ETry]; F䖒\&}"kǑSQyzQOPuo@NǏ"H\|QR@a];v-n~}cNP=OPO>AMA”MI"I"Bx(P" 'xXb' @Yq\Vlc Ô' yE›I$$I\ I~NgSYGR-.5Sg$kLƆoub7$BN9sr(E 2'b*4C=t 8 نR(eFmУx)&6Ԑc .H--PM5/pҩ'6lQbQVYr^JX?*+ƪ-*@!|SzJŰV[m0LǾ 09[#yG4%BGyB^FS9Xsm)I5~ &89؃-)H}"{ yAk@ܓ1ˏOp dPf%Bx,%;d7CY]&x$R "YFjY>$KxK\Y\m *'w[/S2 4[M8ߜ:s>u D@၌@A:|8HPDaFe)ņ1=֘)T9H͂ M=UUUs ([a9``x\j_}*+b K /8W$.۹Ol[8,vP)Cu^x煂 }+(k8&X GMnA. {C>m*O=DwHA b d ]hgB$%hl$f0EH" 2IdtB%X L$k*bq"A=6Ÿe4U72E|iZ8Nw"8@1qK z :aru|@1R0bS'$Qt &UJܕjw gp3xwFa]1XW=@xr|=[&JFiLDgc];22f/B&6q; &ީv #qCcjz@a0{Fv-- 5ַl3sЄ$4CoC@áCB$6R"+Jr"L%R@ !PQE*)p $A"RcLԡ!4X_M3B{P0p23dA 01E  ar&!lХЅj .aw L(CeA?O C˿܅M`1' Arh A0! F!J+I1E(Mۧ})סe I߁zQ1Dl 0؁ # qinώ.qA(/1 1Lp'x─ mz ʠ=׳=`!!, '`{.N#ш#$c >%c$`XQ2ANXqN\TPf$ >A/200[-L~ [:3 Cs))Osfr Ƌ==1>Dh2R,;rRrJ;*! $I`| NJ0/! a .-d  !E2Qq1(]`203e>!AffB6Cp3t6ç+3n7390   S;;TȬ'Z.(<` G=ZR>>>?#YS,tT ԌX\ N:`C R6!D@ HDDMSc b-@>#؈( k՛552BvTG=Fh1uvgyg}1= h0d!f p*1>8D82O7(2F_PgFG_՛RyC}QCQ`3`lmbZhK.! 8\uNv|OS!n9s3:yU 6 f:u;M.Y;w'*= 2[sϼ,\ e3\Cfӵ ]U! : bl)%{D@C@BA @b0 HA> {5\FrF l !R ft]hFcFFTĤLA8 hQ8UxYWs0:<`r/Alp|v8txiM ( >*o@)2OQQPzPkpJ6$(52S !Foo@HuK1L0Udઑ8Qduqr)7Wۯ3 47X`u;;O'n h'Wn!Yĕ`\A0ъW]aLL\aFNa:(-(!DҶPa &W. <@a0`A651~I~ d@d` c dZ0da~h/:!-:Ң5Wv 2c!=Dvx1Z:JV@ alq:uzy:N!ՀMBrx/ NKҩ? h3| 0&AdC` <` !Ml` PmE)sQn@*nYn]oMSd!vZ2HU1LT1j wpO99-wW#ysutSn(n"zN_9-Ш:@,k{e?c[hzN! c"(Aal*  ۾00 [LH A:~`ad@ @@,G!xJc58Ą^D@ny}R5Ю<&a!S TʧM(I '~~ ;2m:LAH!ڡ1KIA L,V[a-1 0P+.lD @ 52$Aj C,T(!,8Vc8.=]2TU[V*VYQ㦓s?;]X LUN d ܏ABk> ]XAX˘~w.t#;O\` ^R`5pb(#&aaJ2%-aAAhQ @[ \\12A]Z:)0A `MvA p1tDcV`_HZz+d3=>~;~`ԯ @:!I$G!l @m `̙\<A!_1~ 81~AAd cйHZJ9 ځq?>$f4C{Cn5u .ÃF7`:op 2L7@->)Ag];vԩ4ҥL:} 5ԩT"nӺu^b&q;va;O!cd$Z"O&P*'_Oz?sEѣW^=՜sԵ>>z+ݻwEB) I)6 G"B`r#<G&R`⃃,DN?()NAA Q0#~; bJB 0LE=P)YyU=:ԍ@ c~C @jDzjQD.Fp;԰C E ’Alb+F X(E]x^1-ZYl-r\DATn rqF}$HoJx x4SJn|SN;ݣOA 5NLqKuQFm[;)b#BYVZj%mI GLs6s;_NlED u3jL۔eΝ"\ ~r0K'T\v}gM\tnq 8T ߽bx;/@a^(+C \T9%A8;xHR%ŊLXyX \Վx?VjMSDHĖm<Nt" X9gtOsJʞ3N!$: )yI]@ i.=(a*PU*bHPW` XBfZђֵN-n\,b.! kú܅CxK^ý}_xKTB$&6t~,=FiZ<:C Qd@K1/LsLX353CঞuI ğ/lj_$H9BC;<`'RVԢ)uE%#c$0 JT\Gh (` #@7 L&`x:0"@ J難'Ôn4ĴT 8AU lgU\ U `TBRaB !fXC7a AM#a%+Qb'.LyQAJ ,,ưG?fi.p>: bXz$=> >" -mԪVG%TZȖmM҆v-X%K&2~PaBUϯ kJ?:Owr%"I_%[yv̈e/RHA& V 4 \b^:0l@Y9_CtD:I/ *8È"44rRS?*Sjr u@B W<豰4TPm\-ZY e( 1Ch80YV7#mPDR#t+`0CT 2>OxZG :iEî)e44moc㗐,h>򑉺%/]NEDTzլn_ T[- N< J$+tc+ 5@+B+,dapr | F'sq`r aJbTd Ǣ,,PdF&UH5 Ƥ3iH3I5ŧHf LCJc47_^#2cf2e2gkȆm膥Z*P)G}Y(z~Dz@z)F1T㇇{sm6HkF%Ƅ:s`^ g ``>7a^CoQIyb}cb)XS pGL@@:eD0S@*ȍxcT5p(,/t| pqu( 'dTʂ9;d>'D8cGHLrĉH=q0D q6X X%f4h45i79;ɓ=;Y3y0pU{y$Y HR`0 H` /B0 GS cIeigSjɖkm ksIpYf)wh>uRIy%p'V4)g*  Q@sJg@* >* +ؚEcB8$']`,9drPEB<E'vF8Մ̃n t&M R6H1%Y)Ii'YiL{ wVO.XSY ^Y/ f2Gxʡ !*#Js!%Wkb7}wpwhpy@R ;G@F J >dp@cT@8`76+@e+Be)DE]rP>`BQ8L KЏ-x,K%d9dOœGF-=(/0L9A3R33 i (@)bJ$XQTjʪꪈ:z#PTiX1Y|Gi2ɪʬ *Zp(!?7HهEbǩApxpјbs.p֌`` F }dTE%)퇥~+tB<'K 7)dABfCQj- B9CG;ɝb js{ENX{MhGIK˴<31%F4ڳ>R_YPFFkdgik˶mo q+s;0 c8PGɇE{*hį=.0-*gGI@s }͑^U}Gi34|'I+21}"8XAFȂ§ )- I-' :Qv *Q|@ᅩi%$FKkKnSZOVi?]4F b5 ,LllF , ,Ll ̿@g7BIY1hӒG#G@=Y3˰Q *4Nڙ_tG\Z#0 KdĿ ˺=+EGUHAc|0;TP6Ч:^'ҹ¤:k'Q@@?6LɕX6LX+N@!{+1]Aʫʭʯ 9ȳL˵l˷˹C7D3ZJ[ P J\a yS]@|@ۯ<*P?9u+F2A6:60A5?6 >0T 60<{z` M^pz2`-BAc0ds s?plHr&4-raL8JACˌ7͑ Ip`@Ȋ>kIK 7G=){ H LCwSRhcM֨gͼGXGmo q-sC5CvS;* 9 ̌ pԤ@lS99EͰs= +:`'=p+㚷?d xv` OH: BȢMTX0b W,^pc#:ֲҎ0^D'@ӥʑ`|7ȈxNm;z'@ -MmXHyw .vgw!GE ~b HPا(H**~:+q2 20 O0 -Aq̚O` +i+֓c8FSJ` |MOPqM`< `` v2pE2` rpm,6{r02p^ +]sC~a5Hӥ /㝩NoFK"&"ib 9Fɼ!/j- dE  m=!7@`7cG;?!{"!8.0 AP~؜ *Y~R9ƀ:&5+dT=dT-8Bi!d%bc`~9ӷG'5#aV p.t>_Zh) O 2& K!R` QMJ%NPR O@ NoNp@ xBi)9j렮R ,ju_u|0 v / B@B PpJHYGdA a!9D,Eu(c6~WEBAL* ip*L:^]p7!v&iPB:MeWZ3p! b C=(# -R◸ fn8$Ba{ 1yO|3"/ SH8AF?Uutb{ St^Qv0he4IҔ,C"2lGA (K;J$l teͤXFge.TL>10bИ(S̬OLf49ܠTd f-L܆h"D0))Iz:Te쩸xx,e x B"A%miM{ZԦVM-* \hz(rDcpbphdJ I2E#M/rC|;Wvh{WC}{_!koa x 'X v`7DXp Ap9;#&qm` Bzx)N oBG&HwcXǤGq% gbs{d$'3t($;h1?0)dY[re0Y`NA}d"@(}ͱJNM\[>><^q: S(Bn$?*궴!4sk@(  z9CMm^ >X5ZjWlhk! uҀX0}ld ^0+lGW" R Op DC{ct[^Z3yy~Z0g:[Ib;LZ@Yʚu?-n}$\ gxpG\D9l͆:}Ξr E# ~nG33hCG#hIƔKs']%f`V t:KA Pz Qz堆A lzـ=ֱu|w]iCްrldz>كsAU@(CO,y_a[> 6!'} &2؏oQxl{^}}'~XA\A7 q<~`|>cPEbvؾx)hFxٹP- 5i@!,,8ET.PE-p//@@\\l@3@ E3H @b78FdL7 Af>FFAExvk7sz u8Gr$G Cu\GTdZY@xyb*no_[08켶IH\HlH|H |17v|p#?)A$ĘCD{؃F$HT*?D,% ⠛ Dů?=1E0HS\VܿWElJ[YE]E`@  |28ƮLF?8ưlgAi k5AyoSCKC>@DG=2DwByz)FJ#Dc%K r *ER,=1JTLJXdJ|JJ]J JbJeelF<i`K~,z9t@! M%KT){b)PL*GO\}PP P P 8pO(HOAȎj@,#dMC3؜{)Hh$]4 "N,Ξd!\NRҩN0 Vbα8F o=Ϣ5 qs9DNjOL}WӛTy}vy}OXxnEFEy-X=FLCPԋSyz{)Ї)`iL J R]I9R_5.X.&J4)uNdҧR/}0֭4Sd;mjApMϷ9y9 ;TPZZ 1B3y|@}%X = *|PPê[[G]ZQN?U ԛXv0WxSxTm݇S:M\ 4ҝ$8,֯jaRYdUEū1c9HKokW}>" Msp%\=!y9 ~ __8nyDCe[bk,@C,U|x3:t""mXDQ %EjS\XM*i8.IM\Y$ % aR={NERtV@1%5mEZuS2,1qy9Sbu8Rb.b/M, //h^ TЃ1E69/2/p@pTwvL`vUh\,Wz(H] q829(P՚!$]}PE؍b]+᝽f NmouSp W=},r8s^!dgf9jfkflfm8-غ6_|3+ 5\=fyf )xx#0g  ʙa=JVJfJYRܵ4X=^]6efM}7 i0Q9ttP$Lg6#5pNjdp8Lb0gtn5FEjnE6(EHxyVU\&0vY$5#8UG٬{XKr`䊾h*~ⴤF8JRוݔҤٗڃ5eoUZ,rN8fnA0 jNH!xnnnn7067R+ +n>4=[ P4dF͇kD<"4 v8lO\x@Ŧ`lhX \2v-R~`hipp>8qWɛN_&be#oP#3;7b.>)ǥfꦆo#Oa}mr'r(+ 0 +Kr/r?RrȨ?#g$4NY(Q)Rv1~M5PG˕olƇ!ɦʶhibqI"ftIteGFF2SN8 s{țC!M$4u#pp+u`vavb/vc>7Pd?vhv`1l]3jNlH"S>0h;Gh~F1xŞ5pǎBLHH8!iqHt-k5q~FOxW/-uq4;u}H^us+z3r!'tm_y~ %*yyyyey+y5zȄ(H|(@XzzG=CG>'k4w,HBn6|#t/G~/~?~O~~#)zxy?Wi>h.vwx<20w{=o|=wCeR&rtr'^FV;y6I'rg]$O]:<K3?94iXM`H?,S˓Qz[{؃)<vtdSj⃎W"%-eiL,DVLXHE~K#Q,!{#B_>&8 8 a& M``};Lyc='?4(AIy(9FZB4(E9v˔]q`a?F-aR 8=*AQ K4eSnnsh):0Q4 tZŖycy/Gcիb5Z*f諢b+YjVF?HH(JXB C+F" HkT% "Sx# bXP*&H sZa&vIJ^2dJn}J):IP#(:؁HDe`fX[Ґ$@$XLH(R(1ԋ>Yլ 0`=8 U$?ɒ4+miQEòft#Pܳ&Pf?^@F 91*4 ?> (82 NyD5ɗ6mkTBU0+ɽ \ٱ@ Qx9æ3[vpeiPPr Bs3 _pJF? mH8+[m*fmVb(tD*=O{Y-@yc6=󙣁*Pzm B(EßH[ou%c]zXhi>=ibILU/@eS/!f(_oTG_X%;o&>jdLA"|u iV3[\< pC)PA_zVH1 LbS8)ՁAtLE 1(  $\ "BaJ=ut_vtx <xɕ zQ Ѩ2Q8}a 70 D)`)%  a Ơ #wG}Y& (if`&55t-b..X!/ba6TC!b 6Sxe$zڕ"Ѭr+:5l$ B) YSY-/;c<#0c=!Q6q#`2N 639c&Fa}LG FA8B܉^)|fY)聐5kHdIINJ>m1Bb_2V%!4A%aiX#((QdSE2 ($d lp M& >HVz>|eXXeYYeZYC[[e\>LB]]% L )` f`f&a "%b2fc:f"LA#=t Gdfjf ccifjf#Df#&4l&Q?DB)r=Wܙ"8AڝY<"(l%<$IcI :dg&&xɈ.HR'J'shы[ah73B=@p:MmfڏpC;(L=ЄRFU&MCRt<80 5D<<%);luvwgxê\z*etBi;mQ$\NyN!ACHE,:hBH tB7XXI>eҩ[ $) 8A)B"44XC8#?lfm&! `$؁%@CqNOl'wxiɸJ)tB'DgUSt~f)x"D}E,O̖+:;; `lG{HRkZJ@)\Br"0B?A&f"<#kP#(HCDZ<؃XF'C̓bY[}V)Le<0wLDB-HLIkFaG&TF̞ll,TD <TV&#CL%݃4tp7)(IMp-I$a<.6ٖ-)h(=@<>5ɠ*;TE'VD'@>4)|OjB_&r C`&H#C0A<$$@E5;hC|͓)0)x@rI6Jp-@& 070."/ă 75xy,~`)+Pɦ-"k;T=D,AH=C&@"&A`EAgioro)xqI$pmpo~#m'2%:xrq(6 Z˰;4$TCЈ-BG0l'=DA= `-C4uPޱ :;GM=$Geo-Jp"D)@o|ok5W{@HqXH WUgH`<95t=LAt##G:̰51 FS-iE2t0t)`9G<0P"d+-7D.'#5 PA/wLĮMCN+O?Pvo5ˎ:zAnljpBp*xai.}DuKEuai @̶1׶ 3i}v5ʖt_Ouu$kWw'Pjlv(v:~8Pw%<9hHBsĪ,jUxSÈž467~xӷC귊/XFwx+motwJ8!(;.{|8q9CǸ[8v88wnx>NO?z'M@N0)3w{:B%zz@zzGzz{{;C+߃%X O%X%ö&x箆'7(<0D3wzd@; 5Ճ=4{Cr9d ||#+|‹3;|>dS[<+<>?c|ȇ[((YD6ėZʘʆ:Us,ޢ~~~~>A< ~sn q/L@KS[ck  wr#sg:v 4XA .tؐ:'PwQ99dH#I4yeJ+YtfL3iִygN;ys#FC5ziRK6ujTP gV[vlXcɖ ժkѶun\sֵ{o^T5ukp` 6|`7vrlj)W|sf͛9wthѣIV;PKp"AAPK &A!OEBPS/img/project_page_status.gif nGIF89aojjjjjjjjjjܑjjj着˪ڪjjJǑ˪˪ڼܯj˪Ǒܯڼ!,oĈ*\ȰÇ#JHŋ+ @:VHɓ(S8b+VʜI͌+~yϟ@3 ѣF "m(# |pHFS1VpCK1 P JM;LRQlo㺅K"O[.+9~!F.mK lGhu >=Y?.ܷ¶-m"nlyw:ocCKTîq\Z۵X6Vڙ΋2ך}~p#CjvͅxᖐxU_zRiǞT}|R!8_g_ v|iGvɧt \e%"F#r!sYr zhf\qד%cBFH oףcM0bB"es5n5[T&l>.Ԕ k? ԜzE(.+5 餔Vj饘f馜Dç*ꨤjꩨꪬPj뭸멳+쪽k&j62 VlfJ"m䖫榫 Kڋ l  @ AN 4Ȱp"L p+O,ߊL33B(L˻L*p, Cs4D} CT+q/4 |'[0Oc)0̌09&7mo-wtq{0߆ܴⅷ5vWm* ǰ`+yی9 0x$j jZТ޺Bx[A#S ?2DWp=g,̠~:;J}1_/dwrzޣ[9uN} hgfG]-tb5 /v cZP4,l˖Fw VVk۪ V=5"+FLb$& Nl")RVίdËU-2d"/jKMEBۭt"'31c *g~tampiswfLPXtl$C .J[0٬^,?WV!2r #H.S/ ]Gr#YV8/IH!x ͌yy&PL4 epGot 1?MRhDY*uNi,, 躅v%n@۵lf0MyqHƌb$'SNrBSGVsioSU鴧)P%ԡ⫨FR 2]N}*|WWgfEύD5S}03s@?TUu?YgwUGCXKlܭSV $ cfld U]%wHVi d$)ɵnkIz r(˂ꭰ DZ7$/?UՍ:p]keq9=\뮴B*/@qqdhi8ՓCWQ߰|Mq57JH+_7 OqR-\Y=޲X^g3؏u!,8oeF>e`5WM&4ھqA< ]xR׀el;v"en䲫cU6A-uORUn.ݪiehg|鯨3N]-AϔXݎDD3:֢#MISZ2ieqӂ-~"5vUYծ&*c}YZuS;J;PK A PK &AOEBPS/appmgr_forms.htm Converting an Oracle Forms Application

4 Converting an Oracle Forms Application

This section describes the steps to convert applications from Oracle Forms to Oracle Application Express.

This section contains the following topics:

How to Convert Your Application

Before You Begin

To convert applications from Oracle Forms to Oracle Application Express, you must perform the steps described in this section. The following graphic outlines the entire process.

Description of forms_to_apex.gif follows
Description of the illustration forms_to_apex.gif

The conversion process consists of the following steps:

Step 1: Convert Oracle Forms to XML

Step 2: Create a Workspace and Add Oracle Application Express Users

Step 3: Upload Database Objects into the Schema Associated with Your Workspace

Step 4: Create a Conversion Project

Step 5: Review and Edit Forms Metadata

Step 6: Generate the Oracle Application Express Application


Important:

You must follow the steps in the exact sequence presented in this section.

Step 1: Convert Oracle Forms to XML

In order to convert Oracle Forms to Oracle Application Express, you must convert the Forms modules to formats the Create Migration Project wizard can consume.

This section includes these topics:

Converting FormModules, ObjectLibraries, or MenuModules to XML

You can convert Oracle Forms FormModule, MenuModule, and ObjectLibrary files to Extensible Markup Language (XML) using the Oracle Forms to XML conversion tool, Forms2XML.

This section includes these topics:


Note:

The Forms2XML utility must generate an XML file in English only. If the generated XML tags are not in English then the file will fail to load.

About the Forms2XML Conversion Tool

The Oracle Forms to XML conversion tool, Forms2XML was introduced in Oracle9i Oracle Developer Suite and is also available in Oracle Developer Suite 10g. This tool should also work on files from earlier releases of Oracle Forms. If the Oracle Forms to XML Conversion tool does not work for a specific file from an earlier version of Oracle Forms then that file will must be upgraded to Oracle Developer Suite 9i or 10g and then converted to XML

Forms2XML produces an XML file that has the same base name as the Forms file with a .xml extension. The extension _fmb, _mmb, or _olb is added to the base file name to indicate whether the original file was a Forms Modules, a MenuModule, or an Object Library. The following table displays a few examples of the changes the tool makes to the name of the file being converted:

File name before conversionFile name after conversion
myForm.fmbmyForm_fmb.xml
myMenu.mmbmyMenu_mmb.xml
myLibrary.olbmyLibrary_olb.xml

Using the Forms2XML Conversion Tool From a Command Line

The Forms2XML command takes one or more Forms Module files as an argument. The files can be FormsModule (.fmb), ObjectLibrary (.olb), or MenuModule (.mmb) files. The output is placed in the current folder. The command has the following syntax:

frmf2xml [options] file1 [file2...]
java oracle.forms.util.xmltools.Forms2XML [options] file1 [file2...]

Available options include:

OptionsDescription
USE_PROPERTY_IDS=YES/NOSetting USE_PROPERTY_IDS to YES causes the Forms to XML conversion tool to write the internal ID for Real or Character into the XML file.

The default value (NO) generates property value names as before.

Note: The Forms2XML utility must be run with USE_PROPERTY_IDS=NO.

OVERWRITE=YES/NOValid values are YES or NO.

If OVERWRITE=YES, the tool overwrites any XML files with the same name that already exist in the output directory.

If OVERWRITE=NO, (default) the tool does not overwrite any XML files with the same name that already exist in the output directory. The tool will stop processing and return the message:

If the file file already exists. Use argument OVERWRITE=YES to replace.

DUMP=ALL/OVERRIDENIf DUMP=ALL, the tool dumps all properties.

If DUMP=OVERRIDEN, the tool dumps only those properties that are overriden.


Using the Forms2XML Conversion Tool in a Java Program

You can pass the Forms2XML tool a JdapiModule Java object (class oracle.forms.jdapi.JdapiModule) and dump its objects and properties to an XMLDocument (class oracle.xml.parser.v2.XMLDocument). For example:

...
 // get the modules in the session
 JdapiIterator mods = Jdapi.getModules(); 
    // ... and iterate round them 
    while(mods.hasNext())
      {
        JdapiModule mod = (JdapiModule)mods.next();
        Forms2XML converter = new Forms2XML(
        XMLDocument doc = converter.dumpModule(false);
              ... 
       }

Note that the Boolean argument taken by the dumpModule() method instructs converter to dump all properties to the XMLDocument doc, not just those which are overridden.

Once you have the module as a XMLDocument object, you could then use the XDK classes to manipulate it. For example, you could traverse it, remove or add objects, change properties, copy objects into other modules that are also saved as XMLDocument objects, and more—all programmatically.

To learn more about Oracle Forms, see the following hosted Help file:

http://www.oracle.com/webapps/online-help/forms/

Converting a PL/SQL Library

To convert a PL/SQL library, use the File > Convert option in Oracle Forms Builder to convert PL/SQL library .PLL files to .PLD text files.

To learn more about Oracle Forms, see the following hosted Help file:

http://www.oracle.com/webapps/online-help/forms/

Converting an Oracle Report to XML

To convert an Oracle Report, use the File Conversion option in Reports Builder to convert binary (.RDF), ASCII (.REX), and .JSP reports to XML format.

To learn more about Oracle Reports, see the following hosted Help file:

http://www.oracle.com/webapps/online-help/reports

Step 2: Create a Workspace and Add Oracle Application Express Users

A workspace is a virtual private database allowing multiple users to work within the same Oracle Application Express installation while keeping their objects, data and applications private. Each workspace has a unique ID and name.

An Oracle Application Express administrator can create a workspace manually within Oracle Application Express Administration Services or have users submit requests. Oracle Application Express Administration Services is a separate application for managing an entire Oracle Application Express instance. See "Creating Workspaces" and "Managing Workspace Requests"in Oracle Application Express Administration Guide.


See Also:

Oracle Database 2 Day + Application Express Developer's Guide if you are new to Oracle Application Express.

Extensive Oracle documentation is available for broadening your knowledge of database concepts and objects. To learn more, see Oracle Database Concepts. To view a specific documentation library go to:

http://www.oracle.com/technology/documentation/index.html


This section includes these topics:

Creating a Workspace Manually

To create an Oracle Application Express workspace manually:

  1. Log in to Oracle Application Express Administration Services. Oracle Application Express Administration Services is a separate application for managing an entire Oracle Application Express instance. You log in using the ADMIN account and password created or reset during the installation process.

    1. In a Web browser, navigate to the Oracle Application Express Administration Services application. By default, Oracle Application Express Administration Services installs to the following location:

      • If your setup uses the embedded PL/SQL gateway, go to:

        http://hostname:port/apex/apex_admin
        

        Where:

        hostname is the name of the system where Oracle XML DB HTTP Server is installed.

        port is the port number assigned to Oracle XML DB HTTP Server. In a default installation, this number is 8080.

        apex is the database access descriptor (DAD) defined in the configuration file.

      • If your setup uses Apache and mod_plsql, go to:

        http://hostname:port/pls/apex/apex_admin
        

        Where:

        hostname is the name of the system where Oracle HTTP Server is installed.

        port is the port number assigned to Oracle HTTP Server. In a default installation, this number is 7777.

        pls is the indicator to use the mod_plsql cartridge.

        apex is the database access descriptor (DAD) defined in the mod_plsql configuration file.

    2. On the Login page:

      • In Username, enter admin.

      • In Password, enter the Oracle Application Express administrator account password you specified when you installed Oracle Application Express.

      • Click Login.


    See Also:

    See "Logging in to Oracle Application Express Administration Services" in Oracle Application Express Administration Guide.

    Next, create a workspace.

  2. Click Manage Workspaces.

  3. Under Manage Workspaces, click Create Workspace.

    The Create Workspace Wizard appears.

  4. For Identify Workspace, enter a workspace name and description and click Next.

  5. For Identify Schema, select the Oracle Forms application schema.

    1. For Re-use existing schema, select Yes.

    2. Select a schema from the list.

    3. Click Next.


      Tip:

      If the Oracle Forms application schema exists in the current database, select it. If it does not exist in the current database, follow the steps outlined in "Step 3: Upload Database Objects into the Schema Associated with Your Workspace" .

  6. For Identify Administrator, enter the Workspace administrator information and click Next.

  7. Confirm your selections and click Create.

Creating Oracle Application Express Users

To create an Oracle Application Express user account:

  1. Log in to Oracle Application Express Administration Services as described in the previous section. See "Logging in to Oracle Application Express Administration Services" in Oracle Application Express Administration Guide.

  2. Click Manage Workspaces.

  3. Under Manage Workspaces, click Manage Developers and Users.

    The Manage Developers and Users page appears.

  4. Click Create.

    The Create/Edit User page appears.

  5. Under User Attributes, enter the appropriate information. Fields marked with an asterisk are required.


    Tip:

    To learn more about a specific attribute, click the item label. When Help is available, the item label changes to red when you pass your cursor over it and the cursor changes to an arrow and question mark.

  6. Under Password, type a case-sensitive password for this account.

    If your organization has set up a password policy, be sure the password meets the requirements.

  7. Under Developer Privileges, select the appropriate privileges:

    • User is a developer - To add this user as a developer, select Yes. For end users, select No.

      Developers can create and modify applications and database objects and view developer activity, session state, workspace activity, application, and schema reports.

    • User is a workspace administrator - To add this user as a Workspace administrator, select Yes. For developers or end users, select No.

      In addition to having developer privileges, workspace administrators can create and edit user accounts, manage groups, alter passwords of users within the same workspace, and manage development services.

  8. Under Account Control, specify the following:

    • Account Availability - Select Unlocked to enable a user to log in to this account.

    • Require Change of Password on First Use - Select Yes to require the user to change the password immediately after logging in with the current, temporary password. Otherwise, select No.

  9. Click Create User or Create and Create Another.

Logging in to Your Oracle Application Express Workspace

Once you create a workspace, you must log in to it using your login credentials (that is, the workspace name, user name, and password).


See Also:

See "Creating Workspaces" and "Managing Workspace Requests" in Oracle Application Express Administration Guide

To log in to a workspace:

  1. In a Web browser, navigate to the Oracle Application Express Login page. By default, Oracle Application Express installs to the following location:

    • If your setup uses the embedded PL/SQL gateway, go to:

      http://hostname:port/apex
      

      Where:

      • hostname is the name of the system where Oracle XML DB HTTP Server is installed.

      • port is the port number assigned to Oracle XML DB HTTP Server. In a default installation, this number is 8080.

      • apex is the database access descriptor (DAD) defined in the configuration file.

        For users who have upgraded from earlier releases, or who have a custom configuration, this value may be htmldb or something else. Verify your DAD with your Oracle Application Express administrator.

    • If your setup uses Oracle HTTP Server (Apache) and mod_plsql, go to:

      http://hostname:port/pls/apex
      

      Where:

      • hostname is the name of the system where Oracle HTTP Server is installed.

      • port is the port number assigned to Oracle HTTP Server. In a default installation, this number is 7777. You can find information about your Oracle HTTP Server installation's port number from either of the following files:

        ORACLE_BASE\ORACLE_HOME\install\portlist.ini
        ORACLE_BASE\ORACLE_HTTPSERVER_HOME\Apache\Apache\conf\httpd.conf
        

        Be aware that if you change a port number, it is not updated in the portlist.ini file. You can only rely on this file immediately after installation.

      • pls is the indicator to use the mod_plsql cartridge.

      • apex is the database access descriptor (DAD) defined in the mod_plsql configuration file.

        For users who have upgraded from earlier releases, or who have a custom configuration, this value may be htmldb or something else. Verify your DAD with your Oracle Application Express administrator.

    The Login page appears.

  2. Under Login, enter the following:

    • Workspace field - Enter the name of your workspace.

    • Username field - Enter your user name.

    • Password field - Enter your case-sensitive password.

  3. Click Login.

    Note that, depending on your setup, you might be required to change your password when you log in for the first time.

Step 3: Upload Database Objects into the Schema Associated with Your Workspace

In order to start the conversion process, the database objects associated with your Oracle Forms application must reside in the same database as Oracle Application Express.

If the database objects associated with your Oracle Forms application do not reside in the same database as Oracle Application Express, you must upload them.

To upload database objects associated with your workspace:

  1. Create a DDL script.

  2. Upload it to the SQL Script Repository and run it. See "Executing a SQL Script" in Oracle Application Express SQL Workshop and Utilities Guide.

Step 4: Create a Conversion Project

Next, create a conversion project by running Create Migration Project Wizard and loading the application metadata extracted in "Step 1: Convert Oracle Forms to XML".

To create a conversion project:

  1. Log in the workspace you created for your conversion project as described in "Logging in to Your Oracle Application Express Workspace".

  2. Under Migrations on the right side of the Workspace home page, click the Application Migrations link.

  3. On the Application Migrations page, click Create Project.

    The Create Migration Project wizard appears. Note that the steps included in the wizard appear in a flowchart on the left of the page.

  4. Enter the project details:

    1. Project Name - Enter a unique name. The project name must be unique to your current workspace and should not contain any white spaces.

    2. Type - Select Forms.

    3. Description - Enter a meaningful description for this project.

    4. Schema - Select the schema that contains the database schema objects associated with the Oracle Forms application you want to convert.

      The default schema is the schema associated with your workspace. If multiple schemas are associated with your workspace, all associated schemas appear in the select list, arranged in alphabetical order. When this situation exists, select the schema associated with the Oracle Forms you want to upload.

    5. Forms Module XML File - Click Browse and locate the XML file which contains the information of your converted Oracle FormModule (for example, myForm_fmb.xml).

      Note that you must upload the converted Oracle FormModule file first.

      The Confirm page appears.

    6. To add more files, click Upload Another File.

  5. To upload a file, specify the following:

    1. File Type - Select the appropriate file type. Options include:

      • Forms Module - Upload a FormModule in XML format (myForm_fmb.xml). Use the Forms2XML conversion tool to convert Oracle FormModule .FMB files to .XML format.

      • PL/SQL Library - Upload a PL/SQL Library associated with your Oracle Forms application (myLibrary.PLD). The library must be in text format. Use the File > Convert option in Oracle Forms Builder to convert PL/SQL library .PLLs to .PLD text files.

      • Oracle Report - Upload an Oracle Report in XML format (myReport.XML). Use the File Conversion option in Oracle Reports Builder to convert binary(.RDF), ASCII (.REX), and .JSP Reports to XML format.

      • Object Library - Upload an Object Library in XML format (myObjects_olb.XML). Use the Forms2XML conversion tool to convert Object Library .OLB files to .XML format.

      • Forms Menu - Upload an Oracle Form Menu in XML format (myMenu_mmb.XML). Use the Forms2XML conversion tool to convert MenuModule .MMB files to .XML format.

    2. File - Click Browse and locate the file your want to upload.

    3. Click Upload.

      The Confirm page appears.

  6. To add more files, click Upload Another File and repeat the previous step until all files appear on the Confirm page.

  7. Review the project details, and click Finish.

    The project page appears.

Step 5: Review and Edit Forms Metadata

Next, use the Project pages to review and edit form attributes and track the manual conversion process.

This section includes these topics:

About the Project Page

The Project page shows a high-level overview of your Oracle Forms conversion project.

This section includes these topics:

Understanding the Project Page

Description of project_page.gif follows
Description of the illustration project_page.gif

With the exception of the File Name column, most of the information on the Project page only applies to FormModule XML files (for example, Blocks, Triggers, and Program Units columns). If a column does not apply to the uploaded file, a 0 displays.

The Project page lists the following information about uploaded files:

  • Type - Identifies the type uploaded by displaying the appropriate file extension (for example, RPT for Report and FMB for FormModule files).

  • File Name - Displays the file name and extension (XML or TXT) uploaded into the project.

  • Blocks - Displays a count of blocks in FormModule XML file. A single block can be mapped to a region in Oracle Application Express. A region is a area on a page that serves as a container for content. Each page can have any number of regions. You control the appearance of a region through a specific region template.

  • DB Blocks - Displays the database data blocks in the uploaded FormModule XML file. These blocks can be based on any of the following block data source types: table; procedure; transactional trigger; or subquery. Blocks included in the DB Blocks count are not control blocks. Note that the associated Database Block property is set to Yes.

  • Triggers - Displays a count of all form-level, block-level and item-level triggers associated with the uploaded FormModule XML file.

  • Record Groups - Displays a count of Record Groups in the uploaded FormModule XML file.

  • Lists of Values - Displays a count of lists of values (LOVs) in the uploaded FormModule XML file.

  • Alerts - Displays a count of alerts in the uploaded FormModule XML file.

  • Program Units - Displays the number of schema objects that enable you to access and manipulate database information.

  • Component Count - Lists the number of components that have been uploaded to the Conversion project.

  • Completed Components - Displays a count of components within the conversion process that have been reviewed and have been marked as Complete.

  • Percent Complete - Lists percent of components which have been marked as Complete.

You can review Forms attributes and track manual conversion by clicking the links on this page.

About the Search Bar

A Search bar appears at the top of the page. Use this tool to create custom searches and customize and filter the information that appears on the Project page.

Description of search.gif follows
Description of the illustration search.gif

The Search bar contains the following controls:

  • Finder Drop Down - Enables users to search on a selected column or against all columns.

  • Search Field - Displays a text field in the search bar in which to enter search criteria.

  • Rows - Displays a select list to select the number of rows to display per page.

  • Actions Menu - Enables you to customize the report based on selected Actions menus. To learn more about the Actions menu, select the Help link as shown in the following graphic.

Description of actions_menu.gif follows
Description of the illustration actions_menu.gif

About the Upload File, Create Application, and Run Application Buttons

Three buttons display to the right of the Search Bar:

  • Click Upload File to add files to your conversion project. See "Uploading Additional Files".

  • Click Create Application to create an Oracle Application Express application based on the components included in your conversion project. See "Step 6: Generate the Oracle Application Express Application".

  • Click Run Application to submit the pages within your Oracle Application Express application to the Oracle Application Express and render viewable HTML. Note this button only appears after you generate an application.

About the Associated Application Box

The Associated Application box only displays after you create an application. This box displays application name, number of application pages, last update date, and the user who performed the updates. Click the application name to link to the Application home page within Application Builder.

Description of project_ass_app.gif follows
Description of the illustration project_ass_app.gif

About the Tasks List

The Tasks box displays on the right side of the page and displays the following links:

  • Delete Project deletes the current project.

  • Edit Project Details and Applicability links to the Project Details page. See "Editing Project Details".

  • About Forms Conversion links to a page that explains how to convert Oracle Forms applications.

  • Set Application Defaults links to the Set Application Defaults page. See "Setting Up Application Defaults".

About the Completion Status Box

A Completion Status box displays on the right side of the page listing the total number of components, completed components, and percent complete.

Description of project_page_status.gif follows
Description of the illustration project_page_status.gif

Uploading Additional Files

To add files to your conversion project:

  1. Go to the Project page:

    1. On the Workspace home page, click the Applications Migrations link on the right side of the page.

    2. Click a project name.

      The Project page appears.

  2. On the Project page, click Upload File.

  3. For File Type, select one of the following:

    • Forms Module - Upload a FormModule in XML format (myForm_fmb.xml). Use the Forms2XML conversion tool to convert Oracle FormModule .FMB files to .XML format.

    • PL/SQL Library - Upload a PL/SQL Library associated with your Oracle Forms application (myLibrary.PLD). The library must be in text format. Use the File > Convert option in Oracle Forms Builder to convert PL/SQL library .PLLs to .PLD text files.

    • Oracle Report - Upload an Oracle Report in XML format (myReport.XML). Use the File Conversion option in Oracle Reports Builder to convert binary(.RDF), ASCII (.REX), and .JSP Reports to XML format.

    • Object Library - Upload an Object Library in XML format (myObjects_olb.XML). Use the Forms2XML conversion tool to convert Object Library .OLB files to .XML format.

    • Forms Menu - Upload an Oracle Form Menu in XML format (myMenu_mmb.XML). Use the Forms2XML conversion tool to convert FormsMenu .MMB file to .XML format.

  4. File - Click Browse and locate the file your want to upload.

  5. Click Upload.

    The Confirm page appears.

  6. To add more files, click Upload and Upload Another and repeat the previous step until all files appear on the Confirm page.

  7. Review the file details, and click Finish.

    The project page appears.

Editing Project Details

Click the Edit icon on the Project page to access the Project Details page. The Edit icon resembles a small yellow pencil.

Description of project_page_edit_ico.gif follows
Description of the illustration project_page_edit_ico.gif

Use the Project Details page to edit project details and specify what components to include in your conversion project.

Modifying Component Applicability Defaults

Use the Applicability section to specify whether to include specific components in your conversation project. Select Yes or No adjacent to a component type.

Description of applicability.gif follows
Description of the illustration applicability.gif

Reviewing Forms Modules

From the Project page you can browse the objects included in your uploaded Oracle FormModule XML file (for example, myForm_fmb.xml).

This section includes these topics:

Viewing an Imported FormModule

To view an imported FormModule:

  1. Go to the Project page:

    1. On the Workspace home page, click the Applications Migrations link on the right side of the page.

    2. Click a project name.

      The Project page appears.

  2. Click the Edit icon to the left of the XML file name (for example, myForm_fmb.xml).

    The Form Details page appears.

  3. To delete an imported FormModule, click Delete.

  4. To download the files associated with this project, click Download.

About Annotations

Use Annotations to track the overall status of form components within the conversion process. To learn more, see "Using Annotations to Track the Conversion Process".

Viewing Object Metadata and Selecting Specific Objects

To review object metadata:

  1. Go to the Projects page:

    1. On the Workspace home page, click the Applications Migrations link on the right side of the page.

    2. Click a project name.

      The Project page appears.

  2. Click the number under the column for the appropriate object type. Alternately, click the File Name to view a report describing the component.

    Description of fmb_view_object.gif follows
    Description of the illustration fmb_view_object.gif

    Clicking a number displays a listing of the object type.

  3. To include blocks, items, and LOVs select the Include check box adjacent to the object name and click Apply Changes.

  4. To view details about a specific object, click the object name or Edit icon.

Viewing and Selecting Blocks

To review blocks:

  1. Go to the Project page:

    1. On the Workspace home page, click the Applications Migrations link on the right side of the page.

    2. Click the project name.

      The Project page appears.

  2. Click the link under the Blocks column.

    A listing of blocks appears. Click the Actions icon on the Search bar to view additional information which is not visible in the default report.

  3. To view block details information, click the Name link.

    The Block Details page appears.

  4. To edit a block name, enter a new name in the Title field and click Apply Changes.

  5. To include a specific object in your conversion select the Include check box adjacent to the object name and click Apply Changes.

  6. To view details about a specific object, click the Name link.

    The Block Details page appears. The sections that follow describe each section of the Block Details page.

About Block Details

Lists the details about the block.

About Annotations

Tracks the overall status of the object within the conversion process. To learn more, see "Using Annotations to Track the Conversion Process".

About Application Express Page Query

Oracle Forms can be based on database blocks which correspond to database tables or views. The enhanced query builds a query based on the database block and database item meta data, and extends it with block level post-query trigger source to show derived columns

Enhanced Query is the original query with the POST-QUERY logic included. Original Query is generated from the data source item (table) underlying the block and the columns that are referenced on that block

To specify the type of query to use:

  1. Select one of the following from the User Query list:

    • Custom Query

    • Enhanced Query

    • Original Query

  2. If you select Custom Query, enter the appropriate syntax in the Custom Query field.

  3. Click Apply Changes.

Relation Details

Only displays if a relationship was identified for the block in the XML file. This section displays the information on that relationship.

Block Items

Displays the items in the block. Click the Edit icon associated with the item to view item details.

Block Triggers

Lists the block-level and item-level triggers associated with the block. Click Edit icon to view additional trigger details.

About Audit

Display or hide the Audit section to view details about the object creation and last update dates.

Viewing and Selecting Items

To review items:

  1. Go to the Project page:

    1. On the Workspace home page, click the Applications Migrations link on the right side of the page.

    2. Click the project name.

      The Project page appears.

  2. Click the link under the Items column.

    A listing of items appears. Click the Actions icon on the Search bar to view additional information which is not visible in the default report.

  3. To edit an item label, enter a new name in the Item Prompt field and click Apply Changes.

  4. To include a specific object in your conversion select the Include check box adjacent to the object name and click Apply Changes.

  5. To view details about a specific item, click the Item Name link.

    The Item Details page appears. The sections that follow describe each section of the Item Details page.

About Item Details

Lists the details about the item.

About Annotations

Tracks the overall status of the object within the conversion process. To learn more, see "Using Annotations to Track the Conversion Process".

About Audit

Display or hide the Audit section to view details about the object creation and last update dates.

Reviewing Oracle Reports

From the Project page you can browse uploaded Oracle Report XML files (for example, myReport.XML).

This section includes these topics:

Viewing Reports

Use the Report Details page to view details about the imported report.

To view the Report Details page:

  1. Go to the Project page:

    1. On the Workspace home page, click the Applications Migrations link on the right side of the page.

    2. Click a project name.

      The Project page appears.

  2. Click the Oracle Reports XML file name (for example, myReport.XML).

    The Report Details page appears.

  3. To delete the report, click Delete.

  4. To download the report, click the Download link.

    The sections that follow describe the Report Details page.

Report Details

Lists details about the current report.

About Annotations

Use Annotations to track the overall status of the object within the conversion process. To learn more, see "Using Annotations to Track the Conversion Process".

About SQL Query

Displays the SQL query associated with the Oracle Report. Note that this SQL statement is used to generate an Oracle Application Express Interactive report.

About Data Items

Lists each item in the report. Click the Edit icon adjacent to a specific item to display the Data Item Details page.

About Summary Items

Lists the summary columns associated with the report. These columns perform a computation on another column's data (for example, sum, average, count, minimum, maximum, and percent total).

To learn more about Oracle Reports, see the following hosted Help file:

http://www.oracle.com/webapps/online-help/reports
About Audit

Display or hide the Audit section to view details about the creation and last update dates.

Selecting Reports to Include

Use the Reports page to select reports for inclusion in the conversion process.

To view the Report page:

  1. Go to the Project page:

    1. On the Workspace home page, click the Applications Migrations link on the right side of the page.

    2. Click a project name.

      The Project page appears.

  2. Click the Edit icon to the right of the Oracle Reports XML file name (for example, myReport.XML).

    The Reports page appears.

  3. To include a report, select the check box and click Apply Changes.

Reviewing PL/SQL Libraries

From the Project page you can browse uploaded PL/SQL libraries associated with your Oracle Forms application (for example, myLibrary.PLD) and update annotations. Note that PL/SQL libraries are not generated within Oracle Application Express. However, the files are imported to enable you to review and track them.

To view the PL/SQL Library Details page:

  1. Go to the Project page:

    1. On the Workspace home page, click the Applications Migrations link on the right side of the page.

    2. Click a project name.

      The Project page appears.

  2. Click the PL/SQL library XML file name (for example, myLibrary.PLD).

    The PL/SQL Library Details page appears.

  3. To delete the library, click Delete.

  4. To download the library, click the Download link.

About Annotations

Use Annotations to track the overall status of the object within the conversion process. To learn more, see "Using Annotations to Track the Conversion Process".

About Audit

Display or hide the Audit section to view details about the object creation and last update dates.

Reviewing Forms Menus

From the Project page you can browse the objects included in your uploaded MenuModule XML file (for example, myMenu_mmb.XML) and update annotations. Note that Forms Menus are not generated within Oracle Application Express. However, the files are imported to enable you to review and track them.

This section includes these topics:

Viewing Form Menus

To track an imported MenuModule:

  1. Go to the Project page:

    1. On the Workspace home page, click the Applications Migrations link on the right side of the page.

    2. Click a project name.

      The Project page appears.

  2. Click the Edit icon to the left of MenuModule XML file name (for example, myMenu_mmb.XML).

    The Edit Imported Form Menu page appears.

  3. To delete the MenuModule, click Delete.

  4. To download the MenuModule, click the Download link.

About Annotations

Use Annotations to track the overall status of form within the conversion process. To learn more, see "Using Annotations to Track the Conversion Process".

Viewing a Summary of Forms Menus

Use the Forms Menus page to view details about specific modules.

To view the Forms Menus page:

  1. Go to the Project page:

    1. On the Workspace home page, click the Applications Migrations link on the right side of the page.

    2. Click a project name.

      The Project page appears.

  2. Click the MenuModule XML file name (for example, myMenu_mmb.XML).

    The Forms Menus page appears and displays the following information:

    • Edit icon - Depending on the Module Type, clicking this icon displays a details page describing the selected menu or program unit.

    • Name - Display the name of the menu module.

    • Module Type - Lists the type of module (that is, either Menu or Program Unit).

    • File Size - Displays the XML file size in kilobytes (KB).

    • Module Name - Displays the name of the module.

    • Main Menu - Specifies the name of the individual menu in the Forms Menu that functioned as the main or starting menu at runtime.

    • Assignee - Displays the person responsible for an object as specified within the Annotations for the object.

    • Tags - Lists tags created to describe the object as specified within the Annotations for the object.

    • Notes Snippet - Displays a snippet of the Notes specified within the Annotations for the object.t

    • File Name - Displays the MenuModule XML file name.

  3. To view module details, click the Edit icon adjacent to the menu name.

    A details page appears. See the next section, "Viewing Form Menu and Program Unit Details".

Viewing Form Menu and Program Unit Details

Clicking the Edit icon on the Forms Menus page displays a details page. The format of the page that displays depends upon the Module Type (either Menu or Program Unit).

About Form Menu Details

The top of the page lists details about the menu, including

  • Name

  • Parent Module

  • Parent Name

  • Parent Type

  • DirtyInfo

  • Tear Off Menu

  • Comment

Under Menu Items, click the Edit icon to view details or track the status of a specific menu item.


See Also:

To learn more about Oracle Forms, see the following hosted Help file:
http://www.oracle.com/webapps/online-help/forms/

About Annotations

Use Annotations to track the overall status of an object within the conversion process. To learn more, see "Using Annotations to Track the Conversion Process".

About Program Unit Details

The top of the page displays the program unit name, type, and the actual program unit text (if applicable).

About Audit

Display or hide the Audit section to view details about the object creation and last update dates.

Reviewing Object Libraries

From the Project page you can browse uploaded Object Libraries associated with your Oracle Forms application (for example, myObjects_olb.XML) and update the annotations. Note that Object Libraries are not generated within Oracle Application Express. However the files are imported to enable you to review and track them.

To view the Forms Object Library page:

  1. Go to the Project page:

    1. On the Workspace home page, click the Applications Migrations link on the right side of the page.

    2. Click a project name.

      The Project page appears.

  2. Click the Edit icon to the left of the Object Library XML file name (for example, myObjects_olb.XML).

    The Object Library Details page appears.

About Annotations

Use Annotations to track the overall status of the object within the conversion process. To learn more, see "Using Annotations to Track the Conversion Process".

About Audit

Display or hide the Audit section to view details about the creation and last update dates.

Using Annotations to Track the Conversion Process

Use Annotations to track the overall status of an object within the conversion process. Most detail pages that describe a specific object include an Annotations section.

Description of fmb_annotation.gif follows
Description of the illustration fmb_annotation.gif

Use these fields to determine whether an object should be included in the conversion, assign a priority, track status, assign the object to specific individual, or create notes and tags.

Options include:

  • Applicable - Tracks whether the object is applicable within the context of the generated Oracle Application Express application. Select Yes or No.

    The initial value is determined by the applicability default settings for that component or trigger defined on the Project Details page.

  • Priority - Assign a numeric priority to the object.

  • Complete - Track if the conversion is complete. Select Yes or No.

  • Assignee - Assign the object to a specific user.

  • Notes - Enter notes regarding the object.

  • Tags - Assign tags to the object.

The values defined in Applicable and Complete are used in determining the percentage complete. All the Applicable and Complete values can be changed for a block at one time from the Bulk Changes page.

Why Use Annotations?

Because Oracle Forms have many separate components, it is important to evaluate whether functionality in the original application is either not required or has been replicated in the Oracle Application Express application. Given that the initial design only incorporates a percentage of the required functionality, you can use these fields as a reminder of what must be implemented post-generation.

Step 6: Generate the Oracle Application Express Application

After you have reviewed and updated the Oracle Forms metadata within your conversion project, you now need to generate the application in Oracle Application Express.

When creating an application, a home page is defined by default. You have the option to create additional blank pages so that you can include blank pages or reports and forms on other tables as part of your application.

You can then choose which user interface theme your application should be based on. By default, the application uses one level of tabs.

As a shortcut, you can also set some application defaults. These defaults are used whenever you create new applications.

This section includes these topics:

Setting Up Application Defaults

To set up application defaults (optional):

  1. On the right side of the project page, click Set Application Defaults in the Tasks list.

  2. Select the options you want to use as defaults.

    For information, click Help or click the item label. Clicking the item label opens a separate window describing the item and its options.

  3. Click Apply Changes.

    The project page appears.

Creating an Application

To create an application:

  1. On the project page, click Create Application.

  2. In Name, specify the following:

    1. Name - Enter a name for this application. The default name is based on the project name.

    2. Create Application - Choose a creation method. Select Based on Migration Project.


      Tip:

      Selecting Based on existing application design model enables you to reuse a model from a previously generated Oracle Application Express application.

    3. Click Next.

  3. In the Selected Application Objects section, you can customize specific pages. For example:

    • Rename a page. Click the Page Name link and enter the new name on the New Page Definition page that appears.

    • Select home page navigation. Click the Home link. The Page Definition appears. Under Navigation, select one of the following:

      • Vertical Unordered List with Bullets

      • Vertical Images List

      • Horizontal Images List (default)

    • To display an image on a parent page, click the Page Name link. The Page Definition appears. Scroll down to Page Icon. Select and image from the list list or click the Find icon (flashlight) to view additional options.

      Repeat this step for each parent page. If you do not explicitly select an image for a page, the default image displays for that page.

      Note that for the image to appear in your application, you must have selected either Vertical Images List or Horizontal Images List for the Home page navigation.

  4. To add additional pages to the application, scroll down to the Add page section. Select a page type and click Add Page. To learn more about each page type, click item Help.

    Note that the new page appears at the bottom of the list in the Selected Application Objects section.

  5. Click Next.

  6. Select a theme for the application and click Next.

    A theme is a collection of templates that define the layout and style of an application, including buttons and pages.

  7. Confirm your selections and click Create.

  8. To preview the application, click Run Application. Then, log in using your Oracle Application Express workspace credentials.

    Your application now appears as a separate application in Oracle Application Express.

  9. To customize your application, scroll down to the Developer toolbar and click Edit Application.

    You might want to do the following customizations immediately after you generate your application:

    • Rename the application. Each application has a unique ID, but the conversion project name becomes the application name by default. To more easily identify an application, you might want to change its name to something more meaningful by editing the application attributes.

    • Change the authentication scheme. By default, the authentication scheme is Application Express authentication. You can change this by editing the application attributes.


    See Also:

    For further details on why the model shows the given pages based on your Forms, see "Block to Page Region Mappings". For information on editing application attributes, adding pages, deploying your application see the Oracle Application Express Application Builder User's Guide or online Help.

Deleting a Migration Project

When you delete a migration project, you delete only the metadata associated with the migration project. Deleting a migration project does not delete or impact applications you have generated from the project or any objects, such as tables or views, in the schemas associated with your workspaces.

To delete a migration project:

  1. Log in to Oracle Application Express.

  2. Under Migrations on the right side of the Workspace home page, click the Application Migrations link.

  3. On the Application Migrations page, click the project you want to delete.

  4. On the project page, click Delete Project from the Tasks list on the right.

  5. Click the Delete Project button and confirm the deletion.

PK#AAPK &A!OEBPS/img_text/fmb_annotation.htmx Description of the illustration fmb_annotation.gif

This illustration shows the Annotations section on many detail pages om Oracle Forms pages in Oracle Application Express Application Migration Workshop. Additional information about this illustration can be found in the surrounding text.

PK+#PK &AOEBPS/img_text/acmg_tbl_pg.htm. Description of the illustration acmg_tbl_pg.gif

This graphic shows a sample Tables page with all valid tables selected. Additional information about this graphic can be found in the surrounding text.

PK"=3.PK &AOEBPS/img_text/project_page.htmS Description of the illustration project_page.gif

This illustration shows the Project page in Oracle Application Express Application Migration Workshop. Additional information about this illustration can be found in the surrounding text.

PKkXSPK &AOEBPS/img_text/acmg_frm_pg.htm, Description of the illustration acmg_frm_pg.gif

This graphic shows a sample Forms page with all valid forms selected. Additional information about this graphic can be found in the surrounding text.

PKuRf1,PK &A#OEBPS/img_text/acmg_cr_prim_key.htm_ Description of the illustration acmg_cr_prim_key.gif

This graphic shows the Create Primary Key page with some fields filled in: Constraint Name, Preserve Case, and Primary Key Column. The Primary Key Column 2 and 3 are not filled in. Additional information about this graphic can be found in the surrounding text.

PK PK &A"OEBPS/img_text/fmb_view_object.htm+ Description of the illustration fmb_view_object.gif

This illustration shows an object link on the Project page. Additional information about this illustration can be found in the surrounding text.

PKb]0+PK &AOEBPS/img_text/acmg_prj_pga.htmB Description of the illustration acmg_prj_pga.gif

This graphic shows the Applications list that opens when you click Applications on the project page. The box shows the application ID, application name, time the application was updated, page count, user name of the person who updated the application, and a Run icon.

PKKPK &AOEBPS/img_text/actions_menu.htm3 Description of the illustration actions_menu.gif

This illustration shows the Actions menu on the Project page. To learn more about the Actions menu, select the Help link as shown in the following graphic.

PKc83PK &A%OEBPS/img_text/acmg_cr_index_norm.htmt Description of the illustration acmg_cr_index_norm.gif

This graphic shows the Add Index page with some fields filled in: Index Name, Non-Unique, and Index Column 1. The Index Column 2, 3, and 4 are not filled in. Additional information about this graphic can be found in the surrounding text.

PK~PK &A"OEBPS/img_text/project_ass_app.htm; Description of the illustration project_ass_app.gif

This illustration shows the Associated Application box on the Project page. Additional information about this illustration can be found in the surrounding text.

PKwl@;PK &A(OEBPS/img_text/project_page_edit_ico.htm_ Description of the illustration project_page_edit_ico.gif

This illustration shows the Edit icon on the Project page. The Edit icon resembles a small yellow pencil. Additional information about this illustration can be found in the surrounding text.

PK/d_PK &AOEBPS/img_text/search.htm" Description of the illustration search.gif

This illustration shows the Search Bar on the Project page. Additional information about this illustration can be found in the surrounding text.

PK#'"PK &AOEBPS/img_text/acmg_howto.htm Description of the illustration acmg_howto.gif

This graphic visually represents the steps described in the surrounding text.

PKݚPK &AOEBPS/img_text/acmg_rpt_pg.htm) Description of the illustration acmg_rpt_pg.gif

This graphic shows a sample Reports page with no reports selected. Additional information about this graphic can be found in the surrounding text.

PK?.)PK &A OEBPS/img_text/applicability.htmF Description of the illustration applicability.gif

This illustration shows the Component Applicability section on the Project Details page. Additional information about this illustration can be found in the surrounding text.

PK**KFPK &A&OEBPS/img_text/project_page_status.htm: Description of the illustration project_page_status.gif

This illustration shows the Completion Status Box on the Project page. Additional information about this illustration can be found in the surrounding text.

PK?:PK &A OEBPS/img_text/acmg_cr_index.htm< Description of the illustration acmg_cr_index.gif

This graphic shows the Create Index page with Normal selected as the Type of Index. Additional information about this graphic can be found in the surrounding text.

PKazA<PK &AOEBPS/img_text/acmg_prj_pg.htmz Description of the illustration acmg_prj_pg.gif

This graphic shows the objects retrieved from a sample Access export that appear on the project page: Databases, Tables, Queries, Forms, Reports, and Modules. Additional information about this graphic can be found in the surrounding text.

PKğwAPK &A OEBPS/img_text/forms_to_apex.htmb Description of the illustration forms_to_apex.gif

This graphic demonstrates the entire process of converting an Oracle Forms application to Oracle Application Expres. Additional information about this illustration can be found in the surrounding text.

PK+qgbPK &AOEBPS/img_text/acmg_qry_pg.htm3 Description of the illustration acmg_qry_pg.gif

This graphic shows a sample Queries page with the only valid query selected. Additional information about this graphic can be found in the surrounding text.

PKͅ83PK &A OEBPS/toc.ncxB Oracle® Application Express Application Migration Guide, Release 3.2 Cover Table of Contents Oracle Application Express Application Migration Guide, Release 3.2 Preface Getting Started with Application Migrations Workshop Overview of the Migration Process Migrating a Microsoft Access Application Converting an Oracle Forms Application Oracle Forms Generation Capabilities and Workarounds Index Copyright PK.G B PK &AOEBPS/appmgr_start.htm0b Getting Started with Application Migrations Workshop

1 Getting Started with Application Migrations Workshop

Oracle Application Express Application Migration Workshop (Application Migrations) enables you to migrate a Microsoft Access application or convert an Oracle Forms application to an Oracle Application Express application.

This section describes provides a general description of the steps needed to migrate applications from Microsoft Access or Oracle Forms to Oracle Application Express.

This section contains the following topics:

About Migrating a Microsoft Access Application

You begin the migration process by exporting your Microsoft Access metadata using the Exporter tool with Oracle SQL Developer Migration Workbench. After that initial step, you use Application Migration to review the retrieved objects and resolve any issues regarding invalid objects. As the final step, you have the option of generating either an application based on valid forms and reports or a maintenance application based on valid tables and views.

Once the application is generated, you can take advantage of all the functionality in Oracle Application Express to further develop and enhance the migrated application.

Topics in this section include:

Preparation Checklist for Migrating Microsoft Access Applications

Before you begin the migration process, verify that your system meets these requirements:

  • Oracle Application Express version 3.0 or later

    You must install Oracle Application Express 3.0 or later. You use the Application Migration feature within Oracle Application Express to download the Exporter tool as well as to migrate Microsoft Access forms and reports to Oracle Application Express.

  • Oracle SQL Developer 1.2 or later (available in English only)

    You must install Oracle SQL Developer version 1.2.0 or later. You use the Migration Workbench extension to migrate the Microsoft Access schema and data to Oracle.

  • Exporter tool version 10.2.0.2.5 or later (available in English only)

    You can install the Exporter tool using the Download Exporter link within Oracle Application Express. For instructions, see "Step 1: Export Microsoft Access Metadata".

    If you are using Oracle SQL Developer version 1.2.0 or later, you can access the Exporter tool directly from the Migration menu.

  • Microsoft Access

    Your local system must have Microsoft Access installed, and it must be installed where the Exporter tool and .mdb file reside.

  • Microsoft Data Access Components (MDAC)

    Your local system should have the latest version of Microsoft Data Access Components (MDAC) installed. You can download the latest version from the Microsoft Web site.

  • Printer

    Your local system must have a printer installed so that a report can be opened in design view. This is a requirement for exporting your Reports information from an .mdb file.

  • Analyze your .mdb file before you export your database. Follow the instructions in the next section.

Analyze Your MDB File in Microsoft Access

Using Microsoft Access, you should analyze your .mdb file before you export your database. Performing these steps will minimize errors in the migration.

  1. In Microsoft Access, analyze the objects in your .mdb file:

    1. From the Microsoft Access menu bar, select Tools, Analyze, and then Documenter.

    2. Select the All Object Types tab, and then click the Select All button to select all the objects within the application for analysis.

    3. Remove or resolve any erroneous objects reported by the Documenter.

  2. Ensure the application contains no missing references:

    1. In Microsoft Access, launch the design IDE (press Alt+F11 keys).

    2. From the menu bar, select Tools and then References.

    3. Remove or resolve any missing references.

  3. Ensure the application compiles successfully:

    1. From the menu bar in the IDE view, select Debug and then Compile.

    2. Resolve any reported errors.

  4. Perform a compact and repair on the database:

    • From the menu bar in Microsoft Access, select Tools, Database Utilities, and then Compact and Repair Database.

  5. Ensure that all linked tables are valid links:

    1. From the menu bar in Microsoft Access, select Tools, Database Utilities, and then Linked Table Manager.

    2. Verify that all links are up-to-date and pointing to an existing .mdb file that is not read-only.

About the Microsoft Access Migration to Oracle Application Express Forum

In addition to Oracle support, you can post questions on the Microsoft Access Migration to Oracle Application Express:

http://forums.oracle.com/forums/forum.jspa?forumID=356

About Converting an Oracle Forms Application

You begin the process by converting Oracle Forms metadata to Extensible Markup Language (XML). Then, you create a conversion project within Oracle Application Express. Once you have reviewed and edited the application metadata within the project, you generate an Oracle Application Express application. Then, you can customize your application and change application attributes or add new pages within Application Builder.

Topics in this section include:

Preparation Checklist for Converting Oracle Forms Applications

Before you begin the conversion process, you must:

  • Install Oracle Application Express version 3.2 or later

    You must install Oracle Application Express 3.2 or later to convert an Oracle Forms application to Oracle Application Express.

  • Install Oracle9i Oracle Developer Suite or later

    You must install Oracle Developer Suite to convert Oracle Forms applications and Oracle Reports to XML format. Specifically, you need:

    • Oracle Forms Builder

      You must have Oracle Forms Builder installed to access the Forms2XML conversion tool and the File Conversion utility for converting Oracle Forms application files.

    • Oracle Reports Builder

      You must have Oracle Reports installed, to convert Oracle Reports (including, binary (.RDF), ASCII (.REX), and .JSP) to XML format.

  • Convert Oracle Forms Metadata

    To start the conversion process, you convert:

    • Oracle Forms FormModule (.FMB), ObjectLibrary .OLB), or MenuModule (.MMB) files to XML format using the Forms to XML conversion tool, Forms2XML

    • Oracle Reports (including, binary (.RDF), ASCII (.REX), and .JSP) to XML format using the File Conversion option in Reports Builder

    • PL/SQL library .PLL files to .PLD text files using the File Conversion option in Oracle Forms Builder

  • Associate Oracle Forms Schema with Oracle Application Express workspace

    You must ensure the schema associated with your Oracle Application Express workspace contains the database objects for your Oracle Forms application. Further information on Oracle Application Express workspaces and associating schemas is provided in subsequent chapters.

About the Oracle Application Express Forum

In addition to Oracle support, you can post questions on the Oracle Application Express Forum:

http://forums.oracle.com/forums/forum.jspa?forumID=137

PK1:00PK &AOEBPS/content.opfD, Oracle® Application Express Application Migration Guide, Release 3.2 en-US E12509-01 Oracle Corporation Oracle Corporation Oracle® Application Express Application Migration Guide, Release 3.2 2009-07-27T14:04:57Z Describes how to convert applications from either Microsoft Access or Oracle Forms to Oracle Application Express. PK8uI,D,PK &AOEBPS/dcommon/prodbig.gif GIF87a!!!)))111BBBZZZsss{{ZRRcZZ!!1!91)JB9B9)kkcJJB991ssc絽Zcc!!{祽BZc!9B!c{!)c{9{Z{{cZB1)sJk{{Z{kBsZJ91)Z{!{BcsRsBc{9ZZk甽kBkR!BZ9c)JJc{!))BZks{BcR{JsBk9k)Zck!!BZ1k!ZcRBZcZJkBk1Z9c!R!c9kZRZRBZ9{99!R1{99R{1!1)c1J)1B!BJRkk{ƽ絵ތkk絵RRs{{{{JJsssBBkkk!!9ss{{ZZssccJJZZRRccRRZZ))cBBJJ99JJ!!c11991199Z11!c!!))Z!!!1BRck{)!cJBkZRZ,HP)XRÇEZ֬4jJ0 @ "8pYҴESY3CƊ@*U:lY0_0#  5tX1E: C_xޘeKTV%ȣOΏ9??:a"\fSrğjAsKJ:nOzO=}E1-I)3(QEQEQEQEQEQEQE֝Hza<["2"pO#f8M[RL(,?g93QSZ uy"lx4h`O!LŏʨXZvq& c՚]+: ǵ@+J]tQ]~[[eϸ (]6A&>ܫ~+כzmZ^(<57KsHf妬Ϧmnẁ&F!:-`b\/(tF*Bֳ ~V{WxxfCnMvF=;5_,6%S>}cQQjsOO5=)Ot [W9 /{^tyNg#ЄGsֿ1-4ooTZ?K Gc+oyڙoNuh^iSo5{\ܹ3Yos}$.nQ-~n,-zr~-|K4R"8a{]^;I<ȤL5"EԤP7_j>OoK;*U.at*K[fym3ii^#wcC'IIkIp$󿉵|CtĈpW¹l{9>⪦׺*ͯj.LfGߍԁw] |WW18>w.ӯ! VӃ :#1~ +މ=;5c__b@W@ +^]ևՃ7 n&g2I8Lw7uҭ$"&"b eZ":8)D'%{}5{; w]iu;_dLʳ4R-,2H6>½HLKܹR ~foZKZ࿷1[oZ7׫Z7R¢?«'y?A}C_iG5s_~^ J5?œ tp]X/c'r%eܺA|4ծ-Ե+ْe1M38Ǯ `|Kյ OVڅu;"d56, X5kYR<̭CiطXԮ];Oy)OcWj֩}=܅s۸QZ*<~%뺃ȶp f~Bðzb\ݳzW*y{=[ C/Ak oXCkt_s}{'y?AmCjޓ{ WRV7r. g~Q"7&͹+c<=,dJ1V߁=T)TR՜*N4 ^Bڥ%B+=@fE5ka}ędܤFH^i1k\Sgdk> ֤aOM\_\T)8靠㡮3ģR: jj,pk/K!t,=ϯZ6(((((((49 xn_kLk&f9sK`zx{{y8H 8b4>ÇНE|7v(z/]k7IxM}8!ycZRQ pKVr(RPEr?^}'ðh{x+ՀLW154cK@Ng C)rr9+c:׹b Жf*s^ fKS7^} *{zq_@8# pF~ [VPe(nw0MW=3#kȵz晨cy PpG#W:%drMh]3HH<\]ԁ|_W HHҡb}P>k {ZErxMX@8C&qskLۙOnO^sCk7ql2XCw5VG.S~H8=(s1~cV5z %v|U2QF=NoW]ո?<`~׮}=ӬfԵ,=;"~Iy7K#g{ñJ?5$y` zz@-~m7mG宝Gٱ>G&K#]؃y1$$t>wqjstX.b̐{Wej)Dxfc:8)=$y|L`xV8ߙ~E)HkwW$J0uʟk>6Sgp~;4֌W+חc"=|ř9bc5> *rg {~cj1rnI#G|8v4wĿhFb><^ pJLm[Dl1;Vx5IZ:1*p)إ1ZbAK(1ׅ|S&5{^ KG^5r>;X׻K^? s fk^8O/"J)3K]N)iL?5!ƾq:G_=X- i,vi2N3 |03Qas ! 7}kZU781M,->e;@Qz T(GK(ah(((((((Y[×j2F}o־oYYq $+]%$ v^rϭ`nax,ZEuWSܽ,g%~"MrsrY~Ҿ"Fت;8{ѰxYEfP^;WPwqbB:c?zp<7;SBfZ)dϛ; 7s^>}⍱x?Bix^#hf,*P9S{w[]GF?1Z_nG~]kk)9Sc5Ո<<6J-ϛ}xUi>ux#ţc'{ᛲq?Oo?x&mѱ'#^t)ϲbb0 F«kIVmVsv@}kҡ!ˍUTtxO̧]ORb|2yԵk܊{sPIc_?ħ:Ig)=Z~' "\M2VSSMyLsl⺿U~"C7\hz_ Rs$~? TAi<lO*>U}+'f>7_K N s8g1^CeКÿE ;{+Y\ O5|Y{/o+ LVcO;7Zx-Ek&dpzbӱ+TaB0gNy׭ 3^c T\$⫫?F33?t._Q~Nln:U/Ceb1-im WʸQM+VpafR3d׫é|Aү-q*I P7:y&]hX^Fbtpܩ?|Wu󭏤ʫxJ3ߴm"(uqA}j.+?S wV ~ [B&<^U?rϜ_OH\'.;|.%pw/ZZG'1j(#0UT` Wzw}>_*9m>󑓀F?EL3"zpubzΕ$+0܉&3zڶ+jyr1QE ( ( ( ( ( ( ( (UIdC0EZm+]Y6^![ ԯsmܶ捆?+me+ZE29)B[;я*wGxsK7;5w)}gH~.Ɣx?X\ߚ}A@tQ(:ͧ|Iq(CT?v[sKG+*רqҍck <#Ljα5݈`8cXP6T5i.K!xX*p&ќZǓϘ7 *oƽ:wlຈ:Q5yIEA/2*2jAҐe}k%K$N9R2?7ýKMV!{W9\PA+c4w` Wx=Ze\X{}yXI Ү!aOÎ{]Qx)#D@9E:*NJ}b|Z>_k7:d$z >&Vv󃏽WlR:RqJfGإd9Tm(ҝEtO}1O[xxEYt8,3v bFF )ǙrPNE8=O#V*Cc𹾾&l&cmCh<.P{ʦ&ۣY+Gxs~k5$> ӥPquŽўZt~Tl>Q.g> %k#ú:Kn'&{[yWQGqF}AЅ׮/}<;VYZa$wQg!$;_ $NKS}“_{MY|w7G!"\JtRy+贾d|o/;5jz_6fHwk<ѰJ#]kAȎ J =YNu%dxRwwbEQEQEQEQEQEQEQEQEQE'fLQZ(1F)hQ@X1KEQE-Q@ 1KE3h=iPb(((1GjZ(-ʹRPbR@ 1KE7`bڒyS0(-&)P+ ڎԴP11F)h&:LRmQ@Q@Š(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+MrKoT*4flglO|t$>x1a}oryQ$о7#T2Qjnqko{Z[Ov-eF9`0=G\Y2K;iVQ|3@#*NFA(qlڤ\Zme2&r̼z;xoSUԙ Iƒ (b麶۵ƗZ_@QeP#8 UIaY?TTlڤ\Zme2&r̼zv5mrW|Csh]X}6,7q{(mn%. 9I#%d`pA5(Y2K;iVQ|3@#*NFA *gvgdH$F U}O]O+[U"ߌg2:zТwGVǙKfs'kB ( ( ( ( ( ( ( ( ( ( ( ( ( (8?zᖪۣ00c ! 2^? f5_+_E-BCv;9fБS5o' >V< 881,~x& ;+Yjy˜ꁶ  95N9 ͼ6ʜCEoی@0}/<'ku{R|Y]$#'j@#A⹼[זNl$|5)I$!$-bIaY?TU;[gojR":NA9ʢln8wnxv ,M!c+g:{v?Yu4=QaӸJW\)K.-,eDs|/'f8?쯀Z'Koq߹eߟ| |>k6puQ-'Ufzo.:;Ѯ'SpC|nP+2P(?kU-=DŽ>"WO> ‚P002I&;'PA +?f˟򼿵O3v1n?wn{cES<7 rDC MkTW AK᤟J%@bG7H9f%I ǃF(*?mtYJmgºFpPH3bI85\?xkV)k5K&e(H*|˧;$?LESm7F|Uqj06,S,J[e,@85?0T}6c. pjo]EʤFdu?S^7ןs?t?+;\߽{'ɕ',o;8,.໵;&A"6  88 ¼_[o>2x i:7lo# {!AN iן,xOZ7j:]fH7@F} q~ԡ})dInYST1_^ѡ]銓I9pFpx&#ß |k=GMdK.dfbP1]2A=x?OR7Uŏxƞ( :f-[9m pp"o|4CkZzeփ[,ͼmH϶?|5 xQ]2D5I(!b2#l 8-X1Rwu5Ɣ2 զH"HX8Ҁ7&|LJKĪ!d+dĈrnLJNYS=F{xk 5kKi<"h;xwSpe=c_"񝜗~iKk2l@hc>ߩxR2TO [nIrǟLbClk 7y6o~]^3]_H&N8:Ę2?Tg3h5A㿆7]BF@-fFW'HsҀ+?? {Gm$Ы-rʃ=(?BK9HȂY!At9ֻ  =2;; H--c`FIŽI'Pvz+ ;H.dң -Hʞt"gydAS׸Z#tuIHD&Mݬ*%u|dx'V?-xGNC%<ד.@=~UEc[FE߉`٫!sPvojO7VEJ$E `*J(뛉gG.;A'<* =vL KX#pIjcijc#aȠ\;V^վai[XDڴHjBrds3KdAV8a3 ;u/=+RDagDe ;G]Eom~%fw{5@I><[oqsA*92<G(~wmdg8l۟qq]CkoQH8Ppb1 h_~E֩/xkc1 rjƷi#ukXϷ̋{&rZP{ }3N˵!7'ZE |=b}[VѾ}>2_LQ¸I|<{'n?z4;o i$Z9FCn*YI9:qV4iMlc_bŘ,IcdEa-^cHD#!# 23+hxVᦗ GĊd9f$$޽ZNۭ_@ceP# 0#8$g7,N@O CIfbIOt6{NK " +U cq z` 8օqm%~i 5!A~uE ^+k 2 HP`#;zѴ=/rXiYZSnc՛eI&^ 54Hw@3sR䑜zS]eot=" I$iHAW{~Pvk((((((((((((((+xēZ񦛨j'[vrK0f޿ V1F?Fg/F>jI٭?'] |~CӨ+䏁Rn8 NeY^E ph) 2@=B ặXTeu# 8 sRW<}&=O!2rnSyt>hCO o_zQ^/ giIxX}w#1{*9MkV_]uio;e2? VHTt״뿴G4jriOoV8 A sB5MN}G:֫oιTdWERA{x$P**>OYjRѯx _`njg'dQPax5ohm?#^Cv}n{ Q6Wžx'zp q9,2QQ2AEx?2{Y$vyQXy99=^hz֍7d֒uR&V,cf \K(%Z L9v(€2>w0~5Լ/ivPZIzmZdbȻ\q!A]|Zl|3p݇%U0D /kyA6SO-[HK+dmE9sN/>(j4?-~F<UhgmjşkQj/+s$֬dS9La gsSDzϚ?~ImjokRׂUs$֒gS`L`$gkcĠzg+_4}fLN+Mj@i}*GpveeO_D>-o5+i*"3P6n۔`CtV~m{Lռ'֑\[lށ83ZGĿ⇉d|!þV'i2Pе:A!^I#R-}ckk\]x4$1fv1)$$KM&+Cw0@dQ.m9w' *E-g8/+\i??o.|J喧=tM^T|wF[r*e=Š?"WuKz# Nd+qopIR{ς_Ht/x҉((>Qׇm vwZjÓ&xgz<%]{p%m+!k!]hqwWJ $xj6~rU;$AWĺׂv? Mh"Fn$dLpwUcC|PZ>ɮ%Lpv1Swht9.oڅ˫B O^k G웛ktll݌mUx?xڿ.y"|?>/7T[1!C.. e H=g7N luЛ[.*0A1>Ş ]I1%IP2mW | ׶a;- LQKdv~eaۃ[+ +/$ @v*J9\9=Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@R4oG.]clUT!T`S9/ZnW"{SQAλbcDlsI@?23Gk{')YapyEVp<Ꮈ:u(to|?.F[0 G gWxZo.44Z\ںF8!ՔGă_ "h%$E [pA:旨qvI yoc\ #DVt,|ѯ4-yoy Cʢ) aa<$P** +{x$qơU 8s V=m/Kh%kkV`Up6aoZ='CG?>[">`fl)9o-k,QSݝB[:A@eFkԞtsK5;hld?FpA"$㼰L $0? " 5s@}r,L~lxa|5IJ޳;X~89$^sHѼ> k:}BeRI`wH%=h|&{6X77%1x(]l's_E foH#Ȓ!s#3WFz:6keKfw,GqTѺ2p:rI&M3?OiSif4Jikv[)el9Aր9Q6_eO|iy!b63HrO b[aZK/i><|agPξPP#Q9'55KdAV8a3 o\a~qzbig!0|G*?WQZyW|W|ϲ}|߷}k4mKEVfcqɠ/A%wGow:߂ :e=ܓWhYJnvaA2s>w.;'fq uQڀ+I熿k 5n4VX(PNr<t>,T eP]kƷ9-5x4Ȣ- ggose[j>0{_ۋycg_((ۜz%y}6En4V*D3+' *E-XO]˽I㵺ٽ`muqATvNXv#Aeom!A@W8RE0f8v,Ox+M6w455ӫ0bUF0s4^!բҼU 7a2cF[rl @GfڔmeRwѲd\4 ~7kxdEcbHfl Fyul7Jz0l`Euk ]{y&[O_% ,KhD~Ӿy$:a@Af*w$ Ji ǖpAG8wR⥰T`0><8&oy~g7cUzq?NѷOQ_~Ѳ/_X"veHHX;q(Kγ5|yE랕w_$o&a@x]rX= (1-ZxİYqހ(i;G^ֶ+x~|k+ GwF <8ǵvQEy_=[RuPS)s32,00}h((((>)^+m-tA wo$8W5/|Tkn|Gڏ-\ƻC1a*[_ZDBH܌S#X+Ɠk_[$3Ŧ\rFYDG hr_j tk$ 1F|6^ v( # sDzW[! x!h-ݬoT1 *U;gvgdH$F P ?%qsĺ4.@h]ZG dqЩ{\_ oL[XxJ4Q FA#?Ҁ,| חsIy ؞@2Ǔ+➭i:woe]Awe`pa>:xfI$R Β%vzs/d:M"m?*<9ɍ/q@umKF-Ɨ]ڜhZ1_*STq+5f~-m"i_諒bp$^_G<+7~X$a#$sϢ|qy;'E[͕wlWL/ +1fa8N!;:'-XNn"i!1b,I, zA{ Pͷrj:# ^cUL9/,4{X6n N:>"x)-m~ݫJ-0rdPw22YG8{?u|F/Mr6GD rsQ6s&M>P%YlHb@PH|'UռW$fVWR2"|G9 |I+Ɨ^wQZ-ŕ YT->^Oυ7' 3_ռq>}m\q1PV!Ta5QEm|C}Zy?MewSn^s/Ľ#Z#x/]*ȑ6$<["gh??U/v.>qg /Yǥj;1pJ$dxkMF𮑥4m=64d,2=y^x⏈ockO:rLN *~f_vj#9L8t;X09G?mz}ۭΕl\S&RUVFqryOi7`Mv#=!gc%*k5}n5<I60:lr [{J$DԌA+M |Դ}F=F{׎5 $0rsր$%$B(}G\i~ ֟/ueÌ98*T7:_Ht/x҉+>/XkoxwSntb8™263Ƞ]oVxM޻nI1\ 8#,U^ck^ [oZɧ'O) f5ryZآ9cXlg|^^3ܜcv:? j1k6ד[J_[ *AVu%  qB=8 jW5"xTLe - tTc\p08qt`<t\Ʃ}qo#9mʠ>/Wlw#9ێ렢3-3fya۷~ 837{Դk}wc;!F͢b { J(PxιM( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (?PK1nnPK &AOEBPS/dcommon/contbig.gif`GIF87a!!!111999BBBJJJRRRccckkksss{{{skk{{ZRRRJJƽ{sZRJRJB91)kcZB9)sskZRJ1޽ƽ{{ssskkkcƵZZRccZRRJJJB{BB9991ssckkZccR))!RRB!!JJ1))99!11ƌ)1R)k֔)s1RZJR{BJs9R1J!11J1J9k{csZk!1J!)cBR9J1B)91B!cRs{!)s!){1B!k!s!{ksksckckZc9B)1!)!)BJ9B1919έƌ!!)JJcZZ{!!!1RR{JJsBBkJJ{!!9BB{1!!J9)!!Z!!c1!!kR!!s9Z!BckJs)19!!c!!ZRZ,H rrxB(Kh" DժuICiи@S z$G3TTʖ&7!f b`D 0!A  k,>SO[!\ *_t  Exr%*_}!#U #4 & ֩3|b]L ]t b+Da&R_2lEٱZ`aC)/яmvUkS r(-iPE Vv_{z GLt\2s!F A#葡JY r|AA,hB}q|B`du }00(䡆<pb,G+oB C0p/x$…– ]7 @2HFc ) @AD \0 LHG',(A` `@SC)_" PH`}Y+_|1.K8pAKMA @?3҄$[JPA)+NH I ,@8G0/@R T,`pF8Ѓ)$^$ DDTDlA@ s;PKPK &AOEBPS/dcommon/darbbook.cssPKPK &A!OEBPS/dcommon/O_signature_clr.JPG"(JFIF``C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (?O '~MQ$Vz;OlJi8L%\]UFjޙ%ԯS;rA]5ފ<׈]j7Ouyq$z'TQuw7Ŀ KX߁M2=S'TQt?.5w'97;~pq=" ~k?`'9q6 E|yayM^Om'fkC&<5x' ?A?Zx'jß={=SßM gVC.5+Hd֪xc^)Җufz{Cީ|D Vkznq|+Xa+{50rx{|OG.OϞ~f/ xxX[2H )c+#jpUOZYX\=SG ߨC|K@;_߆'e?LT?]:?>w ڔ`D^So~xo[Ӡ3i7B:Q8 Vc-ďoi:FM292~y_*_闱YN\Fr=xZ3鳎OwW_QEzW~c]REeaSM}}Hӏ4&.E]u=gMѠ+mF`rNn$w9gMa꺢nTuhf2Xv>އ a(Û6߭?<=>z'TQuw7Ŀ KX߁M2=S'TQt?.5Kko\.8S$TOX߀Gw?Zx汴X)C7~.i6(Щ=+4{mGӭ¸-]&'t_kV*I<1)4thtIsqpQJ+> \m^[aJ5)ny:4o&QEnyAEPEEss 72,PDۢ׃K W{Wjr+wگ iM/;pd?~&?@;7E4gv8 $l'z'TQuw7Ŀ Gֱ=ɿ&G?. iR(5W*$|?w᫼gkmIbHe/_t>tg%y.l}N5[]+Mk0ĠeHdPrsst'UiC,y8`V%9ZIia|ܪvi מYG,o}+kk{YbyIeb*sAtի82zWoEK5z*o-eo;n(P u-I)4Š(HQEQEQEQEhz(X/Đ?}Bk˩ ݏrk0]4>8XzV? }6$}d^F>nU K ?Bտk_9׾x~w'ߞ  uDŽtL ؈5c-E/"|_Oo.IH쐍=i*Iw5(ںw?t5s.)+tQ2dUt5Vĺ.jZ"@IRrZƅY4ߡ_;}ų(KyQf1Aǵt?sZg+?F5_oQR&Dg߿]6FuRD u>ڿxl7?IT8'shj^=.=J1rj1Wl$얲cPx;E,p$֟ˏkw qg"45(ǛkV/=+ũ)bYl~K#˝J_כ5&\F'I#8/|wʾ_Xj Q:os^T1.M_|TO.;?_  jF?g N 8nA2F%i =qW,G=5OU u8]Rq?wr'˻S+۾.ܼ 87Q^elo/T*?L|ۚ<%<,/v_OKs B5f/29n0=zqQq(ª=VX@*J(э(f5qJN_EVǞQEOuoѕOuoa5}gO?:߂8Wא|cڽ~]N&O( (<]>͠@VQ=^~U ̴m&\խ5i:}|}r~9՝f}_>'vVֲ$~^f30^in{\_.O F8to}?${φ|#x^#^n~w=~k~?'KRtO.㌡h![3Zu*ٷճ(ԟ]z_/W1(ԟ]v~g|Yq<ז0 ; b8֮s,w9\?uEyStKaª@\,)) (!EPEPEPEPEPzѧts{v>C/"N6`d*J2gGӧWqBq_1ZuΓ\X]r?=Ey88Mp&pKtO-"wR2 K^-Z< \c>V0^@O7x2WFjs<׻kZ(<Т(OFw/6$1[:ޯԯ#q~4|,LVPem=@=YLUxӃV}AUbcUB.Ds5*kٸAeG>PJxt͝ b88?*$~@ׯD VkraiJs}Q.20x&mXξ,Z]“A-J#`+-E/"<]\a'tZGy.(|lދ~gMK OZdxDŽU9T6ϯ^<Ϡt5CZ]].t۫S=s`ڳ%8iVK:nqe+#<.T6U>zWoy3^I {F?J~=G}k)K$$;$de8*G Uӟ4Ocºw}|]4=ݣ\x$ʠms?q^ipw\"ȿPs^Z Q_0GڼU.t}ROM[G#]8wٞ ӫ87}Cgw vHȩBM55vof =A_٭`Ygx[6 P,5}>蚊(0(+?>+?> k|TuXq6_ +szk :u_ Z߶Ak_U}Jc2u/1[_»ݸG41-bሬ۴}}Eȹפ_c?5gi @cL\L<68hF_Ih>X4K7UТ sMj =J7CKo>Օ5s:߀t ~ηaٿ?|gdL8+gG%o?x`دOqȱwc¨&TW_V_aI=dpG!wu۞սZ1yL50$(l3(:~'ַo A}a3N*[0ǭ HKQV}G@֜$ 9of$ArNqUOgË05#m?D)^_h//5_/<?4}Jį+GkpG4"$ r| >S4Ђ"S 1%R:ȝ 8;PKPz PK &AOEBPS/dcommon/feedback.gif7GIF89a'%(hp|fdx?AN5:dfeDGHɾTdQc`g*6DC\?ؘ||{;=E6JUՄfeA= >@,4`H.|`a (Q 9:&[|ځ,4p Y&BDb,!2@, $wPA'ܠǃ@CO~/d.`I @8ArHx9H75j L 3B/` P#qD*s 3A:3,H70P,R@ p!(F oԥ D;"0 ,6QBRɄHhI@@VDLCk8@NBBL2&pClA?DAk%$`I2 #Q+l7 "=&dL&PRSLIP)PɼirqМ'N8[_}w;PK-PK &AOEBPS/dcommon/booklist.gifGIF89a1޵֥΄kZ{Jk1Rs!BZ)B),@I9Z͓Ca % Dz8Ȁ0FZЌ0P !x8!eL8aWȠFD(~@p+rMS|ӛR$ v "Z:]ZJJEc{*=AP  BiA ']j4$*   & 9q sMiO?jQ = , YFg4.778c&$c%9;PKː5PK &AOEBPS/dcommon/cpyr.htm1 Oracle Legal Notices

Oracle Legal Notices

Copyright Notice

Copyright © 1994-2012, Oracle and/or its affiliates. All rights reserved.

Trademark Notice

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group.

License Restrictions Warranty/Consequential Damages Disclaimer

This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.

Warranty Disclaimer

The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.

Restricted Rights Notice

If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable:

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle America, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

Hazardous Applications Notice

This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.

Third-Party Content, Products, and Services Disclaimer

This software or hardware and documentation may provide access to or information on content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services.

Alpha and Beta Draft Documentation Notice

If this document is in prerelease status:

This documentation is in prerelease status and is intended for demonstration and preliminary use only. It may not be specific to the hardware on which you are using the software. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to this documentation and will not be responsible for any loss, costs, or damages incurred due to the use of this documentation.

Oracle Logo

PKN61PK &AOEBPS/dcommon/masterix.gif.GIF89a1ޜΌscJk1Rs!Bc1J),@IS@0"1 Ѿb$b08PbL,acr B@(fDn Jx11+\%1 p { display: none; } /* Class Selectors */ .ProductTitle { font-family: sans-serif; } .BookTitle { font-family: sans-serif; } .VersionNumber { font-family: sans-serif; } .PrintDate { font-family: sans-serif; font-size: small; } .PartNumber { font-family: sans-serif; font-size: small; } PKeӺ1,PK &AOEBPS/dcommon/larrow.gif#GIF87a絵ƌֵƽ{{ss֜ƔZZ{{{{ZZssZZccJJJJRRBBJJJJ991111))!!{,@pH,Ȥrl:ШtpHc`  өb[.64ꑈ53=Z]'yuLG*)g^!8C?-6(29K"Ĩ0Яl;U+K9^u2,@@ (\Ȱ Ë $P`lj 8x I$4H *(@͉0dа8tA  DсSP v"TUH PhP"Y1bxDǕ̧_=$I /& .)+ 60D)bB~=0#'& *D+l1MG CL1&+D`.1qVG ( "D2QL,p.;u. |r$p+5qBNl<TzB"\9e0u )@D,¹ 2@C~KU 'L6a9 /;<`P!D#Tal6XTYhn[p]݅ 7}B a&AƮe{EɲƮiEp#G}D#xTIzGFǂEc^q}) Y# (tۮNeGL*@/%UB:&k0{ &SdDnBQ^("@q #` @1B4i@ aNȅ@[\B >e007V[N(vpyFe Gb/&|aHZj@""~ӎ)t ? $ EQ.սJ$C,l]A `8A o B C?8cyA @Nz|`:`~7-G|yQ AqA6OzPbZ`>~#8=./edGA2nrBYR@ W h'j4p'!k 00 MT RNF6̙ m` (7%ꑀ;PKl-OJPK &AOEBPS/dcommon/index.gifGIF89a1޵ΥΥ{sc{BZs,@IM" AD B0 3.R~[D"0, ]ШpRNC  /& H&[%7TM/`vS+-+ q D go@" 4o'Uxcxcc&k/ qp zUm(UHDDJBGMԃ;PK(PK &AOEBPS/dcommon/bookbig.gif +GIF89a$!!!)))111999BBBJJJRRRZZZccckkksss{{{skkB991)))!!B11))1!JB9B9!!cZ9ƭƽssk{ZZRccZRRJJJBBB9c!!ν)1)k{s絽ƌkssֽZccJRRBJJ{9BB)11)99!!))11!!k!JZ!)RcJccBcs)1c)JZ!BR!)BZ)99J!Rk9!c11B)Z{)9Bkc1kB9BZ!Z{9Rs)Jkksk9kB1s1Jk9Rƥc{k9s)Z{1k91)s1Rk)Jc1J!))BZ!1k{csc{)19B!)Bcsc{ksc{kZs!RkJkJkքc{9Zks{ck9R)Bks9R9R1J!)Z1B!)c)9)99BR19kksBBJcc{ccBBZ))9kk!!199c11ZBB{9!!R!!Z!!c))!!kR!!s!!BcksRZ1c9B)R91c1)Z!R9B9k1)RcZ{)!1B9JB9B)!)J9B!& Imported from GIF image: bookbig.gif,$!!!)))111999BBBJJJRRRZZZccckkksss{{{skkB991)))!!B11))1!JB9B9!!cZ9ƭƽssk{ZZRccZRRJJJBBB9c!!ν)1)k{s絽ƌkssֽZccJRRBJJ{9BB)11)99!!))11!!k!JZ!)RcJccBcs)1c)JZ!BR!)BZ)99J!Rk9!c11B)Z{)9Bkc1kB9BZ!Z{9Rs)Jkksk9kB1s1Jk9Rƥc{k9s)Z{1k91)s1Rk)Jc1J!))BZ!1k{csc{)19B!)Bcsc{ksc{kZs!RkJkJkքc{9Zks{ck9R)Bks9R9R1J!)Z1B!)c)9)99BR19kksBBJcc{ccBBZ))9kk!!199c11ZBB{9!!R!!Z!!c))!!kR!!s!!BcksRZ1c9B)R91c1)Z!R9B9k1)RcZ{)!1B9JB9B)!)J9BH`\Ȑ:pظа"A6DBH,V@Dڹ'G"v Æ ܥ;n;!;>xAܽ[G.\rQC wr}BŊQ A9ᾑ#5Y0VȒj0l-GqF>ZpM rb ;=.ސW-WѻWo ha!}~ْ ; t 53 :\ 4PcD,0 4*_l0K3-`l.j!c Aa|2L4/1C`@@md;(H*80L0L(h*҇҆o#N84pC (xO@ A)J6rVlF r  fry†$r_pl5xhA+@A=F rGU a 1х4s&H Bdzt x#H%Rr (Ѐ7P`#Rщ'x" #0`@~i `HA'Tk?3!$`-A@1l"P LhʖRG&8A`0DcBH sq@AXB4@&yQhPAppxCQ(rBW00@DP1E?@lP1%T` 0 WB~nQ@;PKGC PK &AOEBPS/dcommon/rarrow.gif/GIF87a絵ƌֵƽ{{ss֜ƔZZ{{{{ZZssZZccJJJJRRBBJJJJ991111))!!{,@pH,Ȥrl:ШLlԸ NCqWEd)#34vwwpN|0yhX!'+-[F 'n5 H $/14w3% C .90" qF 7&E "D mnB|,c96) I @0BW{ᢦdN p!5"D`0 T 0-]ʜ$;PKJV^PK &AOEBPS/dcommon/mix.gifkGIF89aZZZBBBJJJkkk999sss!!!111cccֽ{{{RRR)))猌ƭ{s{sks!,@@pH,B$ 8 t:<8 *'ntPP DQ@rIBJLNPTVEMOQUWfj^!  hhG H  kCúk_a Ǥ^ h`B BeH mm  #F` I lpǎ,p B J\Y!T\(dǏ!Gdˆ R53ټ R;iʲ)G=@-xn.4Y BuU(*BL0PX v`[D! | >!/;xP` (Jj"M6 ;PK枰pkPK &AOEBPS/dcommon/doccd_epub.jsM /* Copyright 2006, 2012, Oracle and/or its affiliates. All rights reserved. Author: Robert Crews Version: 2012.3.17 */ function addLoadEvent(func) { var oldOnload = window.onload; if (typeof(window.onload) != "function") window.onload = func; else window.onload = function() { oldOnload(); func(); } } function compactLists() { var lists = []; var ul = document.getElementsByTagName("ul"); for (var i = 0; i < ul.length; i++) lists.push(ul[i]); var ol = document.getElementsByTagName("ol"); for (var i = 0; i < ol.length; i++) lists.push(ol[i]); for (var i = 0; i < lists.length; i++) { var collapsible = true, c = []; var li = lists[i].getElementsByTagName("li"); for (var j = 0; j < li.length; j++) { var p = li[j].getElementsByTagName("p"); if (p.length > 1) collapsible = false; for (var k = 0; k < p.length; k++) { if ( getTextContent(p[k]).split(" ").length > 12 ) collapsible = false; c.push(p[k]); } } if (collapsible) { for (var j = 0; j < c.length; j++) { c[j].style.margin = "0"; } } } function getTextContent(e) { if (e.textContent) return e.textContent; if (e.innerText) return e.innerText; } } addLoadEvent(compactLists); function processIndex() { try { if (!/\/index.htm(?:|#.*)$/.test(window.location.href)) return false; } catch(e) {} var shortcut = []; lastPrefix = ""; var dd = document.getElementsByTagName("dd"); for (var i = 0; i < dd.length; i++) { if (dd[i].className != 'l1ix') continue; var prefix = getTextContent(dd[i]).substring(0, 2).toUpperCase(); if (!prefix.match(/^([A-Z0-9]{2})/)) continue; if (prefix == lastPrefix) continue; dd[i].id = prefix; var s = document.createElement("a"); s.href = "#" + prefix; s.appendChild(document.createTextNode(prefix)); shortcut.push(s); lastPrefix = prefix; } var h2 = document.getElementsByTagName("h2"); for (var i = 0; i < h2.length; i++) { var nav = document.createElement("div"); nav.style.position = "relative"; nav.style.top = "-1.5ex"; nav.style.left = "1.5em"; nav.style.width = "90%"; while (shortcut[0] && shortcut[0].toString().charAt(shortcut[0].toString().length - 2) == getTextContent(h2[i])) { nav.appendChild(shortcut.shift()); nav.appendChild(document.createTextNode("\u00A0 ")); } h2[i].parentNode.insertBefore(nav, h2[i].nextSibling); } function getTextContent(e) { if (e.textContent) return e.textContent; if (e.innerText) return e.innerText; } } addLoadEvent(processIndex); PKo"nR M PK &AOEBPS/dcommon/toc.gifGIF89a1ΥΥ{c{Z{JkJk1Rk,@IK% 0| eJB,K-1i']Bt9dz0&pZ1o'q(؟dQ=3S SZC8db f&3v2@VPsuk2Gsiw`"IzE%< C !.hC IQ 3o?39T ҍ;PKv I PK &AOEBPS/dcommon/topnav.gifGIF89a1ֽ筽ޭƔkZZk{Bc{,@ ) l)-'KR$&84 SI) XF P8te NRtHPp;Q%Q@'#rR4P fSQ o0MX[) v + `i9gda/&L9i*1$#"%+ ( E' n7Ȇ(,҅(L@(Q$\x 8=6 'נ9tJ&"[Epljt p#ѣHb :f F`A =l|;&9lDP2ncH R `qtp!dȐYH›+?$4mBA9 i@@ ]@ꃤFxAD*^Ŵ#,(ε  $H}F.xf,BD Z;PK1FAPK &AOEBPS/dcommon/bp_layout.css# @charset "utf-8"; /* bp_layout.css Copyright 2007, Oracle and/or its affiliates. All rights reserved. */ body { margin: 0ex; padding: 0ex; } h1 { display: none; } #FOOTER { border-top: #0d4988 solid 10px; background-color: inherit; color: #e4edf3; clear: both; } #FOOTER p { font-size: 80%; margin-top: 0em; margin-left: 1em; } #FOOTER a { background-color: inherit; color: gray; } #LEFTCOLUMN { float: left; width: 50%; } #RIGHTCOLUMN { float: right; width: 50%; clear: right; /* IE hack */ } #LEFTCOLUMN div.portlet { margin-left: 2ex; margin-right: 1ex; } #RIGHTCOLUMN div.portlet { margin-left: 1ex; margin-right: 2ex; } div.portlet { margin: 2ex 1ex; padding-left: 0.5em; padding-right: 0.5em; border: 1px #bcc solid; background-color: #f6f6ff; color: black; } div.portlet h2 { margin-top: 0.5ex; margin-bottom: 0ex; font-size: 110%; } div.portlet p { margin-top: 0ex; } div.portlet ul { list-style-type: none; padding-left: 0em; margin-left: 0em; /* IE Hack */ } div.portlet li { text-align: right; } div.portlet li cite { font-style: normal; float: left; } div.portlet li a { margin: 0px 0.2ex; padding: 0px 0.2ex; font-size: 95%; } #NAME { margin: 0em; padding: 0em; position: relative; top: 0.6ex; left: 10px; width: 80%; } #PRODUCT { font-size: 180%; } #LIBRARY { color: #0b3d73; background: inherit; font-size: 180%; font-family: serif; } #RELEASE { position: absolute; top: 28px; font-size: 80%; font-weight: bold; } #TOOLS { list-style-type: none; position: absolute; top: 1ex; right: 2em; margin: 0em; padding: 0em; background: inherit; color: black; } #TOOLS a { background: inherit; color: black; } #NAV { float: left; width: 96%; margin: 3ex 0em 0ex 0em; padding: 2ex 0em 0ex 4%; /* Avoiding horizontal scroll bars. */ list-style-type: none; background: transparent url(../gifs/nav_bg.gif) repeat-x bottom; } #NAV li { float: left; margin: 0ex 0.1em 0ex 0em; padding: 0ex 0em 0ex 0em; } #NAV li a { display: block; margin: 0em; padding: 3px 0.7em; border-top: 1px solid gray; border-right: 1px solid gray; border-bottom: none; border-left: 1px solid gray; background-color: #a6b3c8; color: #333; } #SUBNAV { float: right; width: 96%; margin: 0ex 0em 0ex 0em; padding: 0.1ex 4% 0.2ex 0em; /* Avoiding horizontal scroll bars. */ list-style-type: none; background-color: #0d4988; color: #e4edf3; } #SUBNAV li { float: right; } #SUBNAV li a { display: block; margin: 0em; padding: 0ex 0.5em; background-color: inherit; color: #e4edf3; } #SIMPLESEARCH { position: absolute; top: 5ex; right: 1em; } #CONTENT { clear: both; } #NAV a:hover, #PORTAL_1 #OVERVIEW a, #PORTAL_2 #OVERVIEW a, #PORTAL_3 #OVERVIEW a, #PORTAL_4 #ADMINISTRATION a, #PORTAL_5 #DEVELOPMENT a, #PORTAL_6 #DEVELOPMENT a, #PORTAL_7 #DEVELOPMENT a, #PORTAL_11 #INSTALLATION a, #PORTAL_15 #ADMINISTRATION a, #PORTAL_16 #ADMINISTRATION a { background-color: #0d4988; color: #e4edf3; padding-bottom: 4px; border-color: gray; } #SUBNAV a:hover, #PORTAL_2 #SEARCH a, #PORTAL_3 #BOOKS a, #PORTAL_6 #WAREHOUSING a, #PORTAL_7 #UNSTRUCTURED a, #PORTAL_15 #INTEGRATION a, #PORTAL_16 #GRID a { position: relative; top: 2px; background-color: white; color: #0a4e89; } PK3( # PK &AOEBPS/dcommon/bookicon.gif:GIF87a!!!)))111999BBBJJJRRRZZZccckkksss{{{ޭ{{ZRRcZZRJJJBB)!!skRB9{sν{skskcZRJ1)!֭ƽ{ZZRccZJJBBB999111)JJ9BB1ZZB!!ﭵBJJ9BB!!))Jk{)1!)BRZJ{BsR!RRJsJ!J{s!JsBkks{RsB{J{c1RBs1ZB{9BJ9JZ!1BJRRs!9R!!9Z9!1)J19JJRk19R1Z)!1B9R1RB!)J!J1R)J119!9J91!9BkksBBJ119BBR!))9!!!JB1JJ!)19BJRZckތ1)1J9B,H*\hp >"p`ƒFF "a"E|ժOC&xCRz OBtX>XE*O>tdqAJ +,WxP!CYpQ HQzDHP)T njJM2ꔀJ2T0d#+I:<жk 'ꤱF AB @@nh Wz' H|-7f\A#yNR5 /PM09u UjćT|q~Yq@&0YZAPa`EzI /$AD Al!AAal 2H@$ PVAB&c*ؠ p @% p-`@b`uBa l&`3Ap8槖X~ vX$Eh`.JhAepA\"Bl, :Hk;PKx[?:PK &AOEBPS/dcommon/conticon.gif^GIF87a!!!)))111999BBBJJJRRRZZZccckkksss{{{ZRR޽{{ssskkkcccZ991ccRZZBBJJZck)19ZcsBJZ19J!k{k)Z1RZs1!B)!J91{k{)J!B!B911)k{cs!1s!9)s!9!B!k)k1c!)Z!R{9BJcckZZcBBJ99B119{{!!)BBRBBZ!))999R99Z!!999c1!9!)19B1)!B9R,  oua\h2SYPa aowwxYi 9SwyyxxyYSd $'^qYȵYvh ч,/?g{н.J5fe{ڶyY#%/}‚e,Z|pAܠ `KYx,ĉ&@iX9|`p ]lR1khٜ'E 6ÅB0J;t X b RP(*MÄ!2cLhPC <0Ⴁ  $4!B 6lHC%<1e H 4p" L`P!/,m*1F`#D0D^!AO@..(``_؅QWK>_*OY0J@pw'tVh;PKp*c^PK &AOEBPS/dcommon/blafdoc.cssL@charset "utf-8"; /* Copyright 2002, 2011, Oracle and/or its affiliates. All rights reserved. Author: Robert Crews Version: 2011.10.7 */ body { font-family: Tahoma, sans-serif; /* line-height: 125%; */ color: black; background-color: white; font-size: small; } * html body { /* http://www.info.com.ph/~etan/w3pantheon/style/modifiedsbmh.html */ font-size: x-small; /* for IE5.x/win */ f\ont-size: small; /* for other IE versions */ } h1 { font-size: 165%; font-weight: bold; border-bottom: 1px solid #ddd; width: 100%; } h2 { font-size: 152%; font-weight: bold; } h3 { font-size: 139%; font-weight: bold; } h4 { font-size: 126%; font-weight: bold; } h5 { font-size: 113%; font-weight: bold; display: inline; } h6 { font-size: 100%; font-weight: bold; font-style: italic; display: inline; } a:link { color: #039; background: inherit; } a:visited { color: #72007C; background: inherit; } a:hover { text-decoration: underline; } a img, img[usemap] { border-style: none; } code, pre, samp, tt { font-family: monospace; font-size: 110%; } caption { text-align: center; font-weight: bold; width: auto; } dt { font-weight: bold; } table { font-size: small; /* for ICEBrowser */ } td { vertical-align: top; } th { font-weight: bold; text-align: left; vertical-align: bottom; } ol ol { list-style-type: lower-alpha; } ol ol ol { list-style-type: lower-roman; } td p:first-child, td pre:first-child { margin-top: 0px; margin-bottom: 0px; } table.table-border { border-collapse: collapse; border-top: 1px solid #ccc; border-left: 1px solid #ccc; } table.table-border th { padding: 0.5ex 0.25em; color: black; background-color: #f7f7ea; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; } table.table-border td { padding: 0.5ex 0.25em; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; } span.gui-object, span.gui-object-action { font-weight: bold; } span.gui-object-title { } p.horizontal-rule { width: 100%; border: solid #cc9; border-width: 0px 0px 1px 0px; margin-bottom: 4ex; } div.zz-skip-header { display: none; } td.zz-nav-header-cell { text-align: left; font-size: 95%; width: 99%; color: black; background: inherit; font-weight: normal; vertical-align: top; margin-top: 0ex; padding-top: 0ex; } a.zz-nav-header-link { font-size: 95%; } td.zz-nav-button-cell { white-space: nowrap; text-align: center; width: 1%; vertical-align: top; padding-left: 4px; padding-right: 4px; margin-top: 0ex; padding-top: 0ex; } a.zz-nav-button-link { font-size: 90%; } div.zz-nav-footer-menu { width: 100%; text-align: center; margin-top: 2ex; margin-bottom: 4ex; } p.zz-legal-notice, a.zz-legal-notice-link { font-size: 85%; /* display: none; */ /* Uncomment to hide legal notice */ } /*************************************/ /* Begin DARB Formats */ /*************************************/ .bold, .codeinlinebold, .syntaxinlinebold, .term, .glossterm, .seghead, .glossaryterm, .keyword, .msg, .msgexplankw, .msgactionkw, .notep1, .xreftitlebold { font-weight: bold; } .italic, .codeinlineitalic, .syntaxinlineitalic, .variable, .xreftitleitalic { font-style: italic; } .bolditalic, .codeinlineboldital, .syntaxinlineboldital, .titleinfigure, .titleinexample, .titleintable, .titleinequation, .xreftitleboldital { font-weight: bold; font-style: italic; } .itemizedlisttitle, .orderedlisttitle, .segmentedlisttitle, .variablelisttitle { font-weight: bold; } .bridgehead, .titleinrefsubsect3 { font-weight: bold; } .titleinrefsubsect { font-size: 126%; font-weight: bold; } .titleinrefsubsect2 { font-size: 113%; font-weight: bold; } .subhead1 { display: block; font-size: 139%; font-weight: bold; } .subhead2 { display: block; font-weight: bold; } .subhead3 { font-weight: bold; } .underline { text-decoration: underline; } .superscript { vertical-align: super; } .subscript { vertical-align: sub; } .listofeft { border: none; } .betadraft, .alphabetanotice, .revenuerecognitionnotice { color: #e00; background: inherit; } .betadraftsubtitle { text-align: center; font-weight: bold; color: #e00; background: inherit; } .comment { color: #080; background: inherit; font-weight: bold; } .copyrightlogo { text-align: center; font-size: 85%; } .tocsubheader { list-style-type: none; } table.icons td { padding-left: 6px; padding-right: 6px; } .l1ix dd, dd dl.l2ix, dd dl.l3ix { margin-top: 0ex; margin-bottom: 0ex; } div.infoboxnote, div.infoboxnotewarn, div.infoboxnotealso { margin-top: 4ex; margin-right: 10%; margin-left: 10%; margin-bottom: 4ex; padding: 0.25em; border-top: 1pt solid gray; border-bottom: 1pt solid gray; } p.notep1 { margin-top: 0px; margin-bottom: 0px; } .tahiti-highlight-example { background: #ff9; text-decoration: inherit; } .tahiti-highlight-search { background: #9cf; text-decoration: inherit; } .tahiti-sidebar-heading { font-size: 110%; margin-bottom: 0px; padding-bottom: 0px; } /*************************************/ /* End DARB Formats */ /*************************************/ @media all { /* * * { line-height: 120%; } */ dd { margin-bottom: 2ex; } dl:first-child { margin-top: 2ex; } } @media print { body { font-size: 11pt; padding: 0px !important; } a:link, a:visited { color: black; background: inherit; } code, pre, samp, tt { font-size: 10pt; } #nav, #search_this_book, #comment_form, #comment_announcement, #flipNav, .noprint { display: none !important; } body#left-nav-present { overflow: visible !important; } } PKʍPK &AOEBPS/dcommon/rightnav.gif&GIF89a1ֽ筽ޭƔkZZk{Bc{,@ ) l)- $CҠҀ ! D1 #:aS( c4B0 AC8 ְ9!%MLj Z * ctypJBa H t>#Sb(clhUԂ̗4DztSԙ9ZQҀEPEPEPEPEPEPEPM=iԍP Gii c*yF 1׆@\&o!QY00_rlgV;)DGhCq7~..p&1c:u֫{fI>fJL$}BBP?JRWc<^j+χ5b[hֿ- 5_j?POkeQ^hֿ1L^ H ?Qi?z?+_xɔŪ\썽O]χ>)xxV/s)e6MI7*ߊޛv֗2J,;~E4yi3[nI`Ѱe9@zXF*W +]7QJ$$=&`a۾?]N T䏟'X)Ɣkf:j |>NBWzYx0t!* _KkoTZ?K Gc+UyڹgNuh^iSo5{\ܹ3Yos}.>if FqR5\/TӮ#]HS0DKu{($"2xִ{SBJ8=}Y=.|Tsц2UЫ%.InaegKo z ݎ3ֹxxwM&2S%';+I',kW&-"_¿_ Vq^ܫ6pfT2RV A^6RKetto^[{w\jPZ@ޢN4/XN#\42j\(z'j =~-I#:q[Eh|X:sp* bifp$TspZ-}NM*B-bb&*xUr#*$M|QWY ~p~- fTED6O.#$m+t$˙H"Gk=t9r娮Y? CzE[/*-{c*[w~o_?%ƔxZ:/5𨴟q}/]22p qD\H"K]ZMKR&\C3zĽ[PJm]AS)Ia^km M@dК)fT[ijW*hnu Ͳiw/bkExG£@f?Zu.s0(<`0ֹoxOaDx\zT-^ѧʧ_1+CP/p[w 9~U^[U<[tĽwPv[yzD1W='u$Oeak[^ |Gk2xv#2?¹TkSݕ| rݞ[Vi _Kz*{\c(Ck_܏|?u jVڔ6f t?3nmZ6f%QAjJf9Rq _j7Z-y.pG$Xb]0')[_k;$̭?&"0FOew7 z-cIX岛;$u=\an$ zmrILu uٞ% _1xcUW%dtÀx885Y^gn;}ӭ)場QEQ@Q@Q@Q@Q@Q@!4xPm3w*]b`F_931˜[ן+(> E ly;<;MF-qst+}DH @YKlLmؤciN<|]IU)Lw(8t9FS(=>og<\Z~u_+X1ylsj'eՃ*U3`C!N9Q_WܱhKc93^ua>H ƕGk=8~e#_?{ǀe-[2ٔ7;=&K挑5zsLdx(e8#{1wS+ΝVkXq9>&yஏh$zq^0~/j@:/«Vnce$$uoPp}MC{$-akH@ɫ1O !8R9s5ԦYmϧ'OUṡ5T,!Ԛ+s#1Veo=[)g>#< s)ƽُA^䠮ωFUj(ǩ|N3Jڷ睁ϱuږZYGOTsI<&drav?A^_f׻B$,O__ԿC`it{6>G׈C~&$y؎v1q9Sc1fH[ѽ>,gG'0'@Vw,BO [#>ﱺg5ΒFVD%Yr:O5 Tu+O멃]ی38Ze}R&ѝ_xzc1DXgس;<,_,{ƽY'AS#oF.M#~cBuEx7G+Y)(5q+GCV;qF+CLQ)qEC&6z𿊘z}?&w=+)??&\g{;V??׻xGœdٿ׼-Nc')3K]N)iLTӿCdb7Q^a N sd>Fz[0S^s'Zi 77D}kWus ab~~H(>.fif9,~|Jk;YN3H8Y(t6Q݉k͇_÷Z+2߄&[ +Tr^藺97~c܎=[f1RrBǓ^kEMhxYVm<[џ6| kqbѱ| YA{G8p?\UM7Z66 g1U1igU69 u5Pƪ:VVZC=[@ҹ¨$kSmɳО\vFz~i3^a Osŧυ9Q}_3 όO{/wgoet39 vO2ea;Ύ7$U#?k+Ek&dpzbӱ+TaB0gN{[N7Gי}U7&@?>Fz~E!a@s ?'67XxO*!?qi]֏TQN@tI+\^s8l0)2k!!iW8F$(yOּT.k,/#1:}8uT˾+5=O/`IW G֯b.-<= HOm;~so~hW5+kS8s.zwE| ?4ӿw/K N 9?j(#0UT` Wzw}:_*9m>󑓀F?ELzv=8q:=WgJ`nDr Zе<ֹ](Q@Q@Q@Q@Q@Q@Q@Q@ 'IdC0EYJVcMty_~u+Sw-aO n<[YJgL#6i g5ЖDZ14cʝ!!\/M}/_AYR__>oC? _?7_G#RERW쏞KB}JxGSkǕA pƱơP m]hwB7U$Zq M95"3q1ioATߚ{g.t uu2k=;h#YB= fgS :TdLԃ!44mFK{Hrd^7oz|BVr<{)6AXգV»|>*/hS܏z͆OM=Εq (s|s׊LKQI :9NJ)P+!ʣoAF>+=@I}"x/}۠1aנc¹4emC:>p_xWKX` >R3_S½èųp3޺u3N e یbmͺ<_ mnݮ1Op?Gm)Qb%N585'%Ahs\6yw!"&Ɨ._wk)}GP;Z!#\"< *oƾ\)}N>"լ/~]Lg}pBG X?<zZ#x69S=6) jzx=y9O&>+e!!? ?s~k5Gʏ)?*ce7Ox~k5􇔾Q/e7/Ԑ#3OgNC0] ;_FiRl>Q.g>!%k#ú:Kn'&}?U@\pџPtp)v<{_i}Oվֲ3XIYIx~b<D?(=_JXH=bbi=Oh?_ C_O)}oW쏜? %Ƶ;-RYFi`wۭ{ϖZMtQ$"c_+ԃx1*0b;ԕ݋ESQEQEQEQEQEQEQEQEQEQZ(1F)h1K@XLRE&9P (bf{RӨ&)PEPEPbԴPGKZ(iإbn(:A%S0(-&)P+ ڎԴP11F)h&:LRmQ@Q@Š(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((PKje88PK &AOEBPS/dcommon/help.gif!GIF89a1εֵ֜֜{kZsBc{,@ )sƠTQ$8(4ʔ%ŌCK$A HP`$h8ŒSd+ɡ\ H@%' 6M HO3SJM /:Zi[7 \( R9r ERI%  N=aq   qƦs *q-n/Sqj D XZ;PKއ{&!PK &A OEBPS/toc.htm"s Table of Contents

Contents

Title and Copyright Information

Preface

1 Getting Started with Application Migrations Workshop

2 Overview of the Migration Process

3 Migrating a Microsoft Access Application

4 Converting an Oracle Forms Application

A Oracle Forms Generation Capabilities and Workarounds

Index

PKҋ""PK &AOEBPS/objects.htmu Oracle Forms Generation Capabilities and Workarounds

A Oracle Forms Generation Capabilities and Workarounds

This appendix lists how objects are generated during the conversion process, or alternatively how the same functionality can be implemented post-generation if necessary.

This section contains the following topics:

Oracle Forms Modules

This section describes various Oracle Forms components and offers a brief overview of how they are mapped to similar objects within an Oracle Application Express application or explains how they can be implemented manually post generation.

Topics in this section include:

Overview of Oracle Forms Components

This section provides an overview of Oracle Forms components and the corresponding Oracle Application Express generation capabilities or workarounds.

Alerts

Alert messages are not generated. However, you can store an alert message as a text message in Shared Components in Oracle Application Express application. Text messages can be used to build translatable text strings with substitution variables that can be called from PL/SQL packages, procedures, and functions. See "Working with Shared Components" in Oracle Application Express Application Builder User's Guide.

Blocks

A single block can be mapped to a region in Oracle Application Express. Based upon the block type and data source type (that is, table or view) identified in the Forms XML file, some default mappings are defined. For example, a report block based upon an Oracle view, is mapped to an Interactive report in Oracle Application Express. A form block based upon a table, is mapped to an Interactive report and form in Oracle Application Express. For more information see "Block to Page Region Mappings".

Canvases

In Oracle Forms, the canvas is the object on which the graphical user interface (GUI) is drawn, or the background of the form. In Oracle Application Express, the Application Express engine constructs the appearance of each page in an application using templates. Templates define how pages, page controls, and page components display. Canvases are ignored when generating pages for an Oracle Application Express application.

Coordinates

Depending on the coordinate system used in an Oracle Forms application, coordinates can be expressed in real units such as inches, centimeters, and pixels. The coordinate values cannot be automatically applied to the generated application. One unit in an Oracle Application Express item width might not be equal to one physical pixel in an Oracle Forms application. While Oracle Forms enables specific placement of individual fields by specifying coordinates, Oracle Application Express uses standard HTML tables and all items are positioned relative to other elements and columns within the HTML table.

Editors

In Oracle Forms, editors provide standard editing features, including search and replace and cut, copy, and paste for text items. For a selected text item, an editor is mapped to a HTML editor in Oracle Application Express.

List of Values

A list of values (LOV) can be mapped to an equivalent list of values in Oracle Application Express. When LOVs are selected for inclusion in the conversion to Oracle Application Express their associated record group is included in the conversion. For more information, see the "List of Values Implementation".

Program Units

In the post-generation phase of the Forms Conversion process, program units can be incorporated into your Oracle Application Express application as a PL/SQL package, page process, computation or validation. For more information, see "Implementing Business Logic".

Property Classes

In Oracle Forms, a property class is a named object that contains a list of properties and their settings. An object based on a property class can inherit the settings of any property in that class. Similarly, in Oracle Application Express, a theme is a named collection of templates used to define the user interface of an application. Oracle Application Express has a repository of 20 themes, and you can also create your own custom themes. Property classes are not used within the generation of Oracle Application Express applications.

Record Groups

In Oracle Forms, LOV values are derived from a record group. When a record group is defined, it is associated with a SQL query. When a LOV is generated in Oracle Application Express, the associated record group is used to determine the SQL Query for that LOV. For more information, see "List of Values Implementation".

Triggers

An Oracle Forms trigger is an event-handler written in PL/SQL to augment the default processing behavior. The trigger logic can be incorporated into an Oracle Application Express application as a computation, validation, or PL/SQL process in the post-generation phase. Where feasible, POST-QUERY block trigger logic is automatically incorporated in the generated Oracle Application Express application, as part of the Enhanced Query generation. For more information refer to "Implementing Business Logic".

Visual Attributes

Visual attributes are the font, color, and pattern properties that you can set for form and menu objects that appear in an Oracle Forms application's interface. Using the default cascading style sheets (CSS) installed with Oracle Application Express, or by uploading your own CSS files, style can be applied to your Oracle Application Express application. See "Using Custom Cascading Style Sheets" in Oracle Application Express Application Builder User's Guide.

Windows

A window is the container for all visual objects that comprise an Oracle Forms application, including canvases. In Oracle Application Express, a page holds all of the visual objects for an application. Due to the block mapping resulting in multiple pages, the windows are not used in the conversion process.

About Generated Applications

Oracle Application Express applications generated from a project conform to standard out-of-the-box application capabilities. These generated applications do not contain non-standard functionality such as JavaScript or Advanced JavaScript and XML (AJAX). However, you can readily extend the Oracle Application Express framework to include functionality such as JavaScript and AJAX to enhance the user interaction. However, such enhancements must be implemented manually post-generation.

Generated forms for inserting, updating, or deleting records include automatic row fetch processes to load existing records and automatic row processes to commit changes to the Oracle Database table. Forms also include generated validations for mandatory columns, and column types of number or date.

Primary Key Assumptions

The generation process assumes that the primary key for an Oracle table is non-updatable, maintained using a database trigger, and has a maximum of two parts.

If the primary key is updatable then the generated application must be modified post-generation. You must modify the item attributes for the primary key. By default, these attributes are generated but displayed as hidden and protected. If there is no database trigger defined to automatically fetch the primary key when inserting a record, then the application will fail when attempting to insert a record. To avoid this error either define a database trigger or modify the generated application post-generation to populate the primary key value before processing the record. To populate the primary key value within the application you can use the item default, create a computation, or create a process. If creating a computation or process it is important to include a condition so that execution only occurs when inserting a record (for example, when the primary key item is NULL).

Oracle Application Express does not support cascading multiple part keys where the key for a child is defined as the primary key of the parent with a counter for each child within that parent key. In such cases, you must define a distinct primary key for the child table with an appropriate means of populating the primary key.

Block to Page Region Mappings

When an Oracle Form is loaded into an Oracle Application Express project, the various blocks are analyzed to determine how they will be generated. The conversion process uses information such as block relations, the number of records displayed, and whether insert or update are allowed. There are inherent differences between Oracle Forms and Oracle Application Express that have a direct bearing on the resulting pages that are generated.

Except for specific master-detail relationships, each block is generated onto a separate Oracle Application Express page. Furthermore, the canvases specified in Oracle Forms are ignored as multiple blocks are not generated as separate regions on the same page within Oracle Application Express. The sections that follow explains different Oracle Forms block types and how they are mapped into an Oracle Application Express application.

Single Record Block

In Oracle Forms a single record block can be used for both querying data and updating the records returned. Within Oracle Application Express, standard updatable regions cannot also be used as query regions. When an Oracle Forms block is defined as being insertable, updatable, and has a primary key, then the generation mapping defines an interactive report with a form. The interactive report enables you to query the records and the generated Edit link provides navigation to an individual record for update or deletion. A Create Record button enables you to insert records.

If not all the conditions are satisfied then only an interactive report is generated for a single record block. Therefore, only an interactive report is generated and not the corresponding form if one of the following conditions exist:

  • the number of records displayed is greater than one

  • INSERT allowed is set to false

  • UPDATE allowed is set to false

  • there is no primary key defined for the underlying table

  • the block is based on a view

The interactive report uses the original query, enhanced query, or custom query defined within the project for the block. However, the form is based only on the underlying table. Items characteristics such as radio groups, check boxes, date pickers, editors and list of values will be generated where possible.

Tabular Form

A tabular form defined in Oracle Forms is generated as a tabular form in Oracle Application Expresss providing the number of records displayed is greater than one. Implementing item characteristics, such as select lists, needs to be performed manually post-generation. Non-database items specified in Oracle Forms are not be generated into the tabular form generated by Oracle Application Express, even if they have been included. Implementing non-database items in a tabular form needs to be performed manually post-generation. For more information, see "How to Create a Tabular Form" in Oracle Application Express Advanced Tutorials.

Currently adding validations and non-database items on a tabular form is non-declarative and is covered in the Oracle Application Express Advanced Workshop course. An alternative is to manually create a report and form to replace the tabular form post-generation where it is much easier to add validations and add items without a source of database.

Master Detail Blocks

Within Oracle Forms, master detail forms are defined using block relations. There are several additional criteria that must be examined in order to determine what will be generated for an Oracle Forms master detail relationship. The master block is generated as one of the following:

  • An interactive report and a master-detail form

  • An interactive report and a form only

  • Only an interactive report

The detail blocks are generated independently as either a single record block or a tabular form based on the mappings provided.

An interactive report and master-detail form is only be generated if all the following criteria are satisfied:

  • The master and detail blocks are both based on tables, but not the same table, and both have primary keys.

  • There is only one detail block.

  • There is a valid foreign key relationship between the master and detail blocks.

  • The block relations are correctly defined with the Oracle Forms file.

When a master detail form is generated, the detail page is also created within Oracle Application Express. You can manually remove the detail page when reviewing the pages to be generated prior to creating the Oracle Application Express application, or you can delete it manually post-generation.

Alternatively, if both the master and the single detail block are based on the same table and that table has a primary key, then two interactive reports and forms are generated for each block. It is recommended that you manually modify one of the resulting forms post-generation to combine the functionality into a single form and delete the second interactive report and form. However, if the table does not have a primary key or is based on a view then only reports are generated.

Oracle Application Express cannot include more than one tabular form on a page. Therefore, when a file with a master and multiple detail blocks is loaded, the relations are ignored and the master block and each detail block are treated independently as either a single record block or a tabular form based on each blocks properties.

If there is no valid foreign key relationship and the table has a primary key, then the master block is generated as an interactive report and form. Otherwise, it is generated as an interactive report.

Non-Database Block

If a block is not associated with a database table or view then the block is not included for generation. These blocks typically hold menus, navigation bars, and buttons. Given that such components are handled and defined very differently within Oracle Application Express it is not appropriate to generate separate pages for these. However, such blocks can be included if required and will be generated as blank pages.

List of Values Implementation

Oracle Application Express dynamic list of values (LOVs) enable one display value and one return value to be defined within an SQL. You can specify LOVs individually for an item or define as a named shared component which can be used with any item throughout the application.

Oracle Forms record groups define the query for each list of values. These record groups are analyzed to determine whether the corresponding LOV can be generated. A named shared component LOV is created utilizing the query from the record group and then specified on the corresponding Oracle Application Express item. The implementation style used in Oracle Forms determines whether the item is implemented as a select list or pop-up list of values.

Where there are multiple display columns in the record group only one is used in the resulting Oracle Application Express LOV query. If the record group uses bind variables as parameters, Oracle Application Express application items are defined and referenced within the resulting LOV query.

Implementing Business Logic

Within Oracle Forms applications, business logic is often interspersed with Oracle Forms user interface functionality. The Oracle Forms user interface functionality used to manipulate the screen (for example, go_block, go_item, set_item_property and so on) are often not appropriate within Oracle Application Express due to the inherent differences in the user interface.

Business logic can be found in Oracle Forms triggers and program units, or in PL/SQL libraries. The business logic can be written directly into the objects as SQL or PL/SQL. This code may in turn call database packages, procedures, or functions. The underlying tables may also have database triggers defined which implement business logic.

Because database triggers operate on the underlying tables regardless of the user interface, they do not need to be altered when converting an application to Oracle Application Express. You can call database packages, procedures, or functions from Oracle Application Express because it also uses SQL and PL/SQL. Note that these database objects do not need to be altered when used within the Oracle Application Express development environment.

In order to re-implement the business logic defined within Oracle Forms you must analyze the triggers, program units, and PL/SQL libraries and manually write corresponding logic within Oracle Application Express. Note that Oracle Forms triggers, program units, and PL/SQL library code are not automatically generated except for POST-QUERY triggers. POST-QUERY triggers can be incorporated into Enhanced Queries as part of the block definition and subsequently included in the Oracle Application Express application.

Oracle Application Express uses processes, computations, and validations to implement such business logic. Before undertaking the post-generation task of re-implementing business logic, it is important to understand how and when to invoke the various types of processes, computations, and validations. It is also important to understand how conditional processing can be applied to these types of components to customize the circumstances under which they execute. For more information, see Oracle Application Express Application Builder User's Guide.

Processes

Processes are logic controls used to execute data manipulation language (DML) or PL/SQL. A process performs an action at a specified point during the rendering or submission of the page. For example, you can create a process to execute logic or to make a call to the Application Express engine. A process is a unit of logic that runs when a specific event occurs, such as loading or submitting a page. For more information, see "Understanding Page Processes" in Oracle Application Express Application Builder User's Guide.

Processes can be defined as either an application-level process or a page-level process. From a functional perspective, there is no difference between page-level and application-level processes. Application-level processes can be called form any page within the application and may be called On Demand which is especially useful when you have PL/SQL logic that you would like to run from different execution points across multiple pages. Page-level processes can only be called from the page on which they are defined.

Computations

Computations are units of logic used to assign a value to an identified item when a page is submitted or displayed.

Computations can be defined as either an application-level computation or a page-level computation. Most application-level computations are performed for every page in an application. In contrast, computations created at the page-level only execute when that page is rendered or processed. For more information, see "Understanding Page Computations" and "Understanding Application Computation in Oracle Application Express Application Builder User's Guide.

Validations

Validations enable you to create logic controls to verify whether user input is valid. For example, a validation can check whether a value has been entered into a mandatory field. When a validation fails then an error message is displayed and subsequent page processes and computations will not occur. For more information, see "Understanding Validations" in Oracle Application Express Application Builder User's Guide.

There are two distinct types of validations:

  • Item-level validations which are specific to a single item.

  • Page-level validations which do not apply to any single item, but apply to an entire page.

There are several validation methods:

  • SQL - Compares item values to data in the database.

  • PL/SQL - Enables you to enter complex logic to validate entered data.

  • Item Level Null - Checks if an item's value in session state is NULL.

  • Item String Comparison - Compares the value of an item to a specific string.

  • Regular Expression - Provides a method to describe text patterns.

Oracle Reports

The underlying SQL query used to define an Oracle Report is used within Oracle Application Express when generating an interactive report. When one or more Oracle Report files are loaded, an additional Reports page is generated with links to each of the generated interactive report pages. You will need to manually implement additional logic defined within the Oracle Report post-generation. Oracle Application Express supports the creation of printable reports utilizing Oracle Bi Publisher, Apache FOP, or another standard XSL-FO report processing engine. To learn more, see:

http://www.oracle.com/technology/products/database/application_express/html/configure_printing.html

PL/SQL Libraries

PL/SQL libraries contain logic which can be called from any of the Forms Modules to which it is linked. Such libraries are primarily used to define commonly used business logic that must be manually re-implemented post-generation. See "Implementing Business Logic". Generally such logic should be implemented as application-level processes so that they can be called from any generated page.

Forms Menus

Oracle Forms menus are not automatically generated within Oracle Application Express. Oracle Application Express uses lists displayed in a region to replicate a menu structure. The default generation process creates a Home page with a list of horizontal images as the basis for a menu within your Oracle Application Express application. This list can be manually updated post-generation to incorporate conditional logic to implement the business logic defined within the Forms Menu. For information, see "Creating Lists" in Oracle Application Express Application Builder User's Guide.

Object Libraries

Object Libraries contain common visual elements used to define Oracle Form layouts for specified components. These visual elements are not used within the Oracle Application Express generation process. You must manually create these visual attributes contained within these libraries post-generation. Depending on the visual attribute there are different ways of implementing such features including customizing templates, shared list of values, item types, item attributes and so on.

PK~uuPK  &Aoa,mimetypePK &AXS:iTunesMetadata.plistPK &AYuMETA-INF/container.xmlPK &Ae1=,=OEBPS/appmgr_overview.htmPK &A[pTOwCOEBPS/cover.htmPK &AVnmhFOEBPS/title.htmPK &A۸-XOEBPS/appmgr.htmPK &A988OOEBPS/preface.htmPK &A^TCCňOEBPS/index.htmPK &A##OEBPS/img/actions_menu.gifPK &Aj7OEBPS/img/fmb_annotation.gifPK &ASHC/ OEBPS/img/acmg_qry_pg.gifPK &A;66OEBPS/img/project_page.gifPK &A$#ITO%POEBPS/img/applicability.gifPK &AHlOEBPS/img/project_ass_app.gifPK &ACv6}OEBPS/img/acmg_rpt_pg.gifPK &A! 9:$5$&OEBPS/img/search.gifPK &AhfWOEBPS/img/acmg_prj_pg.gifPK &A]OEBPS/img/acmg_prj_pga.gifPK &AΩB"=" OEBPS/img/acmg_cr_index_norm.gifPK &A|5OEBPS/img/acmg_tbl_pg.gifPK &AR4[-OEBPS/img/fmb_view_object.gifPK &ApX}%OEBPS/img/acmg_cr_prim_key.gifPK &An!!NDOEBPS/img/forms_to_apex.gifPK &Ar`[#>fOEBPS/img/project_page_edit_ico.gifPK &A,%%OEBPS/img/acmg_frm_pg.gifPK &A\ ȫOEBPS/img/acmg_cr_index.gifPK &Ap"AAOEBPS/img/acmg_howto.gifPK &A A !TOEBPS/img/project_page_status.gifPK &A#AA9OEBPS/appmgr_forms.htmPK &A+#!cJOEBPS/img_text/fmb_annotation.htmPK &A"=3.>MOEBPS/img_text/acmg_tbl_pg.htmPK &AkXSOOEBPS/img_text/project_page.htmPK &AuRf1,bROEBPS/img_text/acmg_frm_pg.htmPK &A #TOEBPS/img_text/acmg_cr_prim_key.htmPK &Ab]0+"WOEBPS/img_text/fmb_view_object.htmPK &AKUZOEBPS/img_text/acmg_prj_pga.htmPK &Ac83d]OEBPS/img_text/actions_menu.htmPK &A~%_OEBPS/img_text/acmg_cr_index_norm.htmPK &Awl@;"bOEBPS/img_text/project_ass_app.htmPK &A/d_(\eOEBPS/img_text/project_page_edit_ico.htmPK &A#'"hOEBPS/img_text/search.htmPK &AݚjOEBPS/img_text/acmg_howto.htmPK &A?.)lOEBPS/img_text/acmg_rpt_pg.htmPK &A**KF 1oOEBPS/img_text/applicability.htmPK &A?:&qOEBPS/img_text/project_page_status.htmPK &AazA< ]tOEBPS/img_text/acmg_cr_index.htmPK &AğwAvOEBPS/img_text/acmg_prj_pg.htmPK &A+qgb yOEBPS/img_text/forms_to_apex.htmPK &Aͅ83w|OEBPS/img_text/acmg_qry_pg.htmPK &A.G B ~OEBPS/toc.ncxPK &A1:00}OEBPS/appmgr_start.htmPK &A8uI,D,cOEBPS/content.opfPK &A_ OEBPS/dcommon/prodbig.gifPK &AY@ @OEBPS/dcommon/doclib.gifPK &A1nnOEBPS/dcommon/oracle-logo.jpgPK &A\OEBPS/dcommon/contbig.gifPK &AbOEBPS/dcommon/darbbook.cssPK &AMά""!bOEBPS/dcommon/O_signature_clr.JPGPK &APz OEBPS/dcommon/feedbck2.gifPK &A-uOEBPS/dcommon/feedback.gifPK &Aː5OEBPS/dcommon/booklist.gifPK &AN61OEBPS/dcommon/cpyr.htmPK &A!:3.gOEBPS/dcommon/masterix.gifPK &AeӺ1,OEBPS/dcommon/doccd.cssPK &A7 XOEBPS/dcommon/larrow.gifPK &A#OEBPS/dcommon/indxicon.gifPK &AS'"OEBPS/dcommon/leftnav.gifPK &Ahu,XOEBPS/dcommon/uarrow.gifPK &Al-OJsOEBPS/dcommon/oracle.gifPK &A(OEBPS/dcommon/index.gifPK &AGC NOEBPS/dcommon/bookbig.gifPK &AJV^nOEBPS/dcommon/rarrow.gifPK &A枰pkOEBPS/dcommon/mix.gifPK &Ao"nR M <OEBPS/dcommon/doccd_epub.jsPK &Av I OEBPS/dcommon/toc.gifPK &A r~$$OEBPS/dcommon/topnav.gifPK &A1FAOEBPS/dcommon/prodicon.gifPK &A3( # OEBPS/dcommon/bp_layout.cssPK &Ax[?:OEBPS/dcommon/bookicon.gifPK &Ap*c^OEBPS/dcommon/conticon.gifPK &AʍOEBPS/dcommon/blafdoc.cssPK &A+& OEBPS/dcommon/rightnav.gifPK &Aje881 OEBPS/dcommon/oracle-small.JPGPK &Aއ{&!rA OEBPS/dcommon/help.gifPK &Aҋ"" B OEBPS/toc.htmPK &A~uue OEBPS/objects.htmPKWWn