ࡱ> ] x*bjbjzz 4f1\1\b" \\\\\ppp8DTpqM." LLLLLLL$PUSzM\M\\4+M%%%\\L%L%% HJJ<; R ": Programming Assignment: ArrayPriorityList Collaboration Solo: Complete this by yourself with help from section leaders and Rick and code from our book, lectures, and section. Note: It could be difficult to not get 100% code coverage in unit tests due to a change to WebCat's code coverage tool or you forget to test a method throws an exception. Preview: This project asks you to implement a collection class ArrayPriorityList using an array instance variable. This project has the following goals: Implement a collection class using an array data structure Understand how generic classes store collections of the same type element safely Use exceptions to handle invalid arguments This new type will store a collection of elements as a zero-based indexed list where the element at index 0 is considered to have higher priority than the element at index 1. The element at index size()-1 has the lowest priority. An instance of this collection class will be able to store just one type of element such as . Begin with a starter project that has all files you will need with the build path set to find JUnit (should have no errors once imported as an existing Java project): Download this file to a place you can easily find in the minute or so  HYPERLINK "http://www.cs.arizona.edu/~mercer/Projects/ArrayPriorityListStart.zip" http://www.cs.arizona.edu/~mercer/Projects/ArrayPriorityListStart.zip From Eclipse, select File > Import > General > Existing Projects into Workspace > Next Click the radio button to the left of Select archive file and click the Browse button to the right Browse to the file ArrayPriorityListStart.zip that you just downloaded Click the Finish button. You should see these three files in Eclipse: ArrayPriorityList.java A Java Collection class that implements the methods of PriorityList ArrayPriorityListTest.java Small part of a unit test PriorityList.java The ADT stored as a Java interface class ArrayPriorityList Complete the methods in ArrayPriorityList so it uses a 1D array instance variable to store elements. Since you cannot have an array of E, the type of array elements will be Object to allow this class to store any type of element, which requires a cast in the get method. It begins like this: /** * This class implements a generic collection to store elements where * indexes represent priorities and the priorities can change in several ways. * * @author Your Name * @param The type of all elements stored in this collection */ public class ArrayPriorityList implements PriorityList { private Object[] data; // The data structure storing elements private int n; // The number of meaningful elements // Create an empty list with zero elements public ArrayPriorityList() { data = new Object[20]; n = 0; } // . . . Complete the methods not shown here to save space . . . } interface PriorityList Complete the following methods, one at a time, inside ArrayPriorityList. The specifications for each method are provided by the comments that precede each method heading in both the interface and the class with method stubs. /** * This interface describes an abstract data type to store elements where * indexes represent priorities and the priorities can change in several ways. * * @author Your Name * @param The type of all elements stored in this collection */ public interface PriorityList { /** * Return the number of elements currently in this PriorityList * * @return The number of elements in this PriorityList */ public int size(); /** * Return true if there are zero elements in this PriorityList * * * @return true if size() == 0 or false if size() > 0 */ public boolean isEmpty(); /** * If possible, insert the element at the given index. If index is out of * range, throw new IllegalArgumentException();. For example, when size is 3, * the only possible values for index are 0, 1, 2, and 3. * * @param index * The index of the element to move. * @param el * The element to insert * @throws IllegalArgumentException */ public void insertElementAt(int index, E el) throws IllegalArgumentException; /** * If possible, return a reference to the element at the given index. If index * is out of range, throw new IllegalArgumentException(); When size is 3, the * only possible values for index are 0, 1, and 2. * * @param index * The index of the element to move. * @return A reference to to element at index index. * @throws IllegalArgumentException */ public E getElementAt(int index) throws IllegalArgumentException; /** * If possible, remove the element at the given index. If index is out of * range, throw new IllegalArgumentException(); * * @param index * The index of the element to move. * @throws IllegalArgumentException */ public void removeElementAt(int index) throws IllegalArgumentException; /** * If possible, swap the element located at index with the element at index+1. * An attempt to lower the priority of the element at index size()-1 has no * effect. If index is out of range, throw new IllegalArgumentException(); * * @param index * The index of the element to move * @throws IllegalArgumentException */ public void lowerPriorityOf(int index) throws IllegalArgumentException; /** * If possible, swap the element located at index with the element at index-1. * An attempt to raise the priority at index 0 has no effect. If index is out * of range, throw new IllegalArgumentException(); * * @param index * The index of the element to move * @throws IllegalArgumentException */ public void raisePriorityOf(int index) throws IllegalArgumentException; /** * Return a copy of all elements as an array of Objects that is the size of this * PriorityList and in the same order. Do not return the instance variable. * Rick has a test to ensure you clone the array to prevent accidental change * from the outside If there are no elements in this list, return new Object[0];. * A change to the return value must not affect this ArrayPriorityList object. * * @return An array of Objects where capacity == size() */ public Object[] toArray(); /** * If possible, move the element at the given index to the end of this list. * An attempt to move the last element to the last has no effect. If the index * is out of range, throw new IllegalArgumentException(); * * @param index * The index of the element to move. * @throws IllegalArgumentException */ public void moveToLast(int index) throws IllegalArgumentException; /** * If possible, move the element at the given index to the front of this list. * An attempt to move the top element to the top has no effect. If the index * is out of range, throw new IllegalArgumentException(); * * @param index * The index of the element to move. * @throws IllegalArgumentException */ public void moveToTop(int index) throws IllegalArgumentException; } class ArrayPriorityListTest The following start to a unit test show two cases that students often forget about. Inserting at index 0 on a non-empty list and ensuring a method throws an exception when it is supposed to. import static org.junit.Assert.*; import org.junit.Test; public class ArrayPriorityListTest { @Test public void testInsertToLeft() { ArrayPriorityList list = new ArrayPriorityList(); list.insertElementAt(0, "First"); // Must shift array elements in this case list.insertElementAt(0, "New First"); assertEquals("New First", list.getElementAt(0)); assertEquals("First", list.getElementAt(1)); } // Write short test methods to ensure methods throw exceptions // when they are supposed to throw new IllegalArgumentException(); @Test(expected = IllegalArgumentException.class) public void testExceptionGetElementAtZeroWhenSizeIsZero() { ArrayPriorityList list = new ArrayPriorityList(); list.getElementAt(0); } } Turn in to Web-Cat Submit this to Project ArrayPriorityList and work with it until you have 100% code coverage and 100% problem coverage. Grading Criteria (100 points max) ____ / +100 Web-Cat correctness and code coverage: To get 100% for these 100 points, you will need 100% problem coverage only, which means Rick's tests pass and you exercised all methods). The new code coverage tool on WebCat (EclEmma) may not cover all assertions, but this does not count against you. Look for red lines only in ArrayPriorityList.java     ,-./<ABLQ ] ^ _ ` i Ƴxrxlf`fZTZ`ZxEh<<hau|CJ OJQJaJ h> CJ hR7CJ h==CJ hICJ h`_%CJ hqCJhiIhGCJhiICJOJQJhGCJOJQJh<<h*mCJaJ%hiIhau|B*CJOJQJaJph%hiIhGB*CJOJQJaJph%hiIhGB*CJOJQJaJph%hiIhGB*CJOJQJaJph%hiIh+B*CJOJQJaJph./_ ` 9 T & F h<^hgd<<<x1$7$8$H$gd<< & F h1$7$8$H$^hgd<<gd<<  & Fgd<<gd*mi 8 9 z    @ E G }wwqf\howCJPJaJh<<howCJ aJ h1CJ h$CJ h3)CJ howCJ hv FCJhthtCJOJQJ^JhtCJOJQJ^J hv Fhv FCJOJQJ^JaJ htCJhW@hGCJOJQJ^J hau|CJhau|CJ OJQJhGCJOJQJ hGCJ hGCJOJQJ hGCJ P R S ^gl}縩矸ri`ZQ@ hNwLh/CJOJQJ^JaJhvhJCJ howCJhvh<<CJhvhowCJhvhvCJPJaJhvhowCJPJaJ$hAhACJOJPJQJ^JaJhACJPJaJhAhowOJPJQJ^J$hAhowCJOJPJQJ^JaJh~how0JCJPJaJhowhowCJPJaJhowCJPJaJjhowCJPJUaJAw?{oc``1$ dxgd dxgdv_kd<$$Ifl0h# t"644 lapytNwL$If & F hx$If^hgdNwL h<^hgdJ 1@A\jwXY~Ю~xnxnxndndndnxndZndh3uCJOJQJhiwCJOJQJhGCJOJQJ hGCJh<<CJOJQJhvCJ^JaJh8]hGCJ^JaJh8]hGCJOJQJaJ(h8]hG5B* CJOJQJaJphUjhNwLh/CJUhNwLh/CJhNwLhp{CJaJ hNwLh/CJOJQJ^JaJhNwLh/CJaJ"&')*/089>@ABIJST^_bcfgqruv|}'hH:?B* CJOJQJmHnHph4sH'hGB*CJOJQJmHnHphUysHhGCJOJQJmHnHsH'hGB* CJOJQJmHnHph4sHhhGCJOJQJh3uCJOJQJhiwCJOJQJhL:CJOJQJ6?,-m#$gijklpgdH:?dgd8]gd<< 1$7$8$H$gd\1$,-/ȴ𢔢l-h\5B* CJOJPJQJ\^JaJphU h\hGCJOJQJmH sH hGCJOJQJmH sH #hGB* CJOJQJmH phUsH 'hGB* CJOJQJmHnHph4sH'hGB*CJOJQJmHnHphUW~sH'hGB*CJOJQJmHnHphUysHhGCJOJQJmHnHsH /6@DFlmovwz{|~һҤһ}o]oKo9#hGB* CJOJQJmH phsH #hGB* CJOJQJmH phUsH #hGB*CJOJQJmH ph?_sH hGCJOJQJmH sH hjCJOJPJQJ^JaJ-h\h\B*CJOJPJQJ^JaJph-h\h\B*CJOJPJQJ^JaJph?_-h\h\B* CJOJPJQJ^JaJph$h\h\CJOJPJQJ^JaJ3h\h\5B* CJOJPJQJ\^JaJphU#$&*+,-./<D\]^`ghij򽩕ykyky[QChau|B*CJOJQJph&Y8hGCJOJQJhGCJOJQJmHnHsHhB*CJOJQJph&Y8h<<B*CJOJQJph&Y8hGB*CJOJQJph&Y8'hGB*CJOJQJmHnHph&Y8sH'h9BB*CJOJQJmHnHph&Y8sH h<<h<<CJOJQJmH sH #hB* CJOJQJmH phsH #hGB* CJOJQJmH phUsH hGCJOJQJmH sH jst1Zagjklop   !"%+,ϼxjxjxjxjxXxjxXx#hGB*CJOJQJmH phsH hGCJOJQJmH sH #hGB*CJOJQJmH ph?_sH h8]h8]CJOJQJhH:?hGCJ hY.CJh%CJOJQJ hGCJ hw4CJ%h8]hau|B*CJOJQJ^Jph&Y8h8]h8]CJ^JaJh8]h8]CJOJQJaJ(h8]h8]5B* CJOJQJaJphU  "cg-.4w}*z ,/0bcfgmnw !$034vw|})*yzɻɻɻɻɻɗɻɻɻɻɻɗɻɻɻɻɻɻɻɗɻɻ#hGB*CJOJQJmH phsH #hGB* CJOJQJmH phUsH hGCJOJQJmH sH #hGB*CJOJQJmH ph?_sH #h>1B*CJOJQJmH phsH #hGB*CJOJQJmH phsH ;   016=VW\_efj{~TU ./47=MPX^| EFKRklqtz{ͻͻͻͻͻͻͻͻͻ#hGB* CJOJQJmH phUsH hGCJOJQJmH sH #hGB*CJOJQJmH ph?_sH #hGB*CJOJQJmH phsH J 1W]U /5yzFlrZ[cd#&,-1BEMSopruvKLQRW򲠲򲎲򲎲򲠲#hGB*CJOJQJmH phsH #hGB*CJOJQJmH phsH #hGB*CJOJQJmH ph?_sH hl'CJOJQJmH sH hCJOJQJmH sH #hGB* CJOJQJmH phUsH hGCJOJQJmH sH 8d$nopvLRd   d Z W]cd   ^cd  Y _ !!!!!ͻͻͻͻͭۛۛۉۉͻͭ#hl'B*CJOJQJmH ph?_sH #h8B*CJOJQJmH ph?_sH hCJOJQJmH sH #hGB* CJOJQJmH phUsH hGCJOJQJmH sH #hGB*CJOJQJmH ph?_sH #hGB*CJOJQJmH phsH 6Z !!!!e!!!! ":"`"f""""""#T######$!d!e!!!!!!!!" " "9":"?"F"_"`"e"h"n"o"s"""""""""""##S#T###############$$ $ $$$$'$-$J$߻߻߻߻߭߻߻߻߻hCJOJQJmH sH hl'CJOJQJmH sH #hGB* CJOJQJmH phUsH #hGB*CJOJQJmH phsH hGCJOJQJmH sH #hGB*CJOJQJmH ph?_sH =$H$J$K$L$M$N$O$P$Q$R$p$1%2%T%k%l%%%%&)&W&&&&& 7$8$H$gdiwgdY.dgd8]1$J$K$L$M$R$W$X$i$m$n$o$p$$$.%0%2%8%9%?%S%T%Z%j%l%r%s%x%%%%ömmVmVmmVm-hiwhiwB*CJOJPJQJ^JaJph$hiwhiwCJOJPJQJ^JaJ3hiwhiw5B* CJOJPJQJ\^JaJphUhY.hV hY.hY.h8]hiwCJ^JaJh8]h8]CJ^JaJ(h8]h8]5B* CJOJQJaJphUhl'CJOJQJhCJOJQJhCJOJQJh*mCJOJQJ%%%%%%%%%%%&&&&&(&)&-&V&W&s&~&&&&&&&&&&&&&&&&&ѾѾѾѾvѾѾ`Ѿ`Ѿ*hiwhiw6CJOJPJQJ]^JaJ-hiwhiwB*CJOJPJQJ^JaJph?_-hiwhiwB*CJOJPJQJ^JaJph*3hiwhiw5B* CJOJPJQJ\^JaJphU$hiwhiwCJOJPJQJ^JaJ-hiwhiwB*CJOJPJQJ^JaJph-hiwhiwB*CJOJPJQJ^JaJphddd%&&-'r''')(C(G(I(J(K(^(((((_*`*a*b*d*e*g*h*$a$gdG _gdxgdxx 7$8$H$gdiw&&&,'-'/'q'r't'y'''''''''''( ((()(B(C(H(I(J(K(S(ƯƯݘ~ݯ~~ݯ~ݯݯn^TPhH:?hQCJOJQJh9BCJOJPJQJ^JaJhiwCJOJPJQJ^JaJ3hiwhiw5B* CJOJPJQJ\^JaJphU-hiwhiwB*CJOJPJQJ^JaJphddd-hiwhiwB*CJOJPJQJ^JaJph-hiwhiwB*CJOJPJQJ^JaJph?_$hiwhiwCJOJPJQJ^JaJhau|CJOJPJQJ^JaJS(^(u((((((((())/)0)F)I)v))))))))***-*H*^*_*`*a*b*c*e*f*h*i*k*l*n*ȸޠ}y}y}y}yhEjhEUhH:?htahCJ aJ hp*CJ hCCJ hG _CJhG _CJmHnHsH hCJhCJmHnHsHh78hhQCJ aJ h9BCJOJQJhCCJOJQJhGCJOJQJhGCJOJQJhG)h*j*k*m*n*o*p*q*r*s*t*u*w*x*x n*o*p*q*r*s*t*u*v*w*x*hH:?hEh<<#h<<B*PJ_HmHnHphtH 21F:p<</ =!0"0#`$`%N <Dd Rn  c 6Q!AUntitled#"  b2< K:U<Dn< K:UPNG  IHDRxgAMABO pHYs  $tEXtSoftwareQuickTime 7.7.1 (Mac OS X)dtIME bw IDATx @SDkPZpWBV&]+ ?شq)3۩Xm-<6a&T$QH4sMB J|kn=s/w97A<|^V-9iZw,2e>R@/JRy]VWWP7 c#zyTeHIoۙM>SZ@(nՙ(yRs=[y<=R3ѴS k|:>S^79H;WTٹɋҬ(g'KHVu3;cMMMs]@?s[nhtuGJ#8aȑv s'PV |T\,ȁUi+0;ߝT.AP E#-! Qy6V$tgU۳0X/5Bak#ZmrrQ+ RoRB.E>o|f0c)1 ˟y\bxzzeTyQx| {SzG VvN%,@ųN?ѮnőmZ/;lI&'BX*Ⱥ8xD".V˼좫C7M/xW^^DmU&m]]<; \Rf:[#uS7 ^PreZ_ƃwym+^㊜Wޘ5k>sӶzFIm)h"󓧑L!8yAw@'pzt>'P/Mim'Om` +eu)X,"J%yIG 7IBC]JqnPI8es7Ě=s}IOU,HEUhq4-2V ;7Dqc)YJ 3a8*Kz5R_xo^;>$ ٻkҖ|AM}M CJ,, "Ģ =U2ۤBOA?JPxWyiu\9b_=>va3n.$c?J%n?vK1~WEU|eV J9e^cX!Jnj! wny#БWsR0 L YI-y~@ ͭ5rf8fSw 1Z_nU:ڱ0hzBrCۛ23!F-y5K$_}CHĎʵiNU$w"g\'x~~~Ө+Wp/vrG7yNk?§,8 _Y6B=SUfi>6 E.t 01QdWk!zy "N^b*MNG%9;/ah\/Ǟa/z/DZQ]RO"ik//mT4Խ5$Ov(q\LųJHy o1)?DjAU;քm*[bRn?0' |=!m%jQJz1mY/U"gA{İ~ Ԓ̀ȇ>eןr7(^ӜYr-vnsnxW,2>ɣ1(kBn@1Y:%hzղ WXv湘,sg0MqQ Ԩ#"IvT׿W (]e B9q@M~4A!KPIKz A7tv {0n!uE2Fb=D{o##F2h7,p`$S057wq0" .F5]G꾗`Q-]A37CVZUm-P1m:cq&r܈CPr|X/E}9By4MsG~x0H!$i=}I5Aŀ38s;2Ek=tX{3e]Bـ1?dޞTQeuN24P-Qz'K f%V-+j(OAZZȅV,Ħ#=3 Z[%xaOgJ4зWi(Մ,Hd[FfH=!$8{kf9'3p.N%R[i3PFԓnL ?N0:V<0v lfͲpCaԨQvSS#C!.!@'9*'|Nͽ~蹞 &V$!"c褻Mf1V@}RN8>^\Y:@VH]AwMП@؝M2ͮ؁pZZ֭V B)G JaXBp4!]$~\=U=xf~2Qf|4 _`3yTG1ٔq'ED&Y]e7V֩FpnKfaV^Έ#D#%5GXiW=9{6q_N$KWa?%0€)7K,;of`Wb9wyU_fc`ll6I'J`[qdebs?IPdDr/.|Ry2x\4VLm@0b+D[b^z%2^@X 01QdTkX)+ =})%"5Udx4ckAD~W0Br}- ƥ&xxD!gؿ!ܕϐ38s|a$j>u ŽI% i'/XGJ }ѿF"7HIHVEM8pIQi X̣B~b%!v^'Թ:A>DuGu>#AރPq2~@S'8p(fPFq?|˺kP|hBO` & {U8ɽp//&23Df, pz9ؔRH Nsqn>:|':Ukfv@}{(3~b3(^qHZ V (/Tv"'Z緔( GLoh:v/F ƍJz01`~c3dɾ?9(Bwj`8g0!x Wywjo8gF .4u@5ŧN=W ~cOΩˑ^vf]O^V9\y =om6TTTGwՃ%+qW0q9CwD( TYL>vu+lD֒d|iLNB: H_SS#]dW9eQ/Q^Ye]x]xRT]y =nP7=xqf-dUžJ"92flDlv6bQ6ԕFj~)dTܟRN%|Ta@[%ӣ 5,[r_F?:'9&zi=[0n,Bդ`4u%KG,FJcM(?!r"S5lRCS'G" 9bM=4 җ N N`I9T56٩^vL,_(1͏u2T&m!Vaڤ?cIgBy|EZ?2 ֓GNc&FUA^Gغa-ZU(h1fӉÂgsZ/[zS1G\tX!OזqS33jq6-y@)P+P:̊̏^iL+Ƭ#YH[nmiISO=I&=JH ҂u԰׸u>=]: f&1eu`ܙ!~|e!l@x' g!$2A[K :w3ۯ䢪y# iQ<<8;7Dʘ(l e5[߉ԗsX ^#@)$,1_Zm8_PGJ}u?Lo$ʋdwr K8L+G~P.~*/<Y>>meTG+V`„ vX; So*O]ȷ_,;$w1n7'3(iO;b'd y$>\rHW nj/]\mJG;hpT/W^.C Sy<뒕ʡA= 'FMy3ɵ60 cmI/*5EID@S0*t]oO2iiiw{)=iך5ҽnطЮ?ԉ'PV |TWs@mQHK e^vȑLJO Inc_ Hr$"rO;edtV I,N:C`[Š5;Gr) %Zնƪ2o&VXj\b.O= ,g@I+4L]sF4#\d&"N ;ئ S]CIPTG/Nиiv|ݎ~$р  ^,9]|+`Rbl7ytP/ڵ P<=Je 'aisc5ǟ;wұs[5YHTl2oK刌-.>a]i8J 7S[&BJ7$ ՙX;`%~'@,ezq98p *󵸑z4*4 69?Sx):y1Uйs{ 4J'}p OJ®M ^J+Gn9D=2o^ĮMrJzNEO/)@^$|y}}p ,sg>~u>ckxaX! FR}FnR$)hm7GȥZ2gCހ0A BJ(" R5CINqQdu18806La("K 7 n?qtRzqjdGm,<\p0meFZoA^ICNze$G47AHy#jx2 ڃB^ۊזY]HWʐ,n4`g~{l4T&p~3s˲vc|TTU)b*5Vej(V7W|]a.ؖ#OF/^'OM;m A΃3*/{b~+n A3űG4z)tkG肧V6c# x$^E&8B( 1'|C͝ yH7iYR|ł~Kփ"4C:MKz$TY1&!1o "$a0b+r,ܕ=71 3kK LZ>0X .41Xaz`c İ11X̐B3A?c3 rj$YΓPZfPϩ)JNv/|HL3zu]h#TO=x󡍂~u PL{<5Xu!XVXX v\OF4Wb].ld^u*٣qPzKP-97KO e/$>X8 Հ mdR~pEkM-w"4,N%lʏCt!hâ7QzK 7%@[kk_c:{|Q^JU2+/:URVl݂~*NUQl ,ĤaΖCh+-3\JhՍ;!8TY1(ZmpçL<G?K9b2Q֬^ݎŁb۶'j: c7}o8j.&KhhVo PZCҀ-觷x֜@x]hE8᫿o4w#$Gn]VN̰KFLM&}b 7ya.bg!ᢄY {t9tF@:"2f o'# Ag)N3 g*K˚pی)T(簲QS5i3 s+ڱf/ͭͅim;0VZ;1)W'؝xMr'rQ0df<Ȉ"9 lvo$GȑWsR0;#)GC8ۇJ{F@9\M)ny湤 6 T-N'=A?vafl KdI!TG[Ҁ]9[9g+r`^Uœk -D&+廒4 i j]x&@v j/v@FE3D +MFl 9B6թ98eiXOg_?]-$껹? U3OAI_xbɩL('S'ix0np] Kf} ^(I;;&GZF>?ǿ2=}zB/)|}ȍ"]v_r 01QdJ y5`;ho{P6xk?R"Gsn C ` V0f01̀A ؝M> qb>oCe7p)*5)nr8qlj# /硼x~Ovk'>λA3.6 *y ƃ~SiMO:}4FnMM~y _oOdC} \ 6y ݒ_g ZZ#/_ݍxD oh˻xl)tr*p,,IS T*YϢpߴ\{|.]Æh4dp1_7C_(Ƿ> hK{oBg^*y1KczE}ehy&Vl#l?%Ur\ ^z " 4G [U]g:NS3ĺ,v -=ta1&߇<3+_8`#ǒa^YGF0ᕸmԗX }9Wܗ(0b^x}GGV>5.>ܢ|}%üAsZ}Ie Lߡ!ypuQuQm"Ηp-*!^.DC/zo)ܵ%@clQyKj\r7_9NgA/o@U~;U:omށˤuěҗUR{C%ڻKJRa79wbӚ{#Nn Q0vtN{,0nb ??}4B'y-y HPn-:p ۚ-OW^fՠz?gjhfi`DΦ]C6D~*N0L *}mTx{F'&1fԗecsB$F}k# }l!@#as+ [Q[ C:pmҹo0?f,b7j X0oFMN㹗ى:W)48N~$ƀ99e~%hK3')8$>)J}=PsϾ ({3܁]W_ :̙@&n7*ٮm;#83zW\7q2 Α]Q#\$n~2Ѩ_n&s郘9>t_}?^ހ@&ɽ0]:1F<-B~3̚܇h}M| 7M5`WHAFwohzEm{~щhq$=Or6zFD!zvLD_f;"G_9Q'Ѩ\TZCTz.*aS\&vlD=Q}I>>~%S2K*c4\2|vPT?X1un m D GV'֡\QW@T<<{&.Gsx>s r4w8 B׻2Y⹰?_,|:y2l4Fi ']2-IkxZ71Di슠ȋ ytI˪9w3dڍڌ ]`DP|0sц/qjzkZ4< ϩRIK /?>i ʫcӨj>*[qNM JtG7s` < Mϧ)ǟA(rl$۹myXLz8xi|~qV0Yo~&@|8FAc&Y0v*piwnmx"Ѳ. 9&wX͹CQsø\t" 3gI(kwypDMq0ϟ?'5] g̗Gꊖ!0R}NhF 9kXO{P ~/CYXi"=䳌9ǢJbrhQ3w)0!QK{sQ\w O~dBi.| nHW|zNFT%&wB)QCcl ̏fUa~3$<|ӜB8o^G1y.}c qpLL^yRHVv,}'91\U=>> =Oqa~c|3Cf 01a` b?X|,pn܀qW/Zm-d/_sW7 *l퐝Wwʯg^Fgmt MtO˖4uH"N}vM!7mÜY̌Od&{`<Hk"xa35Uӣ7VZoU!/FPwWAbB=N ^2n__b޵*>VsZUtܧE}sYҁҌF,SbtJ?:MhSSy*T/8A^sMr K-BPdXITܨSНWC}(Y\Zx/]a#]x1[&TbtyU>ڂE4f̈AYv"棺hM9$v>ϔ!(n-H ,C5ٕ[HJ#DWUtBZXmEMttmObbN "eu2%1~\=yw{K±.x߾ ?]#W"Ҋ뚎c3Iy-XO\\yC'i1a,0v/|Ec0n~]Ҏ@^ O^fZkt-7*O#Oc+'J/w1,m!õsV&mYHAX~AZYqHQe+qKE$9a ݀/wƴ6a.TeyzeZǐmft:./%#* umu`}'DA! 62{~6٧C?d ysd0EwtNN/Z媎3dwBkۃOR' e؋.91h._C_RyalPx^>"C!^z"M JUb\>!(`0Ԁu:d2ˑؽaOlږImZ2 څV*(--ݻ0M%SgOƿ5=.n%FQ HT>5g7$NI1IENDB`j$$If!vh#v#v :V l t"655 apytNwLs    2 0@P`p2( 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p8XV~8XV~ 0@ 0@ 0@ 0@ 0@ 0@ 0@ 0@ 0@ 0@ 0@ 0@ 0@ 0@_HmH nH sH tH N`N Normal%B*CJPJ_HaJmH phsH tH DA D Default Paragraph Fontdi@d  Table Normal.a44l44l (k (No List PoP Free Form AB*PJ_HmHphsHtH lol Heading 2 A A dd@&)B*CJ$OJPJQJ_HmH phsH tH PoP bhead dd!B*CJPJ_HmH phsH tH \o"\ Plain Text1 dd!B*CJPJ_HmH phsH tH bo2b Code *$1$)B*CJOJPJQJ_HmH phsH tH LoBL Free FormB*PJ_HmHphsHtH foRf B head x*$)B*CJOJ PJQJ _HmH phsH tH dobd Body text$ h*$a$!B*CJPJ_HmH phsH tH :/: Hyperlink1 >*CJphd/d Normal (Web)1 *$!B*CJPJ_HmHphsHtH (/(Legal F6U`6 W$ Hyperlink >*B*phFV F -FollowedHyperlink >*B*phjj / Table Grid7:V0PK![Content_Types].xmlN0EH-J@%ǎǢ|ș$زULTB l,3;rØJB+$G]7O٭VvnB`2ǃ,!"E3p#9GQd; H xuv 0F[,F᚜K sO'3w #vfSVbsؠyX p5veuw 1z@ l,i!b I jZ2|9L$Z15xl.(zm${d:\@'23œln$^-@^i?D&|#td!6lġB"&63yy@t!HjpU*yeXry3~{s:FXI O5Y[Y!}S˪.7bd|n]671. tn/w/+[t6}PsںsL. J;̊iN $AI)t2 Lmx:(}\-i*xQCJuWl'QyI@ھ m2DBAR4 w¢naQ`ԲɁ W=0#xBdT/.3-F>bYL%׭˓KK 6HhfPQ=h)GBms]_Ԡ'CZѨys v@c])h7Jهic?FS.NP$ e&\Ӏ+I "'%QÕ@c![paAV.9Hd<ӮHVX*%A{Yr Aբ pxSL9":3U5U NC(p%u@;[d`4)]t#9M4W=P5*f̰lk<_X-C wT%Ժ}B% Y,] A̠&oʰŨ; \lc`|,bUvPK! ѐ'theme/theme/_rels/themeManager.xml.relsM 0wooӺ&݈Э5 6?$Q ,.aic21h:qm@RN;d`o7gK(M&$R(.1r'JЊT8V"AȻHu}|$b{P8g/]QAsم(#L[PK-![Content_Types].xmlPK-!֧6 0_rels/.relsPK-!kytheme/theme/themeManager.xmlPK-!R%theme/theme/theme1.xmlPK-! ѐ' theme/theme/_rels/themeManager.xml.relsPK] x"f i /j,W!J$%&S(n*x* !#$&(*,-/02? Z $&h*x*"%')+.1Rx"X@ @H 0(  0(  B S  ? _Hlt242278759y"@y")1=  & t & + x ht@X >Vkz%=.@L_w Sk2ATl0HX]iu G_t~t.FXm@P[iy[oVn  - > u `!!!!!!^"^"b"d"e"g"h"j"k"m"n"v"y"z@I> @ / 6 o v  & / g i j s g m  @Y_e%>Z^7=tzTYio&, hnt RW28TZlr[pVotz$ & - ? !-"_"b"d"e"g"h"j"k"m"n"v"y"333333333333333333333333333333333333333333333333333333]^gl}i i ^cii;;Y_LQ !!!!"*"-"^"_"_"a"y"R?f\sNtNuNvN`VVC $,\P":4HP⧦bT~SI41=bދi8>m@NoE"oЌ ^`OJQJo( 8^8`OJQJo( ^`OJQJo(o  p^ `OJ QJ o(  @ ^ `OJ QJ o( x^x`OJQJo( H^H`OJQJo(o ^`OJ QJ o( ^`OJ QJ o(hhh^h`hCJpho(EH^`CJpho(EH.p^`pCJpho(EH.@ ^`@ CJpho(EH.^`CJpho(EH.^`CJpho(EH.^`CJpho(EH.^`CJpho(EH.P^`PCJpho(EH.hh^h`o(EH.h^`ho(EH..``^``o(EH...8^`8o(EH.... ^`o(EH ..... ^`o(EH ...... xpx^x`po(EH....... 3 3^3` o(EH........  @  ^ `@ o(EH.........hh^h`o(EH.h^`ho(EH..``^``o(EH...8^`8o(EH.... ^`o(EH ..... ^`o(EH ...... xpx^x`po(EH....... 3 3^3` o(EH........  @  ^ `@ o(EH......... ^`CJo(EH"  h^`hCJo(EH"  ^`CJo(EH"  ^`CJo(EH"  T^`TCJo(EH"  ^`CJo(EH"  $ ^`$ CJo(EH"   ^` CJo(EH"   ^` CJo(EH" hh^h`OJQJo(hHh8^8`OJQJo(hHoh^`OJ QJ o(hHh ^ `OJQJo(hHh ^ `OJQJo(hHohx^x`OJ QJ o(hHhH^H`OJQJo(hHh^`OJQJo(hHoh^`OJ QJ o(hHh h^h`hH.h 8^8`hH.h L^`LhH.h  ^ `hH.h  ^ `hH.h xL^x`LhH.h H^H`hH.h ^`hH.h L^`LhH.h^`OJQJo(hHh^`OJQJ^Jo(hHohp^p`OJ QJ o(hHh@ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJ QJ o(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohP^P`OJ QJ o(hHh^`OJQJo(hHh^`OJQJo(hHohp^p`OJ QJ o(hHh@ ^@ `OJQJo(hHh^`OJQJo(hHoh^`OJ QJ o(hHh^`OJQJo(hHh^`OJQJo(hHohP^P`OJ QJ o(hHhh^h`OJQJo(hHh 8^8`hH.h L^`LhH.h  ^ `hH.h  ^ `hH.h xL^x`LhH.h H^H`hH.h ^`hH.h L^`LhH.h^`OJQJo(hHh^`OJQJo(hHohp^p`OJ QJ o(hHh@ ^@ `OJQJo(hHh^`OJQJo(hHoh^`OJ QJ o(hHh^`OJQJo(hHh^`OJQJo(hHohP^P`OJ QJ o(hHh ^`hH.h ^`hH.h pL^p`LhH.h @ ^@ `hH.h ^`hH.h L^`LhH.h ^`hH.h ^`hH.h PL^P`LhH.hh^h`OJQJo(hHh8^8`OJQJo(hHoh^`OJ QJ o(hHh ^ `OJQJo(hHh ^ `OJQJo(hHohx^x`OJ QJ o(hHhH^H`OJQJo(hHh^`OJQJo(hHoh^`OJ QJ o(hHh^`OJQJo(hHh^`OJQJo(hHohp^p`OJ QJ o(hHh@ ^@ `OJQJo(hHh^`OJQJo(hHoh^`OJ QJ o(hHh^`OJQJo(hHh^`OJQJo(hHohP^P`OJ QJ o(hHC $>m":bT~SiHPE"o1=b`                                                                                 vta7w J /jz%8Y#GG^eAMW$Z$`_%l' B(z)q*S.Y./>1w478d8L:u<H:?W@9Bv FFccKNwLiNsQVubXnPY*V\P.]8];R]G _UaI]b &e fwCf*m3uqwyWzp{9<|au|=)}\qw> +}%yrs{ZETt"uC)x "wQ#+rb+PRAw5j1=IJs18`<<w.0?3)mq$owR7JiI> K $>Fy-G~/Ip*Cjiw==`b"d"@^"^"^"^"x"@Unknown G*Ax Times New Roman5Symbol3. *Cx ArialI *Cx Courier New BoldQ*Ax Times New Roman Bold71 CourierO PLucida GrandeArial?= *Cx Courier NewWz 0000҉0 Pro W3MS Mincho= *Cx Arial Bold;WingdingsA$BCambria Math#h Gw1gr1g !A>!A>!0`xQ"Q" #Q(iw2! xx ,ArrayPriorityListmercerMercer, Richard HD        Oh+'0  4 @ L Xdlt|ArrayPriorityListmercerNormalMercer, Richard H9Microsoft Office Word@q@\;;@J@2@,<;!A՜.+,D՜.+,P  hp  University of Arizona>Q" ArrayPriorityList Title  8@ _PID_HLINKSAFhttp://www.cs.arizona.edu/~mercer/Projects/ArrayPriorityListStart.zip  !"#$%&'()*+,-./012356789:;<=>?@ABCDEFGHIJKLMNOPQRTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}Root Entry Fd<;Data 4`=1TableSTWordDocument4fSummaryInformation(~DocumentSummaryInformation8CompObjr  F Microsoft Word 97-2003 Document MSWordDocWord.Document.89q