PK 7{7 Source Code/UT ZMGMGUxndPK {7Source Code/Chapter01/UT MGMGUxndPK5{7s"|=Source Code/Chapter01/1.01 - The flexibility of JavaScript.jsUT LGfMGUxndN0EٵtOĂ ? LK8-GM]I3EhIc.T%ls!f ׵VgQ+0ֲNcC|1vu:? k.`)Amic* 8ٗIH:9%CWiH\2{,J|IT CLmcۂaqHWl1n "HB锘@t-OPQI h,0$ eNy? PK {7Source Code/Chapter02/UT MGMGUxndPKv{7@CSource Code/Chapter02/2.01 - Describing interfaces with comments.jsUT pLGfMGUxndM 0sY"ĕ xLmIJ:Rzwl3|Ibm|&S“34րd7vRQB'w%>H[Em^gͅl*.qڣ!]eWaIڔ\d !98/!La*(cϒD Lԃv,I{vG+}/߱ؼPK{73LSource Code/Chapter02/2.02 - Emulating interfaces with attribute checking.jsUT LGfMGUxndRn0<_rb @^z3r`HG"] .)z(ʃ)32&CS AmCÀVѨIy Y`]'Rn֣6z-e9=coL| #6jtBvsBT֗ kT>OHf4y4e݁1y*QKIj!Z۱7kt [j6͏3frM~vفSi0ez3$߅c=8Z!3Ղ`pzPƬԝ$ͨ17bIǎ)Ŀ|)M+TtzwGx oZ_*CHM)WՄ.b -XZayFrNGݨ܏&,N3]}:v?$|u6c7Tp<.گ3^ qǖ_oZؠkEMF4]t(@C0hp$_PK{71v,ESource Code/Chapter02/2.03 - Emulating interfaces with duck typing.jsUT LGfMGUxndej0zc?@)P𽷒ֵ@?JI6mO3='5Rx(5{&.F+C*J&e"?)]gcε-MۦE%#8_,W]\0-~L&::[N֢b#cf*>&Gz@>.L[rSejv-S`Mܡkf+1&BF`XPK{7Q*DJSource Code/Chapter02/2.04 - The interface implementation for this book.jsUT LGfMGUxndmj0SJ%PȽ҃"#QiJrR]9MN of쮃#eTZ!.2!!$@8mZWUϕԚgчKyΘ:]gc%-$ߗu}r2_TjM)|zf %m[že\()eI Y-R#W?GnXش:0$Cۃoo(f!鲥3;qT'$ٰ^a@D) eP&\YǻPK{7M3Source Code/Chapter02/2.05 - The Interface class.jsUT (LGfMGUxndo0+^ [K9MTi;8Q#iv$P-pr _h*ڤI <)&g\ JqZM;w|̾: 6-VО7At8+ ZR at8NK)8xaWxH'̹o+6m,`9iT-Y()yg₯y뱖{W} >mꚰ :J%H#1eeX,kz~_1ε7w'Ҿ0mu(!J+a)""hQRaLq&M@q]xݢ%xÁ]GH@)l\>w^ko7<:p3jbr&J#և؟]YOO nps;/}?PKɪ{7{ @Source Code/Chapter02/2.06 - When to use the Interface class.jsUT  LGfMGUxndm? 0|ےB o7CHPh.!I-U& Bo9xݽCy8LO(oF/5fLRL Zk3ck 6NWGFBT4SD ʸM*SZc9Ku B,S݂WR7PK{7uF]VSource Code/Chapter02/2.07 - An example illustrating the use of the Interface class.jsUT JLGfMGUxndTn0 +$P,! ٩AD#eܠ؎(PfQSuS{$Е ca` h=ˀRiAص̲E's(q6#27̵WVu +}%8ߐۃ=\9EםGЎn 10E@Eu Xֺ\}L}(mA=X-nP+zT?<~? m?^$Z͌B?vCflKL*:r.!jxhю}C{llേ<>.>L ܊R܅њ]< U<=6Nm.ەVѓ[_R@PK {7Source Code/Chapter03/UT MGMGUxndPKE{7kT2Source Code/Chapter03/3.01 - Book example class.jsUT 2LGfMGUxnd= @E~ݩY!mZIAc>rpM߇I8+kJ =wvUiCtߦnU&Laf:e}W[ݓ2a\P֪i9Eq !p<Z̈́@y@:Ad8 >PK{7Xk 4Source Code/Chapter03/3.02 - Fully exposed object.jsUT LGfMGUxndVO0~_q< 'PRRڮ@/h6ilI"u:)B}gi -e{X|?rJ;@^TJ\݊hKZ뢒<=F-Xs2n{qn`ҕ~X8jQ?&qA?o\0`] G XI߁ElLQFP8XҒg6d9gҷWL-v8&bF:%ӵR!: ˖ҏ 56 2 bE\21al֪#6瓉  M)6SͯqͥPd,4L*HlgԳ@ȺT?7H3qC\7 ;RMs NGf5m&$ItO|'t:>9vOrΓn'z2؝#R l*m2xo,A3,R,3zF׍$5S8l')5:rSxbU wHz̘6C߉^QՌ>ɹr΢8gy)^aʀ)S w/J6ghߌб'CӮ8( ]^>Dm~5-ז Ė<K]gm $M|(f/뽾?PKѩ{70%@Source Code/Chapter03/3.03 - Private methods with underscores.jsUT 9LGfMGUxndM0'$W=x){PH[JGK\ bdwxl<; " r0,j4T`~zvbh؍וqM53%J>+践J,P !JiCG뽞SfRCD$̨/ Ml͋›$ 8W=oli Q]UT3v|4`EleռIf(~*XbD8><#݂롯 PK{7 ESource Code/Chapter03/3.04 - Scope, nested functions, and closures.jsUT wLGfMGUxnd 0D9H[!cт$\dgglga[My(TR{h' ذPC?OJA233?ITzpvIyɐ'[q3icnQK~Q=:/*QuL~~Hfz MZ-g,M= PK{7+: b=Source Code/Chapter03/3.05 - Private methods with closures.jsUT LGfMGUxnd}An0EbJZ'T]AHL2E#{J^C;gI cV5n_/~V-퍝/fMG`njUJVN&ŵU$Idզ%t: {`X܉w+D(X(g'E!Aոj0 ^9Cb"V튨qf&J6˭9qdeya;Y ߋȦE_1v w2OTQMÁ d+3KUXe)P?Ob[RxG5Tqȶ%#Pܵښ$[.)ꈯ]//TjyE -΀ J|uq>?^WbDKd,r$P!`kZc*a𔧋b`DIYV3[vA!>5(Za΋ah3.SD1|t cF6h]q=幹)g +*NUana2IW(n0^Qv6dy1DC Ͳ =)TZ.|rGFcMh2>&E3 s7:fpgNTiۢ7JSRGxo!CƳz|\S=sP]$PK3{7@)Source Code/Chapter03/3.07 - Constants.jsUT LGfMGUxndMK@+֤^-=h/bC!x5fNrwg("f>yI{XAQ5Q $5!QP@y883tǒc S4߾n;f_-rX`TJ Q*$pH3Sr`ߤoDCuWd]@+ _ @>QB$sxp>hStVY.Z0Oh~U68;W}Yċvy>M/yܖFFU%,_qU䷦'PK {7Source Code/Chapter04/UT LGMGUxndPKi{7)yz5Source Code/Chapter04/4.01 - Classical inheritance.jsUT LGfMGUxndE10 Ew[*&6 "0$u*-BӐFL{;?\Jx"I-v=m拆[h؍Շd;cN5k"{'=N5 ,zpW,gg~cE*ihmP ,4^gL mTnjT(B\0HEy>7:sGgj( 737 /n;*/b*)_5SV饘jxlgU"d%|dF;{簾kgfV-Ae qƩر5OEs8NHw4L|Cʧr/U; ڄ/#jn'GIELJNO]6OPKO{7ho@Source Code/Chapter04/4.05 - Asymmetrical reading and writing.jsUT LGfMGUxndTOo0SJC/T=t\mM=L;`ǎ{NY%TB^ﯳDqV ~>'H̊RNjT*Kz+ap;s3 \u5zmאr%ϧY2&x;x>X@&,}:#s?]kiVM7+ lGYgQsGukB›F(]Ww0[UyUqZCV, 3z#xncT#4uJppZ=b2*?g*yӮbeKӕAsHh5 QXr-GKlb3+my6s@OɅk۔sxL!= O^< )"OP®e< 10d%@ g9m,0[acxɻ[{3C:5?Uγ#P=k*# LC'TU TXہ;*WQ:s睝L10Z[a l{ǯaUcsNAΎ'\..?PKd{7KYWr2Source Code/Chapter04/4.06 - The clone function.jsUT LGfMGUxndRpKUH+K.SAIY% \ @t Ղ KK* Rl 2E%Ey y n\\PKu{76<;l-Source Code/Chapter04/4.07 - Mixin classes.jsUT LGfMGUxndUAk1sKޕ =B!lX,ͪK}yyo9OҘLHnam\%ʹG. !ǫ0,} Ϡ_Hҍ+Y9ux׈ժlgSPNFLW F#,]ŴK2Q{~D8SGLUWC/)^ˌ9@&NqPK{7+QH 4Source Code/Chapter04/4.08 - The augment function.jsUT LGfMGUxndRj!6YV5[!ՠBDZ74T|ro%&]3)W*-8*t)$:>T`O>H` 4骧kmfu^~vY^΂YyA #Mܩ͂MvXCRQ$pT X`ᛦZ/ܣ|~G:Ej ml+koue ǟo PK̝{7Ϧ@Source Code/Chapter04/4.09 - Edit-in-place example, classical.jsUT LGfMGUxndWMo0 W0LIk8Ű:`Æ-]F*{XG_b;&Hz4_7hsY~QA,B 8jȎъ!JbRDD_>,1A<>,//@r\=8AO#٪<Π6ӶgOazaЉL3d+a46#lx֖a\ɡ3mvI)A,D\RsPW5p$U7bEPcc;*WF r^9'Xsz ՖY)SE Gl% }wqlSG~a(V)XGɮ53gXLČ@$j4+Rf\jW^__$tJVNv_E)Z[q2q0R6Go7V+_WTY <a2} rs`Ľȉ[Wb|"G vzЮ2An?Uސ|LtSF@E2:&Lfb.VQ#\*YEnM ;Jwk Jresw/Hu)3kJp2@`Tmlp:md_Oj^-u@fH":0 ?•e1;v<[ \(1qf<1kٓf?iBpV[رf3!kY E0T1DǠ=P#rB珞Bf#w?S|cZD S|qx'ĵu 7Rf$}5 Sh[͚-in#Д##\6c]WM941thC93(BqTr C'2͐w9Xڠ݈`R!L O1T_~ušic؁ь|Pa5JjmRUd7 mLn[FkO~#mLJԜP5wOT2RQ RwTb\!҇m4% yШ=}Iq[*Ro;/˻In[$Fu:-/n96UL=;iwceniwB2y:}ΞS.tg?PK{7FJ<Source Code/Chapter04/4.11 - Edit-in-place example, mixin.jsUT LGfMGUxndW]o }i$]꼯>UjHJgU 1q塍' t'BTD@zgB_ uKB9zz2E$ْ-ͼthU)E&SJbDs D N4_Hȕ.ߵM-A"Li45YF+5 |L0[Yhs0YJyݴ~C=X)ÉY`v\cq8ܥ~-s״3'ob0k:ST ?nHt} Vp]//>\NR5~@ fɘl(wJ"TR ܳρ4{{ vBZA0;Ӄv@c0|n0Uɍ|FenYzb4I[eKF2-ϗ'܋vN>I%'w@nFB{Mqq=yTgQjw뙇5XEtI?IGL@v䐰;Q q0H2^~#w>t5ӐΩPK {7Source Code/Chapter05/UT MGMGUxndPKY{7.T;@Source Code/Chapter05/5.01 - Basic structure of the singleton.jsUT LGfMGUxndmM FsYXK⦤ N+ BӻK&n&:͖ػ-6-Mp; j`NC"fn' +ş3%7y]ja(RRIHƞ)q(&?;<PKv{79+Source Code/Chapter05/5.02 - Namespacing.jsUT 0LGfMGUxnd͒n0)!@# H6>< (R O1ޣvExǏl6Pf.kh/YъOkSNnr ~i7L g]3l:e{$J]B a,j sn5xus?u0͵g/ڏxKyGݭiQ|@srUf&ЯעVU',0I`koe\ B?Z*e׃(˔7jko̱,S5 k,zW;%FZ=>z \TO9LID^;E?ɳ6*MUnxϼ~z΍JjK{%$ i O0n y_0cK+N34`V7IpH$ݳ2Y,V7xSdg88e}nΉ4&y/KQerXIy~t ㏣N,hfx}3\9,R{ר | m$)t:+m&hu O<.% iY,$~3H֐)WhCyQ7FDu XQqY0jdzݐ)B](( ;`ΕS蕈$$*̒K1654yHjEizQnȇsZݿT%}0jL=3Жr64BoaT_5qz)޼ZڿPK{7 @Source Code/Chapter05/5.04 - Private methods with underscores.jsUT LGfMGUxndu1k0wk2RR($ΆR++NtpzNmEibK莭 04[O(JtAo.a ^Q;yv ?R#X8Yi|e~D.m#:g:m[ mTպqZ[Nq BWf =f>ۼF/x\^"nHo |'d|7^vUga6T/PK˛{7k=Source Code/Chapter05/5.05 - Private methods with closures.jsUT LGfMGUxndݑOO0| n[_ĕ{dda{^ K):oo3o2j'R!,SzntΪ~CE""1VMVe)Pd6 fb䦟)zu݊  ƞ1s:4<cNseaiyA 9 !B_:C >BԿ PK{7tYc<Source Code/Chapter05/5.06 - Comparing the two techniques.jsUT LGfMGUxnduS=o0+=F ,ED_,2)G%A^hA{'5[ܐ9^CbMeN[7?| F3$Aױ0s)~bo_<}U(}KpQ;T=puI>sIsxz-IZ3bQ:ٿJ281tm ö?Y ĢcmUR}ObG>"z냋cJˤ֎{C5嗅:~JK^g?}\S[k݌9gZ 23?q/ywDO)74/$^5,\7PK{7$(22Source Code/Chapter05/5.07 - Lazy instantiation.jsUT :LGfMGUxndT=o0+SdC"e!PtpQcсNtSR7/M9N,#z%r+GN%|w&C͞eq/*W_EC]'Lþ=%|S6``Cb~$WH8@_L|۾4R%<5 T3?9t)[8 qX$ p;Au EK5`R40b~ݔK첛)i,)]jnUR]dHa@NKfhp|Γ|Ήm)9$tVĕ\Bƕ\ƲEj3I.m;%I+q2qpvw=ԽA%J᪭ ?Ѽ?M{ Δ黀BW !OY"'XX}1PK{7DۜZ)Source Code/Chapter05/5.08 - Branching.jsUT \LGfMGUxndRp*JKKW9%y ٩`>o_bnjqAbrBFZi^rIf~B5BYbB~RVjr#P$ZbhZ$FZkhl,J-)-K~ns~^J&H=ܷV0XsjjhZsPK={7҈gCSource Code/Chapter05/5.09 - Creating XHR objects with branching.jsUT LGfMGUxnd1o0JTƢZ1(q.U}@^ SFQwN"<2N|j^"iKY9AR'U҂Y@ 0Խ%,13OdkfeVF LO}Vh)iv{n{{ &8:&B'/n'QyucMOɍѶۏ_dof&Y+ͻve X *pHk4k*&(,h 4D]oU~i*Q%yq8#!-4F0DoGqF\$X fhP8 XwLn35"nI<0ABTrj-V TmbPK {7Source Code/Chapter06/UT MGMGUxndPKS{7U8Source Code/Chapter06/6.01 - Introduction to chaining.jsUT LGfMGUxndu 0 {"AZ]>ϥkeSn19_S`mH!;a0RbYI"] 58$@O|g$>S,ܕQB2>{eY?Zz6PK{7m#h{:Source Code/Chapter06/6.02 - The structure of the chain.jsUT HLGfMGUxndOk1sX6qǸr(BPvg"Hr)_j0^K3OO'm3EP@sxPMpkg }^FCmvmPik[fiσjT<Tv̆ *hh5}7}E龍>$0恃hvy_/UOZo qUBKE:HB8I\!cT?dW֑U#4g P&dy+$#2݋s1d(;IɃl !zOh 6B E}; NR3y/?HWFRkۖf x 34&^i3͒iN4A=? GHh欉oOCie/{İ5J-l Y{eyJT1%FTx9P>A +2y$z˄@Z9άawWvuERAW"뷟9Vg}tOE"DରںXd_Ы%]'*Y{?s!$FXPK!{7zRGSource Code/Chapter06/6.03 - Building a chainable JavaScript library.jsUT LGfMGUxndUj0SkK7 afd$9Yh;(ҧs42m`Vv5X%ljjTPI辕$kd5RpEH^ 9he&w.5VK/(tf Ӂi 1.Jtd qw NCpBE*撎\\NטxmV.#o|Z#i5PYtɣ@'N Z]-3\*:}Hipukڿ'qeo_ߤQpܧ[.;!m)glvM]`ab. 2Q\B<,93ڍRѼ:K u[,*TZ.! dKS}z+[ɍ/­\hTʨ; yi?qh*>iPK.{7FԴU/Source Code/Chapter06/6.04 - Using callbacks.jsUT LGfMGUxndRn0 +|k+Tha^%Iߗiyi ܲf` 6u6H,.aBH'lwjм@uڝu͌=!E[Q5޶5E$)ӈVFqQ`"MjbZΧq܀Z/->sX̘pGC^<%^r?}[;uKq2,U|KǕ@E~'MYm|!5t2W D޺7+0)aneMuFp;0*+/lv),D7uH&{Y.Jă<"X:C>PSB/kM}m=HxrYO_8rFaԫ\6:r}~dV:\)q5zXH~e6V_!}JcBi}7|.Al!zѴ 깟}B̂J:vn|RÖ{FcPh+PK{7hL3Source Code/Chapter07/7.03 - XHR factory example.jsUT 3LGfMGUxndTMO@WLOk SҨB RU$aٌuw$)﬽R/yf|o\!u&p4 7)H\u Ybx`Uh,3[\de$FG0We-(1]q i%͕ #xM`4BiM?`ZYe%{w|+ZP"≋JeOMT6fI4$ɡ(IXgTB1ԔJEkxP0+8Әjv6gѾnb eqPr\XJi]/nZ*}3 Ժ&\.|ٍ٬wrQMGt$$%x }=lB/B/xY!lG|87Vd!F=PC(:52.zt+bZWץAzopHhtAQ*њAz6j]Bk5\1Xs \T-#aBk.ß{s ׸7evSɛFhQQ5}#laxe{!v1w6)utPK{7i>Source Code/Chapter07/7.04 - Specialized connection objects.jsUT ULGfMGUxndTMO@W U{CTm qXqlYkJ;ku "w>{33kL0rpT3g\@VDxMqB+xBEL4E]DTL\r-Q)qٖLcʙI)RyMF#l!,[,39dKGAi!$[ * (e"N_E(ƾ.QU{x={M8{c;謩9ߝ:KFGbZ֭Fh:'ƫ\^a`9֭n$gb{]caƽu^g8Z,]$-EF=CܲdkAb2^<;<.%;na?]c?bΙ`kW(j/AG=ZoFRhv\ی' Sx:,"`)'Q=*AʮQ^N\VJߴeAY4rtӠØ|>:8L8躸ym/ϛΝ?PK{7'{GSource Code/Chapter07/7.05 - Choosing connection objects at run-time.jsUT zLGfMGUxnd}R]O0|ϯطrީx  jMt6o=GnfggSq7 U#2^K 8KMU@ێs- XVo뺵lAD -Gb1NlKjEs Xe0KI\VxF X;F&kA(X*f}d ¢_tpgQpc%$VZ?3RX!Fu?-Kvx."ㆾ}i [[~J~((9X{8Y֡?V50+fȚY:=RON `N?p/}"t^6U-Tr-B͛DRxuO%U%}{a^+X@W:.`Ƅ``v_/td2e AX?.oqaU2LlOdK$;M@ #swڊ[wws=X`gXNN,3pq_oOUjh  Hhg%4/TuXgHJt~{{{^. 6fY:+';BX#u~0hcd=rSQHpYߏ zKg.Z]{a&8˫QZdUL&8什.9uf6ߧ^e n[_7E(܁ӶBvf> .d/94IayI&sjˆlSߵ&o-6|O'8]ٵ߽'?PK ({7Source Code/Chapter08/UT LGMGUxndPK{7}I" z6Source Code/Chapter08/8.01 - Event listener example.jsUT LGfMGUxndQN0+fG;UPcocSǩPu"BPqb[3.rJwLYV@D e&;uNEGp- 7ɶwݑYE - 0^Ã{ע*ޢlG I$.#<ɹy~vTi(d5HڡaXOtT]p=ִRsh|BMOyIu,|ғYhVCOPK{72$Q1k9Source Code/Chapter08/8.02 - Other examples of bridges.jsUT LGfMGUxnde 0 D~EF8gW֨i%u(nMxw3yX)@ SA(iv;FѮqJdޘ 8ء_P'sǼјg2nF/^qW֙PK*{7^o*rwBSource Code/Chapter08/8.03 - Bridging multiple classes together.jsUT LGfMGUxndm 0 24dد-MeUb~ήDn%h =d:F^.S?PKi{7XXnWQ@Source Code/Chapter08/8.04 - Building an XHR connection queue.jsUT LGfMGUxndWo6_qŀZn ]="iڹP ZlT\/;R2?Ѽ}S7L3;,uɍ9Di)+Fp;†Uv-B.&gL*GVHu: 4KyCAD*un8]ceFPjVk3faӨ.cUIV8,czTr pj Ȳ31| ޖ0| ٍ0-/[*! *+oԿ"N9BuF>LV5KG J/v'Zqϵf+jf sf_)e7yv8g`NE\!ʳ~s L-S=9< vPo7%/y?؉eVQMR] yN8QcSp )+ҝhI&JAP#CB!W9/ 1N LHcLx^S% ^Z֗Ld& >>oByn BY`+ 8?3zwJI+ƀaXAC(Xi0,3"$OӖ뜺è+ z,Y49r>quQ>?h^u&m[ oYy5" !X''A]*mF$ȡ; o+;m:䊩X`:"Ei0TuۏsgɊQ I֗ r{}zHlk9}BIqePZd5G n ޡW~KFa6;/C_Lq2-YL /= ÿh23$L~q(:ڞCZCGMbu#unˠuxŝ;WUrڶwGakã`@Uv \g/8UjpAS-9lzM[Ԗ4ɝ~q'ӑw>Q"(-!xpb~oITWTJA]qxW+[EYgF4mz_n&VMp7B|7o#< HxU|W h#|8QxSH~0hcœ I.-gS씢b#ߐ"1bKP(҂ÐQTvZwj&: .5bׁ?PK {7DNCSource Code/Chapter08/8.05 - XHR connection queue example page.htmlUT LGfMGUxndWQo6~ﯸ*䠱d'-0ؖ.b]eن-,T`ߑJqvۂx};NNjקY?7~)x04 Z4p{Z0n$(:26]+V6f0ΗW`+r^l #H88,@‹M4IrbkV|PHP˛ӢdbE'шd^qolU<16L5.-ݏנ%AmN'#C @гAD.BD,Nw`) dJN`;je^ {L3. "0iST$zpLr[.~R׮g70UdSϟzwGy$Һd9(}QVEVȉD>NY-,c*-Sb6mF֠ԁḒ 57voqJND%uvQ[A@/B#1~nDnM=L.WkeQޕ~fn>`^*8Eb1RcFRPC?ph+қLCjoq9)f6J҂G7jBǮY~rMȣ=:SbA d m쵡8< c׋Qiq@/e>¥?fx? Eč]%Ĭ'ʥR@ʰȎ)jwvYh%4smLy yt45O-YѦ,pp\șbb:6#nܹG|57%Kt:ZeG5FJ bP./r&Q ? :B  ksfPLAi$ ۢ洧֎Be  _Ưs^%/∐#Osr|Zp3b1+]hN!M J8bci.ʧ>١\/9`\2d*Rlg%79bzs{a+ ~V? GYn>9Z_AxRۜ2,ۿsLaN1>Ŭm.y v^x7ܑ=L_|Kicі)ry2yfP|fPؼ1&`ptE-@ϊ/~PK8z7$dWe=Source Code/Chapter09/9.02 - Adding operations to FormItem.jsUT +KGfMGUxnd11 E9Y*g@IZ=N_,E6`- #蒎"eHhkGEkvr.D\҂dpQ̖¶jrwwa~`X0bИ.doIZr,dx{ц#8 Cy_ݲF JȘ5r-PBVdFj[#G;c`)sxPOF`ܑҝ18NÛ&Ji=Sm90/,WwpdJ)8D4!U:g |^kj7^L*}0Z5QȈQu,ubc݂`yM_쁾fS9eR#.)y`/!wwa8H-;oE :lD{?qg ?N [$ _q A[9jT? _P|ucO^8u6hR }@F i&l3p={) ,^O0H.NPKz7 +s% 5Source Code/Chapter09/9.04 - Image gallery example.jsUT ΞKGfMGUxndVn0+F餽)-\)ȁ6Dʁ;H- c$<7XXD'VpJi.@Con<Vc ["g7&ݕl62(fIƢxUkr1Rv>((}8*nL'Uc6~Bh8I {gtj9+].JHR,Ζbr9FGJ[ AvL r *$y~xOHou@jMa&^X lPt!uV!v^^Vd熚<-+o fl0/":@qT*7+T3KP [=㽢]?PK {7Source Code/Chapter10/UT MGMGUxndPKآz7 ~MSource Code/Chapter10/10.01 - Some facades you probably already know about.jsUT KGfMGUxndK+K.SHLIq-K+HQ(,HQHTRPLS(K/׃,.IK-(PPHҀĉ9ũ@ \ ũ($&g5#PSWF8 (h$e @`u\\PKz7uSR?Source Code/Chapter10/10.02 - Facades as convenience methods.jsUT ڛKGfMGUxndN0<0U lD,1$Ԓ#Nڼ;v @x=e0W@-h,:Ďqγ!b҉֘ɼcJ.*^8l W{C)^Lٝ퓳x!`r/wPƓi l鎾Zl˛I-LM1T]&:vߐA /w3B/EZ+P[Smʧ)Ƶv4~ CPK#z7m̧@Source Code/Chapter10/10.03 - Setting styles on HTML elements.jsUT "KGfMGUxndSN0+S5D]. zǪ49NKdQ7rq<~PgX0CVW_v&ZY~4谰;a6t .9YM6{d1f8ejݱ\ o-bQ6嗀W7PmƊ搤*B+6.EyX觅4~x1^OTܯsvNd΂q\wiEei#]Z3OW2Bbj27NGh-ǀ?nybV9eQP-:n.Uh'RZ$ oF 9 kv^cγ ՝<ەh.+3TK*/$ͪrkkZU3&qV.XFu~PK6z7ѺQ;-:Source Code/Chapter10/10.04 - Creating an event utility.jsUT HKGfMGUxnd}Rn0{HȹR{VٱbMmB#j_g$oT^7hgbVha L0pK8N?&6Rްv.[hC=)QCg @Y^Fh@̨b(_(ѷ`+}ԙg5urc%oh<3A qjU޿ɞD)\!$G)K񇶝4/ eRvya"VHnjqxh|V_BVU|jEcN9DouUPK {7Source Code/Chapter11/UT MGMGUxndPKz7q>Source Code/Chapter11/11.01 - Characteristics of an adapter.jsUT KGfMGUxnduP0W܍GH I~@)kH)Aÿ[1q9997(:%=VW),n5J(HLSxPBs*ҨBP:i"%1`qM;Nݻ iLp=o%8[3PK"z7r ģ@Source Code/Chapter11/11.02 - Adapting one library to another.jsUT @KGfMGUxndu?o0w!5Z!U+5S*5(C, B߽I wVc춃c *)n23޺nϺዱO~WJԵEZ`dh{Zo#{pF譨dxR ߘi^+^Cn_>ip*鳌(,=r|v . 4!"жݔi\2=M'i9BhP&P[L`Cy?1s8JP4ftUzrgG@Xx@+; J GO5GC%¼Z)ӽ:i$dSX(򙓚C&#a0@W%@\1Zh$@$U%4Dxg 2CfL#8԰W_~쬬yw*Hu^k1w/\2)^t\_kaLi{\8RgxTWUD,CP!Ksun ]b,ǒHj.8yh<`*4~$ѰVf菵|4m'Lǧ$.*<3`@)gղ\[0jK5LuT~xa;E\-S/ 70ܘޅ 1'dAנjPHY > l s[!kgSqz~44Rw˖דxd4\=SL懶,*ߒO/DN 5`9]aJ]HbVֺ.5!Dj4,Mw'I[/p4t5D=¤gi-٥n:U4Sw]hk[b5qV$ Qo{YwzEe85Wy{rOz pt@Q)-}h)v-tH'84\aW~۔QlZdrհ:R[֣TT$11ʦ0 1eh&[5 =l̝(#е](R7&3  y4u5).5q] b 4[eH*)PWrx';G勌lcTcJsʃDB"*tOQúHy$vDUةއ2+oB]xRD"F s>qG$x(H!Z\`ik)^|&v5NqFˬ )+{>G̛F3ٟVuQ3J?Qf?Txr558iТP:9x`}d)8&S`IC?;w'+=f^/T.ۼgs֛oT]"tC?,eɺDAnG}s<yp<}eOdfqy,zű`e[ыK8+!9mR!ӏ-=Wo#Mͺh\u0X2Iϰ V07*,izwܛF">г]]5 Ho#A/EI޸rv+(ʏ xjպeXhl֕-]|q#fcOsS\c{'aꆋщV?[1`c.IEj:K1]"ӗP,0soEf[N-" W|,l+/PKz7T>Source Code/Chapter11/11.04 - More on adapting an email API.jsUT  KGfMGUxnduRN0|W*$'j/}'pUrAD~*\d{ J8ָT<=Eb[=<>$ _yQX(fz 5rߠEr33glgVp>fnVc79AhyimBd#&Q=Y ܢ Z2e[\mnINPS\4bO>?S3Fl}+P, j;I)+P.x9~YE{{*K5eS ?W PKz7K6cSRSource Code/Chapter12/12.02 - In what ways can a decorator modify its component.jsUT iKGfMGUxndXKoFWLsl;FciN`aEm(RX.㨅{gvOQBٙo"<1HЩ*թ^-џT2@8YZp\%#S&=x' ;+E`gb*}rL`ΓLDK#=N͛U ymY hx?v+ud,ͤ4D{ lJɡ Ѕۇsz1Ã{A 8U%tbe>ۚ fRj}2&:B5KT 6*8gzDƒ j~ar̸/U~ӘÎFgr{j@"02Ѷ WA)p-I)jaW% &)'0܏$u0v$K-t@yᠿlJω[Bv!L~no/-J5ݎ9QtDD}>82{6/H3-;p*ul7"G1N"];:hދаL3-_j_Rԏ^\gb{mvjlp)+ YɈ"tE5;p٣l+HS'sZXamZw"s_Y0{'$!I5yîx @L?%3lۈJ5k+M˴O>!ȳiwՙguKSi>ҙ\cfyw@!_ْi[{ #:A3skó A)S1!:f! TITdBkQSbpG(sqLOh pB3I93>6f4K`$x1&(] ɾeAWA8G''}ihg3vjM ˢ魶rx]n Rw;~fw^DM1B?qV5ǭȢ Yd_knSPvTPK-z7Uzr 8Source Code/Chapter12/12.03 - The role of the factory.jsUT KGfMGUxndU=o0+Dq3iH:P@RuGԗ]CN&y=؆ c^w9*@Ir#rN|E?:]Cي0)3x/#PQ$3\ 2FI#ͮY(16_˂rB;2»2Wc@N4𭡴ІY btA`q,gVdy#-'q:z#ڍK ܨ>dAKr{u9;\hFnNk*N|~IQ* B)DӲJWaT {ӝ dD" C'0x S>ɦQ=RBg^b2L>Nkh`-x_uCϼR)u&HMםXXe9@bkj]bY|AHb}_4QpӺkW76RT4q{GW5L0]b4,쾌VabȸviY/BKbX]5 i|z9EBWn<}[R aEI٦2K8Brx<L9G f_u\ԘK.mV2sVRð-Q ?bw4+-hHz:5)51)[;vp;?4h.|DŽ\{=='g6+I GdxÕ)!Az}K\5pk0|a3 hE&YbY 5)L1ml\w=2ALIKt^~ɷXU"-j$%kZǞ׿%[MޢA +V:[,`;/PKҡz7)d 0Source Code/Chapter12/12.05 - Method profiler.jsUT KGfMGUxndUo0~_a&kvC4=xɵ58vd;CNb'k'ú&w}}>_gifErN,Iꅖd]0)Ҋ*fJ8AlvL~'-ә8$=If3++\3rYVRXt0hCJ/¶-ڸN+ Eqt'&ZrȸܤHLz|Sj _5@&!I{zڜ LM|>^ٌL] &K"͸VQa=KETg-t] ;M"^cGYn?< 6OMԠJ F+v&lm%tԸp+P4̥ujTp7HrK-d]D ukc, Y7NQŧ~%x~!eLk%Y~V58X:BỴ0%!TmjKoF]8AmpbkmcOݼ=8h<6;S$Gt@CGYMf-^e!n.cM8Cg^}kԯaYdLA)F(~AN*(W?PK {7Source Code/Chapter13/UT MGMGUxndPKz7x a 9Source Code/Chapter13/13.01 - Car registration example.jsUT aKGfMGUxndUMo0 WִK{ ^fbHJo)ɲIK0Pյ9j9 naWZͷ% hPB:,w~\%m.<8 LRGB>G'?.#=$L|Fd;v͎ l@noT/hхў2~R6g| 'dk4nO9aL_u.y a./c=gܻ AZCyNx<]kqxEQw >~ꛈ`P=Z`u%7nh|R!YKЁ{-+t;ABGQ0XI~&թH9tǡݖsIZ[`PKz7o 5Source Code/Chapter13/13.02 - Web calendar example.jsUT KGfMGUxndT=o0+C#)th F:GD%Rhj#%YbvP:xwQ,Q ) Ѓ~7gz.βvral"KuovA]P C5|''ض\ :|Y+4&Lefr4)2#V7c>VNm4:kjhiK3*RC]4/6n t[Uc;w>e ,I J_Nc왃 [eU\iZzkYBEa.#kxJlqe:*WTA H4M *:/xm\,SҢ嘊T:`B`H}0ӸX T5DFAgަI}8X=DR_\$PK؞z7DCC 0Source Code/Chapter13/13.03 - Tooltip example.jsUT KGfMGUxndVMoFW!)GXȡqݓ-HdKpB3\J!@t73ogu('KȔv 4 .VQ$6Μ4:qڢUXvKpw ;p;iz&4_p̓,|kwtÏWWkX@j(Rbftnӈt|SpH2<ߥŋ>QҖX`X+99֨ڵS|D u]vc6?7f;kĖIh&^y!e:I' Xq:8}>c?9']1|bc3. ڌߘB*޶`+K S[4OX˱g:UL{U5ZϪݼ1TPjZVהbTOd 61 tTWI^4\[td"33~ o@ߢ3q&|p+7yWtn6g@1~!.̢aVI¾$^BLi݆ʭyB _Ib#*?T*RPKz72ߑBSource Code/Chapter13/13.04 - Storing instances for later reuse.jsUT /KGfMGUxndSMo0+EޞCԪC.zZ,6IVc YȚpE"HTDw(zC@ _i K;NF%n:0>(:x<~.q&GUJ'Jv3*gt"@gќ.F;B<[@B5JkeRSW"+tQ^ rd@)jJ ~3B",H&/PٲWh%3WFVE$%2aA"%{ GuLu͓7%QԼ f{D,ęj`\:$p̓݀S+!VՎjm;J;1Up܏G^LpFhb|ʋ>?Jlhc0ߦR6Ipxc $/]bg=t|fH+/۾/a,čǑEηPK ϝz7Source Code/Chapter14/UT KGMGUxndPKz7BCSource Code/Chapter14/14.01 - PublicLibrary class from Chapter 3.jsUT KGfMGUxndTM0WLOzZX(tG* a73nh Affޛy֜yㅅw $yڽ%h-pJKgmziq+'=d<k<>V.|X+ O'JHȽ2 F+#>Gn  /}{hAI 4wTߐ=*ήdie )1Xe Ҕq992gs] HwQXj{>8wݻ:v(S9x؟L"o*TWxEicOن<PKz7{ 0@Source Code/Chapter14/14.03 - PublicLibraryVirtualProxy class.jsUT ȑKGfMGUxnd?O0| %;QfJXcT׎g T8ZG,X>ウ\++Կ @s9$yp7њT 6\(ϝVgeҗp.sZ׺\psdK*jS-qL^A ecƼ#˖N%ؽAFK-$:ݦyaxaѼ=Y{rSd{dBӬ6>pH'_[`ZVɓ^/ނC4fAQ7oAn6"i;<&{2IPm21B( .M)fZ4MixE A;~> +˗o_!N*"w'h_Bq [mpUM@iI=8PPdBeQjDm`V,(Cojk?;<%WhBr,daf9ŅVw5Ug"xq@ZSLmDa^*M˻J:r:>BT3`]s8vGt%kύeKϤ0@c&J yH<.9ZL-f?N,{h pm:/rJjD޶Jܐ7Fii^w\Ӫ2JۖUFk.{Bn?:>جv-|!aZJW١=MV%l?Uk%15Cdd)1pvb`Cʴb5j[O״k3zy9maAUPLwBk$99"]:ތiR i' "VG-u YoF>uMnu92|  u~@;&D,[qvX5[SNs<\TғjEkrOzY0נ]o3"u2k&bZuC1oHQZݿ)U0oPKqz74Ey7KSource Code/Chapter14/14.05 - General pattern for wrapping a web service.jsUT fKGfMGUxndT]O0}ϯOsʢdTlb}<0!1$&6fN]p;M>9܏d{ T{+n eQ,<¤weQ >ᒯPFnbƳyΣҴ*{_#1~j4Orۘ#UvZ݂[8Z阝ӱá9]1WRip<ďE('6qKy[6J#^U< 9fHɖR04yMفr`P7 b3x ef>} :d_Eu AxoPk:yT˜_Aj@JƔeUg=2 *+[[x3 PK($wG(!cmviL~bx/4X`k*Oav+9[fsM{-?&@]j>I̲n īMX(u+{~+l`P~F"Gҹ6mp!Ѭ2L q큊 %`Rz%*Bu!8Q=yR; QftYl'a(CdPefIfF[fPf֒<-ao4cQf{qP}r|#{DmD62׾U&{`zg4ͬcrREO" [P,+b Ya7־&-Pz/pT#)YIt9-ק%֥d=J$tEvU@ZKC3+@>I/ùCei~xK{pؿR1ҥLH`Kjrg,kڃٻ.^uکuO( Kg&&=>- ZՏEHdC*Uv=uU+G^ή?u>e&zxKa -V)|v"Tzpo*I?2A,UB0qU%uԓ9ޔ~s9PK֝z7 MSource Code/Chapter14/14.07 - General pattern for creating a virtual proxy.jsUT $KGfMGUxndUMo@+&R%pJpz ʡJ}U)x.I܊YXzjOlyͰO'< Fryɴ\ &p gEn~fuN.ioJ JiФ8gR)i9UH.6eΏzl hRX.a-a ~YUh! ,ҋIe43TmF0YIf=E$}YShbp{ֵqD254)CbCjtf(irƴZ p,JEK Rɠs}G:Pl /E13Qu_q޺?zӥv܇Zj|$@h-n-Ov7^$7?PUyظ0nݶoM;/+3BC7" X0ñ~^J(e(8iשkgMHHAQDCx!|d.aJdbN=*ToPK z7Source Code/Chapter15/UT KGMGUxndPKz7I2Source Code/Chapter15/15.01 - Sellsian approach.jsUT ׎KGfMGUxnd}n0E o@A@RtH$BR-RCm] "9;|x͹=+\k0(m'X7GywO_?J ;YUrW;w'(&c`՝/]hWp hŜji\be]3?[QAGg==T_z ;=jQޏB0"$e ۳s04@D^M1ieduC|ئ-~zBMFL#rqD1dtPz7>x$,2o`(t#:!y,Ph#e^s bY)3}S[ϕJOy.Za.~h"1ONlyӇ7PKz7s&.U;Source Code/Chapter15/15.02 - Newspapers and subscribers.jsUT KGfMGUxndTMo0 W''`[׭ŀȲkECcH2^{"=ONr]QBS`U Mf/)Jop}Bwxԕv('Lth44!I} kJhK S"g&L9H?] ˜LT*o"ThK BCcehv0t/QͨG!o5"Z֣QUz>*].ݫI܋Unjk#rD2#!Ӏ-Vq4;5} `w3]/BQFN&IH!hsD(w*hzdI_d7>cu? Zzb!C<PK͛z7Bk@9Source Code/Chapter15/15.03 - Building an observer API.jsUT RKGfMGUxndMn0ّs2ݶ ㌃+F3vҨ5𓒶7QJe/2j|>3|SH,A睿6`00?/[qp/d368gzEmjQ,{39Lsc8 MW_AMxt-ɝ̄VetttɹYB(M:&H όV!椴q~Oj8x ov#sCpV{P3v,&uXΒ3;Ne4SBHH1zR!oa'PKݛz7G|w:2Source Code/Chapter15/15.04 - Animation example.jsUT qKGfMGUxnd}Rn@ H܋zhzJ*E{$<c)}([gtjSJO2z &Ni~&n1E,'nպWes^mf975i 9V@ECx)3)Q'4:r6C$$Ѻ }UCiDv[ȷ9{v9D3QR\hOWF\f AH=9蕫g2h|wK' *5h9cc?HNQVţځnG["TNqWA Q'y- ҃v ȱ(MpeC)HYx)<2%R[-r8i|BTw!}x@A/@w$CU#S8$\G^E6&c'vHv5qwl<q)6%MNmPKC\KKb <%ChbZ12S]%Ӎrgo_k9g= ܏5Yw{.SG߾|^_PKz7`2Source Code/Chapter16/16.04 - Types of commands.jsUT KGfMGUxndTMO0W̉n܋zЊ= r@BL6fk;m#؍$7o>`+U⭬*&`@.k :{%3&YE;M-r˥H4w V-; Z-Pj~|uaynD{.P_.=`Hsv࢘fZԆ\>Zr__2 ?!x-b3+kΞYHf>a/,oK ' ̖$ WGneUf\yQ=aO{[q>3BI" dgiyJ)y%9)띉Cr(VmKI+pKayaT1,M*gR*U Β0]#P^+6?kTpSmғgu18"kGv:鈛,.bwR$>FiS 3e8cD:ƫ3h(=LPΝ(tn:R/g^uC8b R "fX焏'.5Yڹ%X`P]C\'䦅FysX?aXJ(t#q>(Ec7F+xb5}Y"X\YY?PKĚz7ov } >Source Code/Chapter16/16.06 - Undo with reversible commands.jsUT `KGfMGUxndWN0+,!).'^(H{`8m#$r ;c'ݔB"{xdJ3>+V+'$%sxDƞbє\v?0CrZrx<)Qy#r]0m\g] ɴV#BcLAaT!rV {F(d!7%o_B"D8ok8*ϟ$y8]$Fg::*Y&r%ǨCRRAUmE[$MS"crikӑkZ")XGLp*(v&>m 4h-K'e%SOZg$vXi ~|cU/)}}( zκNߨ!ߧmp}eΤ:; meLfpĐQe$9gr]~B%eOyO{YDr@nRэ+jVBbZoRBmiiGHl"WFJµ}TH9o"W--M$kn²=2;/ݢZ;CEun_e&}6g<_`ONGe-rϨ(#Ҫ ڴL6E{5> ZmVu?t*ZC@=3n 9#mhvKw(vB+zƶm/LF^QCn?,&镬vk 2(爌j샢 Ds(>8Wop` 5HA7]PKz7Ed:Source Code/Chapter16/16.07 - Undo with command logging.jsUT KGfMGUxndUn0+ArnS\h(hȤ Q&QvYyofhvrL(r&"oR8M&Rc 1mFSx * NTh_>`iUK%ծb}C<mΘ;8nF^O(ֻؐ[JkFU# ٘+"z56ɤ/8H|tBb9;5e.mT-_ٽڕ'Jzon6̖K`ۯ ʌi6EΎ!%AڀM&SÒ>cl_Bi.@/9r-*߹#'t+ʿ+`ђQeڕ!e;`43pC2d+.UӃSt/p %L6+ 1r~ΰ⼧ ; oAIV\pʾxיpWhA!M\P3h-e|N8uf@]9)æ65-{h!xoSл};43^t Ӽ܄PCl1}c($q~d *קa.\ls/qLw,5{ IDC?;(*W䴉p0Y`0KRX]Eˊ¸wQ6>PY&bޅvBtsKHO>7KP=̠s u% g@F8F?y(804J5W}4 '8eeW!P'IҒ0AW,׶pr_6g#.Eoؓ2{n@=XqR!x:.@ \!Em9Q:" iU+:] T)S %_ie\=C8Q`$$wHWHuk*&?Ru95V38hUzmD^B> ԜV#uPK!z7w6#<FSource Code/Chapter17/17.04 - GenreCatalog and SciFiCatalog classes.jsUT nKGfMGUxnd}Tn0+q)@M$4rAR;vX13*]W47 m Z&܁ @uBnPRJ7 %LI)H i Pi<mQKE R"Zg]B`Yt̢1ER9{kD8)i\h,DГ52;xVZ>sjiЦپmW x2OS# bS܃@2mMA}<*{INǍs8QtST5c'GN +D or9'rev7O?!ϸ{iFJ;f3ll.$&hvx׏Pcb9KĤx%RXdglf/Ӧ=M<ȏXYNDR ĥf u02V] ^X#vJ"r:^(3@+]Ӭ4UCEZ=$o&6DܢVܠxD{>G}sd'JF? -YyRk cMG ((7e`z)y6+kFQL!<׵욲oҗFgFrlR=g9}ݥfwDf\G@ӎ bf*ɨ +SOjl/';!WwGHHҊ$-OuTpE\{IOe^Gl1c1Iѣ 85o'57}ꦛ x\єuT5/IᱶE[,^(b3)js8g @Iyڰb]bq&㘼 7hAzW<TL~f*sn kgKo i9șslěMߌuPKz7v =?QDSource Code/Chapter17/17.06 - DynamicGallery class from Chapter 9.jsUT !KGfMGUxndT0^rVU.=!6&Qʿwl @ݨU!{YV;h ed#oȓQ 1'MɎr!6RV,@}Uy@\)E@9h"_Ϛ+$PnHIc)Lk"U](,q,Јg.tŸ)LG7|1H|&Hb?7cC%1θs =2  m^wy+7&e? *x]ᬻ$G?8KK.LSF # ?e> $#a($Dq!3+SVAٺv2%{I LoށD5FmF^}-'b6/H\Qѫ"H Aa=e4:kjrO/H.8^Yl2Jl,?5:,Lt£\Y1~gfKw?jT!'@[|zQJ#l~-ߊR/V[zPKz7Q啹rGSource Code/Chapter17/17.07 - DynamicGallery class with optimization.jsUT [KGfMGUxnd} @)ΔX,X)w*$|V ҈n|;LYwRsR`CcTR=\nanC:'% -:P{|$-gF+bk g}}&Hi40lSޡw\h| 7(5`rìJईlE/PKz7oy?Source Code/Chapter17/17.08 - DynamicGallery class with tags.jsUT KGfMGUxndTM0+fIϥ9TCk ljD*cI"[a--q4)̗QcT*#, $5I|J ,?ب%ڇJ~m]FCogam H-*{dS-2Z)a+w{D9;H> Ȯ$BD3xDؠ,"Nl%L]%l4pk52Db.S_}K_X)˞_EhdjZWD`iҳY">L3OJ'NFrDЛ_4A"f|UoytGK@j\6}_R$g6B,vZdokIAhc Ӽ!=7P?؀әF,T'sPS_{$Up;8ҙ4q-&hUZPZ"sVD޸܅ZHNjAD쁒PsXMg-ͼC7W{Q Nô_m?5?rT&' O#ޱPVKMrG_jRϛh31\#_--׿b% tdвNŸ-W4Xm񠱀yke]5R d4?K5#R4 f;0ĸT:,`D`J6XuQHX0Vp3#8'llsHHR1G.>vR7pfјP̩,E'Du-@Uq뜷 m^!B0gQUs5Ȩ ̅`Sz;zX+ܒwbHTR/cP[+jh#D_.,<oA. 4ޟܟm186?kfPӖU;R`.F7L ̛x V+v*)ʘo0OJ烮\)K-K=Nk5L-Ҽh]CڼxWi3bܚ̪^6iv.ͷפjU0~r0Fg wobſ4:]=cc>ݰ9ܥthB=up <͌H5.Mf~mp k[v 4㖥syy}#b5ȋW[m쩓XFY.@'dhS*4_l2Jv}^fn(PVH@? /]WZLpyPcKY+lڛ>uM7Cao[iQv jI%gEzhl^Lpxߨ!\lKX<@j'e*CОF+kݴ@RjG.Vo&0Wq qx)},;4u%?J15o{"Zk< PK-{7K?6Source Code/README.txtUT LGfMGUxndn0 Ew}ݏ L->НZ-"c'J./ϹYg)cK1_so)@^y(N8=ōCna o8gܨPf9+![C&QI[GGDI=`?Y!<ђԭ1-؄oXō,X2>35/`OZ19*7UU>y?Fhw-r^0 `=46տPK 7{7 ASource Code/UTZMGUxPK {7 A?Source Code/Chapter01/UTMGUxPK5{7s"|= Source Code/Chapter01/1.01 - The flexibility of JavaScript.jsUTLGUxPKK{7#_z@ ~Source Code/Chapter01/1.02 - Functions as first-class objects.jsUTLGUxPK[{7Q49 Source Code/Chapter01/1.03 - The mutability of objects.jsUTLGUxPK {7 ASource Code/Chapter02/UTMGUxPKv{7@C Source Code/Chapter02/2.01 - Describing interfaces with comments.jsUTpLGUxPK{73L &Source Code/Chapter02/2.02 - Emulating interfaces with attribute checking.jsUTLGUxPK{71v,E  Source Code/Chapter02/2.03 - Emulating interfaces with duck typing.jsUTLGUxPK{7Q*DJ  Source Code/Chapter02/2.04 - The interface implementation for this book.jsUTLGUxPK{7M3  Source Code/Chapter02/2.05 - The Interface class.jsUT(LGUxPKɪ{7{ @ Source Code/Chapter02/2.06 - When to use the Interface class.jsUT LGUxPK{7uF]V 'Source Code/Chapter02/2.07 - An example illustrating the use of the Interface class.jsUTJLGUxPK {7 ASource Code/Chapter03/UTMGUxPKE{7kT2 Source Code/Chapter03/3.01 - Book example class.jsUT2LGUxPK{7Xk 4 Source Code/Chapter03/3.02 - Fully exposed object.jsUTLGUxPKѩ{70%@ XSource Code/Chapter03/3.03 - Private methods with underscores.jsUT9LGUxPK{7 E Source Code/Chapter03/3.04 - Scope, nested functions, and closures.jsUTwLGUxPK{7+: b= 'Source Code/Chapter03/3.05 - Private methods with closures.jsUTLGUxPK{7Dz. Source Code/Chapter03/3.06 - Static members.jsUTLGUxPK3{7@) vSource Code/Chapter03/3.07 - Constants.jsUTLGUxPK {7 ASource Code/Chapter04/UTLGUxPKi{7)yz5 5 Source Code/Chapter04/4.01 - Classical inheritance.jsUTLGUxPK{7q(_4|3 !Source Code/Chapter04/4.02 - The prototype chain.jsUTLGUxPK{7}dV3 "Source Code/Chapter04/4.03 - The extend function.jsUT2LGUxPK6{796 t$Source Code/Chapter04/4.04 - Prototypal inheritance.jsUTwLGUxPKO{7ho@ &Source Code/Chapter04/4.05 - Asymmetrical reading and writing.jsUTLGUxPKd{7KYWr2 (Source Code/Chapter04/4.06 - The clone function.jsUTLGUxPKu{76<;l- )Source Code/Chapter04/4.07 - Mixin classes.jsUTLGUxPK{7+QH 4 *Source Code/Chapter04/4.08 - The augment function.jsUTLGUxPK̝{7Ϧ@ Y,Source Code/Chapter04/4.09 - Edit-in-place example, classical.jsUTLGUxPK{7|A 0Source Code/Chapter04/4.10 - Edit-in-place example, prototypal.jsUTLGUxPK{7FJ< r4Source Code/Chapter04/4.11 - Edit-in-place example, mixin.jsUTLGUxPK {7 Al8Source Code/Chapter05/UTMGUxPKY{7.T;@ 8Source Code/Chapter05/5.01 - Basic structure of the singleton.jsUTLGUxPKv{79+ 9Source Code/Chapter05/5.02 - Namespacing.jsUT0LGUxPK{7XfA? ;Source Code/Chapter05/5.03 - Wrappers for page specific code.jsUTkLGUxPK{7 @ >Source Code/Chapter05/5.04 - Private methods with underscores.jsUTLGUxPK˛{7k= Y@Source Code/Chapter05/5.05 - Private methods with closures.jsUTLGUxPK{7tYc< ASource Code/Chapter05/5.06 - Comparing the two techniques.jsUTLGUxPK{7$(22 CSource Code/Chapter05/5.07 - Lazy instantiation.jsUT:LGUxPK{7DۜZ)  FSource Code/Chapter05/5.08 - Branching.jsUT\LGUxPK={7҈gC GSource Code/Chapter05/5.09 - Creating XHR objects with branching.jsUTLGUxPK {7 AISource Code/Chapter06/UTMGUxPKS{7U8 OISource Code/Chapter06/6.01 - Introduction to chaining.jsUTLGUxPK{7m#h{: DJSource Code/Chapter06/6.02 - The structure of the chain.jsUTHLGUxPK!{7zRG MSource Code/Chapter06/6.03 - Building a chainable JavaScript library.jsUTLGUxPK.{7FԴU/  PSource Code/Chapter06/6.04 - Using callbacks.jsUTLGUxPK {7 AQSource Code/Chapter07/UTMGUxPK{7+ 2  RSource Code/Chapter07/7.01 - The simple factory.jsUTLGUxPK{7tO3 STSource Code/Chapter07/7.02 - The factory pattern.jsUTkLGUxPK{7hL3 VSource Code/Chapter07/7.03 - XHR factory example.jsUT3LGUxPK{7i> YSource Code/Chapter07/7.04 - Specialized connection objects.jsUTULGUxPK{7'{G \Source Code/Chapter07/7.05 - Choosing connection objects at run-time.jsUTzLGUxPK3{70 2  _Source Code/Chapter07/7.06 - RSS reader example.jsUTLGUxPK ({7 A(cSource Code/Chapter08/UTLGUxPK{7}I" z6 qcSource Code/Chapter08/8.01 - Event listener example.jsUTLGUxPK{72$Q1k9 dSource Code/Chapter08/8.02 - Other examples of bridges.jsUTLGUxPK*{7^o*rwB eSource Code/Chapter08/8.03 - Bridging multiple classes together.jsUTLGUxPKi{7XXnWQ@ fSource Code/Chapter08/8.04 - Building an XHR connection queue.jsUTLGUxPK {7DNC pmSource Code/Chapter08/8.05 - XHR connection queue example page.htmlUTLGUxPKF{7S3 = rSource Code/Chapter08/8.06 - Where have bridges been used?.jsUT3LGUxPK {7 AtSource Code/Chapter09/UTMGUxPK'z7q/ LtSource Code/Chapter09/9.01 - Form validation.jsUT KGUxPK8z7$dWe= xSource Code/Chapter09/9.02 - Adding operations to FormItem.jsUT+KGUxPKZz7H= ? ySource Code/Chapter09/9.03 - Adding classes to the hierarchy.jsUTkKGUxPKz7 +s% 5 ,}Source Code/Chapter09/9.04 - Image gallery example.jsUTΞKGUxPK {7 ASource Code/Chapter10/UTMGUxPKآz7 ~M Source Code/Chapter10/10.01 - Some facades you probably already know about.jsUTKGUxPKz7uSR? Source Code/Chapter10/10.02 - Facades as convenience methods.jsUTڛKGUxPK#z7m̧@ Source Code/Chapter10/10.03 - Setting styles on HTML elements.jsUT"KGUxPK6z7ѺQ;-: Source Code/Chapter10/10.04 - Creating an event utility.jsUTHKGUxPK {7 A6Source Code/Chapter11/UTMGUxPKz7q> Source Code/Chapter11/11.01 - Characteristics of an adapter.jsUTKGUxPK"z7r ģ@ Source Code/Chapter11/11.02 - Adapting one library to another.jsUT@KGUxPK Source Code/Chapter11/11.04 - More on adapting an email API.jsUT KGUxPK {7 ASource Code/Chapter12/UTMGUxPKVz7`"e ; WSource Code/Chapter12/12.01 - Structure of the decorator.jsUTKGUxPKz7K6cSR *Source Code/Chapter12/12.02 - In what ways can a decorator modify its component.jsUTiKGUxPK-z7Uzr 8 Source Code/Chapter12/12.03 - The role of the factory.jsUTKGUxPKEz7ď*4 [Source Code/Chapter12/12.04 - Function decorators.jsUTKGUxPKҡz7)d 0 Source Code/Chapter12/12.05 - Method profiler.jsUTKGUxPK {7 ABSource Code/Chapter13/UTMGUxPKz7x a 9 Source Code/Chapter13/13.01 - Car registration example.jsUTaKGUxPKz7o 5 ڨSource Code/Chapter13/13.02 - Web calendar example.jsUTKGUxPK؞z7DCC 0 ޫSource Code/Chapter13/13.03 - Tooltip example.jsUTKGUxPKz72ߑB Source Code/Chapter13/13.04 - Storing instances for later reuse.jsUT/KGUxPK ϝz7 A Source Code/Chapter14/UTKGUxPKz7BC USource Code/Chapter14/14.01 - PublicLibrary class from Chapter 3.jsUTKGUxPK z7ǵ9  Source Code/Chapter14/14.02 - PublicLibraryProxy class.jsUTKGUxPKz7{ 0@ ?Source Code/Chapter14/14.03 - PublicLibraryVirtualProxy class.jsUTȑKGUxPKBz7TXV@ 8 Source Code/Chapter14/14.04 - Page statistics example.jsUT KGUxPKqz74Ey7K Source Code/Chapter14/14.05 - General pattern for wrapping a web service.jsUTfKGUxPKz7 P/ 9 xSource Code/Chapter14/14.06 - Directory lookup example.jsUTKGUxPK֝z7 M Source Code/Chapter14/14.07 - General pattern for creating a virtual proxy.jsUT$KGUxPK z7 AJSource Code/Chapter15/UTKGUxPKz7I2 Source Code/Chapter15/15.01 - Sellsian approach.jsUT׎KGUxPKz7s&.U; Source Code/Chapter15/15.02 - Newspapers and subscribers.jsUTKGUxPK͛z7Bk@9 CSource Code/Chapter15/15.03 - Building an observer API.jsUTRKGUxPKݛz7G|w:2 Source Code/Chapter15/15.04 - Animation example.jsUTqKGUxPKz7 `ͽC Source Code/Chapter15/15.05 - Event listeners are also observers.jsUTKGUxPK ֚z7 ASource Code/Chapter16/UTKGUxPKz7[c[; GSource Code/Chapter16/16.01 - StopAd and StartAd classes.jsUT KGUxPKz7768 Source Code/Chapter16/16.02 - Commands using closures.jsUT7KGUxPKʙz7 J LSource Code/Chapter16/16.03 - Using interfaces with the command pattern.jsUTKGUxPKz7`2 Source Code/Chapter16/16.04 - Types of commands.jsUTKGUxPKz7 }?. Source Code/Chapter16/16.05 - Menu commands.jsUTKGUxPKĚz7ov } > 6Source Code/Chapter16/16.06 - Undo with reversible commands.jsUT`KGUxPKz7Ed: $Source Code/Chapter16/16.07 - Undo with command logging.jsUTKGUxPK z7 ASource Code/Chapter17/UTKGUxPK/z7\Lf4 Source Code/Chapter17/17.01 - PublicLibrary class.jsUTKGUxPKMz7XأQM Source Code/Chapter17/17.02 - PublicLibrary class with hard-coded catalogs.jsUT҇KGUxPKz76b\xZ Source Code/Chapter17/17.03 - PublicLibrary class with chain of responsibility catalogs.jsUT0KGUxPK!z7w6#<F Source Code/Chapter17/17.04 - GenreCatalog and SciFiCatalog classes.jsUTnKGUxPKYz77pF 5 Source Code/Chapter17/17.05 - The findBooks method.jsUTوKGUxPKz7v =?QD RSource Code/Chapter17/17.06 - DynamicGallery class from Chapter 9.jsUT!KGUxPKz7Q啹rG Source Code/Chapter17/17.07 - DynamicGallery class with optimization.jsUT[KGUxPKz7oy? ;Source Code/Chapter17/17.08 - DynamicGallery class with tags.jsUTKGUxPK {7 ASSource Code/Introduction/UTLGUxPK{7(-% Source Code/Introduction/Interface.jsUTGLGUxPK1{7T# Source Code/Introduction/Library.jsUTLGUxPK-{7K?6 Source Code/README.txtUTLGUxPK{{5