gH]kDwP|trueSpace7.6[VS_O93Y*I Clinton Reese, RUR`d8pM*#ͺO2PNG  IHDR@@% IDATxُ]וÙ\YUdLjEInm +F$@$O~_txl$(DR*|V{ϸ@e5٦vq}ƍoo9MRv73 D՛oIuמyz㝋oO'Ӽ,VwwmnX\ʲ j%Y+4u}ww{[\\xm]`ƫHuJk`U43ñ$ϹQʟ5kz1`w߹x믽l֍Q`o_>3g\򲎣h?kڽ)-Fe$QGJ Dd "֫zt$*kEM#DXCv l{~)b)BV23 "" >`  d(iMxw?_\ZW2Y<㓢;k)jLΛ94T"bT(MUr+3!_w#"& &pi ~vБq!C+KDr`jE5Y@MS8 tDVK< >/ [ RHMtW.@, (msɬ+H2V9v!`$N fDF} qQL8q$PDD;@D`6^uU$T2GJG_RB/\JI0n4E,xSRRt,JӘ>P`]R $y v.kW9\{gBp"%@BJGQe R<瞹JHF D(E^8?}WWPR88NRj@`,|PHHL{(umۜNr"T"/K%4{DR@Iq8M=02GJGQ9 3 `:wܙف>$^zO@a_΃=ꏂ1Vˆy $gyk ᜣf;\aLU@k3;3K_t{_?bNt0;Gfgg]m+So?nGR3m:@$ieQ2@}&e_~koǕ+R򩲪"%Sb=>:\X]]}x</--f.nC+KQ# $0J@[|:yB"JڑcGD%U]*ғ;:~p8ŭ57FQܛQ~(jT_zg}͛e4nomn+936&uρYC!{}DB8MpX;rĝՏ[}+?~ݭvUk_uB!x2YX?ѧb| 0L0#37u (E&J*^J6@X?\COl^\Xw;OmÞ)>kPnzGRÇ;3yɫǏlo Xbzkuʓ++ `vнrh~ocgkwv0c}u烊Bؘ;8ËgduwYs#+)mmL:O85-&,`os?ï9wv{{s<>RJ""(jg{78888wtvov1,KQ o.MH%JHJ眎#"_WnɭQ1|`vowXZ;ٴq2>V&LQLO_:-8Ļy_t婫W=19w-G fB`ݾP$B*@@U] A'0{f@彃êtf?9mDvƵ{d09܁Ψv[[= o{e5\xpm%gdʘ"n۸uV+ŒNy{ʣyQĭ#I7HmM3\Ǻ*\~xgo:ћ1DuC:U_GC7WօVB`D9;8:ϧyయe1`SׯJǎt(kTii_޻~wMitـDN5;P^^MFyqh:98::" $(Sԭ}`po۬Yju9$J  NPP׾^yg7nLN&?lwEG+ '##o7M7WS'GSb|hǁA)e3ޝGU] 0 C(A+ٲ,bb N$wv_+5NWw_֍tBe<5M@ {o?)]v'qQz"&|4HƐT+_}t'2EɁ )BIa/KO]/XG)Yo_xwo^VWyzQt U;Q։N'-j{W.J/éj/.,[`eqGY(0 t$i4px`yy%Mu}l~.8gϟɫbt8/|s)88M$RJDcau\8:tfaqӗN.?۷N[o%#罐 Lc==`&vuŏR+ҝS`TUӬ>ޝ݋wa:g4NS -!0֢ےbjOW/_xB.|w*({&Fm|` Xqnn{F:ZS~X:[3+ F*˻"vgNi!ePG2(gVN_?__RD-^Zg(jLDJVi! ,JE{!0#Uu 3Ky x|4uNGRJm@SOç:y$NTlON uOά|G^UU>ZF)cj!&Ӊ*y"PJ@c)AR30sf=Gɥ,ͦImLEՔ!: xzJ͝rѝnUm۲N| VuQjRJ23 |R#29됁XDT(}D@@y:cB =J}ȔMmRF}MpToܾ+)Rp?37"3 K%tDVOTRB9HB8? Yb'R{S U`<+,,~hwf"!ToNU($K)bD<64UDGY#FȰgdJ "~'SF'Z#,OARD,Bg=إn!XiEq@(4&P`4RH9P>Eiєi+inw>=rkFQֽAOhc}#sQ'q W9c}N cm~=3ΗSIxRc (2xRQ<7;R ^+)Um!}ft*n !|rzR:/,8 CD)!;[["Nqs4AFc=oE`:e$)T QJRx)LDYTC]{ODNxk1z{{^fƙA9d86&Zk-'E:w‹Q~Zg1`.Ѿ5u 6VODR:.EJZYUkS(UUy88rb䣏9{XY[ke]9wQJn (CP$ibwD\j-~QvPT)@ .QGёcOBx@(/Q=ԇ{̠dt4_L3_W>ևO?Nӟ޼yʕg}w/_{擪 "}IENDB`/tfѭ8Lwb"q܂dKu=\f hudDemo2ۏ.;]kI 忞@.;]kI 忞@"SubObject*Encapsulated objects"~Pe5 0/'$4W}@O{4W}@O{$ Owner4Owner of the Encapsulator$(XFҦV(XFҦV"LE2Data$LE2 Data for node >g'JNjn*p"-1OSM n-1OSM n"LayoutLayout 럆L<_ї"jo sFLASsFLASDmtFlag TWsFLAS (XFҦV>g'JNjn*pFfdN*5ՒhhxXk( sFLASZ`Ez]UOL5 48@J g'JNjn*pceZU@䑧rceZU@䑧r$_scriptData*Internal Script data [җJs@ %~4W}@O{$(XFҦVLE2Data, 1#J@#QLJ@#QLLE2Data$LE2 Data for node >g'JNjn*pLE2Data, 3MT^RwL~YYTMT^RwL~YYTޣLE2Data, 4$LE2 Data for node >g'JNjn*pLE2Data, 25kڦMg75kڦMg7BcameraNodeB2|=Bynj2|=Bynj Control OutTransitionOutz@Hoz@Ho Control InTransitionIn 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ tNewCommand// Execute // Called to execute the command function Execute(params) { // TODO: put your action code here //if(Node.Exists("/D3DView/cameraWatcher")) //{ // Node.Delete("/D3DView/cameraWatcher"); //} Node.Disconnect("/D3DView", "WldMatrix", "/Widgets", "OwnerMatrix"); Node.ConRemove("/D3DView", "WldMatrix"); Node.ConRemove("/Widgets", "OwnerMatrix"); Node.ConRemove("/Widgets/Active Widgets Layer2", "OwnerMatrix"); Node.ConRemove("/Widgets/Active Widgets Layer2/Markers", "OwnerMatrix"); if(Node.Exists("/D3DView/Watch Dog Event")) Node.Delete("/D3DView/Watch Dog Event"); if(Node.Exists("/D3DView/callUpdate")) Node.Delete("/D3DView/callUpdate"); if(Node.Exists("/Widgets/Active Widgets Layer2/Markers")) Node.Delete("/Widgets/Active Widgets Layer2/Markers"); } NScript Object Package/jScript language~൱D@ j#^cstringcameraNode5kڦMg74W}@O{(XFҦV>g'JNjn*pn B`@@P@2|=Bynj|?z@Hoۙ>?5kڦMg7t/D3DView/EyeCamera_{2C152F81-45A2-4035-8896-9E49D60C8A7A}J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_їn  ControlOˁ CRih[ Ce 8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0 Ce :Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho48@J g'JNjn*pLE2Data, 2.;0aOR+} ;0aOR+} B hourBBGAZqiՌJT ZqiՌJT BminuteB( JQ CS ̐_ JQ CS ̐_BsecondBشt82|=BynjLADz@Ho 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand// Execute // Called to execute the command function Execute(params) { // TODO: put your action code here var sHour = ""; var sMin = ""; var sSec = ""; theDate = new Date(); theHour = theDate.getHours();//24hour theMin = theDate.getMinutes(); theSec = theDate.getSeconds(); theMil = theDate.getMilliseconds(); //convert number to string if(theHour < 10) sHour = "0"; if(theMin < 10) sMin = "0"; if(theSec < 10) sSec = "0" sHour += theHour; sMin += theMin; sSec += theSec params.ConValue("hour") = sHour; params.ConValue("minute") = sMin; params.ConValue("second") = sSec; } NScript Object Package/jScript language 4. string hour;0aOR+} stringminuteZqiՌJT stringsecond JQ CS ̐_;0aOR+} 204W}@O{ JQ CS ̐_10ZqiՌJT 34(XFҦV>g'JNjn*pnVNCb@@X@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_їn  ControlOˁ CRih[ eм8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0e:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho48@J g'JNjn*pLE2Data, 2LY0B) :MLY0B) :MDtheTextD0GVJi?G0GVJi?GDtextSizeDZGd)ZZGd)ZDmtFlag D0KIn9ED˗زIn9ED˗زBtheCameraBx 8P2|=Bynj 0'z@Ho 2|=BynjLY0B) :MHUD startedIn9ED˗زt/D3DView/EyeCamera_{2C152F81-45A2-4035-8896-9E49D60C8A7A}2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?0GVJi?GHUD startedceZU@䑧r[җJs@ &NewCommandB// Execute // Called to execute the command function Execute(params) { var theText = params.ConValue('theText'); var textSize = params.ConValue('textSize'); var mtFlag = params.ConValue('mtFlag'); // TODO: put your action code here //remove existing nodes Node.Disconnect("/D3DView", "WldMatrix", "/Widgets", "OwnerMatrix"); Node.ConRemove("/D3DView", "WldMatrix"); Node.ConRemove("/Widgets", "OwnerMatrix"); Node.ConRemove("/Widgets/Active Widgets Layer2", "OwnerMatrix"); Node.ConRemove("/Widgets/Active Widgets Layer2/Markers", "OwnerMatrix"); if(Node.Exists("/Widgets/Active Widgets Layer2/Markers")) Node.Delete("/Widgets/Active Widgets Layer2/Markers"); //setup and connect nodes //assumes that a camera will be the first subobject of D3DView node camera = Node.SubObject("/D3DView",0); cameraNode = "/D3DView/" + camera; params.ConValue("theCamera") = cameraNode; myMatrix = System.CreateDO("Math Package/Matrix Float Data"); // ************************** //mt == true=AddMeasureText, false=AddText //mt = true; mt = false; color = System.CreateDO('Common Data Package/Color Data'); color.SetColorRGB8(200,192,128); xdir = System.CreateDO('Math Package/Point Data'); ydir = System.CreateDO('Math Package/Point Data'); origin = System.CreateDO('Math Package/Point Data'); origin.x = 0; origin.y = 0; origin.z = 0; xdir.x = 0.1; xdir.y = 0; xdir.z = 0; ydir.x = 0; ydir.y = 0.1; ydir.z = 0; markers = Widgets.CreateMarkersSet(); if(mtFlag) markers.AddMeasureText(origin, xdir, ydir,theText,color); else markers.AddText(origin, xdir, ydir,theText,color); origin.y = -1.2; if(mtFlag) markers.AddMeasureText(origin, xdir, ydir,"hello",color); else markers.AddText(origin, xdir, ydir,"hello",color); //this step creates the node in the dg markers.AttachVisualizationMesh('{E01C318B-3A7E-4a6d-9DA9-C4B4AC97B8F2}');//random guid, may cause problems later //test position marker fov = Node.Value(cameraNode,"FOV"); sizeOfHud = 20; ratio = 2 * Math.tan(fov/2); dist = sizeOfHud/ratio; myMatrix.LoadIdentity(); myMatrix.SetTransZ(dist); Node.Value("Widgets/Active Widgets Layer2/Markers/Transform","Matrix") = myMatrix; //connect ownermatrix of marker to world matrix of view camera Node.ExportConnector(cameraNode, "WldMatrix", "", 1, 1); Node.ExportConnector("Widgets/Active Widgets Layer2/Markers/Transform", "OwnerMatrix", "", 1, 1); Node.ExportConnector("Widgets/Active Widgets Layer2/Markers", "OwnerMatrix", "", 1, 1); Node.ExportConnector("Widgets/Active Widgets Layer2", "OwnerMatrix", "", 1, 1); Node.ConnectTo("/D3DView", "WldMatrix", "/Widgets", "OwnerMatrix"); } NScript Object Package/jScript language~൱Dc$#^cstringtheTextLY0B) :MnumbertextSize0GVJi?GbooleanmtFlag ZGd)ZstringtheCameraIn9ED˗ز4W}@O{(XFҦV>g'JNjn*pn;C`@@P@2|=Bynj|?z@Hoۙ>?ZGd)Z J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_їn  ControlOˁ CRih[ eм8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0e:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho48@J g'JNjn*pLE2Data, 2BJX<@&JX<@&D hourD"]ZKZ }"]ZKZ }DminDشBx@|˔Bx@|˔DsecDƥP@?2G1_ƥP@?2G1_DtextSizeDWsFLASDx nH =JH V@S;nH =JH V@S;DcameraNodeD2|=Bynj 0'LAz@Ho2|=BynjƥP@?2G1_412AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?sFLAS ceZU@䑧r[җJs@ 'NewCommand^%// Execute // Called to execute the command function Execute(params) { var hour = params.ConValue('hour'); var min = params.ConValue('min'); var sec = params.ConValue('sec'); var textSize = params.ConValue('textSize'); var mtFlag = params.ConValue('mtFlag'); var cameraNode = params.ConValue('cameraNode'); // TODO: put your action code here //measured texted is backward cs = 1; if(mtFlag) cs = -1; color = System.CreateDO('Common Data Package/Color Data'); //color.SetColorRGB8(200,192,128); xdir = System.CreateDO('Math Package/Point Data'); ydir = System.CreateDO('Math Package/Point Data'); origin = System.CreateDO('Math Package/Point Data'); origin.x = 0; origin.y = 0; origin.z = 0; xdir.x = 0.18; xdir.y = 0; xdir.z = 0; ydir.x = 0; ydir.y = cs*0.2; ydir.z = 0; markers = Widgets.CreateMarkersSet(); color.SetColorRGB8(192,64,32); thetext = hour + ":" + min + ":" + sec; if(mtFlag) markers.AddMeasureText(origin, xdir, ydir,thetext,color); else markers.AddText(origin, xdir, ydir,thetext,color); theDate = new Date(); theHour = theDate.getHours();//24hour theMin = theDate.getMinutes(); theSec = theDate.getSeconds(); theMil = theDate.getMilliseconds(); theHour = theHour + theMin/60;//hands move in between the minutes and hours theMin = theMin + theSec/60; theSec = theSec + theMil/1000; hourA = -((theHour / 12) * 2 * 3.14159) + 3.14159/2; minA = -((theMin / 60) * 2 * 3.14159) + 3.14159/2; secA = -((theSec / 60) * 2 * 3.14159) + 3.14159/2; radius = 5.5; color.SetColorRGB8(164,164,164); centPoint = System.CreateDO("Math Package/Point Data"); centPoint.x = 4.5; centPoint.y = 0; centPoint.z = 0; markers.AddVertex(centPoint,8,color); //circle color.SetColorRGB8(48,48,48); secPoint = System.CreateDO("Math Package/Point Data"); //outPoint = System.CreateDO("Math Package/Point Data"); for(tick=0;tick<=15;tick++) { //theA = tick / 12 * 2 * 3.14159; //theA = (tick / 6) * 3.14159; //theA = tick / 60 * 2 * 3.14159; theA = (tick / 30) * 3.14159; xinit = (radius+1) * Math.cos(theA); yinit = (radius+1) * Math.sin(theA); //xoutinit = (radius) * Math.cos(theA); //youtinit = (radius) * Math.sin(theA); xval = xinit; yval = yinit; secPoint.x = xval + centPoint.x ; secPoint.y = yval; secPoint.z = 0; markers.AddVertex(secPoint,6,color); //xout = xoutinit; yout = youtinit; //outPoint.x = xout + centPoint.x; //outPoint.y = yout; //outPoint.z = 0; //markers.AddEdge(outPoint, secPoint, color); xval = -xinit; yval = yinit; secPoint.x = xval + centPoint.x ; secPoint.y = yval; secPoint.z = 0; markers.AddVertex(secPoint,6,color); xval = -xinit; yval = -yinit; secPoint.x = xval + centPoint.x ; secPoint.y = yval; secPoint.z = 0; markers.AddVertex(secPoint,6,color); xval = xinit; yval = -yinit; secPoint.x = xval + centPoint.x ; secPoint.y = yval; secPoint.z = 0; markers.AddVertex(secPoint,6,color); } xval = radius * Math.cos(secA) + centPoint.x; yval = radius * Math.sin(secA); //secPoint = System.CreateDO("Math Package/Point Data"); color.SetColorRGB8(255,64,24); secPoint.x = xval; secPoint.y = yval; secPoint.z = 0; markers.AddVertex(secPoint,6,color); markers.AddEdge(centPoint, secPoint, color); xval = (radius-1) * Math.cos(minA) + centPoint.x; yval = (radius-1) * Math.sin(minA); //secPoint = System.CreateDO("Math Package/Point Data"); color.SetColorRGB8(32,32,48); secPoint.x = xval; secPoint.y = yval; secPoint.z = 0; markers.AddVertex(secPoint,8,color); markers.AddEdge(centPoint, secPoint, color); xval = (radius-2) * Math.cos(hourA) + centPoint.x; yval = (radius-2) * Math.sin(hourA); //secPoint = System.CreateDO("Math Package/Point Data"); secPoint.x = xval; secPoint.y = yval; secPoint.z = 0; markers.AddVertex(secPoint,12,color); markers.AddEdge(centPoint, secPoint, color); //this step creates the node in the dg markers.AttachVisualizationMesh('{E01C318B-3A7E-4a6d-9DA9-C4B4AC97B8F2}');//random guid, may cause problems later myMatrix = System.CreateDO("Math Package/Matrix Float Data"); fov = Node.Value(cameraNode,"FOV"); sizeOfHud = 20; ratio = 2 * Math.tan(fov/2); dist = sizeOfHud/ratio; myMatrix.LoadIdentity(); myMatrix.SetTransZ(dist); Node.Value("Widgets/Active Widgets Layer2/Markers/Transform","Matrix") = myMatrix; origin.y = cs*1.2; //if(mtFlag) // mark2.AddMeasureText(origin, xdir, ydir,"bobby",color); //else // mark2.AddText(origin, xdir, ydir,"bobby",color); //mark2.AttachVisualizationMesh('{E01C318B-3A7E-4a6d-9DA9-C4B4AC97B8F2}');//random guid, may cause problems later } NScript Object Package/jScript languageS string hourJX<@&stringmin"]ZKZ }stringsecBx@|˔numbertextSizeƥP@?2G1_booleanmtFlag sFLASstringcameraNodenH =JH V@S;Bx@|˔104W}@O{(XFҦV>g'JNjn*pnbCb@ b@2|=Bynj|?z@Hoۙ>?"]ZKZ }34nH =JH V@S;t/D3DView/EyeCamera_{2C152F81-45A2-4035-8896-9E49D60C8A7A}JX<@&20J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_їn  ControlOˁ CRih[ eм8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0e:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho1(ssD =4 Pause Activityk@ BLpA,k@ BLpA,Keep period<Keep constant period in cycle uW}Mzq>uW}Mzq>Period&Timer period in ms1'2|=BynjD 0'z@Ho0/'4W}@O{$(XFҦV"-1OSM n" asvHhTG asvHhTG$NodeIconNodeIcon eSBgc$2|=Bynjk@ BLpA, (XFҦV>g'JNjn*pFCc@@P@?uW}Mzq>K asvHhTGeSBgcR  "CAc4/MxRxe|U=yd%x;. wq7݋;w(:uZpcL2.IÇ7+k96d.FP++++++++ҿ*QuR^IՅy4$;FdFӘ4>'MNJӒ@ Y P| 4О$u=h\Z_AC'Ru`B_+I "B3ibJ(M8OZJ+hC-mMm P%L]Iۮ|Ɗ[ҦXZkOKchnM)!46} e/ITM#hZFcЩl{:gOofTJ=rTAg.]|Vl;:=؎Үx+cKKivMDihn:U~OVeP0ϡaQ4"3MQzz-Ίҩt sF:ӷc .h 2Ņ Ms%Wzg?wp/8GtXOaSh퍷47&DQ)ih^&UWOQeI)Ue%ѐzkMSl |:_H9w`Dg-͂BEnDK܉y-V2B n{l#.D`?F8jG̑.ĆSQ4/ҝtaT]T@J~7UQUZ4 lK39Ϭhw@LC.cDErh8A=6ymx{;k=S|ϱ 1F87OKЦKvt,ɆvFYAzG#АW s/HHц(Kڃ>=eK7*34Mcυ`lVh3 LwB>AgWKsJf㺜?8->D: Ą36t a MM#RuA+;x H4-FO %~*|3Cvod:t:NBQ lmKyn"pM>ڡʉo{8cC`Sp2B]WI]hZ_=dE{Pgv#j/'i,v2b&|p xx efG4i9/@FTogwT{`[8$ϻ!kVr~5hb[ >j;Yz:z1Šq*3g׉%TߏFri#r^)S>!yפ_^NI}kR+R.i>w^ڂՉ e2 &v~|{fG6ٽ4,*^:ZȁŃ|@{fiA;C0ØL)>%drL̝}ܻUt]xM4;LOCcè?.DИP{ZׂvD4翩rFT}]ҕym?Qׯ>u6p6 hzgiczFQ/]aO*0n=ŽhA%Ў_:?CyTگ-M @-]EPg+xuj ]KG5~?/}_^ױPlߡj>`[滋$BGr|Ü3*qYTC3CLi@:[َ O_#km_?|본?/&ܨ_pLƀ^ 2Gnz]ɚ`4; ujfFЦ0sәRb06>(?-*Cio`E'l.VOtsjeTo}˱w-3ښO}mwYN<6<+c@]{y#M إu&7X&mi.p5aTLs=ͨSU@7#VV}JUМfq ;зh`u~e98uN˩5g6yrErݿ1@[֌T?$5sޢ[d {b^%8=]=w=t*u!E32lW36- zz'ˑg#dh dpā`  liA3J8PAe!n4 b5J߃w|sK${7)c{sʜ/LA'?"tY%-vvZ ill @hh7^#b/5rm`QhO,izU k| sr;MbBZ8{}PW惡׬խIT:< ãt:].Ax ؁b e?+z:A{h+Ikނ.]u!!wtr-m 1T/=.(/ԡcEGmNس}Ns" d>d +7>"GB ڂE{6e tnYll X|U>"֜ƹNvxۅkŵ@C^c7y #_z:_,}džUP3}{36) qY*-,42 -Ct=Ձ8 qn㺘6s<">:_ &]&̡k!`Mw`r߻QSy*H)\$t=솶BG0mރ=lAlڈCK=u#Y+c st#֞e]h$bkE[jFA4dKWl'z\"lZ|xM>H^o缹c)0xGѿgRVӇ.w[=q{w`w8|PuPאָ}?tc9\l\w|. B;΢=gSx}m:g;О hjoν[g_&ja^/}}ȅ8g)7^TQPҹIN4mcMgQ T,Ʒx|yxh'SOvo·N.'ѯ7o4;D݋{^? v6lno@S֭չ+}E}y= p h%\ _FAhõ\B$lm:6B;;Ͱ鵰Ǖ82LB3e0IW 9˙atf =0.hN=>ؗ̾0'r=[Ӛ^6z=MM~ee=G(E~zy>Rx}|ߋ'<\‰~.|_ޣL D߃ñ 5qv|oq_?ϟG.tcBt0]CMf hDt1b/b6zg5οYQ/kA98ict Cіʒc_*J mO[Ҳ]Mp ޥs]>EZ}NcwNG:p\AwV{kwߦ} |w&@, u~//ǖ<8?s\=]Il<}r\v-7FAH5?G>:Aİ]hf{.j2""W~{ih\UcpQ ;'qt<hB"͛ӊt4܁JvP(.T71ޛ/q,ß {;zb˳ț7b*MMHoiMz,m5ғL,̞gD_#s"yK5}Ե~Y-/o<F^|0Fzjnn\Jih5jcCzO[PCM;6!ƭB{%dTc@=(= uh]))޿'+~e3=a߯;Ql =b| 1D_Ok˺Ss/''G2֓1#qy>| ?}5<#/tηP}A6FS^N[jnnK=Ybi ι_T?ϙW@3}@z41МJc%sC(- 9ǘuz#}RTj|ʟ]5ݟ bI ˛4#+5>v1yUxC_$n"v_S|ۧfo G<"|C /72M̎;✻Q}C؂6.A[1L1/>M?cjRP3=D=P 5.t9Y4&z9%P95Qֲ$ޯнvX{_+#'Fl<}b.MJL~?AЯb}2o+6؅~Jr{]ZQYD//)GO DƴLٖ3ЦW1)>~n򌖗._E1ԕ}Kws0@z:k+OJƚ=꾎ۃ|r4&ցnGڴihgW/Υ;КuGdO&:/ۡ3u]^ssɿ[oQ'hyVK֠M?գ&W}Ear>J(Jqc rnm cJmHcgVzz`ٞJYb[M `sxi_<1/{ ;Ab>UrGa',g1E[ ?naK`[{?CZoj NsߞXv4הyaϕGy~4miG#~B9):'׼^(#z;a/5?K_ ~ {Խ\>bq?_}]*Tߩ^_!؏~}5ԀE2dBINt?ܞ.ђf^3XVVM ]ʫ-lEӛ;cb9G ?5LWc|^J4o% gD5䣸~rd++{( O%; WU#ρ~ߌsĹ`3לQ%QT?Dӭ6t9`jkO9ܺ@nveX8ִa=AQ?1%( ^fۘ?'QKibbeDO1x]F?;}D{KU{5{Ny/ V߂=};+TYC_jW|YyV*rge0r;)ۖNb:ДFy~P7cbnjP;H_$: %w*m8S,A_$p=C.O1_ׂ̐J{ UnUִu^zD%y)w1kl@j [́2^d7x]b_-/`{w}s{յh:#߱7ii/ε5bĩ>Y á!u[yP1Thᘏc5׃t(َ(pzۊnX^Ԁ2ЖʲeIc}LhMWވ1;SHKp)cg *U̍52z?%ݒOF=eςٛ;::P 3[I?$l`'jUy?=m1`pL3ǸKhh%ے ܧ rkNE1FrxҴSڄq`r *sh?^m-0]K}.D_o !- _Y]~oVImewyўb-jXޗ5i J߯J`[P.E{f:8+l Zn2FnmJnP"Д(Q |= 3{tu$צT։*Gu"dN;o; <5hKze]Ǹ Zykݹ^ z Gkן ^)࿿[O"ݢy^ž}޻<e=ƆR6ؔB/î&E=2?H@D·[= Sס$Cp7bHQ_==iMvmM۷;4ݭ)t ,-~T&Lficdim@r?s/u7^*ǘj r%>ǔ~m࿛#_ީ%q>βSؐ%YXX(GbC,9v[?_{C yʂ2?dM4>C>P(l=ܔkA>%fe6hM|r(ÊFXنr)9jY uR KM$m`X^ k)k?t5/zE *x:}| w{O]E$2Vx iӆo}z8?Y/q3{?SIF<8JQP8 7 f`Sג;6¸(*/oUPFj:x~ҙ>S?ԥfkQr{K͘p|օs{%!K ^ nUyKZ|ZYy_kQItFaoeeʽEԴiSjܸ1t:um] 5$=~f+G@~t'Ȑ6UNT71 )͔`[בDXU_%* Dv~{ 6~?j/!ޓDد_o`nC&dfff7o\anhhHO;g-;ڈ؟R{)j7uWs[ϝ :c@ݛ$H%q染9RQ)0vtv͟K T=$uLb3s/O5?y^;GUY3 y/k>@z7iUvYq6 }Ȩ;0Y Os=vZ {*(#F4ѐڻQqdzLL^!TnB-h=HD;ϑ?2Thl`F؀2@Os <&<y=]v<3?sB}OKǹv#IT:Q-ɰq2ohfE8T?!ӡԦ"'@5UBd&w5'9fH3%TүGFSL *A_`ING'Iujrij-.x !/k(}t]_e^w˽K.{xm=;s X4jkB#Ln%ԖroXU=`>_?۩ ZF?C_8 [I-<ca~=07| h9Qss*_o!(՚ZӊVt>@9ZOsdƁJMM8^uo,b_'#߭$ B6̟5E7|i>X}q@[l'[`3shQ}ۂ4(O97y>3Z Ƶs55d/s?v9g'!:anh5Wrh4`2x cPgǁʙ1{5zoK>s6v#/d24 Pf Ct?7U԰|*o@W h!gv:*iZo)(޶  =-9Y'X=5lj`3]ji4?=? C[Nq,O$?~_7I?Nj=.: Γl(65nOqQ_i Thl@rcG b6;#*o3)z`>m2Gm_Wg@ef~ߦ }9ׂ,hK9l/ }륀ch|59hbUOwo0 J7zz7pIH{r|j>`ο?k[ n־}g"؏C^ ; d,Zhx`3QO- ?mY3О̟΢hGb+a82+5wh@ 6 o ִ:Nt(xU'k&p=03 }w޼nz [?XX jp2G5Fhbm+o_SG Νɸ^< Qu">L^~n<#*OHڹ-#]l0zc=Q=Ub<TjZx\sb_xBNd7!W?`Ͽ P_Mzh[u}X#e,.JF80ʿӃش㿃 o#iΝ I^,T4>aP3Uo+b?w}'wp3*u2ft5B  [g q\]js_#l:ب;چL, K(ho 쩫_}6#χkרP)bCb0|~ϵF~h/ǃ2NDu#uyaZWk|#_Bڃ!w?w(E8Ru7^fK_Fݬ 5u@@zj56P{`0& ׂUJc"_gSkυ5YXR6fݙO0ڈ9Ǡ4|- ^>W h27O߃@KѦɰj7hS T0h?׀>k\_-x]kČ0 gzc7 uD1_.ג6uaK|W6sG1?c+6X_ێkā;ɯk=m\Z= c3[4fJE=:֛fR 4š)m5`Q%N"$9.Ld.qu]qlF!OBՒRޕYwfkB6nd{z**O 6:BeE\q? vk ?xJϕc?mߤffPSwþd_?ܿNGS9QQeg A)۾hg+:hIv`ѧ8'1: I@s h@[(1_ %ؽFLML,mkSf͚=]?QfxO }]`&0\{/rofq|.ӜA!`; mAf?>.o-$kC*lNE?7cb)]ߜF7e.頏 mgNoza=q JcIT〳 kǀ|/˜p>92 ޯ2U[Z=V[׆Xq?7jd7WZc9ƀۺ5sBJn-׷`- EG?\o0s -s? [ggcb X7D17e?Z[_OW`_1^`)rfw՞ӭ[|Y q!߂€ 6w75+ 0ލŹV0IW{lqf h,0au]eΣ2t#ڀk߁ |d>PmO;?1b8EJoP,? ? W,tb ?KDm+d879O2π>J3@Lc)]MWsgAҋ6ؿ>2Ɣ>a*-sGmf?}6]Q>|#QHkn9<Ds5 y>ɽKs01! ۈqIގoH}P5)3G{75k9/Ah5~%oA\Pjl,0 PlCp6lGWe8 v9~>f; ~O8E4:"~m(`9>p0ڍ )ŸT0ɿCӚ:Oz*{>Bw7HS?AK(SOEfkmutw 6𥓴M/I-(6a&d*?0~B9m1_?S?#`3zkUb.6׋ UyFY{d 5:B]KMW =Ms:L̶%yzaX:Zi[x,!mW;f{׀??WyiR??>d(bpWy/޿{(s1yq^o~k(`Ahc25&TE%8QR7ֆy(t NF8?hSk_,/Lia PKģ}tpvhS~RoqhfQ9?!3ezІŰÝ?.mGN^}5p[+$b)꿉?1Î~OOwkb!{j!T)lb? y޼ӿ- Mmq-_ q~$}9lk}Eh/{PyޟDK*3E s7/\b.X#m@ ! ? FW!}Fk}׌z >X_ 6P|_1 {WDmiH ,uvy|AƬg|/vFk".OƂ_Վqyi oZM*ub..d?}8dڣ|9 kMލkJ|B' :%hUUdPlM]FW`A?=UځJ,;bm_G1TO(͖}V}k0p[됦5*ꪋNu`3vg{IYОR@bgwo{ܷޤU2+Q+؀x@ӡ2T0h_71H73ahh ym }i#&H \jjC2y%Cd X᠃T}GXӏ#gƹm#ƙݍ:'VʺXtXM.!8OIQ4(뿿&~JO0+aKS&q O\DzwEsҀ60!Z<Sr4qe: 8[v Jmz˿%C/)pѿ82/Uk-]=|cT856e<&mM菾O>|ex4U:z< /Ox]8[ ^ȳ0 ];6|y:תKʚ4K;/,c Tܛ6boٲ9ESBa'm B<&Gް_}sq|)l3Ztk  'unOYm0D}2cR^>sJLS/?ρ?B\^(7xjҘA|-g!D؋yNZMjԬsMl'j!˜ׅFVxBPǥ>R< !?w].KR:O=)њv8FhbD ;y 4 [j gؤ['3ޟ;Uj+#+/mq߀TR٫JL4 Jh {*(1z?}JEmϭ/kxjSkk|1NBCvكh]ݕŇнu/>ޏ w#;ӷ1eza-7i4M4[|Kqhz<#P༗Y*MBF4A`ۇagx>ca ?"f?mek;gü<˓12Ǣ}<98eV1%Uj8^Bxݚzy3zԈ~qB-#%sڂX_{)w; 2s(+[Xh%~XGo7saOY29{k0f0e@l7 &ys`oR6>Q3ͤ5ЮhO31d5c#}KkϹu#ofc=Pq~1euhKmpTbw^ yWS|!; I* 5HTq=dTGzO+ )z"/?>EM:h"pw1R3^:?CEe#rlMh|}Ncr 5]螁Ed F>$wnǚϩYÜmky=ܞ}d{o~秷@ llDT\XS9X02)' ٙ0$:e<s@e<ݖ1}𵴅41Bk?=G?k|[w|l_9s>@:㪁ÜNh#ھBs3a]$G(UTRQ\V2'6p<0yMOI_*#|&vPgz(8D=y97q]wBqncQͨσJ""_l_I )?۴QƊ?aP pOCio>[Kxmlg3ڶul)hSE-I*/(Uֻ:Q xŒJ,\+ydrVbxuK궴&MW_Ün\5< ;v1@*4 ^qo7LJS)?;z:S1:uX+9]"ᘌHgiwF~Qy>s>?s|_ \?m{2]Tܵ3'PE~K,;##)s{*rSW-iSXubxM{>%}^9+?&cg5ηgxv Ƭ+\lP+1<=U]ge3DEQ ޮThEC,iTK#< ׎ Zq2 ׫\ UOefbvn3q ;Ҵ [Pt Dgː#{0xS3U:P[SaтFiL0  Cxyxa4ɨF4P]U;vn>^(A3I⚡qJRmP{P z8)*[r)jRATکvF}PiT4\{WzWzWzWzWzWzS?-1OSM n 럆L<_ї"   GFʠN= P0@ }} o Control Inz@HoZ`Ez]UO GFʠN= O }} oKeep fixed period in cyclek@ BLpA,Z`Ez]UOͽ>fdN*5Ւh , k@ BLpA,Z`Ez]UO GFʠN=85 }} ouW}Mzq>Z`Ez]UO1釥GP>ap,uW}Mzq>Z`Ez]UO GFʠN=P 0A }} o Control Out2|=BynjZ`Ez]UON\q+nN-K^8pA}}.@p@uW}Mzq>Z`Ez]UOY@z@Ho8ʯȥJH|o7 gH]kDwP|`d8pM*#ͺO|2/tfѭ8Lwb"q