bplist00&012YrootPatchYcopyright^portAttributes_inputParameters_editorViewerWindow_frameworkVersion[description UstateUclass cUnodes[connectionsXuserInfo_publishedInputPortsXtimebase,S\`dhlpty}4x^ *+Skey&_clearDepthBuffer_ivarInputPortStates_clearColorBuffer_systemInputPortStates O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {_NSPoint=ff}݆ZinputColorUvalue !"#$$$$UgreenTblueSredUalpha" '(W_enable WQCClearWClear_1 -QR./0121COP_customInputPortStatesWversion^numberOfPoints34567;<>[inputColor2^inputPosition2[inputColor1[inputColor38 !"#999:">oM"?:= !"#::::? !"#@AB:"?e"?B"?}DE356FH7<>]inputBlending^inputDirectionGG8 !"#999:= !"#::::? !"#@AB:O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {_NSPoint=ff}ZQCGradientZGradient_1 TZ[UV/W:X1Y$XinputMaxYportClassXinputMin\QCNumberPortO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM1positionNSValue* {_NSPoint=ff}WZQCSplitterZSplitter_1 ]Z_UV/W:X1^$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM2positionNSValue* {_NSPoint=ff}wZSplitter_2 aZcUV/W:X1b$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM3positionNSValue* {_NSPoint=ff}ZSplitter_3 eZgUV/W:X1f$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM4positionNSValue* {_NSPoint=ff}ZSplitter_4 iZkUV/W:X1j$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM5positionNSValue* {_NSPoint=ff}ZSplitter_5 mZoUV/W:X1n$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM6positionNSValue* {_NSPoint=ff}ZSplitter_6 qZsUV/W:X1r$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM7positionNSValue* {_NSPoint=ff}ZSplitter_7 uZxUV/WvX1w$#@vO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameRotate XpositionNSValue* {_NSPoint=ff}y9ZSplitter_8 zZ|UV/WvX1{$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameRotate YpositionNSValue* {_NSPoint=ff}yYZSplitter_9 ~ZUV/WvX1$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameRotate ZpositionNSValue* {_NSPoint=ff}yy[Splitter_10 ZUV/W:X1$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameZoompositionNSValue* {_NSPoint=ff}[Splitter_11 ZUV/W:X1$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM0positionNSValue* {_NSPoint=ff}7[Splitter_12 ZUV/W:X1$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Pre-Scale XpositionNSValue* {_NSPoint=ff}lՆ[Splitter_13 ZUV/W:X1$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Pre-Scale YpositionNSValue* {_NSPoint=ff}l[Splitter_14 ZUV/W:X1$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+namePre-Translate XpositionNSValue* {_NSPoint=ff}Y[Splitter_15 ZUV/W:X1$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+namePre-Translate YpositionNSValue* {_NSPoint=ff}Y4[Splitter_16 Z/V1[QCColorPortO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameColorpositionNSValue* {_NSPoint=ff}n[Splitter_17 ZUV/W:X1$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameLUTpositionNSValue* {_NSPoint=ff}[Splitter_18  /11Vtarget_colorCorrectionZnoFeedbackUwidthVheight]noDepthBuffer_GL_TEXTURE_RECTANGLE_EXTO  streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+ scrollingNSValue* {_NSPoint=ff}@CCnoteListNSMutableArrayNSArraycolorNSColorcffff33s?ff&?ff&?stringGNest the GLSL Shader patch inside a Macro, to keep control inputs tidy.bounds#{_NSRect={_NSPoint=ff}{_NSSize=ff}}*E zoomFactorNSNumberfposition"nameSupersample (Render in Image)  *+ O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {_NSPoint=ff}L !"#$$$$ '  cت0:?DINS[` ./. *+^fragmentShader\vertexShader_LightPosition_YVTT_1_WVTT_2_YVTT_1_XVTT_0_YVTT_2_WVTT_2_XVTT_1_ZVTT_0_Z_LightPosition_ZVTT_2_ZVTT_3_ZVTT_0_W_LightPosition_XVTT_3_W$$$$$$$$$$::$$:O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+ scrollingNSValue* {_NSPoint=ff} zoomFactorNSNumberfposition憒nameSpherical Harmonics (GLSL)_ ///////////////////// //// TWEAKABLES //// ///////////////////// // Base color uniform vec4 Color; // Lighting range. Range 0.1 > 1.0 (use exponential control) uniform float LightRange; ///////////////////// //// VARYINGS //// ///////////////////// // Shading calculation from Vertex Shader varying float colpos; ///////////////////// //// TEXTURES //// ///////////////////// // Shading lookup table input uniform sampler2D LUT; // Lookup y-position uniform float LUT_Y; // Surface texture input uniform sampler2D TileImg; // Surface texture scale uniform vec2 Tile; ///////////////////// //// MAIN LOOP //// ///////////////////// void main() { // Fake lighting shading with Lookup Table float lookupX = clamp((1.0-LightRange) * colpos,0.0,0.999); // Lookup shade across x-axis of LUT vec4 shade = texture2D(LUT, vec2(lookupX,LUT_Y)); // Surface tiling texture vec2 xy = gl_TexCoord[0].xy; vec2 phase = fract(xy / Tile); vec4 texTile = texture2D(TileImg,phase); // Output color compute gl_FragColor = Color * shade * texTile; }      DWinputRZWinputRYVinputXWinputRX_inputHeightResolutionVinputY\inputZBuffer[inputHeightVinputZZinputWidth\inputCulling_inputWidthResolution$$G$$$1:$:G' O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {_NSPoint=ff}TNVQCGridVGrid_1O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+ scrollingNSValue* {_NSPoint=ff}C zoomFactorNSNumberfpositionXh  \inputOriginZ_inputTranslateX_inputTranslateY\inputOriginX\inputOriginY$$$$$' XQCCameraXCamera_1!$' TnodeTportZRotation_X\inputRotateX"#ZRotation_Y\inputRotateY%&ZRotation_Z\inputRotateZ()]Translation_Z_inputTranslateZ_ /* Spherical Harmonics code Paul Bourke, adapted from http://local.wasp.uwa.edu.au/%7Epbourke/surfaces_curves/sphericalh/ Normal calculation concept tonfilm http://tonfilm.blogspot.com/2007/01/calculate-normals-in-shader.html Lighting calculation from OpenGL Red Book, via www.lighthouse3d.com GLSL assistance and general encouragement Memo GLSL implementation alx @ toneburst, 2008 */ ///////////////////// //// CONSTANTS //// ///////////////////// #define TWOPI 6.28318531 #define PI 3.14159265 ///////////////////// //// TWEAKABLES //// ///////////////////// // Pre-Transform controls uniform vec4 TT_0; // TT_0(X) = Pre-Scale X (range 0.0 > 1.0) uniform vec4 TT_1; // TT_1(Y) = Pre-Scale Y (range 0.0 > 1.0) uniform vec4 TT_2; uniform vec4 TT_3; // TT_3(X),(Y) = Pre-Translate X,Y (range 0.0 > 1.0) // Spherical Harmonics controls (range 0.0 to 10.0) uniform float M0,M1,M2,M3,M4,M5,M6,M7; // Light position uniform vec3 LightPosition; ///////////////////// //// VARYINGS //// ///////////////////// // Passes result of shading calculation to Fragment Shader varying float colpos; ///////////////////// //// FUNCTIONS //// ///////////////////// // The actual Spherical Harmonics formula (operates on Spherical coordinates) vec3 sphericalHarmonics(float theta, float phi, float m0,float m1,float m2,float m3,float m4,float m5,float m6,float m7) { vec3 point; float r = 0.0; r += pow(sin(m0*phi),m1); r += pow(cos(m2*phi),m3); r += pow(sin(m4*theta),m5); r += pow(cos(m6*theta),m7); point.x = r * sin(phi) * cos(theta); point.y = r * cos(phi); point.z = r * sin(phi) * sin(theta); return point; } ///////////////////// //// MAIN LOOP //// ///////////////////// void main() { // Create pre-transform matrix from uniform vec4s mat4 TT = mat4(TT_0,TT_1,TT_2,TT_3); // Get vertex coordinates (cartesian) vec4 vertex = gl_Vertex; // Initial vertex position pre-transformed vertex = TT * vertex; // Spherical coordinates to send to Spherical Harmonics function float theta = (vertex.x + 0.5) * TWOPI; // set range to 0 > TWOPI float phi = (vertex.y + 0.5) * PI; // set range 0 > PI // Spherical Harmonics function vertex.xyz = sphericalHarmonics(theta, phi, M0, M1, M2, M3, M4, M5, M6, M7); // Shading calculation colpos = length(vertex.xyz + LightPosition); // Transform vertex by modelview and projection matrices gl_Position = gl_ModelViewProjectionMatrix * vertex; // Forward current color and texture coordinates after applying texture matrix gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; } ', \QCGLSLShader\GLSLShader_1 1892/345617GGYimageDataYallImages^fillBackgroundO)PNG  IHDRDHtEXtSoftwareAdobe ImageReadyqe<)?IDATx 84,Zz`u?ZaG32-dY =4})8ii:|y=8Çtxqz8.4+t=xhngyM5-txYϷw|;?IN8́!w͛ۃKN4![(zܾ}sK><=lמ||;z|}|,Mu޶i^v_O,z*o)ˇyѝqajf>4zCD;w1|ebk?eZgLϮ3[i}^rΟ/yt44yX~?Oe=__Xi{$5>0ΒMY06o/[~ ߭^'oE̴=';^z[=a=m y0yo[̵?ijkcwxj7Xv O΍wN2v1xWvTɩ1S+j?0Ojkc}ܙ/AW;FBwRmƨEjO\Uɵ14nNn(᫐zKy]Rc晜>Nj h)ĭIS[V;5h}'{3%[ m3wir'ڨ3AS8{԰m:RpkzkDpћs$+e$+\Km+.{SqjL4X=,myl=7e;6# ;R K{8wGG_fH4ioM7;KfSC[{lߤm$uUe"9|=HyadTh9j"~o, ,u7 rN~ҲA]ѥc/chTi+v1Tay=}yU9˺5|y KDټn6A?IrhW&8K!{dƦkZ^n|:u*̮7TN&XN!Ӏ}jS%i`:?s##17v'Rv̑֩:&hVLc-!eЧFm*gǔ^MϞnj0^g׷XnQfmf72wV#;E9լ~ZCA0sĻKƞWoejǧ.W4žaVI?=ʩoI?1w9]Yb V޲s!i+TS$%`9.~֨fDB. MjɍXnߥ^8>ݟjT3 ,G#)UHؐWܟ4{J-i0 ebrRc{Tr61wss,$c~5VAyAnS @5:SejpL=G2P}jCqZك V,VfLVӚHy4׊\ުf'{ZqrkiRE-,FKɍ"B^.IKΦg.Swԯ#/ZZdw NͻwWu# MџGnu<,T ۬[ֈAw|/Ptj֫0\+Lo݀zOm#uZ_#N{W}1բ`b5Rc˟鞽ZIv#+T.k&V[ʠSK-$.o_Pk(TtdNydnB-orv[}W<ӋW_|jv3rjFykAkTMiomX!GൿF'-Nבқ w噺Uō݅QEQ<Ӡ|{7<):I iN63u6=ltZ |H] p)x4Rb`u4uXUocƯlCfpT7N:gnh*u"3#x˩ HO/c6gI{H]jc(>+i _5=rҾtu,^.Zj:rߦniyLڎFm b!vcuFA5{riX0tћ,rY_s?gW"TLVUc90y1Scn=6K܁ܵ@h5k#w$6y ˵_p0=!BS)t7sZ *c;w72Q0F~oHCܘWGr'qa}W.L#Ueǩ$ iY߷Q-_iE?4S4. ͆Mb'\.>kO{Dt9.)~(UsC]of֖i-vB͢4ҝsܵ2>2X~Ä]sbRVݎ8婻`(74ѧ:dyT-vs:IsֶGg{۬M5ÿ%{IHi92X碻E#pKݟР9[G+~[ z<wVi `=?rEZڕ[5J٩YGjm{kp=neFU?.HNMj6~'notnw6P{ dI݈AȋYݱOƈ->hGRVbeR_rBUkd/{m_[(ﭶɍKʩ뫷VYyjhsqGU+MoFvb/dB<>)(4lﶢKw{c5̳SO[6(6Z~z*潴>yl9oi-˵!BB$n}`^벅urw;Ьyf aɴ^>TnY:lpXR):oi; .|-]+@2\qwf:jjr7[vfD'5ON//lu ~bX}yWӉJZʣu+!yQYtk$\[Z.ǵ'1&sħ=dw/W__kB=!}LbϷϏmRiZS/W9Ocq.ҧL=^5``BdL{{`xONoO80`ɍ%y;Ɩ̭vwh\'=nyZ5Xhk/g}}<׈ȹ]ؽ O~;N>K\Ǟ\-/.s⩪~s;r_xS's}rZ֟jo_97^j p;NiyNs{Vj_ _.\r/W=@ )l,Ab&dHZ9 Ak~k|/G|/Zs!ăVd7{}0;>- wSnٹg7ΆSǯT-r&tuMcZgK9o쐝7Mtڗ^Um+ğ\OY1΀\|9,8r't|iidݹV2(=8ˌ5jr2.5o3QYwsUot';$o/-wiNGpYƘQcq̞"/h~,|X߾\-7W?ngTKUf!6i_9ì({j!q^c vBbn@fNzY>7(iar?loݪW΁ Ocq2{ՀȮ>5V~v6εj:R#eٕ݅'Rч?[}ms;TcPÖcXK-rynڱ?9O ~urxkW}5/zNeti5盵$P(i}OU{T#mR#%`Œ?o>܈p;nIަyp_{S>o=7U K;oy>M >O7Z.sQb+/ ;ϩoJ+/P/T/w?.f`?_·)˽]}׾^!zIl㶗Gɏ\XuQk}Ys{Tў]plgyvI U- -6g&9liq%RxCZAp39[?ܴv!8&]55k5_jEM/䟚;-1_KDJ 4*繙ÇN ~~f2K[\gL>m;vP\iu-ˍb~//_sZАZ߳ ;b W&Tc,",|Οm]n!:''os|??:X״ŀk*$\ّo֙*ooWMk˟s-gmF5`620qHMߞ,zٽGt`#-Rʍ&~U\N>Ɯ•X x4?]T{2o'Լvn[K\=7^3A>y8{@YG2 [}`lS}};N3ܯoSr7 :o>s똪&ʶiD?+yͲ߅w_J5l2\90.۹}غs{9~l \{}"^iyg$+zJ)MWth.ց2 @" ?6 rvj=O0|lϫf8܇:JS-_y[Cotڮպ5dO,)9ffUPCLQ=cmԞ2k^3]5/f{w4e|L%Sqfxu1{թiGHۨsk결sm]ޛ-8|dRJtYyyf/>]xG, 4_~ž ZJKR1"wɑ妑~\nny޼5׫n6N5Sgj6h7[,=1Xeݘ [ܔƸ>l wmuuWX.cg}|8܋ |mYygZ4ZՖ7 cΧ$w]>Lb2 Qli1}jTc&U)W(̤5y&](b @WX_H;~JqwB[u0isX0Xf)cg'mk] MU 1w``WL?^^~v{rjcFo|X'[ڟAʹ{jpC4v/WNdy]HۆNj+;s!\ۇW*p1/~N<d/E|x>/lf)E~]@+An|+v% 3 &Cw0]UjSt.;Zry͍MrˏL5=#H:#] Z-8H`Oyު VGiw]'ط x /LJ*r|^|!/ei:ΰH.jЃI/յK4 ށkTL΄rFL=u[;4`;[wwk;>I2#W(y+ վW|͍g@9ֿܒN/ʳ'EiK1D_Ʈn*YSxzX[y6R\]h_ݒ?]TE <\9##48~CUsx NLϘI"Shu ;W_C񋀻DniWLNk?~8e2;ZW 7Kwd~.=˻C4wpx ?|xxݻ?~p"zKyrgWzo7'M&> ߯|Bx)p9;J6z=?й#y v ~>roGf25q<\rc OCާwAc?}Ç _ KI0 /2 NX|;_fJ7עH4QY-ORj^d[c)(?rB}KVQ;w'wcbN"|<|X/҅}܏~n5?|9t'?KϜ?ij&Sj;?_;x垜$>u{>Gݒ_nNt=e4/tai\P~aWn?8y+_V`Z4QWkL9? x,igZisҳ[%ko=K47=5RB=YX A-56M_׺^sw3휓X/[o_3ʪVZ0p!._}<,Z:^/Ai` I8r&S|3Z!䛖j클ZwN!RCyp;=0ĀFo_Cyp׿֐ηZ"8 L w pjȷ A˄|Τu%AXQ0)1{HۃӧrP^Cyi| gB{jȷ -1ұܴj]0PM@D|#Z![@sh"_uEUCmpEL!P.^/H\0_;QmO?}{u\UX^F0&!R3_ jP^|gB]7: $=$K;; ot::@P@U a aȟnbxe`9 LWQ!o GB7N4*z%jII"w5;w5IH-rӊ9XʳGuMiܫBB^ hw/LG`zF+|mKq hTiK)sg.և_Bț#{ͫ|LQd/T1qT -e$]Lv$gl}ЯZ!!!e O')>݊D (|kez?p p{ Dz(7HZN@N iCEv~htU9j#MH{乇>W sEp";@SUVȮ.P"!o B5e{s0yP^ z[ Tms\{UH{Ԗ ypoaz.IgeiMi04NWWpQ<`t}H{,Ue+"gYNZǫ8C9=h*kDHk_&meZPmox9g-biuU7q}>4(u&C^cwab%Yi-Z+Ɛk@yy5O؋1 W#C^cՐwڶI2a#Yu=M i˭=~\ =M9'CC.P"kh]u u*{3-=$ =BB^MȥFjws R iNgQ -;險 ! ۑFNZ_4N+)1>Q {5Vdt}ȫ{4AWb./J'GTz{HX!;}fo]횦~{HX!!/i9_BC^_bG|E{$LmCBCB[,n=v? p (ϯo}Ճ"C"paʒj?㈿8)?z`.;p答/zCU.`|X`[< @9?e_+!o :LCB^Avx% *򄖑cÐ(ؠy9WhFgxmQǝ,!oEB f%Z=EPmn`oF?r";,t<CCNF(&V yL@W|DX Zj+yq:+vM/5ʙ:I4'9C1d{{w$= =깇 iQ ]<%vbaVʪsk-zjVń[CB^߽{&in3 #]7#%u 7Vݔn'YQw6o>$)zyUpxxVyCpݑpc Zה#bruk鶽wn١ r3n!!܇,$uDKnrie^zDdk^ڿ+%[w䜐#W)o# Ӷ(M 3xy@C^cސחNuj *{ %$:+@hHoo+K~;, !)e]ItbH{H^#5yTߎULJɗn+z݋l^'|+ {; =x%ѱ[f83y8p_pLp]r|z/ӧO7!o ' pO`=qw-y7GQ{g~*>[_l)'#סw5O>soܫRJm?f?i_JA*WXCO Q:5w TTOł\p~ْiys֋c}ws-%aos7tB!03bsqwœ7pc~x]Ҳ=bx@ݣ9_˿ԭi]p7,P +}bs=V_wl': 7:}$!Pj\o+ۢ/r]]8h-'R`WgDyZܽP7o'QgZL<il& E0I-F[oaj>iV_*Rw6~?n[%u <믭|0lL~=G{ǎ5ȣW=Vt?9"'@a ~p;um8&XfoQ@.;% F 2M@3f{g}7TK]jDgVUW!(U _~aϏxU!~֫QkҋD3AU4Ҍ}O%X{p&ƈƧ +h*$ L<ڏ~Ւ AMJL]1 vFAX+5o UFǨj'q@{pW(TV ge71f:97 CDvTjxMg?G#k+RUOc;A1&Vnkx5CY+=FW=YfrҼ <D1TCTD5Pmb+Q] I!>Ɲ@ʜa!ow| [Mi a n5`o  d". F_|6/yqleqC YюR˾8ޤ|L0HްrsOdd@MTjܯSW=5%=kt)tyXk f"_S'Ux ]Ib`li@x%:\DN%#nznRu^]Pc\<&6 =3 -[XЩh/H]TUF1qah{OYpz45~T me8~љlKÞy8R{ 4l.:?FQS̛b=ȽucT <,)5{8 a$뇭PC*`^l~{9 kZ35SX4a=7BNX31$F5k8@4 C+_TRd}c.¯jfg1} j+s^+MQ>dDm[]KI98u.ظԿ`cs|@yЩ04?gdt͍^V[m|~ц}U/êIK;sNf fTKA&4.%ojppko%q X O:i0}ưP9̂:3K (߅"A+?H8WZ^DSRrWQţdpԭМY.8Ѽ g4"rKG G2.";g,ym1}f>>I9a8?GšTƊpKp\)xr X/{Ød9 HK8 ?G KɋV|/>(e Xu&P.˵mU~Nd*9-W-! 1!@) #U]^Ni5!tq9qEU015xr, 2.Ì'NӘzSsOa\=3*3Sqᙩ C1XB31^'_" +&RٻZˆ4jïցh_jeySPm" "F9| ;g#SYQe:ctq)6&ec8h^+=ͦޘbʆ\&ERA`,|tϮ }I6WY~Lǯ13Xy"0TjjA0 _`Ϝ1`!lJ:a ڵ|^/<9uE\*~ EL)FփNRm" 7 |Fyg kܜuCJgO0-u&MFRʄj1= D8ޛ"ۋ̓VDC@?ឡ[^Ӈ(Hf~U5@$,?">>=,YlFހhmڛ}XZL򥦖&bL@Z90_TKCտ)OTi32d6ĴG$t ]h:w 6f2VJ#˯`brj_Ӡ!&-?D)%ľ&> uČb$(`iLS@1.O "OUQ)}]o 3PuH8 PYbp% j±j4(:X5S1 7ZnW@Os !d:=D 5ͰOH⮀nC[nVte N1G1?D)[f!kߡqO=. O/ |v PT\Dz&!:L\e<N.Q7ȭ:RPWQYYetpd5cAgMdWoZPC`^=OÐ,9&ipf'y!G 3> 'yYPNdLĦPGȤѩ97iN7.U>5AzA![~f{Up8*rʌI+/!/c8VY2RPՊ`UTfYed MǓc%{u_jnC # j&b(`,jT>]j*BUS_.U>)?e,;X'K_CGX҄ڗDZX?c[xMR7C2C3:Fy{5Q4E`A+6 o^2 BM뛍Oɸ)fuţqXʇϼ1wra Nh Qi˔\w4?{Tږ`Vaf~R6j<S4 I!UԇU؆Ԏht>@ ]Df2g*EqlAN[>nd,.@#"TcGsm=AhLXxB 2(!YjѾcxxxf AdYr=\ 09-Ko>#$krݬȔ 9eupipVW.P#FSZKͯЈ69 h`kZzۚ7-%Lm)jOt3l52!ү(n-Dhfjn |_Vm \KWrd5;\+Lm{6T@Lm@M0 Ī&ͪ?6qH!NI$!(B+3gR[[-&oe΃^{ק 4oּ{5Ќڰ8@Фg ga UEjC!RN "{&<: x~BY1MIϋ4+p=0lNO;aDՓh"a1qIAt&uq͎^hEaNFkp&2=\ހ&h&uFul0 $_LEq&G7wzA\ʽЪ3ʞܬ~4 ]\AUjn&Jߊ-*Lk2'r)24^p}(A,\Xr\S'1xQC)(dE i$Vc%Ο7ːBo;׳E ĤcHKG0O k!C 'rFai.a3lo0e5S¬bCTB(]yoT0n9G5]$ǒ|`9\}"{\]àPEu5/R4~T_@Sؼ?;I])pN/Rg -O?TM hu~R2ܤ%fycB1Tl a9[7Z\0hEĵ|/ Ӟ#CWealD$2H·pA&1@C[(If4K3 [\4N8q<̬҅Wd񉖟6 8l%5AЇoz\jja|f VH%eR^`.YHL Y;D,pm1,V@Sh1$B3ŝ)HatZ#JFo!\OL:&@OfGnk@"mRc-R0IqcBWkRz1SΆ}cJ1P}i&!]^Q.] nI ]J TPl5mʵ?uI=H Oelq- tN ZvϠ̄KGI<)`ڄX:jo2f/C6C\-k "SM(s(9#,fcIW iҭ2HDYn ׏ g UzR.Z$]ǯCTódLYN.]!_Z8ï0̔x>WfS M0t8d6h( &\P]-N- `2"d<9_mSyxLyJ@$2ԦӲY֦TLc7EfhG阅dj1FDsJA!Ĉzj dg@llAlLeyE:˽iutGMբ?`M r3/-bBZԉ< K!-1t iݫ!q Iu'C@4<&!I%'ֺfjȎ0Qa 'C -`]E̸/ΰ C>]t*\<|;fS a6%H&3L/H@$ݩu LXi0Ŗ( ;P@ f0=ӥ5a 5!:]Ml4xa|L;8da9Ш/D?h}#a`h^ jΦ+Ӏ֐V6}l}JeQ˩u$1؍8D]s5+ \{X7:#HHC75YfRG yqiw}BS, ]IS @??TT5h}$Z]XvOgv/NWiY PjZ`9doLK _0n3MJ§ @J#hkZ^g81IajeBW%/n1T<\ fW bbbJgp r,8!K%# Nv=^.܁ 42IB&<905m^:FYS-7 1UЗhe9{ ^ 5L!ch*0:D7|]Lk!3RtEЬu6Uk4S8DCD}1DCXɏ!ӏ 5Q31؆$(*  /hp2ԏ&#jU0AE6.6Gu%*~S3Cym@3 stBF|qәĸ> 1aKggOP-B4${MoC+Q&%6 d]JZx V>@ -?XurMfpCƀWk|?<_S  ovb0Nr4uт_ ǡĀ? B-- e >jhuKKć&r  L4/Ydbf2K|zMВJe;_- 8#H1Y1Wf(-&|uin M$ tsǯQ To@kh@@_`\3:5GBq01t~qiai Q9> fd1Cj1ȡF^D #SlMOJ>5ye 8d$QK]0TctZ]k'QґT"`qn4xzg;Y]vgҴ5H#u(uC-#pxI= y,&4Ә4tMPٮ^Ĭ@ăЛZ_+fm3^L _9ͫhWF 4}[ַ2Zm4(x%ͭgzE ]x0AuA*]0j*wc.(k0h6DOD!fj^/?Q C<$BGKN¾s,/@F:O1ah'4\3jnәVHawlϸ'TZ\W+Q@,(;ENK`d⻂YX,^40MY5yL1[ J@yZ<@<Ts0Px^K4LH%˺:Fj\f7׌UfW_M4Vs$GҭH˛!ąJZ%"T A LᦎH))+vS7ׅ#4`nJׂ׺4cߙ e&}W; Pʐ0a7QmAS+{jϚN>u,ȜL0fK(4y˺MYjrt:B3Ԓy ai=KrjWig}<&DuQ9L}U>= oب9 VA'g63K?V u#R?3SfdVs@ .J [}uk_Ca)++?:^!f:#'<8Yj;2 F[QOcOGGYJdGzaBdg#TPoLimI6 .fw`j WJ83G DOkISδ4H9Vsh|#&cz֨Gq3QZXg%Etx"_{tZ\)@vXZPw5@5P_d=r3C,3̸BR}Sh, 3ĵRLajPNZ4Lcմ'bښ|fG' IL**#Ɋ]G)5["L󣯩e Q:ܙN}+BÉV|c x6KBZFn 4043 VFk"nѭ6FMhM׎47Oquҩ-D n\E85[p \ڌ-+<3úڭ:'솅@/bⷴ9 ĺMVZ,1DY.,b3?M 0jRxuyV|&嶁Jx /7)O8c J< 7bN mO?62{PoICB0̢^ s+M• XWckk)V]zO@=z6{Ӧ& jN[kvacR& #: )ab1is3\fb2j%U&E kҠZs4+@9L ejdyjmشqu#IPFz6/[ h-SILns4&]"$ K'ƧntgjwLHFmšF*hNWɲ)te+HֵSZ uY!C>f(/03oUAݦh{uݪY5qx+x7b5 ,CLR%l|d晶y̪͒Q&jXNb0a⣿7M U?1әCy”(ۃhn؆S*` ٱR5y)ծd DM,L-_cJNzlcƘ Vs1\ƈ̊\٢& jR]=A}>en0ЉHatչ,V`nY4&=_&6R\oODM^F3HHΦZW4XIt5 ւĻN?^F昛ؚYAab$P*G2+4;`jsiV6DYHLu3$B Wbn-W]2縵21&6+$"k(Zs#DT֟JUsUP].Ɖ`PEHW5=dwSrDvOkJ EL(G :]|q&`kR٪ƻ.V)m2pu4{U{P*CgJJδlvBfsV=/kn5I$^{s&7šeh=朘b>Q7u%VUe;b3{_ֽnpZ' O6?-mJ!:܅XWni$t}@u85뉦vZZ3}mtMz;d ~2ޖ5q'$U6n)IvB*[ҽ,ԺDbnN4{1 jOkx&Y{j)0# {8V.պxv KS{Ac)h9+sus'jSΤk3-Wx#Ìs@%TfLTݳ|rn8t k&a= \\FM/`z\k08&R="h&l {uj%/t٧ޯ2Ȯlq FNm.չ`ZeKi7^$Yj6]Awާ03KǻlXөuC$0l^A.,oS]5%CܼKL׋U {f挚$'R [dF^1 :yZѺK[CkW4yr_Ev Ty 3 > 3ǍĘ[JܳfE;rkFA/ZF3Ƚɬ{Hѓ0J,JdgXPAO`'u2M&.dY=ʮjuh2a[Z9ԉn( o-wS ݴ:D+V5minVd4ZguO(*Wc52w 7\Km52o ## Ϧ֠.s`5I~tLgfZ\im'64VW6ŤMևYSZU6KT2YX]cʣknקG2{M0:ԝ(Ǡ,\njFmR5սSԬ 1 G9dcKB~Wwso>YKIQSQJ$frȁ$uB 7d{t*)0ɵ|EV-@]n)ܐYu.Tä`T1(щCjԎVՏ`0m-H `6owcqA‰C@o:(n:O:sgumc;ߘ~VZCڈCg3{p7 `, LBYu+^#d6)+kh_ǍMS-o^|L&\y8ʉ| Pj7u7!I7/5۷k L 5M&$@M]PkB`zAF'Rh8؋@OWt "_!Bz{x`B$Dfгܧd+96( 0c2WGczLXvWn&-k_ 0\nMn;l-@άԵQ>qOJI,+1O =tCXwUrJXj^pT uqڽ@b3e9u'0[n&_D( MGE;ɦKueq"eb ShwHfnIeN*VHag"A hsH25fjhmc_Efj1V˺֑ۍ8L+^$5 C[]5N(PvHsWVRۊO2k i~bjv! P>$gK.OQtyVHƫd6#4[jyF4_JSv՝T[(nJUk U5ˈt&hs< iy<"2M#O*{]{X7>-jeӢWߧ̚eBS@wFAef=i1t75;5sZKR1P#Л3jzu[®hi1{ >nJe UmR!q5eRWQ& OP-ˠ۝"E&]L0LPi2q#GxN1ݨqlYG-b3#-c[2`D^F;H3d-q瘹r}zf55*>Yթ Ũ}f7SM f.,I^[@RwƖJ+ j:a̰p}b:0&AvH?Tik(U#Z vPja0?O9e4RE#R-j<>9:rf37[g**g9ۂQrE F+́>׽t\yykoU+V@ SX\[px2C2N#˱kx6%uca0 b(T̡O~oSFcI)DCjph໪=Oy 'zKCm jѪ,YiZZݡLM2RLB H*i2t'd^2ШhLVf[eɬFcWEʅE6 Ashπ;|t hjA+ӱLx ?} Z5 Y>0:HLLӀwf2 !ya0\P L;aa/ݕqy%=gլ/AZ瘂|Wk;0 Tk+OKt,HD0f*%JCS!xP\T(|ph:$l*)E;h_rUsCoṴZ*eU]A3sF\5FF%Bj it0`Ʃ1 Kbvsڭ9 !TWWUI-8"B1[p7GN ۙk6a_<%EX, f* ٮܕU0;z)X1XakX$A}hj&nkAMILeNoM Mc㕿h~i(îG!ndK@d݇qCWoʊq$p͋$d~01;3\uM]CO2PZ٤m}$hG&]S55Y{ˬY{±a\V&S'Qb,t@xH8h1ASzU0 Fwu[Q X)V-.kmTHJቔAbVp1~4w93,1SoF\6.&Z{ WnŒg8ijY`\>}OlS8َ&u1(>]|M]w2 5$${Ԛeت &ԱsZT` wV$썾9 5vfXyIuӥ[x2m\Ǟ5hVcn1&5\i )b]54@f#s**O}k &w{Kz,KWվjk/VSBW=;u@Z~S f41\'ք "3uX2;fB*D]~ۣ~B[qФքw.h?*5E˩1/f7?exZA=2ޜ>-+Ds0qxSZZTؑ{|l8Չf 5; *jL7=Le˨ JV [ h+zJܙ8 B]}azfFnj&u S(.Q΍5[Yr*9gQQ [h TiʫhnKmZ˴"5]OVS$\< ;~aUjR0PTxRh:9^+! )lMMjtP@s4ĵ25]aHc-Ђ#GVop-Σਡ^xS0J $a WMo:%cΖ8tō^Gh6 d"&Wij8A#Vb)nE^QׁĂW0`s^ "DVx5ہJc4]fB =b)я S6?~"V5cqa'Am|8ntҏjX ⠄X;iJWs?zVD0O %tfQT g|@ SP52̍FvF8Ոa%`6jr2(SYnے+q`8r7%.Uz^ }>@çv7gQ>]u.MN5YgWn$@FS@/(m+s 8`T1JQ42`h(()՟Ƽ88ȗjWaӻ!7cG h@[ r 9>zz _?ܐC]S~PU8x2z_ &8 =ȁd{=v3E/Eh/N {{ BQg:!tN[^~?{!(4(G[l ssE۱ጓGGe$ ׿s_ TAE`B_#.ضCbcZ+E$`fCJ|k _L<z~eכc6V}*S|-/(f r ͜| oEW#ua0c"NVH%p!K ^z'.|T'tn|SϢKK)q!93p]W0wŎ ~jÆvs_Sbc r:hcs,+ w] 17-bBC & c7eG!x!uqdR'[p5%I7 .G/Il ,j沿o^TwBst6JF0:~ȿ&k?~畛z\GsJ:vx hHv7&ࡢğ5kV8-' K.*?`67uVB@">xh,"Yo Ɠr@#oH|3"Q(GO U'iM!T/F8maL=>>0KEehI 4vϊgŸ8C(և&Aӳ˗E3~#᫴# '0Q%rΡTwUf\&vzdz=}t1VWans ~ >n)p#&-# )]׳u4F >сe:.71%~od :잦>U&ڂnlIc}) E Ǖe)BxA>@ h خT_&DXeyQs+$$~X\;đ%b܊T](ѮKcYa=Q HO^),`p'|ZS)4Oz&lcKju!TPb@HB'K}ݟQ)LeF+~{)@s"UG٘}JpÔDwE'dcM#uRPÖ2 ;ήp侃0 k|w\i!9@ //,'`DyADHz=yH%00PWTBdB᠅8W>#4xq pUB5 Ơ(rZBSpN*0q;z c`I E}/5~!=-R8sHxr&P6pNI0 {Ydb$*Pv+jͨ3Rʨ~7"u\N@6p ^a'=t['ԥ98ò7+l" txYSѾ:_ҰtKƖ 4t;U#Aoj~߁\BOIv I$}Sc)D_E@>$I]d(eR4Rpg_ @!z[J$7 ~[g?8(l喏(@Z!fu yZkO8o OJiNϞjoQj5Vڻ3t.B2 fC@vzh81yv!o4Fj5% $x8Oֈ߂v ۖX9 YuIʅFo 8G+P5Af&kP҃2'$RlT!yT47p+8D{H0S,|Uܖt@l,Olx岩X 4VE`+U?~LՇMesxmIXvBZ͞Vg)u;ɃZ֧/l~WFx4 +!"=`W _C5b7|B6MӾڹZEB;2.Ln7A$M:P4} 8ԣH5e)8 7L}5Q}gݔp}PRc%pg0tT)ZkpM#L&}E75$:{Z#1GPMAa]n]o!g\,^l">Mj=yGfLfJCF0 ^]{~kɢw4r11֖ F :iIV~{-'AʺrU_^>3ſG^%kR?*@ah.۱k\YF̃ot47Jq1W6=5'5+V帑CqRd}!'codz@ºTjriaoFӔ]D8D21@ a{H8Ԑ\iQC5&(7pg:̜zr>kH|DabTaORɬB^A+ z5)(4@_ *㼁UFaܠE}NM1_T؊u)J:f}k>My͵>OWEr#GqHJ0G%ۄ}>KxIy,3:@acQDn)|4_x{{3c?P4[L tinu}jB"'eN5 `e's_ T_ 7dp,&O30T1RC v>9}o)5DK?f>M"J3몦bw#CEXl+OM[>TREa_s IIta! FdJ֒g65Y vfl1Yw6#Oiʭc 9iѣRBNw1ۂ$3U1S$rS{Cż' ]-Vw0b~'${y+ hD5+ $$J1EՐ*A)m(1%G1aY}+ Xi.7m_sax]?q[7]w$)<- [\li]YձsR2Uw,|;'3;{.'T29baGefr*A%.[=U NڞK`[J  ^&  ZvtWj>8:p7_%AhE ="Zϔe-oGDف~tتgV%ۮЎரI4e!l8 fh%M-$"b%6x@h =A;V,Ng gJSf>R7[O1FI@ɠvX彚Y0]2B_f/B]vB֩ N8לb䙵 ̅'+$IS7F˹^H,85/+cfxG4lKD7Q۰}J[,L\B5IعR+ lۅR@=F/ {: E} N 2%\K@<FɻRdU(^9:IG' 8!~ʔY6Nĕb!iŽR`>?µ)+kqUYS>TTR@Y$Bn!}{[S~TCrk>8sfUPOQ_eoI[DzJ͢frZzPY|\ SN-&u Uk@%e=XA )NU=JڠUe# jN,u汶Vʨ9E=~l:hxrIxK[>>}HQļ=+rp{" pLtCH-{=jiRm@@R4WcVYmoHVǯ/TG8$b-;#EƜ}%Y-Gƨ.NasqM^U 1Kyd+J /2XYޒ+hXrjU@¸W]/HjBJtHV:-+^T;6SiyhziG«Iȯ#(aήErR*|ElSkem"5a?Kju&ֆ7\CxOw7$);,ץ<VlU Q)k3Q{L(`JXucnT^ӎ[i_ymp,}OrQAݫyqЪ$ ٰhz|{a#rNX.dfL1<._j,ͪ0c"]Gpت+3Я(I9$ Mߢ_= UnA+J0'%.]%H}*IoJ.92N-yrJ>(S0Q)֓YIwȁki8{J2j^᠄*tɲҔt-8.'fr4IMÞKv!Mv^33`  o.|9k8`S7CkCd,(n;uEW 9z7Ytqq DA; n#K#z'85 BS362&%1{_uM%1SV1rSN)N{cR1a?8h\(-S;HyD^\ەJng}Kj(LEIgz eSF2z)}Q/]SAպ$MKUrQVZJKl(qFNZC.Dc [Q`k!PAhM@f.ds'i?a>lUZ:f'= 07&Xo!xPly؜c_j Y/"C0D^i QxG=:c9 I`~*$J\3{y ۧiKתѕO9iy3 y=x0gf#&^[3ɷf YZW=I/M̳mL V-B14ǃinDަOͨ)`{r${~'HC6 }yZrU~@'x OOcC NdiLB=6k8 AnYY"g 1.ah F§5Ts[+=D[mb:fzM6N]N&kIsºMHשrE َ웫  ܾ! ¹bq.K5KhawVq2^JS?QRv, DMsM"iPo%? QТeCp/i~K6XBw0W=@ϛ1+6>tv'|WL- _͇jH G /;Y)eV#_=f;*Ԃ$Zj v+%L= RV#,v.IwZe-= SqбN*kTl h]^cTo4of1k!Ci#{LFm\ n:V·ENjgIDǻʹp{}aA@?j~Ǚ{Bv'l_zs66 \uU;'MF4u8 7(6s-\fiQ]Qb1Q?%M W'y UK+3|RGÈPR+D;뮌-ɣF%Qq<(S5,};crF,l34%Nr%aMyDd3P%߯opo&ݾgnxN {g ~L'J'H;9tS:4Z. sH:yEedNX R~ Nnnq䎬*!YC5CfC^XJsswh!+yoM&`]]s+iu^&\OА.ʶ(Ib)x 37knVN$$UIw qZϩSvD^Z5e8Eu6 Abx#T8gC#XRc뺁 H#@ 'D p5~͹c͸ekis#h4(nB7W :ʏwN<9B<_ O=!g{"ji{Mdl˜"cS}7*7򰷄1{ա(o/0j.ۧaȤJxq%ʮOJ xg6Óg(j27O"¥liLorXkH^u grH )ZmI J7$"v\o ZMoďzDވ]u|Xե vnj>3ӻ6z*m6ɻiMPZ^=$6Xco^ˀI&Mq4h5%_' ֧][qJh133{:nZ%z@.y`iQuL.)9j%w?{[7)S apIo[}CorǏ~Ģ|w-SI9K81ir S?'ͷ{_u5رv'Ǭ8l=%?)C-LBsK8R@[ Ĺ?K(rmΔ!`eV6I \oIvw9NN8y㮇}t'\ÒiN 7ZqL%0*S8ސϚJQƳrٛS&qt:IXG2o~Qή0*#? düZ"=EEb+ۘjYVvJ07ax u9JB 1UNԭ}el+pc~h 6ѷ@37QlIK_)W,rM?A$E۵fO}{LdS K{RQ 8fe|Y3愜;4q'wGs8/eاDmor|aSΓwGS!Rn8T_%mFbvǐT+8Xw2"[&c.<ƃ9Oi]ڦrAgW-OX\"Oe]X3C?\5?ay}pgOސ®OM 0ۂ˶S<bckmժ󉹫ǫEh]@}"Aq ᾨPl.?--38gnА:ͧqokf_l:Fй3>7lޑЦ8YIo2L Kկ5=er0m'jǝAv?Y[l:.*/Asڰ hqZT!1VFj O^Da|ׯ~HyAYE{)A"i};+_'3^PXQ\߬;gF}yrvz7~[M$b@)?"u ZNOW%DK+JV3/N{ eOTlspQy:5 =geʩoyV%F g0Oj롣QaOwnMiJԽ\%6aMUv$PkW_SnlMXQDe{䷭0Ed Z-]ϳZ?}O×%ne[xf$i~x"9Hh<_0TL|7._hR],ESw ȊB|^6eQD]RTuL2xљC윌'BL#Jz eoO!寯<u%?׿(Drv&cLmlzfp̴V>9Q6#.TM>r_q쵘*Yb/WK:ƫG$^`5^@{Ϗ@F=,pقS(Ǽ;y x$$|#|n64Ә$LLU]^w:y.^;T >TQx~CS`Z\SveZg h BaRxAJ :N}]Mf)<]ݵPѺh}=O.KsKv|O6Xz;h)HӇZϦzlf;% "koT!B]!-=oCDc3XHYgPF:ido?uyd<Ew;Ax >IRV3OؠD!9$3 #sr]keNi4|6ƣf!H-FmgDF!U0['{1!P}0VCrvGmE,uFAУr hD;5m^ۚ{Aq۫HѳIȰ|<&Ι h2a)]=2&+2*~#ϘQc<l|/) ӟGT5UW\޴-kv F <(yΞ[(7fS Y|(ZN9W/IxGY0Adw_ݢ`]ʔy7Ѯ&N^lI,135H ht%90mD, 6SJEDư?4:̡! -1/z}4=h뉑֜\ GBw5+3nX8a!o8##`87赕HK$Rnpн(\śz0qNX^a})! l ϘCe ~ o aka ^ɚ-3AI֮`(P[Vh(Wt1Ԟ[-GUhZ焔?kiJƳ>*.$l ӈ/?x$OR^j\sDJ{ԅ 㱢ƙMM:xuko6ij.62l|F?6$oa=野G{zF Օ lv?:ζ@onAKĖ*$!ɚa(&n)ӦIwoN':n@J ^+08E|4%MxYϛKv#{&Ϋ.(-ʒSS=Swk#ٌ2#5FedGAsh{tpvH{x>!Eq?:VW޾z[Y/|cfwnrӡ-,6%+9ʼOܼf.whD4ٺҷB$ޖ,o;Կ>UU٦a~j+ Pی[5M}zM}r#mxC= ڻ -odrvʾSGs# #:N워P! +OEMip_[g'I7m7/n2 4_=Zkجh 2AzCIu0K؅,L4d3a}ywO5xFwrk6XmI}hM֪ww}#=c^a k#8[Zv i!V&}162I3>EA}y)FIW뜡E5SW>io6ܦTfBG$ߚ핔ْ#wH? H±IӓBD\` "LbЭZ׎n#=ї=Q}ne+[iȜxw4>(6C PFDJFroR!drbs{@bH}%LOB.7Ge};a^ruxNn6W.*3SJj8-*9t{i7ΓFdmmO;Z(I9mD˯3zIc:H^ B(2{5Ȁy#pXy%cӡ#47zn+BsI`"}r[Ojɰ['C @ےO;MǵaN[ЧD>GV DVݭV=vcor>Mq<4= fi1ĵe!G5ň{&b۵Nܨ{3TiM䤖I},}KwZ[lrO5`kKߛauw9K0+RPC~<ĚTP;&L;?eZ NDcsrZSCk)v3vi< C~KqSԹCkַe4^[+I=* OUen`IX-~dQ;Ls>|,z)`ŊѸh~Y=) va j伇Z7LaL٭__{% ]|=ehucGĴ%y6)cQ׋⸰2kl <ԥ궣rX9AdX8ckvlZt_Jy!'#ᰅaC{iöfMZ?gpg"ͦlXkO {مef䨋5{wۢ3F3:;:ݗԭ=ۦ[Ja]Jyi62i{ 6]+L9(#q}}WWq|:@S#1rBʒ=gW22.i^p4c87vIt[;^+`_RL Shz֢2;<^jSk] TiN۵(rrڦ$Qj@5ێ?PRmP7t`qgQ_ |/4Z檯-KYω#[aG fhBZ 6=tĽs6p<h̉W#m3K܍w#벊x̛w`]_]7fη14ku kN)ƀV*`ٴ UtK_ڿ.0i[5ݍz1vK%:^$Q)r\:x(s,k$^j`H CPCWt d]Ϥ:^^hɉ?ur/RUk*ܿ ;%ZQ Wa\M!e|7@\+/iہj =`yTv{W '\j$6ItTИ> zJo~nNW}ݯ~/O[PQHأ$%zd-K`*{'FgɘMGeldB1[Pt;oz"JbX^HmQ>l2q4iQ6u]]u.D^xp2$0Я7سcތQ Uɲƽ<>׆sy%Sn(Fj[+(\ bN?F8raWeiI0- d?rd rj/9C8\;i)CIJR A$[jU—TqI7(i!JtA>e"H;>zAhn EszHz%똁XndN6oQ5তJ-QEތ*8"B::Ƃ7;;pSqZWY ^Uxcğɝ$CbSe[$Ǔ~-ǧ, R:nRX2AaRp^L{r sp.B"\j/rBN;L9\R~&`*$}9niz/LۇH:qBGX?']j+NhKàI-s{\)XyNݮB#!bO$Z vU?8򛉔&&[@мSG} Tߨhܕ9sYz*'ˣ_}Ug0~u薤Y>I @<_aeT?U up݇^`;E^F5n[j$VpukSjs}.DΕ0ഌ`(: HetRY!0X@y6]t,Ξ61c]Rf_$PSmƲ ,-fְnooOoQ~Zӱ }4cCB6?dpS}ݚ;Gm/HZi] 1[|vgIUxgM@xP6?rL[p;S;" u^E.Z'M/ZN siܥ|*,UF@CjԣE/t}/X_ȖWy:-x*֮hW۲eе4y]H/ OUZ+_={iGV [C{|K KVu SL&GWT7| &/EaO zKITPv.,%Аypj/T\ u2}=K;R+L+T\'C.IY+TyC gBN㔖 CxQ_,NV=υ6ĮD z1[d:Un+ L⿍&,%Cu02#CɄ &j1'noTTBisϓ 7|8g+w-]C?S>&0a]GDʿiҴa=xh 67ߢF_4RrhƺЁ ^Wzz93 #^Uj̇F,JB_U.GE/`:>K*eSx*CBVGc55t2M[6 9BT>^-Y TGԸ,(\ᏋABGq d"~92C*^""c◣cԝ?^ *Lڇַv9j(PlOॲ5ZXm%uLSt!HwI (A  4$*e۞[G"Tnn$["c7fQRi-(Oalu޵QD6P49rIW~y^݌o3=7)2p~N:zd wvqD|}|%oLɆas夓77EҜЏF=FQp5$Җ^1耶﬿oHia?͹0 W[umG%u!#9:&b !p?Σt6ل wOR;k *fX'1v/rƿ-kfkux2aV9R:*٧{[4w{+iaKr0&M%ME)߈Ki"ķSCoW=JH6Jt8yuũk*;v:'>יxyݨ2ScFX vw0ɻj'!k}{syKӭ09mJAY| =mrks{KծRfOTS'[c7It1+|PD4QP왾8t4a!zuȓg[5GtJnVNwBvQ>x9p 5FLguiy;sXJ!~TpoQ-{o )+;Q)}4Nl <ۦCclg2o{0'^ "j[f{6Q6B4hV~֓k[䀬Qj',!$lvWq]ɹd>T\R mHj]_BlpBBq[m"F._S--+kmb=M6*ҎAy`d;L7iNjObM%\*{.m3&gDO5!S[IG/ @q3V_; x]E)Êo"f<G#'XyGN5cMAIaI*8c~xi< b3W(9Ók;+)i=J4@uaI_:pn {bReNiMErE:bC9rԢdl]p[CrȬB#cfQqPMAo%"֦P2  3cʑz('j"Z/4@w[LCqgMDiiDȺWoV.aH[xnA.Sԯ2Ⱥ^1H&F 5Z~W Z|ޒ@zNsmW!`FjdB0'85<¾7*_jTت}Qҵ[$v틒Q/A=#In$[)A V--u:>AM7<ܒt҅M n/_1 /-};o]o/]0~yΝ,˶o4xx] ys.CPhX$XF:C[SC -6dU.UZk$C;Bm@ܸhv? 伐,YzYF g,0GؑOspe6XP|IzS#@yf/Rh4ImQYAA٨M=vFjG.У)/n/үX+Kbÿ)w8I0=oZ j&mDs >7<\qBkP*"cg]4utmmK04t 0\c;R6+3aU||,;5ԌxC(d*ʬ_L-77LntVl-b/2.?:ʱ:c'L;1ɢm Ef9V&ߗ /Q[HNQ|:RMQ3Yp<8`&3u>s& ]: kBǀj;MӒMg?TR-\KxM+q$LJATb[:F塹}r]umIQ*K|c}U'Ia; R7NUԬo53zUTCʶB1In֏tRAg,mNg37_ey8~ ܷQ-gb1t"{[11O}+bQv92wM=w=K牛fRy #CQ :ݻ*MW lWTqaW]ϺHazݠ(. T ,&Nrꭖ,5+VR㈛0u4(+JV 5 f^_`':mO+] 褣̠Z)[Z6']j9ܝ; 6]=C1p I7zk9a]s5ϒyRtP$t)sՉiy-ns_0H tӠ2K ٵ01 ~J"O/yӡ.{Y&)[&9Ar-6Dŏ6{8FJ [GzX*ۍZcp6qڄI]5Y_҇cF4TȖػR .{gsoŕN:3>a8wVmw]3 pO*fȇ&eVj?箢u芢qvI)SIg8yL&f1C7ZO'lpbU%r<)j_~Vrc(ֈt*tH)yUtr8˔ku',ohe4K¯ٱ_Z=dMg iSYy̲'߫ݲVL[Kv]t߷ƅ{3粟>.^?}+3f b!|d6޻RؕGAC 9bfrk.ps?y/~c /Ryy7pfrQJ>lyU2TstaDȽrRm(&ۛj5Z)ue.e5*vԟUT_y`&l{ C,U(:C٥O9cOtַ~i|I Z-J%,eoif_#gux cOiQ.'{9'3Ryu:>J'u{]2KlN{iQ\Vv 9>ro MWalOmvW@^f.,Ԭ>/\*%aC >_5@6%rbndUsr}pUbH$KpZd~'D_pJ??? cQJ\g|[~-?C9\>tf[TrMY9)zȗlBYRS1Ruab>k Y)&W>5~y}bSSSI^/ :/+%e-pXFq2B͸*n#+l 3hY, %HeaYhS]=b1l9+|ПPcmi7Vxޞgc|DН;)媽jG)V FYU#C 3%EW_[^Oq:|tVV2 jUeg+^p,\9A U-~mqU^y~V]#=}^qNI˘¿e9ṙĉWX5\ոr^&J[J׫UAgɦ N]vAIQsz0+O3X])ϭ5x]aYRusv<|#dDu~r+a6Z/^*ӌ>` ނ @ƛ'oy}|qPa"ʞi;9}#OpA eDmu$Fl 4ܗĄ03Y ?KPSI^C>;IӹbIA `IEr85րT(tuDqE9$oQHtGTk+:Zi*$|J,">Sg^K|]Әhы 's󴴶5=?2դ; ȧOe?3L Ks-<iJu%QXdBΐE`xB 8e($iL"Yw߻A븓/@߾+G:ɉEɂ_4萕_:jǷf~¯aӌ۳}{#҃ߦV&D {DbyYɍBPWt/! "X{ K"½"x!VߝZ)5({8գJk|]bt6 23|=;z}ʥ%OyNpƌv]3vԾ `{o~6S-Ny ӺkNЙ$̃?|hsmj B[ԬW-C?*a.yZmҚW{QqwIz-x^bz B..J?f)ؾ=z7|i &\Xqٽ4/uHy@v"{zɋ9aT?vKW{+A欋QR_e.9A^rb=5矴OFeA/M+fO1ܶY}ejqܓ37pN[uOV!E9  ԹC6EaXo,9~nunSmVuJ{Zzſae]RՖkSҳ/8E^+֒2sBPӹRȪdHW n)TuJˈ@-d cBz|eWpeq0cV5Uqg%$^hw}~Y5v.d%,-\eZ4u;~t^ԗѪ١+d2Fsc=hm݀?YȢ * }_}"y.^"o=7?'S7G}#L!3OzWř+Tk'Xۛ%$aH6$AY;T~qh;gOR~!h{i,|6 RҚd"{p/Bň?ٕ/WUKfv] Đ+d9tv*7*,FY465 ȱ!>}Lyc bY,)~#dd;Y[ N+Ӄ^܏E>Zg{脎(\: p=[7&YAihn֮i( *QkגPtVkyz^~ T ١|Я @VO-%6={SjeR*t\z\Bi W={S|t9|V&5qN HDbܷP>S ]OAEyv`8abb廭Ԧ~Bx!g^'|cZ03i[i+CfR98H xm41tqc=l&LBϬu5DUpwwtsC>gG~5+Rd~&Ge6_J웠k9͚+@g+TdhQ>: ¡X<#N㒈Ds!mLӜ`7AOvM={ zfȠ]Z|ٔ%`bp1ڸ}H`VcLg׉`ZF41EXO,l| )m^.yթM`Xr>eL%^ 6ʼnzJG4d?2bjz77r.Yw-충) h`G i)ƜxdAH32CCh5T7 1 ٱ\RNyаcGB{Xr,uLD"[n5!%Q6#o[&h#zLAly&!3B~Yk~ydԦq7QgTbrg~\|߶H&̂m-gq %wF)&gP&PSgVV>ΙA,qyHhRc?L֐PwT 4Sgc:QA94Ė*)e` ./URnCt,`А#'˯ .WCcClh_-\mwC9t|"NF7h>~ N#}O_Ҳ_;#xw_6g ] !!RYc-{wyׇ`EJ|AN>(iS7[9Kɕ%`I(Nk!*@y*[cUӗ~e9el~N3G!q)Їlz:|m !$rpS*>Aj ZQI塤ad^koc^_OFD>\@LR 5 9LW?Bv,DfZriM*u'PdpnA>#ցI 蠼f3GHZb=3 ݖ]h,9N⸕ uJ#AiCN{f86+!eFje)ʌ=\qzVmۓDŭ][^Mˌcu1()iJ/:13M?Sy5%8"#z8W䂤pˡkAbȐ >8 GbHzV+#LMW5q33}}&Fy˷< dl iE f[~<곆V =6CQ.w4L7*s4I* U=jc!M1{6[w^cHƃ l<‘ < 2 u+RAm<Â=9@g,6NqgD{ʿ݋w[Nr7[ͦg'U](WԤ 7LӢ},yBlXiۑqaI2oVu(>47*Ǘ.6AeN)6#[0;CHFXY"*o`ں9~(^Vߺb87=tnw~?}}Uy(-wZS?8gJ*b>F)1bWYUfl[oPW·Bh0:0!#OyM3G΋ˡqavDʔhK60Li>-{M(1}POgoً'`;E:zb00os;ڼ;ȌMI{A|tqJ^3i<+N)Nc*nl4̴K7Dwos&"W4ŸM6Y OO\ߦkO:O^p m$}[}EM!as+owQ+v2o@ϔƳM=\nv+d)2vn|S~oul'9[*= +܇'iv??=*C6|))&mpyKơencYoc*G%nk }n9p=XnjI}q˙S@؞g4@Yw˛ߖWI[m~9 w?9/^nWLg$m>2?<9kDO2//~xVz":'7CZvoB[ͷJv[f߀̓~ݹr/Yw1׿wn0ݷ- [岇90A @E[|jc[ۧQ׾&%*#Tΰ:=׻KcƘyw2ez= Oȱ*>$nJ{9e/1N;lwk Wu۵YR'[;y"7|R?'@3u yL6Lq$,DV՞W2s譳NkwyKJ!yjnvz- %WkJmuDʴ)-\2yy(wU{y ?cztطM7"Gfl2 5oK(]y[-1bzA<=0UO#<~cp=1$_O YYÞim0ӂ@4|%=R7pVWij֭O.أ4ß}{sj "ap{W'~.]yӂm_c3[t1pGMxa w߰ey8 qd 7;ͬ(8®ũmzih:-Щk678lWbkZӷ 5<4[I6Vh|<:Wn~Me],:pc~~+zb\ 7_/09qh+[ZwMQ Yӧ7 0oocEURՁ=L?b)ޜoJĭB"0o>tB6+͖;vm`ujra&kgO꧋1qf>݆e\쟬M>4M7it1Ǔp%R}nCC?:Fb`VO[b~.'Rpǭ[{˫7_Sf䦅 'p1;^)lVE7Ggl*+Ş'|,?ΦW=ZdUvYA $XP |Ls6ʙM!Y.MItx6, T@I/n N[f~?zVȞee2^ B!\szmE2Rr5;O>OwyR7 z6 JJӺN++ψ;W' 1Ld-iMNǑ"Z_)Ojr1}i7۟[wfq[+)_ylH&0Vj6FCSq kп-ѐ*beYSn.\˲0B\v*SO{Pet+|xJG*̶hȗMq j&Y5U>yli  kϸ׶1*o6eqk$KjX2{W@7wx3zo$]_Bx>E &^{ao5QFT ul+t?. F%KmOS;I6r\#$DK%iJtŖ$9ܱf.)!3LkqF inŒ)k^BhȨF\D+w0E-"ڟKҲ{ꣵmM{npMѮ3,Q6dL>ݸi8 e*w>(C}vM={h$͒ɖxn'D_:[ڞkS&_!#Z"J5bNRrԣA5TTH!}f`D K`&2<9kyt\85b 9D6y~OkM2i,x GV,8l)6E~'bڈf-txVZie/:uX惘瑚KPMАx)T r"i7R;m lV~oh%e"eڵ =T!#qyƼ%]`a^C+)oKmBuA~$43%vc>aݢ$0Oe$g"Y$T?q^Ϯlz^T[C)F$k ?ctWDG/1JT#_ f٧ SR\DGC`608Ol܍Ӓ2֫ym0,bbGb)b6S ۑ\ac Xg@\oDۖf4a`)EQƅEjiV73Dp0بB}n% mVVac3Rw;@3=la|bwi*?VɸSƀ,-J6L2kߖ2f0[ J|_7,)VԸlgl!yQC/T,|h9Ic觪[_:[Y j6E⢍AJ ɕej|1U?+ 6# V7-IHwdTŸƚ0NuӚnS99Li@=0ޟ&W4Ԁ茖0adaͅw )IG7eʕ9 X{M18tPmWj+Ag!^ ^ dgOO W8}tqƓqld$Jet WחaqYarϾj ѐ&j&eUKЗr6"`a64 d6")]3 0>dl走-5]ӷ%8BcoܧYoQ'<~uuۈ2LUY|Y%و>?ZKhF]<Ϛ;ƣk-!g~Ay }ŝsbo8/Zsp|{]!'Sפ0݆;U[Z5р)cъ\|GԶ umK>P}!?]'άj0VVԔ_הژD:3sM7AǒIi^@2e8,ũP''v #j^qA(\诫3)Nь@~X'N?Y47{1{7Y=pye:XWd]˒.(Gߤ#PZiצ;e}.MJdjFu[ы6Kܢrsa`}/aJi CfGGE̩ˍpfh +>Fd.4>+8պ]pHRo; |4y_ϟ< J&0X2%8%Lܲ+w枿,?{~ӆI?YgfI[P#UelC]u%lHl_p})ܪ JA?01 C Ge/Q;{K qm ?}ɷW~H#F[6;0WIĺ_DB_J$k@.vb7o; AwPƭ7zT$5xtd-޷mמ2|l?DQ,}F T韍i JuToyGśUAG}9qN|«I~{$>p[onm8+ۃ(;?(_Vkܮs25,b^.NދGS[ >a>2ܡ $GT~}s2/yb4>/tKOyaʹo*FoZw0frio~ibj@vBlf?_iA# ",\'+c_}I˔lןRʑ94Hz݂堠55-\+ <+ŪSvR~P"szly{NOFlK809_< kaН!t$RVʦ*m=fp5Q뭕4mgJ5RO>!K e=7ƺm/2$/Cz_3>^zn>\i ]`}7ּ}6#@>V-?.Sm]Az[֥qR.)vdF/oֿna/R.7&arxls#Uj1t|0M-|5y^GEɥ%}@j ,ef@]4-2A@X-";FnҐ$ɹ&3 ~JNeӛm J|Cf-N<6Pw|EohД-^kw*oY~6@`2Z 7_xz^o` ϻ~}:7:YV:d1>ܩyi8g,ո1);2J{da%y5^m=rujXXWeFW^CKH'$}M]{ݡ5Pb@%`[ϏzDnv1~yu-0.ՑnNӭV l|$@Nc>#g#X\X5O VQñd~xom|^xC+[DξE㐱ړ@}X@Bpu.=7?wA-Z ۇyP"`b#'#i*mⶾh|2֙tl; md|OÀD^jD^i!Rd7[C_Ovz 0J?![\}5eL" }KmH]xvK@)#b얥<) 8 A,-簅$piG&l lW|&_x:Fp v]l$)9w,-3ǟk)&SIYQ:ˆrt:`.pN-&2TSVeLO4vIٚ+Y~feNnr59w))sC`F=mxdX>z?*Dni{sK^^*@Ke =esS.$#-n&ו$j)wi}F`8|IZ1L43,4&w* K &#رH>Xd.w0V05)gepIO61[; HOs9Ă8׿3AL4't~$m C˛(m .̯݃x=H`d[F>aFNZnҝ_ whE2s`_\eu e9{{j2dҵ2G2*nNWz]8J$TJf%r% 3 Ű48&&HJ߫XIQ4&0^%f*.$RNPޣMp K5ϡRO2\_Җh|i\JӹƸθ  rS&،`SzЧ[?|a;gdV hq(}iN)KNkk|>a %R8ĜU]iz "3HI2 HϿl4ͦtVygI77(4s@ej )KOqRIX` 9=?Vσ)JxP%;Nj̢#Z2uхQV%=B܇ +SAv^~ij+(4Q;7fs[ 3d*8KaZg92fgyV!K b2 1yhVFw$mȚ#Ø]*ʤWją- :z*z^o`bCrUXNFm;ؤM^Fm`VIp `:ķ+iky">)4Fw{foS6=Ztr9WpyyEvR3w݉9H`K<& b5 _`<2jήLmk34S;JkU_yrD0ChX᭣$@j%)#w7RZcjj1un@t0#/|`26uC@J0-6?>ﴲc )JD5ݔ-m"]aglf&W:GD FfK'=o6$Ml==Ǐ:Fa-M$FAܬOE=wҎ>^vK%c%iqiLD͙2?sea΀K; ?0<"!akqlqz 6zN|O(=7^c`sD)I^mkh #WTR|/&C .w>1oITz6<윏˓B|mp}eʝi"̔1oHtt['GڮpsbKYƳr{JF>oIv C{ڸĊ3G;ӹa[iv\.5q=pVB JN8$i08%6*4%Vb2ClfX3:^OudL`2e:,v.-r>IqJ] VV܈ZF;'x[yD/£&6 ؂O –}ڴ#nD [fՍ1[F&&S@l%rԥMo>Giy迵mNDz^iKܲ6`DIy M++ 6?<`24n8D#J@O]o7ŤaodXOa9g;'w@ggVBxp>>[+4i6]Y%6 )fNUO^1eۨɓK7-$Rl$JR]g},݆N滭T痓2yRwԤ/_rRYƓpAmː ҩly賍Z#]yF 0\ۥ~S0C ʳ2n(8`~9Pxt3M'>q(u쥵VٝR ~L %:NNaA&HZYg ?P3|SvJ&Or/gAғ=ky]^W@*+ÿ}#XBs#3+~9mdǕ]U]JKT! fa}Z%8iL\av*@B|Dċ01r-4aϭd-eOC,E۶m\sWr$qXlnb@)H7}KNrZPRf>HȞ kb o qe5U5a4/-qr$NvhM&HyuYK#y6ܑ pn01$TINrĞ'D蜋[cDIs01/$ NR/mWD}(sY$Hk|M.Fpͻ.]+!>},w\f8zgޗhoeRf:-eIE5CI|Hm| L-+p.Sf/Ue$ `]x:ALU*u4u.Ə<=bN[R]G ^0! |:dHfHZ.C8z41)=S KtP[ Z MMR`baN,OFe ^1]THMgPņ;07Z>T!'2,gID0vm3m:%miK( #FCEJ۪N+FЍ],xgԏV@pw 4홋!e8=nN@~cma41M!2%؁m 6{9^^`id<룭Z*liu0`\XWlf2!OZ |WWںO'hR"1ig3۹ND34K9>Cwr7OJh(ՠ0G0{LQZ pTRT">e1VlN)Q5[{#XT$落",dTƑ$,Z RǏ7h %@yQuj4>.ʦI͏ !!OB Gf)޴VnKܗ Vڥ=PF݂RQrw JN,j6RYb@¦vZ{A)xZE5r;SS#vb,Y:U 3s.^݊)jk1/k" &mVx%bArR;!iG ,tA E%.tY3:h $OAHyU#*1U҉2ĀhI,oKt).lN/Rxum\MJ`[J z{o7}dPNr p¾e.mfl٢?>Ն]z2?<ÉL-oєXݐq\_VZO9 ֤=Tۂ?UHj3>0)PƔv2m%%\ .3( U [9s ӈhqR1" 'ē4w]לD.e-Cts^'^6Ͱo7we.!g) ͦRebЃ_@N1 WcG|؛Z)2/34<61=GGOJFIFddDuckyF&Adobed      o _ @/ _ @/ _ @/ ????!?!?! ???O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name line_Y200x200positionNSValue* {_NSPoint=ff}j]ImageLoader_4 @8C2/34A61BGGOJFIFddDuckyF&Adobed x    o ????!?!?! ???O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name line_V200x200positionNSValue* {_NSPoint=ff}]ImageLoader_5 E8H2/34F61GGGO JFIFddDuckyF&Adobed      o _ @/ _ @/ _ @/ ????!?!?! ???O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name grid_200x200positionNSValue* {_NSPoint=ff}]ImageLoader_6 J8M2/34K61LGGO2JFIFddDuckyF&Adobed )f0    @ p1!@1 pAQa"qb2R#3!1@A Qaqp # L S-@ JX9e-L7@d쮾Efq\dٴMʝpU>3eg0DI߮mO\e2Ubs.ZPאWTw???dXHDdPL -ߔbqEJkXڮ_wdQO_bzOخY2tY=ߪ{^RB Ŗ7Hm,Mu/<9Ydn^z).+#Dl#?!^厄Io.#*\CG;\N[a2'(S'nl9GOᴼ{2xAѮ2D5sj~8 ⱬ9?yT_S%@t/#nwZ?!q?!q  @H?jgq_+FFe&Lkl=UB# ՘]/A>PG\.AN|*ej6.P8G @WO9D@m-(,ZB=38QZZ՜O¾!xZ7jN$F8HBYpnOҡu+j?q?qO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name dot_200x200positionNSValue* {_NSPoint=ff}]ImageLoader_7 O8R2/34P61QGGOJFIFddDuckyF&Adobed G    5@0p4т3@1!A0pQaq2s!1 QpAP >W@gH _4 + 3|';dsz>W@gH _4 + 3|0g,@ 4ݚ Yn7fVcA+0lMSc61ME;rp (Żlb)M駋o3d& Bj&qߪ-P!5MBPM6ݚ Yn7fVcA+1٠BvǨs}3G???xh ˯ V9u0B*.4EX׆`9ǠF);s_k̪ȏ$Abw$VWq0a;s_k~SRa,JCCχ>]@7լLG1&#{ + o^ȥ3l<t-bb=LG1&#p !c^"r@`U]xh ˯ V9u>BgL}4Р7d:rkn'?!08UUUMɧr7<ʪ֥^BtB$&UUUp`"WCUUUUUUVAC:ewZXsource_0[outputImageopqry_wZXsource_5opqr{HwZXsource_2opqr}[t/VTile_YopqrCwZXsource_1opqr[t/VTile_XopqrMwZXsource_3opqr9w/SLUTopqrRwZXsource_4O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+ scrollingNSValue* {_NSPoint=ff}C@CnoteListNSMutableArrayNSArraycolorNSColorcffff33s?ff&?ff&?stringWThis is where the Vertex and Fragment Shader code goes, and is the heart of the effect.bounds#{_NSRect={_NSPoint=ff}{_NSSize=ff}}ff&?33s? ?#Lookup Table. Sets shading of mesh.CxP?L?Tiling texture imagesGr zoomFactorNSNumberfposition11nameSpherical Harmonics (Macro) /\PreScale_X_1VTT_0_XOv streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Pre-Scale X /\PreScale_Y_1VTT_1_YOv streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Pre-Scale Y /_PreTranslate_X_1VTT_3_XOz streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+namePre-Translate X /_PreTranslate_Y_1VTT_3_YOz streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+namePre-Translate Y /RM0Om streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM0 /RM1Om streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM1 /RM2Om streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM2 /RM3Om streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM3 /RM4Om streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM4 /RM5Om streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM5 /RM6Om streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM6 /RM7Om streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM7//""/%%/(( /ULUT_YOp streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameLUT_Y Z^Texture_SwitchZinputIndexOy streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameTexture Switch [YTile_SizeUinputOt streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Tile Size /UColorOp streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameColor /ZLightRangeOu streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name LightRange' WQCPatchWPatch_1[inputRender\inputMipmaps[inputTarget G   ""%% (TZoomOo streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameZoom ZPreScale_X ZPreScale_Y ^PreTranslate_X ^PreTranslate_Y  On streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameLUT             _QCRenderInImage_RenderInImage_1 23/"#./\pixelAligned[CIRendering_optimizedRenderingXsizeModeO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameSpherical Harmonics (Billboard)positionNSValue* {_NSPoint=ff}  $D%&'()*,]inputRotation_inputPixelAligned$$$1+ !"#::::ZautoHeight'0 [QCBillboard[Billboard_1 5 67U^_d_publishedOutputPorts8BIO 9@A./:;<1?11^operationCount_numberOfOperations=>[operation_16O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Width (Math)positionNSValue* {_NSPoint=ff}VQCMathVMath_1 CGHDF]cleanAperture O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {_NSPoint=ff}\QCScreenInfo\ScreenInfo_1 J@N./:;K1M11=L6O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Height (Math)positionNSValue* {_NSPoint=ff}VMath_2 PZ[.V/QX1TRS#@O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Initial ValuepositionNSValue* {_NSPoint=ff}egliVY[]opqrWHXNYoperand_1_outputPixelsHighopqrZ[tNZinputValueopqrWH\A_outputPixelsWideopqrZ[tAO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+ scrollingNSValue* {_NSPoint=ff}@C zoomFactorNSNumberfposition9nameMultiply Screen Dimensions` [abZMultiplierScOu streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Multiplierejot HfghZUnit_Width[outputWidthiOu streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Unit Width Hklm[Unit_Height\outputHeightnOv streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Unit Height Apqr[Pixels_Wide[outputValuesOv streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Pixels Wide Nuqv[Pixels_HighwOv streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Pixels High yZUV/z{|1}~[indexLabels#@[QCIndexPortO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Texture TilepositionNSValue* {_NSPoint=ff}i]Line Vertical_Line HorizontalTGridTDotsWCrossesUBlank[Splitter_20 ZUV/WX1#?O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Tile SizepositionNSValue* {_NSPoint=ff}y#?PbM[Splitter_21 ZUV/WX1$#?O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Light RangepositionNSValue* {_NSPoint=ff}j[Splitter_19  62b Z[.V/WX1$#?O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Smooth AmountpositionNSValue* {_NSPoint=ff}  6Kuv&2> /1GZuseTangent_inputIncreasingInterpolation_inputDecreasingInterpolationO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name M0 (Smooth)positionNSValue* {_NSPoint=ff}tVparentXQCSmoothYSmooth_11 /1GO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name M1 (Smooth)positionNSValue* {_NSPoint=ff}tYSmooth_12 /1GO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name M2 (Smooth)positionNSValue* {_NSPoint=ff}t_YSmooth_13 /1GO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name M3 (Smooth)positionNSValue* {_NSPoint=ff}tYSmooth_14 /1GO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name M4 (Smooth)positionNSValue* {_NSPoint=ff}XSmooth_7 /1GO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name M5 (Smooth)positionNSValue* {_NSPoint=ff}XSmooth_8 /1GO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name M6 (Smooth)positionNSValue* {_NSPoint=ff}`YSmooth_15 /1GO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name M7 (Smooth)positionNSValue* {_NSPoint=ff}YSmooth_16 @A./:;111=W6:O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameScale Smooth Amnt (Math)positionNSValue* {_NSPoint=ff} ./1_inputInterpolationG[inputRepeat[inputValue2[inputValue1]inputDuration\inputTensionG#@4$:$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM0 (Interpolation)positionNSValue* {_NSPoint=ff}YXexternal_QCInterpolation_Interpolation_1 ./1GG$:$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM1 (Interpolation)positionNSValue* {_NSPoint=ff}X_Interpolation_2  ./1 G   G$:$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM2 (Interpolation)positionNSValue* {_NSPoint=ff}Xg_Interpolation_3 ./1GG$:$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM3 (Interpolation)positionNSValue* {_NSPoint=ff}X_Interpolation_4 %./1$G !"#G$:$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM4 (Interpolation)positionNSValue* {_NSPoint=ff}_Interpolation_5 '1./(1*0)G+,-./G$:$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM5 (Interpolation)positionNSValue* {_NSPoint=ff}_Interpolation_6 3=./416<5G789:;G$:$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM6 (Interpolation)positionNSValue* {_NSPoint=ff}g_Interpolation_7 ?J./@1BIAGCDFGHGE#@$$:$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameM7 (Interpolation)positionNSValue* {_NSPoint=ff}_Interpolation_8LMNfOPQiRlSdegThUVjkWXYmZ\]_abcdefghijklmnopqrst]connection_23]connection_21]connection_15]connection_20]connection_18]connection_16]connection_24]connection_12]connection_13]connection_17]connection_22]connection_19]connection_14]connection_11opqr[q=U_timeopqr[q%opqr^Aq_inputIncreasingDurationopqr`Aq_inputDecreasingDurationopqr[qopqr[qopqr`Aqopqr^Aqopqr[qJopqr^Aqopqr`Aqopqr^Aqopqr`Aqopqr`Aqopqr^Aqopqr`Aqopqr[qopqr[q1opqr^Aqopqr^Aqopqr[q opqr`Aqopqr^Aqopqr`AqO  streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+ scrollingNSValue* {_NSPoint=ff} D zoomFactorNSNumberfpositionb=name$Spherical Harmonics Controls (Macro)wy{} Zx Zz Z| Z~ Z Z Z Z AZ]Smooth_AmountOx streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Smooth Amount qTM0_1 qTM1_1  qTM2_1 qTM3_1 %qTM4_1 1qTM5_1 =qTM6_1 JqTM7_1WPatch_2  6 /1GO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameRotation X (Smooth)positionNSValue* {_NSPoint=ff}g?@ABCDEFGopqr^_t opqr`_topqr[ q opqr`_topqr`_t opqr^_topqr^_topqr[qopqr^_topqr`_tO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+ scrollingNSValue* {_NSPoint=ff}D zoomFactorNSNumberfpositionbnamePre-Transform Controls (Macro)JLNRV ZK  ZM OZP_PreTranslation_XQO| streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+namePre-Translation X SZT_PreTranslation_YUO| streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+namePre-Translation Y _WY[]_ qZ  q\ q^ q`WPatch_4 c 6de f 6ghotz  ijklnZidentifier_QCColorFromComponents_ColorFromComponents_rgb_1mO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {_NSPoint=ff}CSrgb  ipqrn_QCColorToComponents_ColorToComponents_rgb_1sO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+positionNSValue* {_NSPoint=ff} u/1vyGwxO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Red (Smooth)positionNSValue* {_NSPoint=ff}W^ {/1|G}~O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameGreen (Smooth)positionNSValue* {_NSPoint=ff}X /1GO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Blue (Smooth)positionNSValue* {_NSPoint=ff}X /1GO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameAlpha (Smooth)positionNSValue* {_NSPoint=ff}XN @A./:;111=W6#@O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameSmooth Multiply (Math)positionNSValue* {_NSPoint=ff}[NfQilSdeTghjkXYmopqrqkVinput3opqr`AqopqrqkZinputAlphaopqr^Aqopqr^AqopqrZq[outputAlphaopqr^Aqopqr`AqopqrqkVinput1opqr`AqopqrZqWoutput2opqrZqWoutput1opqr^AqopqrqkVinput2opqrZqWoutput3opqr`AqO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+ scrollingNSValue* {_NSPoint=ff}CC zoomFactorNSNumberfpositionnameColor Smooth (Macro)qWColor_2 AZ AW_Color_Smooth_MultiplierO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameColor Smooth Multiplierk[outputColor /1GO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameLight Range (Smooth)positionNSValue* {_NSPoint=ff}:YSmooth_17 /1GO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name LUT (Smooth)positionNSValue* {_NSPoint=ff}gYSmooth_18 @A./:;111=W6:O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameScale Smooth Amnt (Math)positionNSValue* {_NSPoint=ff}   /!"1:1$O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameLight Range (Interpolation)positionNSValue* {_NSPoint=ff}#?@G::$#?ᙙmkgeliopqrZqopqr`Aqopqr^Aqopqr^AqopqrAqopqr`AqO  streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+ scrollingNSValue* {_NSPoint=ff}DC zoomFactorNSNumberfpositionbname!Colour & Shading Controls (Macro) Z [[Light_RangeOv streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Light Range AZ_inputValue_proxy_1WColor_1 qULUT_1 q]Light_Range_1 Z_/V1]QCVirtualPortO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameTexturepositionNSValue* {_NSPoint=ff}b ZUV/WX1O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name Tile SizepositionNSValue* {_NSPoint=ff}b#?zG{egliopqr[taopqr[topqr[topqr[tO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+ scrollingNSValue* {_NSPoint=ff}D zoomFactorNSNumberfposition^nameSmooth Controls (Macro)    "$&(*,.0  " %    a a aOOQ aSSU   _WTextureOr streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameTexture  ! # % ' ) + - / [13579;=?ACDFHKNPRTVXZ\ 4 "6 %8 : a< a> a@ aB E G _ItJYTexture_1 LtM[Tile_Size_1 O Q S U W Y [ ] _Zb/V1`a]QCBooleanPortO streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+nameBackground On/OffpositionNSValue* {_NSPoint=ff}[Splitter_22/deMffNQighijdUgklmnjXYmLOoRpqlrsSteuVhTvwxWkyzP{|}~]connection_32]connection_30]connection_26]connection_43]connection_47]connection_37]connection_31]connection_41]connection_40]connection_29]connection_28]connection_36]connection_39]connection_33]connection_35]connection_34]connection_45]connection_27]connection_42]connection_46]connection_25]connection_38]connection_44opqrOtopqrtopqropqrxtopqropqropqropqruopqrgtopqr'btRopqrtopqrStopqropqropqrw3ZinputImageopqr_topqr[topqrtopqr%topqropqropqropqropqrLopqropqrtopqropqrtopqrtopqrpopqropqrtopqropqrotopqrf3ZinputScaleopqr"|topqrIopqropqropqrctopqrstopqrtopqr%opqropqrtopqrktopqr"O streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+ scrollingNSValue* {_NSPoint=ff}C zoomFactorNSNumberf@?noteListNSMutableArrayNSArraycolorNSColorcffffL?L?L?string{Based on Spherical Harmonics OpenGL/C code by Paul Bourke. GLSL/QC conversion by toneburst, with assistance from Memo. 2008bounds#{_NSRect={_NSPoint=ff}{_NSSize=ff}} wff&?33s? ?uThis macro contains the GLSL Shader. It renders the shader at 2x screen size to smooth edges of mesh (supersampling).偷N3Output. These patches clear and draw to the screen.?L??9This macro smooths the controls for more fluid animation. =DL?L?L?Camera controlsTUBWU\ÃUUCUUC?L?Pre-Transform controlsLL?L?L?Color, Light, Texture controls\Z+Spherical Harmonics controls?L? x[01_Rotate_XOv streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name 01 Rotate X |[02_Rotate_YOv streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name 02 Rotate Y [03_Rotate_ZOv streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name 03 Rotate Z W04_ZoomOr streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name04 Zoom ]05_PreScale_XOy streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name05 Pre-Scale X ]06_PreScale_YOy streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name06 Pre-Scale Y _07_PreTranslate_XO} streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name07 Pre-Translate X _08_PreTranslate_YO} streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name08 Pre-Translate Y X09_ColorOs streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name09 Color V10_LUTOq streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name10 LUT ^11_Light_RangeOy streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name11 Light Range _12_Texture_TileOz streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name12 Texture Tile \13_Tile_SizeOw streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name 13 Tile Size U14_M0Op streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name14 M0 [U15_M1Op streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name15 M1 _U16_M2Op streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name16 M2 cU17_M3Op streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name17 M3 gU18_M4Op streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name18 M4 kU19_M5Op streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name19 M5 oU20_M6Op streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name20 M6 sU21_M7Op streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name21 M7 b]22_BackgroundOx streamtyped@NSMutableDictionary NSDictionaryNSObjectiNSString+name 22 Background_ toneburst 2008 www.toneburst.net'!   TnameUInput_The input port.                VEnable_ Controls execution of the patch.                                        "  #Tmenu      ::$$')$$$*+$,$:-$G$.#?陙 #@F#?333333#?ffffff#?<<@#? !"#/:$:"?m_912 422 512 430 0 0 1440 878 U106.3_4Spherical Harmonics mesh generator. Simple lighting.%/9HZo-:>Sf|;@KPVgmrv| (4@EV[`ej{   r}FQ^s  % 2 G   { S _ l (4AV +myGS`u)6cj|$1p "',16;@EEily'3:ERinsx} J Q X!0!E!R!d!v!!!!!!!!!!!!!!!!!!" ""#"0";"H"U"c"u,,,,,,,,,,,VVWSWaWoW|W[\Y\g\t\`pa"a0a=aVeeff$f1fJlm0m>mKmdtEtuuuu*u,u:uv vv$v=zzzzz{{{{{||||,|9|F|S|d|v|||||||||||}}}}0}9}J}Q}b}k}|}}}\,=JQV|):=B;LOTM^af_psxq~4ET_d} (-0=JWhmr!&7FK\kp #49JO`ev{$1R_kKLMNPiw "+8M\qv8?FS\jk '<AF "'0!2=Nartw.9EJj{".3!*'4IT]|W^gq~V`mEO\qz4>K`ins#,9NW\a'<EJO +49>#(- &+@LXdrXas  %/49>CH38=RW\afk"4AV[`uzEWdy~q,:HVdr(9J[l}'8IZk| "38IN_mr*/4EJO`ej{3<AF'05:&+027<AJOT 5>CH%.38+<M^oSdqv %*2?XgtU^kLUbw€…ŠFO\qzÄ@JW|ĐĤĶťŨű  -:$5FWhyȊțȬȽ!&ʥʶM^cl}˂˓˘˩ˮ˿ #2CNf̂̇ 1Gaf&+0 ЮліѣѸҍ &7HTevӇӎӟӰӸ $$+8@QVgՁՊ+8MV[`#0ENSX  5>CH7"',14=Vgxډښګڼܑܢܷܼ%2@޼ HY^ot,1BJO-2CHY^ot$):?PUfk| #(9>OTej{Ucq '5CQ_m{0ARct):K\m~"3DUfwbs+<JOk|&:?Telq +<INWhnsu "39>@Q_dajou &/8AJS\in{ 05U[3