Query Oracle 9i xmltype tables

Hi,
I have created a table of xmltype and loaded a large xml document of size ~47 MB.
I wish to execute the following query on the table(OracleBench_No_Schema) using Oracle thin driver.
select extract(value(X), '//eNest[@aSixtyFour=2]')
from OracleBench_No_Schema X;
can you provide me with a skeleton code for running such queries using a java program?
thanks in advance.
Dayal

Hi ,
java version 1.4.2
I am using oracle jdbc drivers for java 1.4
I am using the thin driver.
This is the code that I am currently using...
import java.util.Iterator;
import org.w3c.dom.Node;
import java.sql.*;
import java.io.*;
import oracle.xquery.*;
import oracle.xquery.exec.*;
import oracle.xml.parser.v2.*;
import oracle.xdb.XMLType;
import oracle.sql.OPAQUE;
import oracle.xdb.XMLType;
import oracle.jdbc.pool.OracleDataSource;
import oracle.jdbc.OraclePreparedStatement;
import oracle.jdbc.OracleResultSet;
public class OracleXMLTypeQuery
public static void main(String[]args)
String query = "select extract(value(X), '//eNest[@aSixtyFour=2]').getClobVal() \n" +
"from OracleBench_No_Schema X";
try
     DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@138.87.169.78:1521:itkora2","dmuruku","dmuruku");
OraclePreparedStatement stmt = (OraclePreparedStatement) conn.prepareStatement(query);
System.out.println("Executing Query...");
OracleResultSet orset = (OracleResultSet)stmt.executeQuery();
          System.out.println("Query Executed....");
while(orset.next())
oracle.sql.CLOB clob = orset.getCLOB(1);               
     Reader reader = clob.getCharacterStream();
//----------------These set of lines when included in the program are causing protocol violation---------
StringBuffer clobBuffer = new StringBuffer();
               char[] buffer = new char[1024];
               int readCount;
                    while ( (readCount = reader.read(buffer)) != -1)
                         {        clobBuffer.append(buffer, 0, readCount);    }
               //This included...protocol violation          
conn.close();
catch(Exception ex)
System.out.println(ex.toString());
As I mentioned the lines of code between the two commenting lines when Included in the program are causing a protocol violation.
(java.io.IOException: Protocol Violation).
Is there any other way to read data from a Reader Object into a file or to display it on the console output?
please advise
Thanks
DL

