3                                ' + +! +" # $%&' 2( ) 2* 2+ ,-. +/ 01 23 &456 789:;<= >? '@ ABCDE O FG OH IJ OK LM FNOP Q +R STU VWX YZ[ +\] +^_` abcde fgh oi V)j klmnopqrs tWuvwxy " z{|}~  + W +  +             \ ^ f@                      4 InnerClasses LogContentscn0Lorg/dataone/integration/adapters/CNCallAdapter;mnsLjava/util/List; Signature5Ljava/util/List;v1mnsv2mnsv1v2mns LOG_AGG_WAITJ ConstantValue()VCodeLineNumberTableLocalVariableTablethis\Lorg/dataone/integration/it/testImplementations/LogAggregationFunctionalTestImplementations;getTestDescription()Ljava/lang/String;setup(Ljava/util/Iterator;)Vn#Lorg/dataone/service/types/v1/Node;i$Ljava/util/Iterator;eLjava/lang/Exception;service&Lorg/dataone/service/types/v1/Service;cap serviceListe1v1mn0Lorg/dataone/integration/adapters/MNCallAdapter;v2mnv1capabilitiesv2capabilitiesmNodecnItercnListmnListLocalVariableTypeTable8Ljava/util/List;9Ljava/util/Iterator; StackMapTablezz<(Ljava/util/Iterator;)VgetMNCallAdapterD(Ljava/lang/String;)Lorg/dataone/integration/adapters/MNCallAdapter;certificateFilenameLjava/lang/String;testMnGetLogRecords_AccesslogEntry'Lorg/dataone/service/types/v2/LogEntry;publicPidFoundZtestPersonPidFoundtestRightsHolderPidFounderr errorString mnCnCallermnPublicCallermnTestPersonCallermnTestRightsHolderCallerpublicAccessRule)Lorg/dataone/service/types/v1/AccessRule;testPersonAccessRuletestRightsHolderAccessRule publicPid)Lorg/dataone/service/types/v1/Identifier; testPersonPidtestRightsHolderPidisLjava/io/InputStream;errorsLjava/util/ArrayList; publicLog"Lorg/dataone/service/types/v2/Log; testPersonLogtestRightsHolderLogcnLogPublicPidcnLogTestPersonPidcnLogTestRightsHolderPid)Ljava/util/ArrayList;E[]hRuntimeVisibleAnnotations-Lorg/dataone/integration/webTest/WebTestName;value!getLogRecords() user-based access4Lorg/dataone/integration/webTest/WebTestDescription;Tests that an authenticated user may only view their own records or public records, and that a CN caller may view all records. Note: allowing access to more than the CN is optional for an MN, so authentication failures for non-CN subjects are ignored.testMnQuery_Access&Ljava/io/UnsupportedEncodingException;sysmetaPublicObj-Lorg/dataone/service/types/v2/SystemMetadata;sysmetaTestPersonObjsysmetaTestRightsHolderObjpublicPidEncodedtestPersonPidEncodedtestRightsHolderPidEncodedpublicQueryPublicObjpublicQueryPersonObjpublicQueryRightsHolderObjpublicObjContentshLorg/dataone/integration/it/testImplementations/LogAggregationFunctionalTestImplementations$LogContents;personObjContentsrightsHolderObjContentstestPersonQueryPublicObjtestPersonQueryPersonObjtestPersonQueryRightsHolderObjtestRightsHolderQueryPublicObjtestRightsHolderQueryPersonObj$testRightsHolderQueryRightsHolderObjcnQueryPublicObjcnQueryPersonObjcnQueryRightsHolderObjquery() user-based access~Tests that an authenticated user may only view their own records or public records, and that a CN caller may view all records.testCnGetLogRecords_AggregatingmnIdpidiImn logRecordsnumMNs skippedMNsmnCallAdapterspids*Ljava/util/ArrayList;GLjava/util/ArrayList;'getLogRecords() create on MN read on CNwTests the getLogRecords() call. After creating objects on MNs and waiting, verifies that logs are aggregated on the CN.testQuery_Params queryContents pidEncodedtitle titleEncodedauthor authorEncodedqueryResult_idqueryResult_titlequeryResult_authorqueryResult_pidTitleAuthorquery() parametersTests the query() call with different parameters - verifies that a handful of parameters work for filtering down on the created object.testCnGetLogRecords_Access publicObjPidtestPersonObjPidtestRightsHolderObjPid Ljava/lang/InterruptedException;publicLogRecordstestPersonLogRecordstestRightsHolderLogRecordsmnIds.getLogRecords() create on MN test access on CNTests the getLogRecords() call. Assumes that aggregation works, sothe testCnGetLogRecords_Aggregating test should be working. After creating objects on MNs and waiting, verifies that logs returned are based on the identity of the caller.getNumQueryContents(Ljava/io/InputStream;)Lorg/dataone/integration/it/testImplementations/LogAggregationFunctionalTestImplementations$LogContents;builder#Ljavax/xml/parsers/DocumentBuilder;docLorg/w3c/dom/Document;xPathLjavax/xml/xpath/XPath;resultCountExp resultNodeLorg/w3c/dom/Node; numFoundAttr numFoundValdocsExp xPathExpr!Ljavax/xml/xpath/XPathExpression;docsLorg/w3c/dom/NodeList;*Ljavax/xml/xpath/XPathExpressionException; logResults  SourceFile0LogAggregationFunctionalTestImplementations.java 12sRuns create/read/etc methods agains MNs in the environment and verifies that the corresponding logs end up on a CN.java/util/ArrayList '( +( ,( -(  0Test requires at least one CN, but got zero CNs. !"# $% &'java/lang/StringBuilder Using CN () *+!org/dataone/service/types/v1/Node ,9 for tests -9. /0.org/dataone/integration/adapters/CNCallAdapter 1` 23v2 14 %& 567 89 :; <= >? @AB CD EFjava/lang/Exceptionjava/lang/AssertionError#Unable to fetch node list from CN: G9 1H.org/dataone/integration/adapters/MNCallAdapterv1 IJ KL MNO P9$org/dataone/service/types/v1/ServiceMNCore Q9 RF S9 TUV W=)Unable to assess v1 capabilities for MN:  : X YZ[ \9 ]9)Unable to assess v2 capabilities for MN: MNs available: (^MN: yTest requires that the environment has at least one MN to work with that supports logging for CN log aggregation. Found: only v1 MN available for use! () Glibclient used by tests calls the /v1/log and /v2/log endpoint with theIidFilter parameter. The v1 MN may still be using the pidFilter parameter! _0=Not enough (responsive) MNs to test with in this environment. 10 ]^public testPersontestRightsHolder'org/dataone/service/types/v1/AccessRule` ab cde fg hi jb!testMnGetLogRecords_Access_public kl%testMnGetLogRecords_Access_testPerson+testMnGetLogRecords_Access_testRightsHolder mn *op qrLtestMnGetLogRecords_Access: Unable to get or create a test object with pid:  s9, t uvjava/lang/InterruptedException wx,org/dataone/service/exceptions/NotAuthorized y91 Unable to fetch Log records for public subject. UExpected a NotAuthorized (only CN or MN admin should have access) but got exception: _z5 Unable to fetch Log records for testPerson subject. ; Unable to fetch Log records for testRightsHolder subject. - Unable to fetch Log records for CN subject. Got exception:  {9%org/dataone/service/types/v2/LogEntry |}IPublic subject should have access to public-accessible object we created.QPublic subject should NOT have access to testPerson-accessible object we created.WPublic subject should NOT have access to testRightsHolder-accessible object we created.MtestPerson subject should have access to public-accessible object we created.QtestPerson subject should have access to testPerson-accessible object we created.[testPerson subject should NOT have access to testRightsHolder-accessible object we created.StestRightsHolder subject should have access to public-accessible object we created.[testRightsHolder subject should NOT have access to testPerson-accessible object we created.]testRightsHolder subject should have access to testRightsHolder-accessible object we created. CN subject (~?) should have access to public-accessible object we created on . pid: C) should have access to testPerson-accessible object we created on I) should have access to testRightsHolder-accessible object we created on java/lang/String $testMnGetLogRecords_Access ran into  errors: testMnQuery_Access_public_testMnQuery_Access_testPerson_$testMnQuery_Access_testRightsHolder_ mprocured test object:  on DtestMnQuery_Access: Unable to get or create a test object with pid: failed to fetch sysmetaUTF-8 $java/io/UnsupportedEncodingException=testMnQuery_Access() unable to encode identifiers using UTF-8solr q=identifier:  /, Unable to run solr query for public subject. fQuery run by public subject should retrieve a positive result count for public-created object. For MN . pid: fQuery run by public subject should retrieve a zero result count for testPerson-created object. For MN lQuery run by public subject should retrieve a zero result count for testRightsHolder-created object. For MN ZQuery run by public subject should retrieve result docs for public-created object. For MN bQuery run by public subject should NOT retrieve result docs for testPerson-created object. For MN hQuery run by public subject should NOT retrieve result docs for testRightsHolder-created object. For MN 3, Unable to run solr query for testPerson subject. jQuery run by testPerson subject should retrieve a positive result count for public-created object. For MN nQuery run by testPerson subject should retrieve a positive result count for testPerson-created object. For MN pQuery run by testPerson subject should retrieve a zero result count for testRightsHolder-created object. For MN ^Query run by testPerson subject should retrieve result docs for public-created object. For MN bQuery run by testPerson subject should retrieve result docs for testPerson-created object. For MN lQuery run by testPerson subject should NOT retrieve result docs for testRightsHolder-created object. For MN 9, Unable to run solr query for testRightsHolder subject. pQuery run by testRightsHolder subject should retrieve a positive result count for public-created object. For MN xQuery run by testRightsHolder subject should NOT retrieve a positive result count for testPerson-created object. For MN zQuery run by testRightsHolder subject should retrieve a positive result count for testRightsHolder-created object. For MN dQuery run by testRightsHolder subject should retrieve result docs for public-created object. For MN lQuery run by testRightsHolder subject should NOT retrieve result docs for testPerson-created object. For MN nQuery run by testRightsHolder subject should retrieve result docs for testRightsHolder-created object. For MN 6Unable to run solr query for testRightsHolder subject. Query run by CN subject (G) should retrieve a positive result count for public-created object on ;) should retrieve result docs for public-created object on testMnQuery_Access ran into 1 F:  testCnGetLogRecords_Aggregating__obj22org/dataone/integration/adapters/CommonCallAdapter QtestCnGetLogRecords_Aggregating: Unable to get or create a test object with pid:  on MN  (mn #) zGtestCnGetLogRecords_Aggregating: Should be able to get record for pid:  on originating mn (call adapter: ?testCnGetLogRecords_Aggregating: Unable to get record for pid: MtestCnGetLogRecords_Aggregating: waiting for log aggregation: (4.0 minutes)> testCnGetLogRecords_Aggregating: unable to fetch log records for pid  Got exception: ">testCnGetLogRecords_Aggregating: getLogRecords() call for pid ? should have a total number of results greater than zero on CN (waited ( minutes for log aggregation)1 should contain more than zero log entries on CN )testCnGetLogRecords_Aggregating ran into BtestQuery_Params: Unable to get or create a test object with pid: `"PISCO: Physical Oceanography: moored temperature data: Terrace Point, California, USA (TPT001)""Margaret McManus".testQuery_Params() unable to encode parametersIquery made by as CN should return some results when filtering on pid for 3 Unable to run solr query with params: identifier. q=title:Kquery made by as CN should return some results when filtering on title for . Unable to run solr query with params: title.  q=author:Lquery made by as CN should return some results when filtering on author for / Unable to run solr query with params: author.  &q=title: &q=author:cquery made by as CN should return some results when filtering on identifier, title, and author for B Unable to run solr query with params: identifier, title, author. testQuery_Params ran into |"testCnGetLogRecords_Access_public_&testCnGetLogRecords_Access_testPerson_,testCnGetLogRecords_Access_testRightsHolder_HtestCnGetLogRecords_Access: Unable to get or create a test object on MN HtestCnGetLogRecords_Access: waiting for log aggregation: (4.0 minutes)!log aggregation wait interrupted!!getLogRecords run by CN subject (J) should retrieve a positive number of results for public-created object (N) should retrieve a positive number of results for testPerson-created object (T) should retrieve a positive number of results for testRightsHolder-created object ($testCnGetLogRecords_Access ran into forg/dataone/integration/it/testImplementations/LogAggregationFunctionalTestImplementations$LogContents 1  org/xml/sax/InputSource 1r MgetNumQueryContents() unable to convert response to document, got exception:   /response/result   org/w3c/dom/Node numFound 5query response doesn't have valid numFound attribute. 9 /response/result/doc org/w3c/dom/NodeList "(javax/xml/xpath/XPathExpressionException.getNumQueryContents() xpath expression error: query results: numFound =  s returned = wThe numFound attribute doesn't match number of elements found. Subject used probably doesn't have access to them.Zorg/dataone/integration/it/testImplementations/LogAggregationFunctionalTestImplementations3org/dataone/integration/ContextAwareTestCaseDataone\org/dataone/integration/it/testImplementations/LogAggregationFunctionalTestImplementations$1java/util/Iteratorjava/util/List'org/dataone/service/types/v1/Identifierjava/io/InputStreamjava/lang/Throwable org/dataone/service/types/v2/Log+org/dataone/service/types/v2/SystemMetadataorg/w3c/dom/Documentjavax/xml/xpath/XPath,org/apache/commons/collections/IteratorUtilstoList&(Ljava/util/Iterator;)Ljava/util/List;size()Iorg/junit/Assert assertTrue(Ljava/lang/String;Z)Vlog Lorg/apache/commons/logging/Log;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;get(I)Ljava/lang/Object; getBaseURLtoStringorg/apache/commons/logging/Loginfo(Ljava/lang/Object;)V cnSubmitter getSessionA(Ljava/lang/String;)Lorg/dataone/client/rest/MultipartRestClient;e(Lorg/dataone/client/rest/MultipartRestClient;Lorg/dataone/service/types/v1/Node;Ljava/lang/String;)V listNodes)()Lorg/dataone/service/types/v2/NodeList;%org/dataone/service/types/v2/NodeList getNodeList()Ljava/util/List;iterator()Ljava/util/Iterator;hasNext()Znext()Ljava/lang/Object;getType)()Lorg/dataone/service/types/v1/NodeType;%org/dataone/service/types/v1/NodeTypeMN'Lorg/dataone/service/types/v1/NodeType;add(Ljava/lang/Object;)ZgetNodeBaseServiceUrl*(Ljava/lang/String;Ljava/lang/Throwable;)Vping()Ljava/util/Date;getCapabilities%()Lorg/dataone/service/types/v1/Node; getServices)()Lorg/dataone/service/types/v1/Services;%org/dataone/service/types/v1/ServicesgetServiceListgetNameequals getVersion getAvailable()Ljava/lang/Boolean;java/lang/Boolean booleanValuejava/lang/ObjectgetClass()Ljava/lang/Class;java/lang/Class getSimpleName getMessage(I)Ljava/lang/StringBuilder;warn)org/dataone/client/v1/types/D1TypeBuilder buildSubject:(Ljava/lang/String;)Lorg/dataone/service/types/v1/Subject; addSubject)(Lorg/dataone/service/types/v1/Subject;)V'org/dataone/service/types/v1/PermissionCHANGE_PERMISSION)Lorg/dataone/service/types/v1/Permission; addPermission,(Lorg/dataone/service/types/v1/Permission;)V getSubjectbuildIdentifier=(Ljava/lang/String;)Lorg/dataone/service/types/v1/Identifier;procureTestObject(Lorg/dataone/integration/adapters/CommonCallAdapter;Lorg/dataone/service/types/v1/AccessRule;Lorg/dataone/service/types/v1/Identifier;)Lorg/dataone/service/types/v1/Identifier;f(Lorg/dataone/service/types/v1/Session;Lorg/dataone/service/types/v1/Identifier;)Ljava/io/InputStream;org/apache/commons/io/IOUtils closeQuietly(Ljava/io/InputStream;)VgetValuejava/lang/Threadsleep(J)V getLogRecords(Lorg/dataone/service/types/v1/Session;Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;)Lorg/dataone/service/types/v2/Log;getLatestRequestUrl*(Ljava/lang/Object;Ljava/lang/Throwable;)VgetLogEntryList getIdentifier+()Lorg/dataone/service/types/v1/Identifier;$org/dataone/service/types/v1/Subject(Lorg/dataone/integration/adapters/CommonCallAdapter;Lorg/dataone/service/types/v1/AccessRule;Lorg/dataone/service/types/v1/Identifier;Ljava/lang/String;Ljava/lang/String;Lorg/dataone/service/types/v1/ReplicationPolicy;)Lorg/dataone/service/types/v1/Identifier; getNodeId.()Lorg/dataone/service/types/v1/NodeReference;*org/dataone/service/types/v1/NodeReferencegetSystemMetadata~(Lorg/dataone/service/types/v1/Session;Lorg/dataone/service/types/v1/Identifier;)Lorg/dataone/service/types/v2/SystemMetadata;java/net/URLEncoderencode8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;querya(Lorg/dataone/service/types/v1/Session;Ljava/lang/String;Ljava/lang/String;)Ljava/io/InputStream; existingLogs docsReturned handleFail'(Ljava/lang/String;Ljava/lang/String;)V(I)Vcontains replaceAlljava/lang/IntegervalueOf(I)Ljava/lang/Integer;error-(Ljava/lang/Object;)Ljava/lang/StringBuilder;getTotal(D)Ljava/lang/StringBuilder;(Lorg/dataone/integration/it/testImplementations/LogAggregationFunctionalTestImplementations;Lorg/dataone/integration/it/testImplementations/LogAggregationFunctionalTestImplementations$1;)V(javax/xml/parsers/DocumentBuilderFactory newInstance,()Ljavax/xml/parsers/DocumentBuilderFactory;newDocumentBuilder%()Ljavax/xml/parsers/DocumentBuilder;!javax/xml/parsers/DocumentBuilderparse1(Lorg/xml/sax/InputSource;)Lorg/w3c/dom/Document;javax/xml/xpath/XPathFactory ()Ljavax/xml/xpath/XPathFactory;newXPath()Ljavax/xml/xpath/XPath;compile5(Ljava/lang/String;)Ljavax/xml/xpath/XPathExpression;javax/xml/xpath/XPathConstantsNODELjavax/xml/namespace/QName;javax/xml/xpath/XPathExpressionevaluateA(Ljava/lang/Object;Ljavax/xml/namespace/QName;)Ljava/lang/Object; getAttributes()Lorg/w3c/dom/NamedNodeMap;org/w3c/dom/NamedNodeMap getNamedItem&(Ljava/lang/String;)Lorg/w3c/dom/Node; getNodeValueparseInt(Ljava/lang/String;)INODESET getLength! %&'()*+()*,()*-()*./0 1233*4 +5 67893-465 67:;3*Y*Y*Y*Y+ M ,  Y,*Y,YN* :!&":#$ -%W֧(:'YY(*)*- :!":+Y,-:+Y-::: .W/:  01:  :  !> "2: 3 45", 65 78  :A: Y9:; <=; >.W/:  01:  :  !> "2: 3 45" 65 78  : A: Y?:; <=; ># * %W* %W@*%W*%W  * %W* %W Y@* A* :!1": YB˻YC* A*  &E&PS&4:< =>!?,A1BDDpEGIJKJNLMPQ,R?TBUEXKYRZ\[{\_`bfcdijkl!mFpJqMsPwStUuyz{|}~:\5<=->?#@A{,BC eE>? RXD= \NE( <FA !,BC  E>? XD= NE( U<FA ,GH?IHBJ=EK= L=>?:<=$8>?67M?1\N(O(P4\NEQ NEQ MR1\N*O*S@TUVWTUVWdVU)BX$Ua TUVVUYZZYYYVUABX=YVUABX=$TUVVU-U7k[TUVV[)\]^3* +Y+*-* +Y+*-* W YD*EFGH+Y+*,-'YIJ4" '3NZ567_`S'&_a23*KL*LKM*MKN*NK:OYP:LQRSTOYP:MWMURSTOYP:NWNURSTVW:XW: YW: : *+Z:+[:  \M: 'YY]^_ <=; > *:  \ *+ Z: + [:  \M: 'YY] ^_ <=; > *: \*+ Z: + [:  \M: 'YY] ^_ <=; > *: \`b: Y: : ,^d: G:B: Y,fgh<=;>i:- ^d:G:B: Y-fjh<=;>i: ^d:H:C: Yfkh<=;>i:::+^d:B:'YY+flm<=;>*+ ^d:B:'YY+flm<=;>*+ ^d:B:'YY+flm<=;>* 666 n :!B"o:pq6p q6p q6  rsW  tsW  usW666n :!B"o:pq6p q6p q6  vsW  wsW  xsW666n :!B"o:pq6p q6p q6  ysW  zsW  {sW6@n8n :!""o:pq6B Y|U}~+:^sW6@n8n :!""o:p q6B Y|U}+: ^sW6@n8n :!""o:p q6B Y|U}+: ^sW k: :!-":Y:ϻ'YY AJ& & UWU_s{&_s{ce&7HKe7HP&e& &HY\&&4'19BHRZcis{ U_jsx{}47HKMPR      HY\^ !+".#;$>%K&N'Q(V)^*c+k,p-x0}12356789:;<=>?@ABEF G HJ2K?LBMONRO_PbQeRjSrTwUVWZ[\]^]`ade%fGgThWgZj_knopqrqtu'x/y3zP{n|~5(7>@A >@A }>@A =@AR=@A>@A =@A^=@A=@A0bcI>?defe|ge0bcI>?defe|ge20bcI>? de fe|gebc)>?Gbc1)>?bc)>?Ph`:4>?3di`67jHkHlHzmH'qnoBVpoc5qorsts us vw xy z{ 7a|{}{~{{{ defegeP x SA TZZZZX [X [X HTZZZZDX>TZZZZDX>TZZZZDX?TZZZZX>SX>SX>TZZZZU% TZZZZU% TZZZZU% U%CU%CU%CWU3(ss23)$ 7*KL*LKM*MKN*NK:OYP:LQRSTOYP:MWMURSTOYP:NWNURSTW:W: W: *+L: Y^+C: 'YY^_ <=; > *MW*+ MU}: Y ^+C: 'YY ^_ <=; > *NW*+ NU}: Y ^+C: 'YY ^_ <=; > *: : : +: + : + : : i:::^: ^: ^::'Y*Y:::::::,Y:*:,Y:*:,Y:*:@:'YY,fm<=;>J1Y,:^sW1Y,: ^sW1Y,: ^sW1Y,:^sW1Y,: ^sW1Y,: ^sW:::-Y:*:-Y:*:-Y:*:@:'YY-fm<=;>J1Y-:^sW1Y-: ^sW1Y-: ^sW1Y-:^sW1Y-: ^sW1Y-: ^sW:::Y:*:Y:*:Y:*:A:'YYfm<=;>J2Y:^sW2Y: ^sW2Y: ^sW2Y:^sW2Y: ^sW2Y: ^sW::: +Y:*:+Y:*:+Y: * ::!*+fBYU}+:^sWBYU}+:^sWk:!:""!-"":#Y!#:!ϻ'YYA!J &]`&&7RU&l+.&'*&&)& ) ,&4^'19BHRZcis{/]`b.147@IRUWcfilx#+.0ks CKy'*,go   ?Gu} !&%)"+#g(o)+,./ 34C6K7z9:>?@BCDE F !G )J ,H .I 8M @N \ ] f g h i j 6l5->@A b>@A >@A W @A F0;@A,;@A+<@A . @A! h`# 4>?" di`! 767 /jH (kH !lH mH' noB poc qo rs ts us 1 4 7 f`i`l`xywww~{wwwwwwww}w P xSX) TZZZZX?MX?MX?&TZZZZX /TZZZZWWW TZZZZWWWX<555555zTZZZZWWWX<555555}TZZZZWWWX=666666z!TZZZZWWWX FFWU3(ss23 o* <YMYN* :!]":**-+Y-sW-+Y,-sWOYP:LQRSTY:6-+:Y¶W:^sW*-ZWp: ,ĶsW YŶ^ƶ-+:ǶAȶ_ <=; > 4`b:6 ,Ķʙ:-+:W:^d: Y˶^̶-+:  n n  v: YͶ Yζ-Ͷ'YY϶^̶-+:* йѸb:Y:6>,Ķʙ):*:W: 'YY*Զնֶ׶ <=; > * ؚIYٶڶ*)۶ܶ߶sWnn IYٶ*)۶ܶ߶sWk::!-": Y :ϻ'YYAJ &c #&c&4?t uvw<xXyq{|~ { #%AaER 'En5<K<=&d>?k@A `snHM{ %q@As R@A #{A'h` 4>? di`o67 e]yTynoyxyP*]TxS &TU1Y'[ TWXlHw TZ[ TZ[TXrR  TXS EEWU3(ss23T*KLOYPM,LQR,STWN*+,-ZWB:'YY-^_<=;>*:::::-^:::: 'Y *Y: : +Y: * :   Y+fsW \P:  Y+fm <=; >sW \ :  \ : +Y: * :   Y+fsW \P:  Y+fm <=; >sW \ :  \ : +Y: * :   Y+fsW \P:  Y+fm <=; >sW \ : \: +Y: * : Y+fsW \P: Y+fm<=;>sW \ : \ k: :!-":Y:ϻ'YY AJ&.1& &O GOOQO\&\FN&FN&F>FFHF4.K &.13pswz~  GLOY\y !"'(#$'('*,-".*/F4K5N0P1454EGJKLQRMN>QCRFQPYXZ\[y\]`53=@A @ $ 9@A $ 9@A "$ P9@A $9@Ayh`c4>?\di`67jHno&ssN`wJ`zG`~C`@` xy w \ew w #w P  x S1TZX>0 TZWWWWW TGXB KGXB KGXB _GXB WU3(ss23* <YMYNY:* :!<":-+Y,-sW,sWOYP:LQRSTOYP:MWMURSTOYP:NWNURST6: : : ,: Y W: Y W: Y W: *- ZW*- ZW*- ZW8: ĶsW Y-+: * Ѹb: iY:6   Ķʙ: : : , : Y W:Y W:Y W:*^: *^: *^: E:'YY*Զն׶<=;>* nC n 6YU}^ȶsW nC n 6YU}^ȶsW nC n 6YU}^ȶsW /k: :  !- ": Y  : ϻ'YYA Jnq&cN&4Fh ijk%lFm\nposq|rstuvwxyz{}~8J\nqs~}5Nbv,_t5.F*<=0C>?` s3@A s s s  @@@A{ { { ` s5rsNYs h` 4>? di` 67  yy%y|nopofqoHxyP* %HxS0TUB_ T TX4R TWXAGGG TWU3(ss3 _Y*MN:Y+N7:'YY<=;>* : : -  :: :,:   :  - : , +\