Similar Messages

  • Querying in the xmltype table

    apart from XQuery,
    i know Oracle provided X-Path based search also.
    can anyone direct me what's wrong with the following statement?
    it returns "no rows selected".
    THX~
    e.g.1
    select extract(value(it),'/Cap/@ctitle').getStringVal() as CTITLE
    from ord_xmltype_tbl,
    table (xmlsequence(extract(object_value,'Ordinace/Chapter/Cap'))) it
    where contains (object_value,'Commonwealth INPATH (/Ordinance/Chapter/Cap/Section/Content/English)') > 0;
    e.g.2
    select extract(object_value,'/Ordinance/Chapter/Cap/@ctitle').getStringVal() as CTITLE
    from ord_xmltype_tbl,
    table (xmlsequence(extract(object_value,'/Ordinace/Chapter/Cap'))) it
    where existsnode(object_value,'//English[contains(.,"SHORT TITLE AND APPLICATION")>0]')>0;
    e.g.3
    select extract(value(it),'/Cap/@ctitle').getStringVal() as CTITLE
    from ord_xmltype_tbl,
    table (xmlsequence(extract(object_value,'/Ordinace/Chapter/Cap'))) it
    where existsnode(object_value,'//English[ora:contains(.,"SHORT TITLE AND APPLICATION")>0]', 'xmlns:ora="http://xmlns.oracle.com/xdb"')>0;
    and what index i should create for the xmltype table?
    in order to speed up the search?
    this is the skeleton of the xmltype table
    <Ordinance xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://localhost:8081/public/hkliss/ordinance.xsd">
    <Chapter ctitle="致命意外條例" etitle="FATAL ACCIDENTS ORDINANCE" id="22">
    <Cap ctitle="致命意外條例" etitle="FATAL ACCIDENTS ORDINANCE" id="22">
    <Section ctitle="詳題" etitle="Long title" id="0">
    <VersionDate>1997-06-30</VersionDate>
    <Content>
    <Chinese></Chinese>
    <English></English>
    </Content>
    </Section>
    </Cap>
    <Cap>....</Cap>
    <Cap>....</Cap>
    <Cap>....</Cap>
    <Cap>....</Cap>
    <Cap>....</Cap>
    <Cap>....</Cap>
    </Chapter>
    </Ordinance>
    thx, expert~
    i'm held up in my project right now~~~

    (please read a little from the manuals...you have already spend so much time on asking stuff, that if you would have
    read manuals, you also would understand the things pointed out to you and it would have given you a faster result...)
    http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14200/functions051.htm#i1006712
    http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14200/functions048.htm#i1006711
    http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14200/functions052.htm#i1131042
    The optional namespace_string must resolve to a VARCHAR2 value that specifies a default mapping or namespace mapping for prefixes, which Oracle uses when evaluating the XPath expression(s).
    is xmlns:ora="http://xmlns.oracle.com/xdb evaluating your Xpath expression, I don't think so...
    If I take your examples shown here (http://forums.oracle.com/forums/message.jspa?messageID=1765571#1765571) as a starting point...
    the query:
    select extract(value(it),'/Cap/@ctitle').getStringVal() as CTITLE
    from ord_xmltype_tbl,
    table (xmlsequence(extract(object_value,'/Ordinace/Chapter/Cap'))) it
    where existsnode(object_value,'//English[ora:contains(.,"SHORT TITLE AND APPLICATION")>0]', 'xmlns:ora="http://xmlns.oracle.com/xdb"')>0;would resolve in
    select extract(value(it),'/Cap/@ctitle').getStringVal() as CTITLE
    from ord_xmltype_tbl,
    table (xmlsequence(extract(object_value,'/Ordinace/Chapter/Cap', 'xmlns:ora="http://localhost:8081/public/hkliss/ordinance.xsd"'))) it
    where existsnode(object_value,'//English[ora:contains(.,"SHORT TITLE AND APPLICATION")>0]', 'xmlns:ora="http://localhost:8081/public/hkliss/ordinance.xsd"')>0;
    But I would start with a simple "extract" or "existnode" statement, see if I get data output, and then build my SQL statement from there.

  • Exporting xmltype table data into xml/txt file

    I want to export data stored in oracle as xmltype table into xml format file.
    I want to use alternatives to the method shown below as my xml file is large.
    set long 10000000
    spool c:\\StudentXMLJan08.xml
    SELECT
    XMLElement("Student",
    XMLForest(s.studentid "studentid",
    s.firstname "firstname",
    s.lastname "surname"),
    XMLElement("enrollments",
    (SELECT XMLAGG(
    XMLForest(sc.coursecode "courseid"))
    FROM studentcourse sc
    WHERE sc.studentid = s.studentid
    and sc.is_approved='Y'
    and sc.takenyear='2008'
    and sc.takenterm='1')))
    FROM student s
    where s.statuscode in (select studentstatuscode from studentstatus where studentstatusactive=1)
    order by s.studentid;
    spool off
    please help, thank you

    How's this one for size
    SQL> create or replace view DEPARTMENT_XML of xmltype
      2  with object id
      3  (
      4    'DEPARTMENT'
      5  )
      6  as
      7  select xmlElement
      8         (
      9           "Departments",
    10           (
    11             select xmlAgg
    12                    (
    13                      xmlElement
    14                      (
    15                      "Department",
    16                      xmlAttributes( d.DEPARTMENT_ID as "DepartmentId"),
    17                      xmlElement("Name", d.DEPARTMENT_NAME),
    18                      xmlElement
    19                      (
    20                        "Location",
    21                        xmlForest
    22                        (
    23                           STREET_ADDRESS as "Address", CITY as "City", STATE_PROVINCE as "State",
    24                           POSTAL_CODE as "Zip",COUNTRY_NAME as "Country"
    25                        )
    26                      ),
    27                      xmlElement
    28                      (
    29                        "EmployeeList",
    30                        (
    31                          select xmlAgg
    32                                 (
    33                                   xmlElement
    34                                   (
    35                                     "Employee",
    36                                     xmlAttributes ( e.EMPLOYEE_ID as "employeeNumber" ),
    37                                     xmlForest
    38                                     (
    39                                       e.FIRST_NAME as "FirstName", e.LAST_NAME as "LastName", e.EMAIL as "EmailAddre
    ss",
    40                                       e.PHONE_NUMBER as "Telephone", e.HIRE_DATE as "StartDate", j.JOB_TITLE as "Job
    Title",
    41                                       e.SALARY as "Salary", m.FIRST_NAME || ' ' || m.LAST_NAME as "Manager"
    42                                     ),
    43                                     xmlElement ( "Commission", e.COMMISSION_PCT )
    44                                   )
    45                                 )
    46                            from HR.EMPLOYEES e, HR.EMPLOYEES m, HR.JOBS j
    47                           where e.DEPARTMENT_ID = d.DEPARTMENT_ID
    48                             and j.JOB_ID = e.JOB_ID
    49                             and m.EMPLOYEE_ID = e.MANAGER_ID
    50                        )
    51                      )
    52                    )
    53                  )
    54             from HR.DEPARTMENTS d, HR.COUNTRIES c, HR.LOCATIONS l
    55            where d.LOCATION_ID = l.LOCATION_ID
    56              and l.COUNTRY_ID  = c.COUNTRY_ID
    57           )
    58         )
    59    from dual
    60  /
    View created.
    SQL> create or replace trigger DEPARTMENT_DML
      2  instead of INSERT or UPDATE or DELETE
      3  on DEPARTMENT_XML
      4  begin
      5    null;
      6  end;
      7  /
    Trigger created.
    SQL> declare
      2    cursor getDepartments is
      3      select ref(d) XMLREF
      4        from DEPARTMENT_XML d;
      5    res boolean;
      6    targetFolder varchar2(1024) :=  '/public/Departments';
      7  begin
      8    if dbms_xdb.existsResource(targetFolder) then
      9       dbms_xdb.deleteResource(targetFolder,dbms_xdb.DELETE_RECURSIVE_FORCE);
    10    end if;
    11    res := dbms_xdb.createFolder(targetFolder);
    12    for dept in getDepartments loop
    13      res := DBMS_XDB.createResource(targetFolder || '/Departments.xml', dept.XMLREF);
    14    end loop;
    15  end;
    16  /
    PL/SQL procedure successfully completed.
    SQL> select path
      2    from path_view
      3   where equals_path(RES,'/public/Departments/Departments.xml') = 1
      4  /
    PATH
    /public/Departments/Departments.xml
    SQL> select xdburitype('/public/Departments/Departments.xml').getXML()
      2    from dual
      3  /
    XDBURITYPE('/PUBLIC/DEPARTMENTS/DEPARTMENTS.XML').GETXML()
    <Departments>
      <Department DepartmentId="60">
        <Name>IT</Name>
        <Location
    SQL> quit
    Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    C:\Temp>ftp localhost
    Connected to mdrake-lap.
    220- mdrake-lap
    Unauthorised use of this FTP server is prohibited and may be subject to civil and criminal prosecution.
    220 mdrake-lap FTP Server (Oracle XML DB/Oracle Database) ready.
    User (mdrake-lap:(none)): SCOTT
    331 pass required for SCOTT
    Password:
    230 SCOTT logged in
    ftp> cd /public/Departments
    250 CWD Command successful
    ftp> ls -l
    200 EPRT Command successful
    150 ASCII Data Connection
    -rw-r--r--   1 SCOTT    oracle         0 NOV 10 20:18 Departments.xml
    226 ASCII Transfer Complete
    ftp: 71 bytes received in 0.01Seconds 7.10Kbytes/sec.
    ftp> get Departments.xml -
    200 EPRT Command successful
    150 ASCII Data Connection
    <Departments><Department DepartmentId="60"><Name>IT</Name><Location><Address>2014 Jabberwocky Rd</Address><City>Southlak
    e</City><State>Texas</State><Zip>26192</Zip><Country>United States of America</Country></Location><EmployeeList><Employe
    e employeeNumber="103"><FirstName>Alexander</FirstName><LastName>Hunold</LastName><EmailAddress>AHUNOLD</EmailAddress><T
    elephone>590.423.4567</Telephone><StartDate>2006-01-03</StartDate><JobTitle>Programmer</JobTitle><Salary>9000</Salary><M
    anager>Lex De Haan</Manager><Commission></Commission></Employee><Employee employeeNumber="105"><FirstName>David</FirstNa
    me><LastName>Austin</LastName><EmailAddress>DAUSTIN</EmailAddress><Telephone>590.423.4569</Telephone><StartDate>2005-06-
    25</StartDate><JobTitle>Programmer</JobTitle><Salary>4800</Salary><Manager>Alexander Hunold</Manager><Commission></Commi
    ssion></Employee><Employee employeeNumber="106"><FirstName>Valli</FirstName><LastName>Pataballa</LastName><EmailAddress>
    VPATABAL</EmailAddress><Telephone>590.423.4560</Telephone><StartDate>2006-02-05</StartDate><JobTitle>Programmer</JobTitl
    e><Salary>4800</Salary><Manager>Alexander Hunold</Manager><Commission></Commission></Employee><Employee employeeNumber="
    107"><FirstName>Diana</FirstName><LastName>Lorentz</LastName><EmailAddress>DLORENTZ</EmailAddress><Telephone>590.423.556
    7</Telephone><StartDate>2007-02-07</StartDate><JobTitle>Programmer</JobTitle><Salary>4200</Salary><Manager>Alexander Hun
    old</Manager><Commission></Commission></Employee><Employee employeeNumber="104"><FirstName>Bruce</FirstName><LastName>Er
    nst</LastName><EmailAddress>BERNST</EmailAddress><Telephone>590.423.4568</Telephone><StartDate>2007-05-21</StartDate><Jo
    bTitle>Programmer</JobTitle><Salary>6000</Salary><Manager>Alexander Hunold</Manager><Commission></Commission></Employee>
    </EmployeeList></Department><Department DepartmentId="50"><Name>Shipping</Name><Location><Address>2011 Interiors Blvd</A
    ddress><City>South San Francisco</City><State>California</State><Zip>99236</Zip><Country>United States of America</Count
    ry></Location><EmployeeList><Employee employeeNumber="120"><FirstName>Matthew</FirstName><LastName>Weiss</LastName><Emai
    lAddress>MWEISS</EmailAddress><Telephone>650.123.1234</Telephone><StartDate>2004-07-18</StartDate><JobTitle>Stock Manage
    r</JobTitle><Salary>8000</Salary><Manager>Steven King</Manager><Commission></Commission></Employee><Employee employeeNum
    ber="122"><FirstName>Payam</FirstName><LastName>Kaufling</LastName><EmailAddress>PKAUFLIN</EmailAddress><Telephone>650.1
    23.3234</Telephone><StartDate>2003-05-01</StartDate><JobTitle>Stock Manager</JobTitle><Salary>7900</Salary><Manager>Stev
    en King</Manager><Commission></Commission></Employee><Employee employeeNumber="121"><FirstName>Adam</FirstName><LastName
    Fripp</LastName><EmailAddress>AFRIPP</EmailAddress><Telephone>650.123.2234</Telephone><StartDate>2005-04-10</StartDate><JobTitle>Stock Manager</JobTitle><Salary>8200</Salary><Manager>Steven King</Manager><Commission></Commission></Employee
    <Employee employeeNumber="124"><FirstName>Kevin</FirstName><LastName>Mourgos</LastName><EmailAddress>KMOURGOS</EmailAddress><Telephone>650.123.5234</Telephone><StartDate>2007-11-16</StartDate><JobTitle>Stock Manager</JobTitle><Salary>5800<
    /Salary><Manager>Steven King</Manager><Commission></Commission></Employee><Employee employeeNumber="123"><FirstName>Shan
    ta</FirstName><LastName>Vollman</LastName><EmailAddress>SVOLLMAN</EmailAddress><Telephone>650.123.4234</Telephone><Start
    Date>2005-10-10</StartDate><JobTitle>Stock Manager</JobTitle><Salary>6500</Salary><Manager>Steven King</Manager><Commiss
    ion></Commission></Employee><Employee employeeNumber="128"><FirstName>Steven</FirstName><LastName>Markle</LastName><Emai
    lAddress>SMARKLE</EmailAddress><Telephone>650.124.1434</Telephone><StartDate>2008-03-08</StartDate><JobTitle>Stock Clerk
    </JobTitle><Salary>2200</Salary><Manager>Matthew Weiss</Manager><Commission></Commission></Employee><Employee employeeNu
    mber="127"><FirstName>James</FirstName><LastName>Landry</LastName><EmailAddress>JLANDRY</EmailAddress><Telephone>650.124
    .1334</Telephone><StartDate>2007-01-14</StartDate><JobTitle>Stock Clerk</JobTitle><Salary>2400</Salary><Manager>Matthew
    Weiss</Manager><Commission></Commission></Employee><Employee employeeNumber="126"><FirstName>Irene</FirstName><LastName>
    Mikkilineni</LastName><EmailAddress>IMIKKILI</EmailAddress><Telephone>650.124.1224</Telephone>
    <StartDate>2002-06-07</St
    artDate><JobTitle>Public Relations Representative</JobTitle><Salary>10000</Salary><Manager>Neena Kochhar</Manager><Commi
    ssion></Commission></Employee></EmployeeList></Department></Departments>226 ASCII Transfer Complete
    ftp: 40392 bytes received in 0.08Seconds 480.86Kbytes/sec.
    ftp>

  • How to improve performance of a query that is based on an xmltype table

    Dear Friends,
    I have a query that is pulling records from an xmltype table with 9000 rows and it is running very slow.
    I am using XMLTABLE command to retreive the rows. It is taking upto 30 minutes to finish.
    Would you be able to suggest how I can make it faster. Thanks.
    Below is the query.....
    INSERT INTO temp_sap_po_receipt_history_t
    (po_number, po_line_number, doc_year,
    material_doc, material_doc_item, quantity, sap_ref_doc_no_long,
    reference_doc, movement_type_code,
    sap_ref_doc_no, posting_date, entry_date, entry_time, hist_type)
    SELECT :pin_po_number po_number,
    b.po_line_number, b.doc_year,
    b.material_doc, b.material_doc_item, b.quantity, b.sap_ref_doc_no_long,
    b.reference_doc, b.movement_type_code,
    b.sap_ref_doc_no, to_date(b.posting_date,'rrrr-mm-dd'),
    to_date(b.entry_date,'rrrr-mm-dd'), b.entry_time, b.hist_type
    FROM temp_xml t,
    XMLTABLE(XMLNAMESPACES('urn:sap-com:document:sap:rfc:functions' AS "n0"),
    '/n0:BAPI_PO_GETDETAIL1Response/POHISTORY/item'
    PASSING t.object_value
    COLUMNS PO_LINE_NUMBER VARCHAR2(20) PATH 'PO_ITEM',
    DOC_YEAR varchar2(4) PATH 'DOC_YEAR',
    MATERIAL_DOC varchar2(30) PATH 'MAT_DOC',
    MATERIAL_DOC_ITEM VARCHAR2(10) PATH 'MATDOC_ITEM',
    QUANTITY NUMBER(20,6) PATH 'QUANTITY',
    SAP_REF_DOC_NO_LONG VARCHAR2(20) PATH 'REF_DOC_NO_LONG',
    REFERENCE_DOC VARCHAR2(20) PATH 'REF_DOC',
    MOVEMENT_TYPE_CODE VARCHAR2(4) PATH 'MOVE_TYPE',
    SAP_REF_DOC_NO VARCHAR2(20) PATH 'REF_DOC_NO',
    POSTING_DATE VARCHAR2(10) PATH 'PSTNG_DATE',
    ENTRY_DATE VARCHAR2(10) PATH 'ENTRY_DATE',
    ENTRY_TIME VARCHAR2(8) PATH 'ENTRY_TIME',
    HIST_TYPE VARCHAR2(5) PATH 'HIST_TYPE') b;

    Based on response from mdrake on this thread:
    Re: XML file processing into oracle
    For large XML's, you can speed up the processing of XMLTABLE by using a registered schema...
    declare
      SCHEMAURL VARCHAR2(256) := 'http://xmlns.example.org/xsd/testcase.xsd';
      XMLSCHEMA VARCHAR2(4000) := '<?xml version="1.0" encoding="UTF-8"?>
         <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb" xdb:storeVarrayAsTable="true">
            <xs:element name="cust_order" type="cust_orderType" xdb:defaultTable="CUST_ORDER_TBL"/>
            <xs:complexType name="groupType" xdb:maintainDOM="false">
                    <xs:sequence>
                            <xs:element name="item" type="itemType" maxOccurs="unbounded"/>
                    </xs:sequence>
                    <xs:attribute name="id" type="xs:byte" use="required"/>
            </xs:complexType>
            <xs:complexType name="itemType" xdb:maintainDOM="false">
                    <xs:simpleContent>
                            <xs:extension base="xs:string">
                                    <xs:attribute name="id" type="xs:short" use="required"/>
                                    <xs:attribute name="name" type="xs:string" use="required"/>
                            </xs:extension>
                    </xs:simpleContent>
            </xs:complexType>
            <xs:complexType name="cust_orderType" xdb:maintainDOM="false">
                    <xs:sequence>
                            <xs:element name="group" type="groupType" maxOccurs="unbounded"/>
                    </xs:sequence>
                    <xs:attribute name="cust_id" type="xs:short" use="required"/>
            </xs:complexType>
         </xs:schema>';
      INSTANCE  CLOB :=
    '<cust_order cust_id="12345">
      <group id="1">
        <item id="1" name="Standard Mouse">100</item>
        <item id="2" name="Keyboard">100</item>
        <item id="3" name="Memory Module 2Gb">200</item>
        <item id="4" name="Processor 3Ghz">25</item>
        <item id="5" name="Processor 2.4Ghz">75</item>
      </group>
      <group id="2">
        <item id="1" name="Graphics Tablet">15</item>
        <item id="2" name="Keyboard">15</item>
        <item id="3" name="Memory Module 4Gb">15</item>
        <item id="4" name="Processor Quad Core 2.8Ghz">15</item>
      </group>
      <group id="3">
        <item id="1" name="Optical Mouse">5</item>
        <item id="2" name="Ergo Keyboard">5</item>
        <item id="3" name="Memory Module 2Gb">10</item>
        <item id="4" name="Processor Dual Core 2.4Ghz">5</item>
        <item id="5" name="Dual Output Graphics Card">5</item>
        <item id="6" name="28inch LED Monitor">10</item>
        <item id="7" name="Webcam">5</item>
        <item id="8" name="A3 1200dpi Laser Printer">2</item>
      </group>
    </cust_order>';                
    begin
      dbms_xmlschema.registerSchema
         schemaurl       => SCHEMAURL
        ,schemadoc       => XMLSCHEMA
        ,local           => TRUE
        ,genTypes        => TRUE
        ,genBean         => FALSE
        ,genTables       => TRUE
        ,ENABLEHIERARCHY => DBMS_XMLSCHEMA.ENABLE_HIERARCHY_NONE
      execute immediate 'insert into CUST_ORDER_TBL values (XMLTYPE(:INSTANCE))' using INSTANCE;
    end;
    SQL> desc CUST_ORDER_TBL
    Name                                                                                                                                    Null?    Type
    TABLE of SYS.XMLTYPE(XMLSchema "http://xmlns.example.org/xsd/testcase.xsd" Element "cust_order") STORAGE Object-relational TYPE "cust_orderType222_T"
    SQL> set autotrace on explain
    SQL> set pages 60 lines 164 heading on
    SQL> col cust_id format a8
    SQL> select extract(object_value,'/cust_order/@cust_id') as cust_id
      2        ,grp.id as group_id, itm.id as item_id, itm.inm as item_name, itm.qty as item_qty
      3  from   CUST_ORDER_TBL
      4        ,XMLTABLE('/cust_order/group'
      5                  passing object_value
      6                  columns id   number       path '@id'
      7                         ,item xmltype      path 'item'
      8                 ) grp
      9        ,XMLTABLE('/item'
    10                  passing grp.item
    11                  columns id   number       path '@id'
    12                         ,inm  varchar2(30) path '@name'
    13                         ,qty  number       path '.'
    14                 ) itm
    15  /
    CUST_ID    GROUP_ID    ITEM_ID ITEM_NAME                        ITEM_QTY
    12345             1          1 Standard Mouse                        100
    12345             1          2 Keyboard                              100
    12345             1          3 Memory Module 2Gb                     200
    12345             1          4 Processor 3Ghz                         25
    12345             1          5 Processor 2.4Ghz                       75
    12345             2          1 Graphics Tablet                        15
    12345             2          2 Keyboard                               15
    12345             2          3 Memory Module 4Gb                      15
    12345             2          4 Processor Quad Core 2.8Ghz             15
    12345             3          1 Optical Mouse                           5
    12345             3          2 Ergo Keyboard                           5
    12345             3          3 Memory Module 2Gb                      10
    12345             3          4 Processor Dual Core 2.4Ghz              5
    12345             3          5 Dual Output Graphics Card               5
    12345             3          6 28inch LED Monitor                     10
    12345             3          7 Webcam                                  5
    12345             3          8 A3 1200dpi Laser Printer                2
    17 rows selected.Need at least 10.2.0.3 for performance i.e. to avoid COLLECTION ITERATOR PICKLER FETCH in execution plan...
    On 10.2.0.1:
    Execution Plan
    Plan hash value: 3741473841
    | Id  | Operation                          | Name                   | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT                   |                        | 24504 |    89M|   873   (1)| 00:00:11 |
    |   1 |  NESTED LOOPS                      |                        | 24504 |    89M|   873   (1)| 00:00:11 |
    |   2 |   NESTED LOOPS                     |                        |     3 | 11460 |   805   (1)| 00:00:10 |
    |   3 |    TABLE ACCESS FULL               | CUST_ORDER_TBL         |     1 |  3777 |     3   (0)| 00:00:01 |
    |*  4 |    INDEX RANGE SCAN                | SYS_IOT_TOP_774117     |     3 |   129 |     1   (0)| 00:00:01 |
    |   5 |   COLLECTION ITERATOR PICKLER FETCH| XMLSEQUENCEFROMXMLTYPE |       |       |            |       |
    Predicate Information (identified by operation id):
       4 - access("NESTED_TABLE_ID"="CUST_ORDER_TBL"."SYS_NC0000900010$")
           filter("SYS_NC_TYPEID$" IS NOT NULL)
    Note
       - dynamic sampling used for this statementOn 10.2.0.3:
    Execution Plan
    Plan hash value: 1048233240
    | Id  | Operation               | Name              | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT        |                   |    17 |   132K|   839   (0)| 00:00:11 |
    |   1 |  NESTED LOOPS           |                   |    17 |   132K|   839   (0)| 00:00:11 |
    |   2 |   MERGE JOIN CARTESIAN  |                   |    17 |   131K|   805   (0)| 00:00:10 |
    |   3 |    TABLE ACCESS FULL    | CUST_ORDER_TBL    |     1 |  3781 |     3   (0)| 00:00:01 |
    |   4 |    BUFFER SORT          |                   |    17 | 70839 |   802   (0)| 00:00:10 |
    |*  5 |     INDEX FAST FULL SCAN| SYS_IOT_TOP_56154 |    17 | 70839 |   802   (0)| 00:00:10 |
    |*  6 |   INDEX UNIQUE SCAN     | SYS_IOT_TOP_56152 |     1 |    43 |     2   (0)| 00:00:01 |
    |*  7 |    INDEX RANGE SCAN     | SYS_C006701       |     1 |       |     0   (0)| 00:00:01 |
    Predicate Information (identified by operation id):
       5 - filter("SYS_NC_TYPEID$" IS NOT NULL)
       6 - access("SYS_NTpzENS1H/RwSSC7TVzvlqmQ=="."NESTED_TABLE_ID"="SYS_NTnN5b8Q+8Txi9V
                  w5Ysl6x9w=="."SYS_NC0000600007$")
           filter("SYS_NC_TYPEID$" IS NOT NULL AND
                  "NESTED_TABLE_ID"="CUST_ORDER_TBL"."SYS_NC0000900010$")
       7 - access("SYS_NTpzENS1H/RwSSC7TVzvlqmQ=="."NESTED_TABLE_ID"="SYS_NTnN5b8Q+8Txi9V
                  w5Ysl6x9w=="."SYS_NC0000600007$")
    Note
       - dynamic sampling used for this statement----------------------------------------------------------------------------------------------------------
    -- CLEAN UP
    DROP TABLE CUST_ORDER_TBL purge;
    exec dbms_xmlschema.deleteschema('http://xmlns.example.org/xsd/testcase.xsd');

  • Oracle Text in XMLType Table

    I have successfully created (at least I think) oracle text indexes on my XMLType table:
    EXEC ctx_ddl.create_section_group('contract_xmlgroup', 'XML_SECTION_GROUP');
    EXEC CTX_DDL.Add_Zone_Section (group_name => 'contract_xmlgroup', section_name => 'complete_entry', tag => 'complete_entry')
    CREATE INDEX complete_entry ON boss_contracts INDEXTYPE IS ctxsys.context
    parameters('section group contract_xmlgroup');
    however I am unsure how to now search using CONTAINS with this index, I tried this at first:
    SELECT count(*) FROM boss_contracts b
    WHERE CONTAINS(value(b), 'string WITHIN complete_entry') > 0;
    this just gave me the error:
    ERROR at line 1:
    ORA-20000: Oracle Text error:
    DRG-10599: column is not indexed
    any help would be appreciated
    Paul

    It looks like you are wanting to search by sub-directory names or a combination of sub-directory names. By default, Oracle Text views the directory delimiter / as white space, so the individual sub-directories are tokenized. Therefore, you don't need the wildcards or / to do your searches. Please see the example below.
    SCOTT@orcl_11g> create table files_included
      2    (pid       varchar2 (16) not null,
      3       filename  varchar2 (40) not null)
      4  /
    Table created.
    SCOTT@orcl_11g> insert all
      2  into files_included values
      3    ('123456-01', '/usr/bin/ls/a')
      4  into files_included values
      5    ('123456-02', '/usr/bin/ls/b')
      6  into files_included values
      7    ('123456-03', '/usr/x/ls/a')
      8  into files_included values
      9    ('123456-02', '/usr/bin/x/b')
    10  into files_included values
    11    ('654321', '/usr/bin/other')
    12  select * from dual
    13  /
    5 rows created.
    SCOTT@orcl_11g> create index myindex
      2  on files_included (filename)
      3  indextype is ctxsys.context
      4  /
    Index created.
    SCOTT@orcl_11g> select token_text
      2  from   dr$myindex$i
      3  /
    TOKEN_TEXT
    B
    BIN
    LS
    OTHER
    USR
    X
    6 rows selected.
    SCOTT@orcl_11g> select * from files_included
      2  where  contains (filename, 'bin ls') > 0
      3  /
    PID              FILENAME
    123456-01        /usr/bin/ls/a
    123456-02        /usr/bin/ls/b
    SCOTT@orcl_11g> select * from files_included
      2  where  contains (filename, 'bin') > 0
      3  /
    PID              FILENAME
    123456-01        /usr/bin/ls/a
    123456-02        /usr/bin/ls/b
    123456-02        /usr/bin/x/b
    654321           /usr/bin/other
    SCOTT@orcl_11g> select * from files_included
      2  where  contains (filename, 'ls') > 0
      3  /
    PID              FILENAME
    123456-01        /usr/bin/ls/a
    123456-02        /usr/bin/ls/b
    123456-03        /usr/x/ls/a
    SCOTT@orcl_11g>

  • Loading an Oracle SQL query into an MSSQL table

    I have a select query on an Oracle table. I want to load this data into an MSSQL table.
    Problem is that I cannot create an interim table on the Oracle database (lack of privelages)
    Is there a way to load an Oracle query into the MSSQL table without an interim table?
    Many thanks
    Z

    Yes,
    1) Create an ODI procedure
    2) Create a step inside
    3) at source tab put the oracle query
    4) at target tab put the sql insert code
    Refer to the oracle returned values like "#column_name_from_oracle_query"
    Make sense?
    Cezar Santos
    [www.odiexperts.com]

  • Give me the sql query which calculte the table size in oracle 10g ecc 6.0

    Hi expert,
    Please  give me the sql query which calculte the table size in oracle 10g ecc 6.0.
    Regards

    Orkun Gedik wrote:
    select segment_name, sum(bytes)/(1024*1024) from dba_segments where segment_name = '<TABLE_NAME>' group by segment_name;
    Hi,
    This delivers possibly wrong data in MCOD installations.
    Depending on Oracle Version and Patchlevel dba_segments does not always have the correct data,
    at any time esp. for indexes right after being rebuild parallel (Even in DB02 because it is using USER_SEGMENTS).
    Takes a day to get the data back in line (never found out, who did the correction at night, could be RSCOLL00 ?).
    Use above statement with "OWNER = " in WHERE for MCOD or connect as schema owner and use USER_SEGMENTS.
    Use with
    segment_name LIKE '<TABLE_NAME>%'
    if you like to see the related indexes as well.
    For partitioned objects, a join from dba_tables / dba_indexes to dba_tab_partitions/dba_ind_partitions to dba_segments
    might be needed, esp. for hash partitioned tables, depending on how they have been created ( partition names SYS_xxxx).
    Volker

  • How to create view for xmltype table in oracle

    hi:
    Can some one help me how to create view for xmltype table in oracle?
    XMLType do not have column
    Sem

    Thank you !!
    I read it and become very hard to implement what I want to do.
    Can you give me example please?
    My main goal to create view for xmltype table is to XQuery the XML data?
    Do you have any other suggestion?
    Please help
    Ali_2

  • Problem in select of xmltype table

    Hi,
    i have a xmltype table with an object type/atrribute of datatype CLOB. When i now do a query i get the error ORA-22835 - what's going wrong? The datatype of the source attribute and the declared variable is CLOB.
    DECLARE
      vFoto  CLOB;
    BEGIN
      SELECT SUBSTR(pe.foto_pass, 1, 100) INTO vFoto
        FROM fp_epass_pass_antraege pa
           , XMLTABLE('/PassAntrag'
             PASSING pa.sys_nc_rowinfo$
             COLUMNS antrag     XMLTYPE PATH '/PassAntrag/Antrag'
                   , person     XMLTYPE PATH '/PassAntrag/Person') paan
           , XMLTABLE('/'
             PASSING paan.antrag
             COLUMNS uuid       VARCHAR2(38) PATH 'UUID') an
           , XMLTABLE('/'
             PASSING paan.person
             COLUMNS foto_pass  CLOB PATH 'FotoPass') pe
             WHERE an.uuid = '84239536904120131828493266953553299522';
    END;Many thanks in advance.
    Regards,
    Martin

    Hi Odie,
    i thoght taht's a PL/SQL problem ;-)
    Versions:
    Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
    PL/SQL Release 11.2.0.2.0 - Production
    CORE     11.2.0.2.0     Production
    TNS for IBM/AIX RISC System/6000: Version 11.2.0.2.0 - Production
    NLSRTL Version 11.2.0.2.0 - Production
    <?xml version="1.0" encoding="ISO-8859-15" standalone='no'?>
    <PassAntrag>
      <Antrag>
        <UUID>53075802924980786961041180181729965505</UUID>
        <DocTyp>ID</DocTyp>
        <Antragsgrund>EAN</Antragsgrund>
        <AntragDatum>06.02.2013</AntragDatum>
        <AntragOrt/>
      </Antrag>
      <Person>
        <Name>Zillweger</Name>
        <Vorname>Michel</Vorname>
        <Geburtsdatum>16.06.1964</Geburtsdatum>
        <Geschlecht>M</Geschlecht>
        <Passtitel/>
        <Groesse>178</Groesse>
        <Strasse>Riverside Ave</Strasse>
        <Hausnummer>4</Hausnummer>
        <PLZ>23413454</PLZ>
        <Ort>New York</Ort>
        <LandIso316613>USA</LandIso316613>
        <Telefon>2314132413</Telefon>
        <Email/>
        <Versand>EDA</Versand>
        <Lieferadresse>Switzerland Embassy , United States
    20008-3499
    Washington DC
    District of Columbia
    USA</Lieferadresse>
        <BesKennz/>
        <NameVornameVater>Zillweger André</NameVornameVater>
        <LedNameVornameMutter>Voirol Odile</LedNameVornameMutter>
        <NameVornameEhepartner>Zillweger Françoise</NameVornameEhepartner>
        <NameVornameVertreter/>
        <FotoID></FotoID>
        <FotoPass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
        <SignID>LzlqLzRBQVFTa1pKUmdBQkFnQUFBUUFCQUFELzJ3QkRBQWdHQmdjR0JRZ0hCd2NKQ1FnS0RCUU5EQXNMREJrU0V3OFVIUm9mSGgwYUhCd2dKQzRuSUNJc0l4d2NLRGNwTERBeE5EUTBIeWM1UFRneVBDNHpOREwvMndCREFRa0pDUXdMREJnTkRSZ3lJUndoTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qTC93QUFSQ0FEWkFrOERBU0lBQWhFQkF4RUIvOFFBSHdBQUFRVUJBUUVCQVFFQUFBQUFBQUFBQUFFQ0F3UUZCZ2NJQ1FvTC84UUF0UkFBQWdFREF3SUVBd1VGQkFRQUFBRjlBUUlEQUFRUkJSSWhNVUVHRTFGaEJ5SnhGREtCa2FFSUkwS3h3UlZTMGZBa00ySnlnZ2tLRmhjWUdSb2xKaWNvS1NvME5UWTNPRGs2UTBSRlJrZElTVXBUVkZWV1YxaFpXbU5rWldabmFHbHFjM1IxZG5kNGVYcURoSVdHaDRpSmlwS1RsSldXbDVpWm1xS2pwS1dtcDZpcHFyS3p0TFcydDdpNXVzTER4TVhHeDhqSnl0TFQxTlhXMTlqWjJ1SGk0K1RsNXVmbzZlcng4dlAwOWZiMytQbjYvOFFBSHdFQUF3RUJBUUVCQVFFQkFRQUFBQUFBQUFFQ0F3UUZCZ2NJQ1FvTC84UUF0UkVBQWdFQ0JBUURCQWNGQkFRQUFRSjNBQUVDQXhFRUJTRXhCaEpCVVFkaGNSTWlNb0VJRkVLUm9iSEJDU016VXZBVlluTFJDaFlrTk9FbDhSY1lHUm9tSnlncEtqVTJOemc1T2tORVJVWkhTRWxLVTFSVlZsZFlXVnBqWkdWbVoyaHBhbk4wZFhaM2VIbDZnb09FaFlhSGlJbUtrcE9VbFphWG1KbWFvcU9rcGFhbnFLbXFzck8wdGJhM3VMbTZ3c1BFeGNiSHlNbkswdFBVMWRiWDJObmE0dVBrNWVibjZPbnE4dlAwOWZiMytQbjYvOW9BREFNQkFBSVJBeEVBUHdEMytpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQURvS2htdW9MZUNXZWVWSW9JbEx5U3lIYWlLQmtzU2VBQUIxcmovaU44UUxmd0xvOGNnakZ4cUY1dVcwaEtrb1NvRzVtSS9oRzVlT3B5QjZrZU1XZWgrTi9qUHFhWDJvUytUcGtaSml1SllXU0NOR2ZETENvKyszRGNrL3dBTXcrVTBBZXkyM3hmOENYVndrRWV1cUhkd2dNbHRNaTVQY3N5QUFlNUlBNzEzQU9hOEs4Wi9CN3czNGI4RlgrcFcxM2VpNXRjTWozTWdLdnVaQjViQlU2ZGNjRGwvbU9QdTlaOERwTHh2aDc1ZDE1bmxSWGtxV3hkTm9NZUZZNE9QbUc5cE9jbm5JenhnQUhwTkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJXUDRrOFI2WjRZMFdYVXRVdVBKaFg1VVZlWkpIT2NJZzdzY0hqMkpPQUNScmtnZFNCM3I1aThjNnZxL3hPK0l6Nk5vaG5uMDZHUllJQkh2ZUViV0t0Y3NFTEx0M09mM21QdWJlTTlRQ0xROUUxYjQxK1BiN1U3NjRrZzA2SmxNNUxCekJDeFBsd1JqR004SG5HUHZNY2s0UDAvYjI4VnJieHdRUnBIREdvU09ORkNxaWdZQUFIQUFBNlZuK0hkQnNQRE9nMm1qNmFqcmEycWJVOHh0ekhKTEVrK3BKSjQ0NTRBSEZhbEFIbmZ4Ymx1YnJSTERRclFTTlBxVjJxN0ZDNGtWU01LUzNUNXloei9zbmtWMldnYVZEb2VnV09sd2JObHJDc1pLSnNETUJ5MjNuQkp5VHllU2VUMXE4OXZCSk5GTThNYlN4Wjh0MlVGa3lNSEI3WnFRREF3T2xBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJWSFY5U2gwalJyM1VwdzdRMmNFbHhJc2VOeFZGTEVESkF6eDNJb0E4citPL2paOUswdVB3dFpFTGRhbEZ2dUpBV0RSdzdzQURBd2Q1VmxQUFFFRWZOa2F2d2Q4Qy84STE0YUYvcU5uNU9zMytXazN4NGtpaHo4c2ZKT004T2VGT1NBd3l0ZWMrR05QdS9peDhXYnJXcjkydU5Gc1poTVk3Z3J4Q1N6UVFCTUVFSGI4Mk9DQStUa2duNlRvQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVWhPS1U5SzhtK0xIeExrOE93eTZEcFJ6cXNzWDc2WFBFRWJxdzRaWERKS1BsWVpIUWc5NkFQVnc0SndNZE05YWRYekw4RHRRMUMxK0lTV2RzcnRhWGNFZ3VsRzRoVlVGbGM4NEJEYlZERWZ4a2RXcjZhb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWszRDE5cXFhaHErbTZUYkM1MUxVTFd6Z1p3Z2x1WmxqVXRnbkdXSUdjQW44S0FMRTg4VnJieVhFOHFSUXhLWGVTUmdxb29HU1NUMEFIZXZQYno0MitFYkxXbjA1M3U1RlNYeTJ1NFl3MEh1UWM1SUhxQWM0NHlNR3ZQOEE0cWZGZTExcTFoMG53NWZ5U1dMQXZjM0VmbVJNL0RLWWlyQmNwZzVPY2c1SFRhYzhEWndQNHgxSFJ2RG1pYVZCYjNPWkJMY1NTNWFlUTRMdXpZRzFGVk1oUUNSZzQzTWFBUHIrM3VJYnFDT2Uza1NXR1JROGNpTUdWMUl5R0JIQkJIZXBhcDZYcDhlazZYWjZkQThqUVdrQ1FSdElRV0lWUW9KSUE1d093RlhLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQXJ3ejQvK0xiZGJHMThNV3M1YTZNbjJpOFdLVWpZaXI4aU9BTUhjU0d3VHhzVTQ1QnIydSt2cmZUYkc0dmJ1UXgyMXZFMDBzbTBrS2lnbGp4endBYStiL0J1bm40dC9GcTkxN1U3VVFXVUpTNmxoUlBNamZac1dLRml3d2NxdVR4ODIxc0FaNEFQWC9oUDRVbDhLZUJMVzJ1ZzZYbDB4dTU0MjQ4dG5VQUxnZ0VFS0Z5RC9GdTU2VjNOSUJqclMwQUZGRkZBQlJSU0ZnQ00wQUxSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVoSUZBR0Q0eDhWV3ZnL3dBT1hHcjNTZWFJOEpGQUhDdE5JeHdxalA0azljQUU0T0s4QTBHdzhydy9ySHhJMTJiL0FFa3l1Tk15dmx2TGZGd3l6QVpWV1ZXejh1R0hFbkh5NE92NC93Qld2L2lIOFRiZndaWXp4clkyMTRZMWFOV0IzQkI1ck9HWUs1ajJTNHhqaklHY2cwdnhjdW9OT3R0RStIT2lXaVRXOW9zVW1Jc1BNMHAzS3FsVkgzanUzbmpMRjFQR2VRRGYrQW5obnlOTnVmRTg2anpMek1GcmpvSWxQemtZUDhUcUJ5QVI1ZWVqVjdQV1I0WTBHTHd6NGNzZEhnY1NKYXhoVElGMitZeDVac1pPTXNXT004WnJYb0FLS0tLQUNpaWlnQW9wQ1FDQWUvU3ZOby9qUG9OMTRyc2RIMDIzdWIyRzZuV0UzYXJzVldjZ0x0VS9NdzNIRFoyNEFKRzZnRDBxaWtWZzJjZHFXZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLQ2NEcFFBSG9hOC84QUhYeFowZndWUDloOGlUVU5TMkJqYnhPRldMSkdCSXg1VWtFa0FBbmpuQUlOY1o4ZFBIS0NNZUZOT2FaYmxaRWx2SkFTaWdiZHl4LzdXZHl0bm9NREdUbmJMOE92Z3ZOYVhVT3QrTEZqa3VGTW8vc3lVTE1wemtCcEd5eXR3V09Cbm5hZDNHS0FNZytKdmlqOFJybkdpd1hHbDZWY2pDVFFMNU1hSXN2M3ZQUHpNdzRCMkVaQ25DOVJYT2VNL2h6cmVnVzAycStLUEVkcGNYYzRDUVJyUExQUGN1Q29PUzRYNVZUSnllbTFSL0VLK29vb0lyVzBqZ2dpU0tHSkFpUnhyaFZVREFBQTZBRGdDdm4zeDllVGZFUDRxMm5oYXhiYmJXa3JXdS9nWWJPWjN3ZHBPMExqYm5COHZJKzhLQUxQd28rRkdrYTVvamEzNGhna3VFdU1wYXdpVW91Rk9Ha3lqYnM3Z3lnY0Rnbm5JSTl2MGpROU0wR3dTeTBteGhzN2RjZkpFdU54Q2hjc2VyTmhSbGprbkF5YXQyOXZGYXdSd1FScEZCRWdTT05CaFVVREFBSFlBQ3BhQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vcEQwT2FBUEl2ajU0cHQ3RHd4RjRkUmxhNjFGbGtrN21LR05nMlRnNUJMS0FDUVFkcjl4V3o4Ry9Cdi9BQWl2ZytPNXU3U2UyMWZVZjN0M0hNM0tLR2J5MTI5RitVNUlQelpZNTZZSGwrdUxEOFJQMmhGMHE2bFpkUGduTnFFZEFwTWNDbHBFQlVnNFoxZkRaeUF3UGJGZlN0QUJSUlJRQVVVVmsrSS9FZW0rRnRIbDFQVkpTa0tmS3FxTXZJMk9FVWQyT1A2bkFCSUFKdGIxaTAwSFJielZieVFMYjJrVFNQeU10aitFWklCWW5BQXp5U0JYaFd1ZkdEeEw0cDhUV2VtZUNZWnJhTi9rVkhoamtsbVlqTE0yUXlxb0dlaDZCaVQyWGl2Ry9qZldQSEY3TmZTTGRXK2xJOGFKWmh6SkZBMjFzYmlBQnVQNzBna2JzQWdaQXIwdjREK0NVUzAvNFM2OVVtVnpKRFl4c2lrS3ZBYVVISklKSVpCMHdBM1VNTUFIdDlGRkZBQlJSUlFBVVVVVUFGRkZGQUJYQ2ZGbnhjUENuZ3VmeUp0bW8zMmJlMjJ2aDB5UG5rR0NHK1VkQ000Wmt5T2E3dXZuRHhWUEw4VHZpN2JhUHBrN1hta1d6SkY1bG8zeXBCbFROS0MyVnpra2JnTU50akEzWjVBT3krQ25oaVBRUENsejRsMUpVZ252a0xMSk1ObmsyeTg1TE1BVkRFRmp5VktoRFhHZkNuVHB2SG54SXZ2RW1zR1NjV2ppOE95VGFxVGwvd0J5b3lTMndCV3dBZUFnVW5Cd2R6NDIrSXJIU2ZEdGo0SDBreGdCWTF1WWxiZVlZWXdwaWpPUVRrbmEzWElDRFBEWnIwajRjZUYvK0VTOEcydW55Z2k5a0p1THpKeVJLd0dSMUkrVUJWeURnN2M5NkFPc0hRVVVVVUFGRkZGQUJWVFU5VHNkRzA2ZlVOUnVZN2EwZ1hmSks1NFVmMUpQQUE1SjRGV21PMFpyNXY4QUZ2aXk4K0szanl5OE42RGQzVU9qeU1JZHBPMVpnRHVlWmtKWGNBRkJWVzUrVVl3V0lvQW4xZnh0NG8rSzJyeStHZERzMXQ5TW1iT3hsRzR4cXlrU1RQZzdjTW9PRnh5MjNMbkdmVXZDUHd3MEh3emJXclMyc045cVVNbm1mYm5qWldKQmJiaFN4QXdHNkRxUXA2Z0VhM2hEd2JwWGc3U2haNmZBZ21kVSsxWEFEQnAzQ2diamtrZ2NFN1FjREp4MU9laW9BUUFBWUZMUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGYzc0MzhVdytFZkNWN3E3R05wa1haYlJ1UmlTVnZ1akdRU1A0aUJ6dFZpT2xkRlh6WjhhUEV4MXZ4bkZvRVdwZVhwMWhzam5HN01RbkpKZVFoQXhPMVNGT1JsU0h3UFVBOCs4TTZSSnIzaUd3MDJOcGQxMU9zVzVFTGxGSitadG83QVpKOWhYMm1veG12bkQ0S2FMTnFYang5WWlWTGEwMDhQSThTWktocFZaRmpHNWl3R0N4Qk9UOG1DZWNuNlFvQTVmeC80b2o4SitFcnkrTXJwY3lxWUxQWWdZK2V5bmFjSGpBeHVPZU1BOWVCWG5md1A4T3RkU2FsNHIxSzFFdHhQSjVkcmN6YjJjazVNempjTUhjU0ZMQWtrcTQ0NXpVK05HcHgrSXZGV2plRDdHNGxXNVNjSmNCeVZoRWsyd1I1OVNGSk9RT0EzQis4QjdQb2VrMnVoYUxhYVZaSUZndFl4R3ZBQk9PckhBQUxIcVRqa2ttZ0RRb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUN1WStJbXNmMkg4UGRjdmxrbmprVzFhS09TQTRkSkpNUm93T1JqRE1EblBHT0s2ZXZCUDJpOWJYZm91aHJQa2Z2THllRFoySHlSdHVJLzY3REFQMUgzYUFJdjJlL0NzTXIzM2ltWlVjeE9iTzBYQWJZY0JuZmtjSERLQVFRY0Z3UnlLK2dLd1BCR2ludzk0STBiU25nTUUwRnFubnhsOTIyVmh1azVCSSsrVzZISHB4Vy9RQVVVVkZjWEVWcmJ5VHp1c2NNYWxuZDJDcWlnWkpKUFFEMW9BWmUzdHJwOW5KZFhsMURhMjZZM1RUdUVSY25BeVNRT3BBcjVxMXJYTC80d2VOb3JTR2FUVDlGaFV1Uk83R0szaWozRnA1UUcyaDhFak9RT1ZYZC9FYkhqVHhMcS93QVdQRXNPaCtIOU5sa3RiVnBaSVZqa0lFNEJ3SjMzYkFueWdBQnVSdkl5U3dGZFQ0OHVkSStHSHcxWHdubzhzWTFQVlZ4TnRZN21VcUZsbUtuZHREQmRvQUkrOGR2M1RRQjU1WjJVZnhHK0lWcm8yajJUNmJvU1NBcmJSNEJoZ1ZWRWtqRUtmM3JoUjh6WkpPeFN4QVUxOVRXRmpiNlpwOXRZMmtmbDIxdEVzTVNiaTIxRkFDako1T0FCeWE4NCtCL2hrYU40TFRWSFNSYnJWbjgyVHpGS2tSS1dFZlU4ZzhzRzR5SkIxd0RYcUZBQlJSUlFBVVVVVUFGRkZGQUJSUlFUZ1pvQTVMNGwrSkxqd3I0RTFEVTdLNGhodmdFaXRqTGc1ZG1BTzBIN3pCZHpBYy9kNUJBTmVZZkN6K3p2QS93NjFUeHBxcXFzOXl4aHM5N0tES0Y0RWFiUVdVdElIRGUwWWJBQzVxbDhadFFtOFllUE5NOE5hSVB0czFtclJtTzNCeUozUHpxeloyNFZVWDB4bHNucnRxK0pSL3duWGpPdzhGZUVQbDhQYWFWalg3Tjg4S2MvdkxnNXh1STNFWkxIY2VRY3lISUJkK0V1ajNmalh4OWZlTWRhaTN4MnNwZEF3SlF6c01xcTdnZmxqWGtESUs0aUk0cjZGQUE2Q3Nmd3Y0ZXQvREhodXcwZTJZTkhheGJTMk1iM1BMdHlUakxFbkdlTTQ2WXJab0FLS0tLQUNrTEtCa2tENm1na2djRE5lUWZHVDRseTZCQ3VnNkhjeHJxZHdwKzB5eGttUzFqd0NBT3dkZ2VEbklHRGdibElBT1grS3Z4Tms4UTNLK0dQREV0eEpBSmZMbXViVm1KdTJiY25sSUZQenB6anZ2UFRBQUxlcGZEZndERDRFMFZveko1K28zZTFyeVVINWNybmFpZFBsWGMzT01ra25nWVVZdndoK0hNZmhYVFJyRjg3dnE5OUFOeUhLL1o0MnczbGtFQTd1RkpKSEJHQmpCTGVuZ1lBRkFDMFVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFCUjFmVW90STBpOTFHY09ZclNCNTNDQUZpcUtXT0FTQm5BOVJYeDlaemFnbW42bHJSZEpIdTJOb1o1bUxUTTBuN3lSbzI3bmFOam5QM1pnQ0NIcjZMK05sN2Iydnd4MUdHZVRhOTFKRkRDdTNPOXc0a3g3ZkxHNXlmVDgvbmJ3YjRjbjhUK0piTFNvWVpaSUhsVnJsb2lGTVVHUUhiSkdCd2U0NmtER1RpZ0Q2UytFV2tuU2ZoenBwZUF4VFhtNjdrRzdkdURuNUc2a0RNWVRqOCtjMTErcTZuWmFOcGsrbzZqZEpiV2tDN3BKWE9Bb3pqOFNTUUFCeVNRQm1yU2tiVDF4azlhOG4rUEhpQ0swOEsyK2l4WGlMZFhzNlBMYnFBek5BdVRrOGNEekFtRHhuQkE3MEFjajhLTE9meHQ4VGIvQU1TNnNubmZaQ2Jsc3R1UkoyT0kxMnZrNFZkeFhISytXdlBhdmVOWjFCZEkwcTR2MlRlc0s1MkJ0dVNUNjloenlmeHJtZmhYNGRidzM0RHNiZWUzOG04dWQxMWNCdHdiZS9RTUdBSVlJRVVqQTVYdjFycE5lK3lEUU5TZStoYWEwVzFrTTBhOEZrQ2trQTlqanB6UUJtK0NQRWorS05BRjlMR3NjNlN0REtxS1FwSXdRVnlTY2JXWHIzelhTVjUvOEh6Y253VVRQNW5sbTZrOGpmbkd6QzUyNTdidC9Udm52bXZRS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0FKeFh5L2Mzc0h4SCtQMXExazV1dE9lNmk4dEwxVHNNRUtocEZDbk9GYlk1Q2tEbC9tQUpOZStlUGZFTVhoandYcWVvdmVKYVhBdDVFdEhZQWt6bFQ1WUM4N2puMk9BQ1R3RFhrL3dDemhvd0oxdlhXZ3lQa3RJSml3NC9qa1hhRC93QmNUa2oySGVnRDN0UmdVdEZSM0U4VnJieVR6eUpIREdwZDVIWUtxcUJra2s4QUFVQUpjWE1GckJKUGNTcEZERWhra2trYmFxS09TU1R3QUIzTmZQZnhGOGUzUGovVW9mQ2ZoVkpMMnlsZU5zcEc4Y2x4S054STVJSGxnYlNkeWdBcVd6Z0FsL3hIOGNUL0FCQTFhMThLZUdJN21XRVhEeHpCR1FpOFpXd3BVZ2tlV05wWU1XQUkrWWdiUWE5VThDL0QzU3ZCVm4rNlZMblU1RktUMzVRcTBpN2lRTnBadHZCVUhCK2JhQ2FBSnZBbmd1eThGK0hvclNHSlB0MHFxOTdPRHZNc29IWTdSOG9KSVVZSEhKR1N4UGdzYVgveGgrS3N6bzBxV0pjTzZNMnd3V2FNQnhrc0E1QjZBRWIySjRHU1BWZmpkNHYvQU9FZDhLalM0bFlYT3NMSkNzdVJ0U01iZk15Q0Rra01GSCs4VGtFREx2Z2Y0Vmw4UCtEcEwrN2lqVzUxVjFuUmtrTEUyKzM5MEQyQitaMjQvdkRQUEFBUFRnT2hPTSt0TFJXZHFtdmFUb2hpL3RUVTdPeTg3UGwvYVoxajM0NjQzRVp4a1orb29BMGFLS0tBQ2lpcTE5ZjJ1bTJrbDNlM0VOdGJSNDN6VFNCRVhKQUdTZUJ5UVB4RkFGZ2tEclMxODlhcjhadkZmaWpXcmZTL0IybmZaSGxtMnc1VkpaNWNGdXU3S0l1M0JJd2R1MG5kaXZvVUhJQkhTZ0FySDhVYS9iK0dmRFYvckZ3QXlXc1pZSVNSNWprNFZNZ0hHNWlGempqTmJGZUkvdERhekdtazZSb2lsRFBMT2J0OFNqTWFvcFZkeVl5UXhkc0hwbU05YUFQRDVOWHVwdFF2NytRNzd1ODNsN25KallOSVQ1allVZ2ZNQ3lrRUZkcnR4MEkrbS9oVjhQaDRPMFUzR29SMjc2MWRMaVowRzR4SnhpSU5uQndSa2tjRTRISVVHdU0rQjN3L2xoWmZGdXIycnhQcy93Q0pZalBnbEdCRFNNdU9oQnd1VHlDVGo3cHIzVURIYy9pYUFGb29vb0FLS0todWJpTzB0NWJpZVJJb0lrTHlTU050VkZBeVNTZWdBR1NhQU9TK0l2eEJzUEFtakxKS3J5NmhkTEl0bEVxYmxMcXZWeVNBRURGQWNIUHpjRHJqeTc0Uy9EMmJ4TmV5ZU52RXJRM2NGeExNOFVFa1NPdHpJeFpaSGRjWTJoaTJCZ0VubmdENXNLNHVOUytObnhPanQ0amNRNlBDUTZ3dktGTnZhcXloM0hCSG1NY2RtNVpSa3F1UjlMMkZqYjZmcHR0WTJzWml0cmFKWVlvOXhiYWlqQ2pKeVRnQWRhQUxXQjZVbTRBNHFPNG5qdG9Ibm1ramloalV2SkpJd1ZVVURKSko2QWV0ZUErTC9pTnFmeEExbUh3cjRUTnhiMk4zS2JaNXh1emRJMjNMRUJkMGFMdGNubmxTZHdIU2dEdlBHdnhlMGJ3MmJxdzA4blVOWGlMUmxFVStUREp4L3JHNHpqSitWY25LbFR0UE5jVkd2eGE4ZHlXZW9MTytsYWZjS1hnYUs0K3lSS01EcXFreXNHMjVCT2Z2WkdGUEhXZUJmZzVwdmh5NWcxVFZMZzZqcWtXSFZkb0VNTDRISUI1WmxPY01jREJCMmdnR3ZRZFUxWFR0RnMydTlTdW9yYTNYSTN5dGpKd1RoUjFMY0hBR1Nld29BOHMrSDNpSFhkRThiWDNnenhMYzNkOWNPZDBNejNCbEVUS204L01mbUtzdUNQUTQrVUV0ajJLdkdmaGJadzYzNDQ4UWVLNDRtUzJlU1EyM21SOTVXTFpEQTREQlJ5Qi9mNjg4K3pVQUZGRkZBQlJSUlFBVVVWRmNYRVZyQkpQUElrVU1hbDNra1lLcUtPU1NUd0FCUUJMU2JoNjE1SjRrK09WbmE2aStsK0d0TmJXTHJjMEN6YmlJbWw0QytXRkJhVWJpUnh0emdiU2R3TmNuQjhXL0hlbFhrZXRhM283eWFOZEJWaXR6YXRCQXhaY3FZNVNwT1RndHlXQkdjQWNFQUgwUlJWVFM5UWkxYlNyUFVZRWRJYnVCSjQxa0dHQ3VvWVp4M3dhdDBBRkZGRkFCUlJSUUI4L2Z0RTZoRkpyR2lhY3FQNXNGdkxPN25oY1NNb0FCejEvZEhJNDZqMTR0ZnMrZUhpUDdUOFJtVEs0K3dSSUd6bmxaSEo0LzNBQ0R6ODNIUTF3dnhrSC9BQmRqVytuL0FDdzdmOU1JNittUEN1Z3crR1BET242TmJuY2xwRUVNbkk4eGp5ellKT056RW5HZU00b0EyRGtJY0Ruc0JYemg0dU1QeEsrTjl0b2thUGJSMnpOWVN1ekFNNnhOSThqTHdjRWpkdHpub0NldUI3YjQ3MTUvRGZnblY5VWpaa21odHlzRG9vWXJLNTJSbkRjWURzcE9ld1BYcFhsZjdQWGgwTU5UOFJ5eWNqL1FJNGxKQS9oa2NzTWMvd0RMUEdEL0FIc2pwUUI3dGdmalhKZkU2V1NINGQ2dTBVam94UkZKVTRPR2tVRWZRZ2tIMkpycmdNQUQwcmovQUlwZjhrNDFiNlJmK2pVb0FUNFduUHc2MHJqSCt1LzlIUFhZMXgzd3MvNUp6cFgxbS84QVJ6MTJOQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJRZUJtaWc5RFFCNEorMFg0anovWlhocUpRcEgvRXdsZGdQOXVOQXB6L0FOZE04ZjNjSHFLOWI4RmVIUDhBaEZQQjJsNkswdm1TMjBYNzV3MlFaR0pkOXB3UGwzTWNjWnhqUE5mUG5pNjVYeHo4ZTRkUGxnbnViS0cvaTA4d0NQNWhERy83N2xEbmJ1ODF0MmNoVG5qR0I5UWxzSVRrWkhXZ0JTY0hGZUNmRkw0aTNtczZ2SjRJOE5NNm1TYzJsektTRWE0bExiUEpYZGpDYnNoaWV2VDd1ZDI1OFZQaVZjMlVpK0YvRFQrZHFkMW1PVzV0bkR2QVN4VHlrQ2tuemNnK2hYNWNBc1JqWCtGbnd6LzRReUNUVXRRa0w2dmRSZVc4YVA4QXU3ZU1rSFlNY00zeWpMZE9BQnhrc0FYL0FJYi9BQS90UEIra0pjU1JidFp1bzFOMU0rQ1kraDhwY1pBVWR5RDh4R2VnQUhjTjBIUFBibnJUZ01kSzRMNHQrTUY4S2VDWi9zOHdUVWIvQURiMjIxOE9tUjgwZ3dRdzJqb1JuRE1uclFCNDU0aHViLzRxL0Y0YVBCZkxGWkpQSmIyY2hmeklralFFdklnR0EyOElXR2V1Vkc3QUJIMDFiUVJXZHZGYlFSSkZERWdTT09OUXFxbzRBQUdBQVBRVjRsOEdMTFRQQ1hoQzc4WmEzcUZuYnc2aG1LQnBNYmtXTm4zS0QxTE1VSjJLQ1NFVTg5cTNpWDQ1NmhxcjIxajRQc0o0Slp3Rk10eENyeitZV0FDeHFDeW5QVG5KTzdnREhJQjJmeEYrS2RwNE9tR25XTUtYMnJzaFlvemtKYlpIeW1USFVrNE96Z2tjNVg1YytHYUJEZmZFbjRoMkZscnVxWE1qM1RTYjVpMjVrVlZhUXFnUENqZ2dBRGFwUFE5RDFGejhOMThEK0M3dnhKNGxhR1hVa0tMWTZla3FtSlpYQUE4emNwRWpJVHZLQUZTSXprc0dPT1E4QWVJdGI4TmVJRGM2RFlwZTM5ekEwSGtHM2tsTExrT2Rxb1Fjalo3OFpOQUgySFVVMXpEYlcwbHpjU0pEQkVoa2tsa1lLcUtCa2trOEFBY2sxODdSNjM4YTlYYzJDd2F1bjJnRmR6NmZIYkJSZ2svdkdSZHB3T0RrSE9NYzRxeC93b2Z4WHFtcmZhZGI4UVdVZ20vMTl6dmx1SnVGd3Yzd3U3c09XR0IrVkFIYWVLdmpoNGQwZlpEbzRHdFhJbFpKUkd6UnhvRkI1RGxTSHlRTWJjZ2pKeU9NK0srTS9HWGlueGhiV3Mrc0I0ZE9rSmt0SW9yZG83ZG1YQ015ay9mSTVHU1R0TEVER2NWN3ZwSHdYOEY2U3NiUzJNK29UTElKVmx2Sm1icGc3U3E3Vkl5TTRZSEpKem12Si9GTTl4OFV2akF1aldlb2h0UFdWb0xWbXdZNDFSY3l1b1VrTVdLTVFlNDJna0RvQWVpL0Jqd0ZGb21neCtJTGdQOEEyanFVQUtvWEcyR0FrTXVOcElPN0NzYzlPQmdZT2ZWODdWeWUxUjI4TVZyYngyOEVTUlF4SUVTTkZDcWlnWUFBSEFBQTZDdWY4YWVNTEx3Ym9NOS9kdkcwMjBtM3RmTVZYbmJLakNnbk9BV0JKQU9CazQ3RUFoOGUrT2JId05vZjIrNFZKN3AzQ1cxbVgyTk9jamNRY0hBVUhKT01kQjFJcjV3OEdXMnBlTy9pYlpTM3hOOU5KZHJkWHIzQ2wxTVNFRmd3d1FGSUd3REFIekFjQ202cFA0aThkd2FwNHcxaUVTV2VuUmVUNWtTaUJVWjMvZHhvZHAzYlhsREhPVHQ0TEFrRStpZnM2YU1DZFoxeVMzL3VXa0UvbVovMnBWMjUvd0N1SnlSOU85QUh1VnZGRGEyOFZ2YnhKRkJFb2pqampVQlVVREFVQWRBQU1ZcXRiNjVwTjVmVFdOcnFkbFBkdzd2TmdpdUVhU1BhY051VUhJd2VEbm9hNUw0cCtPQjRMOE5mNkhKczFXOURKWi91dDZyZ3J2YzhnRGFEeG5QSlhnZ0d1Qy9aNTBSMnVOVzhRU0s0UlVXeGhZTU5ybkllVEk2Z2pFZU8zSjY5Z0QzbWlrQUFBQTZDbG9BQ2NETmVML3RBK0s0YlRRYmZ3eEJMS0wyOWVPZWRBZzIrUXJOZ0ZqMEpkUVJ0NStRNTRPRDY1cTJwUTZSbzE5cWR3cnREWjI4bHhJc2VDeFZGTEVESkF6Z2V0Zk5YaGF3dS9qRDhVYmpVTlk4K1RTNGlaWjQyYzRpaUJQbDI2a0xqa24vWkxBU05uZHpRQjY5OEgvQlNlRXZDTVU5eEc2YXRxU0pOZGhpUnNBenNUYVFNRlEzUEdkeGJrakZlaEZnQmtuQTk2TUJlZUIycnp6NHcrTVArRVg4SXRiMnR6TkRxbW8vdTdSNFY1VlZLK1lkMzhQeW5HUnpsZ1IwSkFCd3Z4SytKYy9pWFVCNFE4SlRDV0c1bUZ0TmRSc1A5SlppRjhwRGtEWVNjRnY0dVJ3dVMzb1h3L3dEaG5wM2d5eGpubWpndTlaUHp5WGJSNThvNEkyUlo1VmNNUm5ndGs1d01LT2ErQ1BnUzMwL1NJL0Urb1dvL3RHNzNHMERnL3VZU051NERHQXpZUEl6bFN1RHljOWg0eCtJK2hlRHJlZGJpNlNmVUkxekhZd3R1a1pzQWdQZ0h5d1F3T1c3WkkzZEtBT2wxUFU3TFNOT24xRFVKMXQ3UzNVdkpLK2NLQitwSjZBRGtrZ0RrMThvK0pQRStvK05kZmx2THNzcUZpYmUyOHhqSGJyZ0E0QjZaQ2dzUUJrODRIQURmRm54RThRZU1FTnZxVnhFTE5aVm5TMmdnQ0pHNnFWQkRITEhxeDVZOWZZWTlUK0dQdzd0Tk8wNVBFbXZlVWthb3R4YmxwV2pFZXhpeGxmT09NS3BIT01ISjdVQWR2NFMwNnkrSHZnQ01hcGNwYmlKVGMzc3JkRmRzZkx3VGtqNVVHUHZFREF5Y1Z3L2liNDVTcnFNT24rRWRQWFVIZGxWWjVvcFAzckhqWWtRMnNUa2prNDVCQUI2MXp1cjZsclh4aThicnBPbkdTSFFMV1loSlVqZG8wWEJJbWs0SHpzRk8wTmpydDRKWW4yYndsNEgwVHdoYUdMVDdYZk8yNFNYYzREVFNBa0hhV0FHRjRIeWpBNDduSm9BOG91WVBqVnJTelQ3TG0yaHUxUmhGQmNRUWVXb1lzcWo1ZzZINWdEMFlnQU5uR0tQQW54UTFuU2RmaThJK0pJNTcyWnIvQU95ZmFKSmcwc0VoWXJ0WS93RExSZCtBRG5qSnh1K1VWNzV0WDBIclhnUHg3OEpXOXROYStLYmNsSkxtUVd0MkN4TzU5bjd0MUdNZmRqWlNNaitIamtrZ0h2eW5JelMxaCtFdkVVWGl2d3hZNjFGYnZiTGNxeE1Ua0VveXNWWVo3amNwd2UvSFRwVzVRQWg2ZHZ4cjUvOEFpMzRrdWZGdmlXejhJK0czdXJobzJraHVZb21kRmxtRGo1R1JzQWhQTDNiamtBRW5JeG12WnZGdXZRZUcvREYvcVVrMXJITEZESWJkTG1RS3Nzb1FzcWNrWkp4MEhKN1Y4dWVHUEhMZUhkVzFQeEpMWlJYL0FJaHVYekE4NktJWXk3RnBwQ0JnN3o5MWRwQXd6WjdBZ0h2WGhQNFdlRy9CZG45dnZ6RGZYMXZ1bGJVTHBRcVJLQ0dES2hKVk5vUUhlZVFkeHlBY0R5THhkcjJyL0Z6eGhGcG1oYWVseGJXRFRHek1RSU1rUjJobmtkeUFvT3dFWkM0M0JlVGpQQTNtcDNPdDYxSmY2dmV6eVQzRW02NHVBb1p3T2h3dVZIQTRDNUF3QU9BSyt0ZkJQZ3Z3OTRUMDFtMEV2TWw0cU85MjgvbUdkUnVLSGo1Y1ljZ0ZRTWpHYzBBYnVrYVpEbzJrMldtMjdPME5uYnBibzBuTE1xS0FDVDY4VmRvb29BS0tLS0FDb2JxZUcydHBKN2lhT0dDSlM4a3NqQlZSUU1ra25nQWVwcWF1QitNSGlKdkQzdzd2dHNSa2sxRC9BRUJDVnlGOHhXM0U4Zy9jRFk2OGtjRVpvQThZOEphVmErT3ZqWGR5cW4yblNqZjNHb1NmS0FHaUVoS0ZsZnFwWXFwWEdjTWVuVWZVdGVGZnM1UXpMRDRpdVdobDhsM3QwV1ZoOHJNb2tMS0Q2amNEajBZZXRlNm1nRHhyOW9YVjVyYncvcG1rUjcwanZwMmxtY1NGUVVqQStVanVDWkZQUFFvTzVHTzcrSE9neGVIdkFXa1dpVzhrRThsdWx4Y3JLbTJUem5BWjkzQU9RVHQ1NUFVRHRYaHQxZVcveEgrUEZsSlpTaTYwNTdtTFlsNGhLTkRDb1oxQUlPRmJiSVFwQUh6YzRMR3ZwcEFRT2FBSFZ3SHhpdnZzbmdLU0RadUY1Y1JRWnpqWmdtVFB2L3E4ZHV1ZTJEMzllYWZHL2p3WlpmOEFZUmovQVBSY2xBSFMvRDZ3L3M3d0ZvMFBtYjkxdUpzNHhqekQ1bVB3M1k5OFpycHF4dkNQL0ltYUgvMkQ0UDhBMFd0Yk5BQ2Joam5qNjB0ZVJlTVBFVjU4Ti9HMGQrQTl4cG1zYlh1dk9Lc3dLTjh3ajVVamFoRzNQSFBmSEhyRnZORmMyMFU4RWlTeFNJSFI0MkRLeWtaQkJIVWU5QUV0RkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVmorS1BFRnY0WDhOYWhyVnl1Nk8waUxCTWtiM09BaTVBT056RlJuSEdjbmdWc1Y0NyswSnJ6V1BoT3owWkM0YlVyamMveXFWTVVRQks1NUlPOW95TUQrRTg0NElCem43UC9BSWZuMUhYdFU4WTNyQ2ZabTNpa2x4STd6dmhwSDNFN2d3QkFKeHo1cDU0SXJyZml6OFRJTkRzTHJRTklublhYSk5xU3lSZ3A5bFJsVnM3aU9XWld3TnZJeVRrRURQR1cvaTIxK0hud25zTkEwNlZIMS9WcmMzazhzRHZpMldZWlZ5ZUNKUEsyQUt1TUVidlRmMEh3aStGb3MxaDhTK0liWi90dTRtMHNwNG1Rd0ZXSUVqcVFNdnhsZU1EaHVTUmdBcy9DUDRkUzI3eCtOTmNtZVhVYnRUTmFvWDNFTElPWlpHL2lkZ3g0N0E4OC9kOWlvd0IwRkZBR1I0bDhSV25oWFFibldMNk9WN1czMmJ4RHRMbmM0UVlCSUhWdld2bDM0bitPSXZIUGlpSzVzNHJ1UFQ3V0FReFJUa2ZlSkpkOW9PRkp5bzZuSVFFK2c5WC9BR2dkZnU5TzBEVDlKZ1pCYjZpMGhuQlVFdjVaaktxTTlCbHNudjhBS08yYXlmMmZmQ0RwOXE4VlhzUnhnMnRsdlhIL0FGMGNBcjlGREEvODlBYUFPZThQL0R6eHQ0NlRUSmRXdTU3WFJVdFFMV2E1WVBzUlZWRkNRaGg5NEtwejh1NVJ1eVNSbjNudzc0TDBMd3Rhd3hhVllRUnl4eEdJM0xScVpwQVRrN254azVJQngwNEdBQUFCMEdLYTV3UGIxb0E4Ry9hQjFHYTcxalEvRDFxTGw1dHJYRFJJQ3l5RjJDUjRWVHk0S3YxSEcvZy9NYXgvSC9oRzcrSGErR2ZFV2p5SmFYTWR2RGEzVXRvZmtGeWtlQzR6OTRPQTJSc3dkcDNaTDFTOE4zWitJbngzZzFieUo0N1kzWDJ3ZVVuTWNjS2Z1dCtOd0dTa1liM1lnRVpGZWtmSDJTQmZBTnR2REZ2N1JpRVJSOW9WdGtuM2hna2phRHdNYzRPZU1FQTlJMFRXYlB4Qm8xbnF0aSs2MnU0VmxUSkJLNTZxMkNRR0J5Q004RUVkcTBLNEw0TUJ2K0ZVNktTT29uSVB0NThtSzcyZ0RoL2k3cnE2RjhOOVRPWS9Pdmwrd3hMSXBJWXlBaGh4ME96ZVJuaklIMHJsZmdKNFkvczd3OU40am5rZ2xrMUllWEJpUE1rVVNPeXNDMyswd0J3UDdpbm5vdkkvSEx4RGM2MTR5dGZDdHJITTZXT3dtQlZZbWVlUlFSaFZKM1lWbEM4QnNzL3FLN0h4RjQ1cy9oVDRKMHZ3L1lwWXplSUliV09ONFlkclJSU0FSbDJsQVpXRzhNektjWllqSjcwQWR0NDQ4YjZYNEkwVTM5OGQ5dzVaTFcxVmdIbmZIUWRjS01nbHUzSEJKQVBnSGhYd3g0aStNdmlaOVUxdTltTmhEdGp1YjNhRjRISWlpVURhR09jOU1ESlk1SkFiUzhLL0R2eFA4VGIxdGI4Vlg5OUJaY0ZKN2hUNWx3ckhkaUpUZ0ltR1lnNDJnc0FBUmtENk5zN0cxMDZ6anRiRzBndG9JODdJb0l4R2k1Skp3QndPU1QrTkFIalB4dHQ5SjhLL0Q3VGZEK2t4SllyZDNnYzI4S2tDZU9OQ0daeVB2a0V4Y3NTU1FEempqcC9BUXMvQkh3YnROUzFIeWtqVzFmVUoyaTI3cFRKbGtHVHQzU0ZXUkFEM3d1Y0FWNVg0N21iNG1mR1NIUkxDRjdkb0gvczFuazJzVDVUeU5KSmpJR0FDNUFEWklYc1d4VnZ4L3dDSTcvNG9lTXJmdzE0ZnQzbHNMTzRhTVNJelNJN2xnaG5jcGtDTlNlRGc0R1RuNXRvQU9JOFc2N3Ezakc4dnZFRjZjMjBjcTJxQXNuN2xYTXJ4UmpBQmJBV1Q1c1pPT2NIZys4ZkFXd2xzL2h5SjVDaFcrdTVMaVBhVGtLQXNlR3ozekdlbWVDSzVuNHArRVl2Q3Z3WDAzUzdCSkowdGRTU1c2dVBLQUxNeVNneVBnY0RjeXFNOUJ0R1R4WGEvQlM0aG0rRldsUnh6SThrTHpwS3FzQ1VZek8yR0hZN1dVNFBZZzk2QVBRYVFuRlV0UjFuUzlKRVoxTFVyU3o4elBsL2FKMWozNHhuR1R6akkvT3VESGl2Vi9ITjdIYStHbzU3RFRzWXVMMjRoRzVTUHZLcEJLNXd5RVl3MmNjZ0FtZ0NoOGVmRU5uWWVDRG94dzk5cVVpYkV5UXlSbzZ1WDZIdUZVRGpPNDR6ZzFlK0NYaGg5QzhBdzNWeWtZdWRUZjdXVDVhaGhFUVBMVXNDY2pIempwamVSajE0SDQ4K0g0ZEYwcncwTEdCekdqWEtTM0xKeXpOc1pRN2dBWitWc0E5bFBvYTlaK0htdTZQZWVEdERzTFRWYkdlOGcwdTM4NjNpdVVlU0xiR2luY29KSXdjQTU3MEFkZ1Jtdm5ENHplRGZGRjc0N3VOVHR0UHZkUnNicUZGdHpiSTB3aENJb0tFQVpUNXR6ZWgzRWc1M0N2ZXJ2eE5vTmpkdGFYZXVhYmIzS1kzUXpYYUk0eU1qS2s1R1J6WEQ2bjhiUENscGtXYTNlb1NHTGVqUnhlWEh2T2NLUytDT2c1Q25nOStsQUhuVmxvWHhqMXhMR1ZYMURUclRZdHZHaTNDMkN3eHF4R1doUXF3QTUvaEp4akdSZ1ZXMVQ0ZmFMNGQxVCt4VTFHWFc5WmxkSVlZZklOdkZiczQrVXUyVHVKM0lRQXdBd1MyUjhwN0dPYng1OFRaWGoydG9taHVxc2ZrWkZrallzQmh2dlNrb2VRTUljRDd2RmVnZUdQQU9oK0ZkN1drTDNFN05rWEYwRmVSQmpHMVNBQUJna0hISnp6N0FIejc0MjhMNjU0UDFQU05ZMUcxaXViWmlzZ2hNSU50QzRrTG0zS3Fkb1UvZUlBVUhjMk00SnJwZmlWOFVUNHN0OVAwUHdzOXlJYnRWYTRNWWRaWGtjTW4yY29QdmNIa0RjR0pYQjQ1OXY4VGVIN1R4UDRmdXRGdlduUzF1UXZtRzNZSzR3NGNZSkJIVmZUdWE4OCtHL3dmazhJK0paOVcxYTVodkh0OHJwelFzeTRCM0t6dWhIREZTQUFHSUc1dXB3UUFkTjhNdkJTZURQQ2NWdkxodFJ1Y1RYYkZWeWo0LzFZSzlRdkk2bmtzUmpPQjJ0QUFBd0Jpa2J0UUF0YzM0NDBHMzhVZURkVDAxclNPN3VUQTcyaUZnQ2s0VnZMWU1mdW5QR2VtQ1FlQ1JYQS9FZjR6TG9jMTVvdmg0R1RWb0pmS2x1SFJYaGpHdzUySGRuekZZcU1NdUFRd0lPT2VMaCtGWHhGOFcyVUY1ck9vQ1BZTjBFT3JYa2p5SXJBRWtLQTIzUEdRY0hJNUZBRVh3dytLRWZnL1F0VnNkVU4xZHh4b3NtbTIwWStVUHVPNU4zVkFTUWVoSHl1UmtuRFdkYitPZmlmV3JxSzE4TzJVV21zenFGUkZGMU5LNXlBcTVYR0NTdUJ0em52emlzUHh4OE1MendGTmFYZy80bkduRTc1WkJBNktoVmxHeVRZZmxEYmdBUXdKK1lEQkF6NzU4TXRaMGpYZkIwTjdwTmphMlRGOXQ3RGEyd2hRWElWZDVBSFVIZ2c1SnhnSGtFQUE4bjA3NFcrT3ZIZHo5dThZYXJjMlVDcVpvRGN0NXpaa3dXVllndzhvWUhJTzNHRkczcmp6YVh3VjRtdDlhdDlIbTBTOGp2cm1ab29JekdRSldHTnhSajhyS001TEE3UU9jNHI3VHdNNXh6U2JWeUR0R1I3VUFlRC9FWDRTMm1pZkRTeW0wcGZQdnRISmE2bkVRVjdtTmo4N01GVWs3VGdqSndxaHNrOTluNGEvRlh3L0I0STAzVHRhMU40ZFF0RU1HMTdkanVqVS9JVktBZ2dMdFhubktucmtFK3QzTUVOMWJ5UVhFS1RReXFVa2prVU1yS1JnZ2c4RUVFZ2l1VG0rRm5nbTR1bnVXMENCSGNna1F2SkVvSTlFVmdvL0FkZWFBTmZTdkZtaTYzT0lkT3ZQdEVoWGRoSW53QjZrbFFCMUg1aXRxcTlwcDlsWVJlVloybHZiUjd0MnlHTUlNNHhuQUhYRldLQUNpaWlnQXI1My9hRzFhN2JYOUwwWHpDdG5GYWk3MmdrYjVIZDBKWVp3ZG9RWU9PTnpjODE5RVY1NTQ2K0UrbitPZFp0TlV1TlF1YlNlRlVoa1dOVlpYaFZtWWdaNVZ5Vys5a2dZKzZhQUUrQ2Vud1dud3VzSllsS1NYY3MwMDdaUHpPSkdqeU05UGxSUng2WjZtdW44WjZtK2plRGRZMUdLNFMybnQ3T1Y0SlhBd3N1dzdPdkdkMkJnOWM0NzFvNlJwME9qNk5ZNlpibHpCWjI4ZHZHWkNDeFZGQ2pKR09jRDByeXI5b1hWRmc4RzJHbHJjT2sxNWViMmpVc0JKSEdqRnQzWWdNMFJ3ZStEMnlBREUvWjAwNVhuMXpWcGJhUXVxdzIwRTVEQmNIY3pvT3hQRVpQVWpqMTU5OHJpUGhQb3gwWDRiYVBHNlFyUGNSbTdsZUpjYi9BRENYWGNjRExCQ2lrLzdPT2dGZFJxV3Q2Vm8vbC8ybHFkbFplYnU4djdUY0xGdnhqT054R2NaR2ZyUUJmcnpQNDQvOGlWWmNnZjhBRXhUci93QmM1YXl0WS9hQTBPS0M2WFJySzh1cnRReXdQTWdTQnpuRzRuZHUyNDV4dEJQQU8zcU9EMXo0eTZ0NGw4TVhPa2FocGxrcHVOdjc2QXNtMEIwWmNCaTM5MXdlZWQ0NmJUdUFQb0x3YzI3d1ZvUjQvd0NRZmJqZy93RFROYTI2NFA0TzNNTno4Tk5NRUxveGphWkhDa0hZM211MkQ2SERBL1FpdThvQTQ3NG1lSEkvRWZnZTlnMk85M2JLYnEwRWFsbU1xS1R0VlFSa3N1NWNjNDNad2NWelh3TDFuVTlROExYVmplcFBKYldNaUphWExuTzVDUDhBVmpnWjJZSFBvNEdBQUs5V0lCR0RSakZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUl6YlZ6WHlKOFhOZWs4US9FdlV6bGhGWlA5aGlEcUFVRVdRK01kUVpESXdKNXdSMDZEM3I0c2VQN0x3ajRhdUxPTzRjNnpmUVBIYXhRdnRlTGNDdm1ramxRcDVIY2tZSFFrZWIvQUFYK0dVZXFHSHhWckVOdkxwM3pwYTJraXJJSmo4eU03Z2dqQU9RQjFKR2VBQnVBTkQ0U2ZEbVcvdWs4WGE3Wm9rTE1zOWhBcStVZk1EaHhNRlFnQk1naFZ4Z2c1d0JndDcwT2xGRkFCU0U0cGE1RDRsK0pyZnd6NEYxRzVlNGxodWJpSjdhemFISWZ6MlJncEJIM2NZSnprZE9PY0NnRHhUNHdYSThaZkZLejB2dytyMzExREI5aGVKSTJCRTZ5eUYxTzdBd0J6dSs2T1RuQXlQb0h3cm9NSGhqd3hwK2kyeDNSMnNJVXZnanpISnk3NEpPTnpGbXhuak9LOE4rQlBoYWZXUEVWMTR5dnJpVnpaeXVrVGtnbTRuZFQ1aFk1SjRWd2VuSmNIUEJCK2k2QUNzN1h0VEdqYUJxR3BtTHp2c2x0TGNlVnYyK1pzVXR0ejJ6aXRHcVdyYWREckdrWHVtWEJrV0c4dDVMZVJveUF5cTZsU1JualBQb2FBUG5qNEVTV0drM3ZpSHhKcVdvUjIxcHA5b2tNcGRUajk0MjRIUHFQS3dBQVNTM0hiTkRWTlIxTDQyZkVhenRMRld0Tk9qVXJDSkM3K1JFcHkwcnFEZ094d093enNVdC9FZFAvQUlaMThSRFVQTFhXTk0rd0dYQmx6SjVnanoxMmJjYnNjN2QrTThaNzE3VDRIOEVhYjRIMFQ3RFpqemJpVWhycTdkUUhuY2QvWlJrNFhQR1QzSkpBTjZ3c2JmVExHM3NyU1B5N2EzaVdHSk1rN1VVQUFaUEo0SGVyTkZGQUh5ZDhRdFA4VjNmeFkxaVNEU3J6KzBGbEZ6Yi9BR0dPUjI4aENGaW1VcmtqaFYrWVl3MlJ3UVJYWitCUGdMdFpML3hpU1Z5eWpUSTMrZ1Zua1J2Yy9LdnQ4M1ZhOSt3UFNqQUhhZ0JBTVZpK01wNWJYd1JyOXhCSzhNMFduWER4eVJ0dFpHRWJFRUhzUWNjMXQxaWVML0RjWGk3d3JmNkZOY1NXeTNTQUNhTVpLTXJCbE9PNDNLTWpqSXlNanJRQjhlYVBkVFJSM1ZyWldyU1gxOHEya1RSbjVsVm1HNVVVREpaK0V6bkcxblhCM2NmUnZ3ZytIRGVFckdUVmRWaWROY3VWYUpvaTZsWUl0L0NqYXhERTdWT2UzQUdNSEo4TlBoSEg0TG4vQUxYMUc0anVkWTh0NDBTTERRd3FjWUtrcUczWUJHN2poaU1kejZqaWdERDhYZUdvdkZ2aGUrME9lNGUzUzZWUUpVWEpSbFlPcHdlbzNLTWpqSTR5T3RmUDBmaGI0ci9EZDVSb3EzY2xxekFmNkJpNWlrWmdDVzhvZ2tIQ2dGeWdPUmpPRHo5TzBnQUhRQVVBZUQrRC9ncHF0M2VycW5pKzc4dmRLWkpiV09VdkpPZHpidk1rQndDVGc1QllrRThnOVBjYlN5Z3NiU0MxdGwyUVFSckZHbVNkcXFNQVpQUFFDckdCNlVVQVkzaVR3dnBmaXpSWnRLMWVEenJlVDVsSXdIaWNkSFE5bUdmeEdRY2drSHg2L3dEMmN4SDlwZXc4VEFBNzJnaXVMUURvRHNWblZ2b0N3WDFJSGF2ZXFLQVBHdEYvWi8wNnp2bGsxVFc1NzYzVWgvSmhnOGplUXdPR2JleDJrWkJBd2VlQ08vb1doK0EvRFBoMjZOMXBta3d3M0pHQkt4YVJsNElPMHVTVnlDUWNZejN6WFIwVUFJQmpwakZMUlJRQVVVVVVBRkl5aGhnZ0g2MHRGQUhoSHhCK0VXdXY0bm04UStFNVhsbHVyZ3pQYnJMNVVrRDRERjBkbXdjdnVQVWJTVkFCR1NNWmRjK05WbkE4Q3c2cTYyYkNGbU5oSE16ZmV4aGloTW4zZVc1SFE1K1pTZnBDaWdENW1Id3UrSlBpYlVMT0R4QTl3dHNwSU54ZVg2M0FnQndXS2dPeHljQWNkVGpKQTVyM2Z3VjRSc3ZCWGg1TktzbmVYTG1XZVp1UE5sSUFZZ2Z3akFBQTdBRGtuSlBRN1JuT0JuMXBhQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUs4eStNM2dQVVBHT2gyVStsSVo5UXNaR3hBWFZBOGJnQnNidU53S29lU0JnTjN4WHB0RkFIekpMNEwrTWQzYnlXMDl4cThzTXFtT1NPVFdsWU1wR0NDREx5TUhHRDYxcDZMK3p6cWx4cGtjMnE2NURZWFRZUGtSVy9uN0FRRGd0dVVCZ1NRUXVSeHdUbXZvakFIYWpBOUtBT04wRDRXK0VmRDA5dmRXbWtvOTVDaXFMaTVjeXNXR0R2d1R0VnNqT1ZBeHpqQXJyWjdhSzVna2duUlpJcFZLUEc0eXJLZW9JOTZsb29BcldOaGFhYmFwYTJOdEJhMnlaMlF3UmhFWEp5Y0tPQmtrbjhhczBVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVnpYalR4dHBuZ25TUHRsODIrZVRLMnRxcCtlZHZiMFVaR1dQQXlPcElCcytLL0U5bDRUOFBYR3JYcnB0alUrVEd6YlRQSmc3WTF3Q2NuSFhCd01rOEFrZktYamp4WHFmalBWQnJsN2FtQ0p5MXZheHhxVEdpb2R4WGRnYm1HOEVuL2JCd0JnQUFwTzJ0L0VIeGxGSEpNYnJWTlJsamlNaFRhRGdCZHhDTHdxcU1rZ2NBRTE5ZytHOUVnOFBlRzlPMGlEeXlsbkFrUmVPSVJpUmdQbWZhT2hac3NldkpQSnJ5UDluM3djOXJZeitMcmlTUlpMeFh0cmFJYmRyUmhsTFNIdmt1aFVBNCs2VHprVjdpTTQ1NjBBRkZGRkFCWHpIOFp2R0V2aXp4VGJhRHBUcGQ2ZGFsUEpObktaaGRUU0JlUUY0SkdTZ0F5UWQzUE9CN3Y0KzhSeStFL0JXcDYxQkFrODl2R29pamtZaFN6dXFBbkhKd1dCd01aeGpJem12RXZnWjRDdU5TMXFMeFRxRnJ0MDYxeTFyNWdINzZiT053QkhLcjh4M2NZY0xnbkRDZ0QyN3dQNFR0UEIvaGUxMHlDSkVtTWFQZU1rak9zayt4VmR3VzV3ZHZBd0I3Q3VrcEJuSE5MUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGVnIrK3RkTnRKTHU5dW9MVzNUYUdtbmRVUmNrQVpKSUE1SUZXVHgyelh6NThidkdVMnM2dkI0UTBhZDVvWTIyM2NWc1N4dUxnc0FrV0FNc1ZPTWdFamN3QkdWRkFITCtQZkdVdnhHOFJwSmJKY1E2SHA4SmtHNk5Ga2hqSVh6WGJMaFdZa0FLdTRaT3dERE56WDhNZUdaUGlQNDFnc0xTTzZoOE82Y3BpV2NJb2todHd6TXU0azQ4MTJaajNBWm1LcnRYQVpyOXpid3gybmdYd2pPYjhTM1FqdnIySlJDdXAzQmZFU2NzZmtUSUErWUlXSllEb3grZ3ZocDRKaDhGK0VyYTJlM2pUVTdoUkxmU0JSdWFUcUVKQklJUUhhTWNIazlXT1FEckxHeHR0TjArMnNiU1B5N2EyaVdHSk54YmFpZ0JSazhuZ0RyVmlpaWdBb29vb0FRZ0hyU0tnWHBucVQxcDFGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQWN2NC84QUVpZUZmQk9wNm41NWl1ZkxNVm9SdExHZGdRbUZiZzRQekVjOEt4d2NZcjVMZzFlZTBFK3BwcU00MWlhVnRraVNTaWFMUEx6R1JXSExaS1krYklaODdTRkxkNThldkVFK29lT3pwTGZKYmFYR3FSaklJWjVGVjJicGtjRkJqSkh5NUhVMXBmQ1g0U2YybTBQaVR4SkJpdzRlMHM1Ri93Q1BqUElkeC9jOUFmdmRUOHYzd0RxUGdoOE9wTkd0bjhTNjNaN05SbjNKYXd6d3NzdHNnTEJtTzdHR2Y2ZmQ3L09SWHMxSUFCMHBhQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0E0L1gvaG40YThSK0pMWFhyK3kzWGtHTjZyZ1IzT1B1K2FwQjNZd1BxQUFkeWpGZGNpN1Z4Z1U2aWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0QvMlE9PQ==</SignID>
        <SignPass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
        <SignVertreter/>
        <FpDG3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
        <FpFinger1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
        <FpQualitaet1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
        <FpCaptureDevice1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
        <FpWSQ1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
        <FpFinger2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
        <FpQualitaet2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
        <FpCaptureDevice2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
        <FpWSQ2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
      </Person>
    </PassAntrag>Regards,
    Martin

  • How do I get unicode characters out of an oracle.xdb.XMLType in Java?

    The subject says it all. Something that should be simple and error free. Here's the code...
    String xml = new String("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<x>\u2026</x>\n");
    XMLType xmlType = new XMLType(conn, xml);
    conn is an oci8 connection.
    How do I get the original string back out of xmlType? I've tried xmlType.getClobVal() and xmlType.getString() but these change my \u2026 to 191 (question mark). I've tried xmlType.getBlobVal(CharacterSet.UNICODE_2_CHARSET).getBytes() (and substituted CharacterSet.UNICODE_2_CHARSET with a number of different CharacterSet values), but while the unicode characters are encoded correctly the blob returned has two bytes cut off the end for every unicode character contained in the original string.
    I just need one method that actually works.
    I'm using Oracle release 11.1.0.7.0. I'd mention NLS_LANG and file.encoding, but I'm setting the PrintStream I'm using for output explicitly to UTF-8 so these shouldn't, I think, have any bearing on the question.
    Thanks for your time.
    Stryder, aka Ralph

    I created analogic test case, and executed it with DB 11.1.0.7 (Linux x86), which seems to work fine.
    Please refer to the execution procedure below:
    * I used AL32UTF8 database.
    1. Create simple test case by executing the following SQL script from SQL*Plus:
    connect / as sysdba
    create user testxml identified by testxml;
    grant connect, resource to testxml;
    connect testxml/testxml
    create table testtab (xml xmltype) ;
    insert into testtab values (xmltype('<?xml version="1.0" encoding="UTF-8"?>'||chr(10)||'<x>'||unistr('\2026')||'</x>'||chr(10)));
    -- chr(10) is a linefeed code.
    commit;
    2. Create QueryXMLType.java as follows:
    import java.sql.*;
    import oracle.sql.*;
    import oracle.jdbc.*;
    import oracle.xdb.XMLType;
    import java.util.*;
    public class QueryXMLType
         public static void main(String[] args) throws Exception, SQLException
              DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
              OracleConnection conn = (OracleConnection) DriverManager.getConnection("jdbc:oracle:oci8:@localhost:1521:orcl", "testxml", "testxml");
              OraclePreparedStatement stmt = (OraclePreparedStatement)conn.prepareStatement("select xml from testtab");
              ResultSet rs = stmt.executeQuery();
              OracleResultSet orset = (OracleResultSet) rs;
              while (rs.next())
                   XMLType xml = XMLType.createXML(orset.getOPAQUE(1));
                   System.out.println(xml.getStringVal());
              rs.close();
              stmt.close();
    3. Compile QueryXMLType.java and execute QueryXMLType.class as follows:
    export PATH=$ORACLE_HOME/jdk/bin:$PATH
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib
    export CLASSPATH=.:$ORACLE_HOME/jdbc/lib/ojdbc5.jar:$ORACLE_HOME/jlib/orai18n.jar:$ORACLE_HOME/rdbms/jlib/xdb.jar:$ORACLE_HOME/lib/xmlparserv2.jar
    javac QueryXMLType.java
    java QueryXMLType
    -> Then you will see U+2026 character (horizontal ellipsis) is properly output.
    My Java code came from "Oracle XML DB Developer's Guide 11g Release 1 (11.1) Part Number B28369-04" with some modification of:
    - Example 14-1 XMLType Java: Using JDBC to Query an XMLType Table
    http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28369/xdb11jav.htm#i1033914
    and
    - Example 18-23 Using XQuery with JDBC
    http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28369/xdb_xquery.htm#CBAEEJDE

  • Updating a very large xmltype table in xmldb

    Hi,
    I am working on storing a large collection of xml files inside XMLDB (Oracle 10g database). I choose to use the object-relational storage instead of CLOB storage because of the type of queries that have to be performed on this database. The files were loaded successfully into an xmltype table and currently there are more than15million records in the database. I have built functional indexes and text index to improve query performance.
    I would like to know the best way to run regular updates on this database(about once in every two weeks). The update xml files(Five 40MB files with 10,000 records each) contain both old records to be updated and new records to be inserted.
    Each record has a unique id element which can be used in checking to see if it already exists in the database. So the update procedure would require a select on the database to check and see if the record already exists and then update if it exists or insert if it does not.
    Any ideas on how to acheive this within a reasonable amount of time will be greatly appreciated.
    Thanks,
    Uma

    Thanks Mark,
    I have modified the SAXLoader to use a stored procedure inside Oracle which would insert/update as the case may be. It's taking 10 minutes to load a single update file (50MB in size with 10,000 xml records). I have built a text index on this table and it takes 20 to 30 minutes to synchronize the index. I am relatively new to XMLDB and text indexing, and was wondering if there's a way to speed up this process.
    Thanks once again,
    Uma

  • Updating an xmltype table

    hi,
    I have two xmltype tables(eg. testTableSB and testTableNSB), first one is schema-based(conforms to schemaA) and the other one is non-schema-based.
    So the default storage will be object-relational and CLOB respectively.
    I load the same xml document in both the tables. Each table has one row only(suppose).
    Later I use the update statement with updateXML() in RHS as following:
    update testTableSB x
    set value(x)=updatexml(value(x),'/Company/Person[2]/@Degree','PHD');
    update testTableNSB x
    set value(x)=updatexml(value(x),'/Company/Person[2]/@Degree','BA');
    Both updates work. From the documentation, I came to know that in the first table it only updates the node or attribute value whereas in the second update, the whole document is repalced because it is CLOB based.
    My confusion is in the second update since it seems updating (in this case) only the attribute value.
    Please suggest.
    One more question, how to check whether the storage option for the table is object-relational or CLOB. One option is to describe the table. In this way, it gives info for object-relational only not for CLOB. what is the other way to check it? Any data_dictionary table?
    SQL> create table testTableNSB of XMLType;
    Table created.
    SQL> describe testTableNSB;
    Name Null? Type
    TABLE of XMLTYPE
    Thanking in advance.

    Hi
    I as wrote I never tested this possibility... therefore I did the following test.
    A table contains the following XML data:
    SQL> select extract(value(o), '/optw/person')
    2 from optw1_or_ot o
    3 where existsnode(value(o), '/optw/person[@id=5]') = 1;
    EXTRACT(VALUE(O),'/OPTW/PERSON')
    <person id="5">
    <lastname>String</lastname>
    <firstname>String</firstname>
    <sex>F</sex>
    </person>
    If I access the underlying structure, the query looks like this (notice that birthday is NULL):
    SQL> select x.id, x.lastname, x.firstname, x.birthday, x.sex
    2 from optw1_or_ot o, table(o.xmldata.persons) x
    3 where x.id = 5;
    ID LASTNAME FIRSTNAME BIRTHDAY SEX
    5 String String F
    If I update the data, it seams to work...
    SQL> update table(select o.xmldata.persons
    2 from optw1_or_ot o, table(o.xmldata.persons) x
    3 where x.id = 5) t
    4 set t.birthday = sysdate;
    1 row updated.
    SQL> select x.id, x.lastname, x.firstname, x.birthday, x.sex
    2 from optw1_or_ot o, table(o.xmldata.persons) x
    3 where x.id = 5;
    ID LASTNAME FIRSTNAME BIRTHDAY SEX
    5 String String 06-FEB-04 F
    But if I select the XML data again, the data isn't available...
    SQL> select extract(value(o), '/optw/person')
    2 from optw1_or_ot o
    3 where existsnode(value(o), '/optw/person[@id=5]') = 1;
    EXTRACT(VALUE(O),'/OPTW/PERSON')
    <person id="5">
    <lastname>String</lastname>
    <firstname>String</firstname>
    <sex>F</sex>
    </person>
    It seams that Oracle also stores "control" information in another columns.
    Therefore the only way to add such an element is through the updatexml() function.
    Chris

  • Using case when statement in the select query to create physical table

    Hello,
    I have a requirement where in I have to execute a case when statement with a session variable while creating a physical table using a select query. let me explain with an example.
    I have a physical table based on a select table with one column.
    SELECT 'VALUEOF(NQ_SESSION.NAME_PARAMETER)' AS NAME_PARAMETER FROM DUAL. Let me call this table as the NAME_PARAMETER table.
    I also have a customer table.
    In my dashboard that has two pages, Page 1 contains a table with the customer table with column navigation to my second dashboard page.
    In my second dashboard page I created a dashboard report based on NAME_PARAMETER table and a prompt based on customer table that sets the NAME_ PARAMETER request variable.
    EXECUTION
    When i click on a particular customer, the prompt sets the variable NAME_PARAMETER and the NAME_PARAMETER table shows the appropriate customer.
    everything works as expected. YE!!
    Now i created another table called NAME_PARAMETER1 with a little modification to the earlier table. the query is as follows.
    SELECT CASE WHEN 'VALUEOF(NQ_SESSION.NAME_PARAMETER)'='Customer 1' THEN 'TEST_MART1' ELSE TEST_MART2' END AS NAME_PARAMETER
    FROM DUAL
    Now I pull in this table into the second dashboard page along with the NAME_PARAMETER table report.
    surprisingly, NAME_PARAMETER table report executes as is, but the other report based on the NAME_PARAMETER1 table fails with the following error.
    Error Codes: OPR4ONWY:U9IM8TAC:OI2DL65P
    State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 16001] ODBC error state: S1000 code: 1756 message: [Oracle][ODBC][Ora]ORA-01756: quoted string not properly terminated. [nQSError: 16014] SQL statement preparation failed. (HY000)
    SQL Issued: SET VARIABLE NAME_PARAMETER='Novartis';SELECT NAME_PARAMETER.NAME_PARAMETER saw_0 FROM POC_ONE_DOT_TWO ORDER BY saw_0
    If anyone has any explanation to this error and how we can achieve the same, please help.
    Thanks.

    Hello,
    Updates :) sorry.. the error was a stupid one.. I resolved and I got stuck at my next step.
    I am creating a physical table using a select query. But I am trying to obtain the name of the table dynamically.
    Here is what I am trying to do. the select query of the physical table is as follows.
    SELECT CUSTOMER_ID AS CUSTOMER_ID, CUSTOMER_NAME AS CUSTOMER_NAME FROM 'VALUEOF(NQ_SESSION.SCHEMA_NAME)'.CUSTOMER.
    The idea behind this is to obtain the data from the same table from different schemas dynamically based on what a session variable. Please let me know if there is a way to achieve this, if not please let me know if this can be achieved in any other method in OBIEE.
    Thanks.

  • I cannot see XMLType table in sql*plus

    Hi,
    Although I have wokred extensively with Oracle, I am new to Oracle XMLdb. My problem is I cannot see the XMLType tables created under my schema. I can see the tables when I do a select from user_xml_tables. But if I do a 'desc' or 'select from', I get ORA-04043 or ORA-00942. I can desc an XMLType table owned by xdb. I am using Oralce 10g. Please provide a solution asap as a customer is waiting on this.
    Thanks,
    Jayati Ray

    Raghu !!
    GREAT!!!
    It was a BUG in Oracle sql developer, I installed the new version v3.0, It WORKS like a CHARM.
    Thanks a million for your help!!!
    Cheers
    Tony

  • How to delete an .xml file from xmltype table?

    Hi expert,
    I am in I am in Oracle Enterprise Manager 11g 11.2.0.1.0.
    SQL*Plus: Release 11.2.0.1.0 Production on Tue Feb 22 11:40:23 2011
    I have inserted 3 .xml files into an xmltype table: DOCUMENT
    SQL> SELECT OBJECT_VALUE FROM document;
    OBJECT_VALUE
    <?xml version="1.0" encoding="WINDOWS-1252"?>
    <?xml-stylesheet href="http://www.accessdata.fda.gov/spl/stylesheet/spl.xsl" type="text/xsl"?>
    <document xmlns="urn:hl7-org:v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLoc
    ation="urn:hl7-org:v3 http://localhost:8080/home/DEV/xsd/spl.xsd" classCode="DOC">
    <id root="5ca4e3cb-7298-4948-8cc2-58e71ad32694"/>
    <code code="51725-0" c
    <?xml version="1.0" encoding="WINDOWS-1252"?>
    <?xml-stylesheet href="http://www.accessdata.fda.gov/spl/stylesheet/spl.xsl" type="text/xsl"?>
    <document xmlns="urn:hl7-org:v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLoc
    ation="urn:hl7-org:v3 http://localhost:8080/home/DEV/xsd/spl.xsd" classCode="DOC">
    <id root="03d6a2cd-fdda-4fe1-865d-da0db9212f34"/>
    <code code="51725-0" c
    <?xml version="1.0" encoding="WINDOWS-1252"?>
    <?xml-stylesheet href="http://www.accessdata.fda.gov/spl/stylesheet/spl.xsl" type="text/xsl"?>
    <document xmlns="urn:hl7-org:v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLoc
    ation="urn:hl7-org:v3 http://localhost:8080/home/DEV/xsd/spl.xsd" classCode="DOC">
    <id root="09ff06d6-8b85-43dd-b5cc-e22d00f02bd0"/>
    <code code="51725-0" c
    I tried to delete one xml file which with id root="03d6a2cd-fdda-4fe1-865d-da0db9212f34'
    delete from DOCUMENT
    where xmlexists('$p/document/id[@root="03d6a2cd-fdda-4fe1-865d-da0db9212f34"]'PASSING OBJECT_VALUE AS "p");
    but failed.
    Is there any expert can help?
    Thanks a lot!
    Cow
    Edited by: Cow on Mar 11, 2011 7:02 PM

    Hi,
    Namespace issue.
    You have to declare it in the XQuery prolog :
    DELETE FROM document
    WHERE XMLExists( 'declare default element namespace "urn:hl7-org:v3"; (::)
                      $p/document/id[@root=$root_value]'
                     passing object_value as "p",
                             '03d6a2cd-fdda-4fe1-865d-da0db9212f34' as "root_value" )
    ;

Maybe you are looking for

  • Dose JCA support only Weblogic server 6.0 without SP1 ?

              I got a error message when starting weblogic server with SP1 in which           configured the connector architecture beta implentation.           Dose JCA support only Weblogic server 6.0 without SP1 ?           How do i configure JCA on W

  • Need help editing scanned images of old photo album pages PSE 9

    Before I begin this project, I thought I'd get some advice from someone who has undertaken a similar project.  I have three photo albums from the 50's and 60's.  The albums were made by my mother who mounted the photos (mostly black and white but som

  • Want to use the function shuffle to all albums (Music)

    Dear friends, since yesterday I'm unhappy user of the new IOS7. At the old IOS 6 I was able to push the shuffle button in the folder album or artist at the top of the list. Now this button is missing!! (Which crazy developer delete this !!!!) Does so

  • How to determine current state of resource group?

    Good morning! I'm in the process of creating a monitoring policy which would alert if a specific resource group is in a state other than "online". Is there a command line executable available that I could utilize which would return the current status

  • Webservice call on page load

    Hi, I have an ADF application which uses webservices. I have two .jspx pages, one which calls the webservice 'pending contacts' on page load and displays the Pending contact list. The other page is for the new user registration, when I click on the r