<xml xmlns="https://developers.google.com/blockly/xml">
<variables>
<variable id="cluster_red_scoring">redScoring</variable>
<variable id="cluster_red_audience">redAudience</variable>
<variable id="cluster_blue_audience">blueAudience</variable>
<variable id="cluster_blue_scoring">blueScoring</variable>
<variable id="found">found</variable>
<variable id="red_center_display">redCenterDistance</variable>
<variable id="pair_r4_seen">r4Seen</variable>
<variable id="pair_r5_seen">r5Seen</variable>
<variable id="pair_b4_seen">b4Seen</variable>
<variable id="pair_b5_seen">b5Seen</variable>
<variable id="range_r1">R1Distance</variable>
<variable id="range_r2">R2Distance</variable>
<variable id="range_r3">R3Distance</variable>
<variable id="range_r4">R4Distance</variable>
<variable id="range_r5">R5Distance</variable>
<variable id="range_r6">R6Distance</variable>
<variable id="range_r7">R7Distance</variable>
<variable id="range_r8">R8Distance</variable>
<variable id="range_b1">B1Distance</variable>
<variable id="range_b2">B2Distance</variable>
<variable id="range_b3">B3Distance</variable>
<variable id="range_b4">B4Distance</variable>
<variable id="range_b5">B5Distance</variable>
<variable id="range_b6">B6Distance</variable>
<variable id="range_b7">B7Distance</variable>
<variable id="range_b8">B8Distance</variable>
<variable id="r">result</variable>
<variable id="sel">selecting</variable>
<variable id="l">list</variable>
<variable id="sid">selectedId</variable>
<variable id="srg">selectedRange</variable>
<variable id="t">tag</variable>
<variable id="pair_red_x">redX</variable>
<variable id="p">pose</variable>
<variable id="pair_red_y">redY</variable>
<variable id="pair_blue_x">blueX</variable>
<variable id="pair_red_z">redZ</variable>
<variable id="pair_blue_y">blueY</variable>
<variable id="v_forward">forward</variable>
<variable id="x">x</variable>
<variable id="pair_r4_x">r4X</variable>
<variable id="pair_r5_x">r5X</variable>
<variable id="pair_red_range">redRange</variable>
<variable id="pair_blue_z">blueZ</variable>
<variable id="v_strafe">strafe</variable>
<variable id="y">y</variable>
<variable id="pair_r4_y">r4Y</variable>
<variable id="pair_r5_y">r5Y</variable>
<variable id="pair_b4_x">b4X</variable>
<variable id="pair_b5_x">b5X</variable>
<variable id="pair_blue_range">blueRange</variable>
<variable id="crg">currentRange</variable>
<variable id="v_turn">turn</variable>
<variable id="z">z</variable>
<variable id="pair_r4_z">r4Z</variable>
<variable id="pair_r5_z">r5Z</variable>
<variable id="pair_red_tx">redTx</variable>
<variable id="pair_b4_y">b4Y</variable>
<variable id="pair_b5_y">b5Y</variable>
<variable id="pair_blue_tx">blueTx</variable>
<variable id="ctx">currentTx</variable>
<variable id="v_speed">speed</variable>
<variable id="pair_b4_z">b4Z</variable>
<variable id="pair_b5_z">b5Z</variable>
<variable id="tri_yaw">yaw</variable>
<variable id="v_denominator">denominator</variable>
<variable id="tri_pitch">pitch</variable>
<variable id="rg">range</variable>
<variable id="id">id</variable>
<variable id="tx">tx</variable>
<variable id="tri_group">group</variable>
<variable id="tri_offset">offset</variable>
<variable id="cluster_offset">clusterOffset</variable>
<variable id="cluster_x">clusterX</variable>
<variable id="cluster_y">clusterY</variable>
<variable id="cluster_z">clusterZ</variable>
<variable id="cluster_range">clusterRange</variable>
<variable id="pair_r4_tx">r4Tx</variable>
<variable id="pair_r5_tx">r5Tx</variable>
<variable id="pair_b4_tx">b4Tx</variable>
<variable id="pair_b5_tx">b5Tx</variable>
</variables>
<block type="procedures_defnoreturn" id="Eab!Uy4)]FjCha7/vzu3" x="25" y="0">
<field name="NAME">scanTags</field>
<comment pinned="false" h="80" w="160">SCAN APRILTAGS

This helper procedure asks the Limelight what it can see. It converts tag poses into distances, uses official tag spacing to estimate hidden R4/R5 or B4/B5 positions, and calculates a center point.</comment>
<statement name="STACK">
<block type="comment" id="student_scan_reset">
<field name="COMMENT">WHY RESET EVERY SCAN?
A camera produces many separate pictures called frames. A tag visible in the previous frame might disappear in the next one. We begin with found=false and not visible values so yesterday’s—or even 1/100-second-old—data cannot steer the robot by mistake.</field>
<next>
<block type="variables_set" id="clusterResetStart">
<field name="VAR" id="cluster_red_scoring">redScoring</field>
<value name="VALUE">
<shadow type="text" id="F;#5ruf^tZo~JhG@#-hP">
<field name="TEXT">not visible</field>
</shadow>
</value>
<next>
<block type="variables_set" id="eof.8X=$3[4+o*`gc)2q">
<field name="VAR" id="cluster_red_audience">redAudience</field>
<value name="VALUE">
<shadow type="text" id="puaeP5.p/3y;45`NQaZ#">
<field name="TEXT">not visible</field>
</shadow>
</value>
<next>
<block type="variables_set" id="K,d^_~WPoH$QwehX},H:">
<field name="VAR" id="cluster_blue_audience">blueAudience</field>
<value name="VALUE">
<shadow type="text" id="wxPRJpL1%nnGi[T=Sff)">
<field name="TEXT">not visible</field>
</shadow>
</value>
<next>
<block type="variables_set" id="}m!?dp4.vnnsMx5}Uqoo">
<field name="VAR" id="cluster_blue_scoring">blueScoring</field>
<value name="VALUE">
<shadow type="text" id="kjEi!MY;FPM|bhV+d?35">
<field name="TEXT">not visible</field>
</shadow>
</value>
<next>
<block type="variables_set" id="|W.qq=5;a$0VIVZk{n=B">
<field name="VAR" id="found">found</field>
<value name="VALUE">
<block type="logic_boolean" id="cnuyly4imi?d~z%ILpZ}">
<field name="BOOL">FALSE</field>
</block>
</value>
<next>
<block type="variables_set" id="o#a;k(sB/B=O.PmMJ[%$">
<field name="VAR" id="red_center_display">redCenterDistance</field>
<value name="VALUE">
<shadow type="text" id="rG+)B@r~umvL*lkQ.1t{">
<field name="TEXT">not available</field>
</shadow>
</value>
<next>
<block type="variables_set" id="5Xz!,w;x!du!Yd{/iQa6">
<field name="VAR" id="pair_r4_seen">r4Seen</field>
<value name="VALUE">
<block type="logic_boolean" id="kAi@eAB,Or))n/R=xkh1">
<field name="BOOL">FALSE</field>
</block>
</value>
<next>
<block type="variables_set" id=",#ef3H+PfKj/R8D:*1+j">
<field name="VAR" id="pair_r5_seen">r5Seen</field>
<value name="VALUE">
<block type="logic_boolean" id="zz/a{Xgmy5?+G3-6B_B.">
<field name="BOOL">FALSE</field>
</block>
</value>
<next>
<block type="variables_set" id="s!mCuNNp26i*nxV{P/xP">
<field name="VAR" id="pair_b4_seen">b4Seen</field>
<value name="VALUE">
<block type="logic_boolean" id="8=18/yv~.3V09za=yn#d">
<field name="BOOL">FALSE</field>
</block>
</value>
<next>
<block type="variables_set" id="D^OXCKLl{QRi)NjU2tlk">
<field name="VAR" id="pair_b5_seen">b5Seen</field>
<value name="VALUE">
<block type="logic_boolean" id="pG-C97OslGdowOn$Glo`">
<field name="BOOL">FALSE</field>
</block>
</value>
<next>
<block type="variables_set" id="n{#k_ib`^?[F8MBoZD;#">
<field name="VAR" id="range_r1">R1Distance</field>
<value name="VALUE">
<shadow type="text" id="K{mB0S*H;=Z|p_s!Gon8">
<field name="TEXT">not visible</field>
</shadow>
</value>
<next>
<block type="variables_set" id="{q3#(c[1JfKpaT4$VeY)">
<field name="VAR" id="range_r2">R2Distance</field>
<value name="VALUE">
<shadow type="text" id=":_%t*ApPO(Yt`{=e@9%Q">
<field name="TEXT">not visible</field>
</shadow>
</value>
<next>
<block type="variables_set" id="JWwrAw~8!^lJ6D!dz2z(">
<field name="VAR" id="range_r3">R3Distance</field>
<value name="VALUE">
<shadow type="text" id="RDRz2oB#j.sYrEi^Wk7a">
<field name="TEXT">not visible</field>
</shadow>
</value>
<next>
<block type="variables_set" id="hdY1Ua;0RzFhYdoDKwcT">
<field name="VAR" id="range_r4">R4Distance</field>
<value name="VALUE">
<shadow type="text" id="r(MuEqAI)A]lcl+w{}7X">
<field name="TEXT">not visible</field>
</shadow>
</value>
<next>
<block type="variables_set" id="qIx10(/Hb9BbSi{{W06K">
<field name="VAR" id="range_r5">R5Distance</field>
<value name="VALUE">
<shadow type="text" id="/9OZEt9_;Y]~%LSh{rzw">
<field name="TEXT">not visible</field>
</shadow>
</value>
<next>
<block type="variables_set" id=":^*Uv*/Gb_)U.`f~P6Jn">
<field name="VAR" id="range_r6">R6Distance</field>
<value name="VALUE">
<shadow type="text" id="A_+I{w$8/UiTu;)e0%3a">
<field name="TEXT">not visible</field>
</shadow>
</value>
<next>
<block type="variables_set" id="lRwB2r~TKi?VqvfiOL=4">
<field name="VAR" id="range_r7">R7Distance</field>
<value name="VALUE">
<shadow type="text" id="0kFXA*lJ2![_EfoCBp7i">
<field name="TEXT">not visible</field>
</shadow>
</value>
<next>
<block type="variables_set" id="*@0-^?NM^zhu=c!C20HZ">
<field name="VAR" id="range_r8">R8Distance</field>
<value name="VALUE">
<shadow type="text" id="#r[0B@vEBGUw;|+jHDa:">
<field name="TEXT">not visible</field>
</shadow>
</value>
<next>
<block type="variables_set" id="^WkUuSxfMY!:-Yvb|p~J">
<field name="VAR" id="range_b1">B1Distance</field>
<value name="VALUE">
<shadow type="text" id="BZe8Yaz?@e~w|}zS]W0]">
<field name="TEXT">not visible</field>
</shadow>
</value>
<next>
<block type="variables_set" id="Ii$PaM|6=ZJ=;6b?~MtL">
<field name="VAR" id="range_b2">B2Distance</field>
<value name="VALUE">
<shadow type="text" id="QP(Z9?1!g]++f|a~m6ad">
<field name="TEXT">not visible</field>
</shadow>
</value>
<next>
<block type="variables_set" id="jv~@C6-|c6Nu%M^_=Gkq">
<field name="VAR" id="range_b3">B3Distance</field>
<value name="VALUE">
<shadow type="text" id="u^xxWt52gSt(}F~`l/g1">
<field name="TEXT">not visible</field>
</shadow>
</value>
<next>
<block type="variables_set" id="|Gd#Kjj,_W$C4}j6OCGu">
<field name="VAR" id="range_b4">B4Distance</field>
<value name="VALUE">
<shadow type="text" id="^DZ+w;pk{uw!gqq=o8)(">
<field name="TEXT">not visible</field>
</shadow>
</value>
<next>
<block type="variables_set" id="amS_jh-8/D2Up1++#+?C">
<field name="VAR" id="range_b5">B5Distance</field>
<value name="VALUE">
<shadow type="text" id="(|M5NIs%}rh?uC$j|5(j">
<field name="TEXT">not visible</field>
</shadow>
</value>
<next>
<block type="variables_set" id="]~x%D]$;ZNj~=$13j)OT">
<field name="VAR" id="range_b6">B6Distance</field>
<value name="VALUE">
<shadow type="text" id="GN/JJvD/Amlw:xcPE:9.">
<field name="TEXT">not visible</field>
</shadow>
</value>
<next>
<block type="variables_set" id="w`S9o)A*h:k|L,oM;fsE">
<field name="VAR" id="range_b7">B7Distance</field>
<value name="VALUE">
<shadow type="text" id="-LjM`x3+PdY5s=D,/Ay!">
<field name="TEXT">not visible</field>
</shadow>
</value>
<next>
<block type="variables_set" id="~z,De|AC`9dl$0)z#;0z">
<field name="VAR" id="range_b8">B8Distance</field>
<value name="VALUE">
<shadow type="text" id="+yZ,5H`X-k}6^Y0Gt4!]">
<field name="TEXT">not visible</field>
</shadow>
</value>
<next>
<block type="comment" id="student_scan_result">
<field name="COMMENT">CAMERA RESULT AND LIST
getLatestResult asks for the newest processed camera frame. The result can contain zero, one, or many tags. Fiducial is the camera word for a known visual marker such as an AprilTag. The list lets us repeat the same math for every marker found.</field>
<next>
<block type="variables_set" id="3SewVfx8%fl`gtoz[v!1">
<field name="VAR" id="r">result</field>
<value name="VALUE">
<block type="limelight3A_getLatestResult" id="wfgFQlcrHP)+L3X0($#x">
<field name="IDENTIFIER">limelightAsLimelight3A</field>
<data>{"IDENTIFIER":"limelight"}</data>
</block>
</value>
<next>
<block type="controls_if" id="ClP[7An:!U]1K3g_8hs;">
<mutation else="1"/>
<value name="IF0">
<block type="misc_isNotNull" id="Z}F6.]=mMV*UQLRRg/7_">
<value name="VALUE">
<block type="variables_get" id="cE@YhAb6)O90c4s_#S:M">
<field name="VAR" id="r">result</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="-VWP=9FU:Z/LmvS;=DYM">
<field name="VAR" id="l">list</field>
<value name="VALUE">
<block type="llResult_getProperty_Array" id=":f=]LZZOcdt_KlkuCVeZ">
<field name="PROP">FiducialResults</field>
<value name="LL_RESULT">
<block type="variables_get" id="B{m.gm~fKc?pxJ$_uk:/">
<field name="VAR" id="r">result</field>
</block>
</value>
</block>
</value>
<next>
<block type="comment" id="student_scan_loop">
<field name="COMMENT">THE CAMERA COORDINATE SYSTEM
For each tag, X is left/right, Y is up/down, and Z is forward/back from the camera. The pose also has yaw and pitch angles. Yaw means turning left/right; pitch means tilting up/down. These are geometry terms—not wireless transmit or receive abbreviations.</field>
<next>
<block type="controls_forEach" id=")C}Lsn+M.o57Bvk:);yR">
<field name="VAR" id="t">tag</field>
<value name="LIST">
<block type="variables_get" id="$`|Ek:jjb}Hir8nPPGO?">
<field name="VAR" id="l">list</field>
</block>
</value>
<statement name="DO">
<block type="variables_set" id="e/PhKv=?DT)6]L|l_Xta">
<field name="VAR" id="p">pose</field>
<value name="VALUE">
<block type="llResultTypesFiducialResult_getProperty_Pose3D" id="Z1o=t*_@orAq[aK[/[W:">
<field name="PROP">TargetPoseCameraSpace</field>
<value name="FIDUCIAL_RESULT">
<block type="variables_get" id="8+JLZ0*8SX-BV^.`t32r">
<field name="VAR" id="t">tag</field>
</block>
</value>
</block>
</value>
<next>
<block type="comment" id="student_scan_xyz">
<field name="COMMENT">POSITION NUMBERS
X, Y, and Z are distances measured from the camera to the tag center. They are signed numbers: the sign tells which direction, while the absolute size tells how far along that axis. Keeping all three axes lets the program measure a diagonal line through 3D space.</field>
<next>
<block type="variables_set" id="JC]pf1jiUl4e+(D{q3r4">
<field name="VAR" id="x">x</field>
<value name="VALUE">
<block type="pose3D_getProperty_Number" id="WSN#oRs:xJhTJ6Twx3`t">
<field name="PROP">position.x</field>
<value name="POSE_3D">
<block type="variables_get" id="tP*3pPNTnY8WwwD1KwGa">
<field name="VAR" id="p">pose</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="%.o|C;jG7ewv.g=Tf*n]">
<field name="VAR" id="y">y</field>
<value name="VALUE">
<block type="pose3D_getProperty_Number" id="[Y,xz#SyQJ8wPP}m956)">
<field name="PROP">position.y</field>
<value name="POSE_3D">
<block type="variables_get" id=";d^k!+c.$;~]T*a(.)!~">
<field name="VAR" id="p">pose</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id=".j+bqXknkx-@%@Uta|4z">
<field name="VAR" id="z">z</field>
<value name="VALUE">
<block type="pose3D_getProperty_Number" id="5p4qg]62o.IeMukFO%=k">
<field name="PROP">position.z</field>
<value name="POSE_3D">
<block type="variables_get" id="IW5)N445(l/x~dj?BT`2">
<field name="VAR" id="p">pose</field>
</block>
</value>
</block>
</value>
<next>
<block type="comment" id="student_scan_angles">
<field name="COMMENT">ANGLE NUMBERS
Yaw rotates around the up/down axis, like shaking your head “no.” Pitch rotates up/down, like nodding “yes.” The Limelight reports degrees. Sine and cosine blocks expect degrees here, so no student-written radians conversion is needed.</field>
<next>
<block type="variables_set" id="m}fCXnf{h8MY=[%nZI?V">
<field name="VAR" id="tri_yaw">yaw</field>
<value name="VALUE">
<block type="pose3D_getProperty_Number" id="b~3qq%;e:iZ)%JXYyo`A">
<field name="PROP">orientation.yaw</field>
<value name="POSE_3D">
<block type="variables_get" id="#hW#!X~u8$*RiDHExGgV">
<field name="VAR" id="p">pose</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id=")vNv!!z0iBTXld(!I)/=">
<field name="VAR" id="tri_pitch">pitch</field>
<value name="VALUE">
<block type="pose3D_getProperty_Number" id="}zY4B]bG2CVz/%s1}PVY">
<field name="PROP">orientation.pitch</field>
<value name="POSE_3D">
<block type="variables_get" id="7MP9N*xPG~i,$j=46S.I">
<field name="VAR" id="p">pose</field>
</block>
</value>
</block>
</value>
<next>
<block type="comment" id="student_scan_pythagorean">
<field name="COMMENT">PYTHAGOREAN DISTANCE IN 3D
In 2D, a right triangle has hypotenuse square root of X²+Z². The camera also has height Y, so we add Y²: square root of X²+Y²+Z². Multiply meters by 39.3701 to display inches.</field>
<next>
<block type="variables_set" id="@2F0TWP$=*Ex2NSP0}6K">
<field name="VAR" id="rg">range</field>
<value name="VALUE">
<block type="math_arithmetic" id="7i+4klt1U?h07`Yx|M1m">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_single" id="dp%Q]@jOnvEaF#BTC6//">
<field name="OP">ROOT</field>
<value name="NUM">
<block type="math_arithmetic" id="F3XWuP/e3a@i`)3E%M#R">
<field name="OP">ADD</field>
<value name="A">
<block type="math_arithmetic" id="U0%$}LVo$/=!~:L.IT5Z">
<field name="OP">ADD</field>
<value name="A">
<block type="math_arithmetic" id="%DZg=-!onj:1H*!!q!I+">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="qCX7A2BoOeOU91vpx1Zo">
<field name="VAR" id="x">x</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="OR?!yu*RiISlx}_pgbvv">
<field name="VAR" id="x">x</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="~JwBA)CZ^WDg2%IYjks^">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="czH28-YnPfjAS{yHeal)">
<field name="VAR" id="y">y</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="HC+g6|XnSQEwq0WK#,Ag">
<field name="VAR" id="y">y</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="cQ-v)]JZAm9!_pnLUlj/">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id=",8ONz4KQ`_s$nJoC]pQl">
<field name="VAR" id="z">z</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="55(Cv[itm$:K.ZG9N5rN">
<field name="VAR" id="z">z</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_number" id="dE?UA}@u.d+v?wPYM4%[">
<field name="NUM">39.3701</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="4I1$$%|*%/dPIxvz+Ala">
<field name="VAR" id="id">id</field>
<value name="VALUE">
<block type="llResultTypesFiducialResult_getProperty_Number" id="}9soLH{{OzQh+oAsm^:8">
<field name="PROP">FiducialId</field>
<value name="FIDUCIAL_RESULT">
<block type="variables_get" id="cy[`llaiPLA2ak,9V2]9">
<field name="VAR" id="t">tag</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="Xl*/*2nrugfS0g60D093">
<field name="VAR" id="tx">tx</field>
<value name="VALUE">
<block type="llResultTypesFiducialResult_getProperty_Number" id="pM#b7@n,cxpUzSHc!foq">
<field name="PROP">TargetXDegrees</field>
<value name="FIDUCIAL_RESULT">
<block type="variables_get" id="u9ZNpL_Yc#]m[._te^KY">
<field name="VAR" id="t">tag</field>
</block>
</value>
</block>
</value>
<next>
<block type="comment" id="student_scan_groups">
<field name="COMMENT">FOUR HALF-GROUPS
Group 0 estimates R4 from R1–R4. Group 1 estimates R5 from R5–R8. Group 2 estimates B4, and group 3 estimates B5. One visible tag from each matching pair of groups is enough to calculate that alliance center.</field>
<next>
<block type="variables_set" id="^DGLgpGZhFU!1i)x*(nI">
<field name="VAR" id="tri_group">group</field>
<value name="VALUE">
<block type="math_number" id="*-..IgW,mjY~pw17Zpy6">
<field name="NUM">-1</field>
</block>
</value>
<next>
<block type="variables_set" id="aKu)MENCbi{F8IPd+gF?">
<field name="VAR" id="tri_offset">offset</field>
<value name="VALUE">
<block type="math_number" id="=2?V_9gPB;m9ru4%qlLk">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="comment" id="student_scan_ids">
<field name="COMMENT">TAG NUMBERS AND KNOWN OFFSETS
Red tags are IDs 30–37; blue tags are IDs 38–45. Each four-tag strip has centers at -6.5, -2.75, +2.75, and +6.5 inches from its middle. Example: R1 is 13 inches left of R4, so seeing R1 lets us estimate where hidden R4 should be.</field>
<next>
<block type="controls_if" id="oEz?q[nITDIBgut9_/6W">
<value name="IF0">
<block type="logic_compare" id="cgDf])Ha3-`%|$dp{o55">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="4S^5THv3}rZ_]@Tz.]Q-">
<field name="VAR" id="id">id</field>
</block>
</value>
<value name="B">
<block type="math_number" id="bHf?hTb/0tI2q^Agjg{x">
<field name="NUM">30</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="b#C=WCQ%cg6GcfiTz}WG">
<field name="VAR" id="range_r1">R1Distance</field>
<value name="VALUE">
<block type="variables_get" id="8ds_.-g##Cw+B=],ZFsW">
<field name="VAR" id="rg">range</field>
</block>
</value>
<next>
<block type="variables_set" id="7K|4%:av-Q~]`OYI.ZbB">
<field name="VAR" id="tri_group">group</field>
<value name="VALUE">
<block type="math_number" id="=Wmx{sr:6]wFQ3lED?;$">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="variables_set" id="T2X@2tKnze:JA4t$$Oa(">
<field name="VAR" id="tri_offset">offset</field>
<value name="VALUE">
<block type="math_number" id="[h]{}Wd0=6b#~-9o*:Wm">
<field name="NUM">13</field>
</block>
</value>
<next>
<block type="variables_set" id="clusterOffset_R1Distance">
<field name="VAR" id="cluster_offset">clusterOffset</field>
<value name="VALUE">
<block type="math_number" id="kuZ=%6jp4o{h{:VVPW{r">
<field name="NUM">6.5</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id="cv2ZOt7ya0IQ^GSz!ND6">
<value name="IF0">
<block type="logic_compare" id="S([5[LD!c8es,i!.+So+">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="IX[j3K/iRBN365D_=U`U">
<field name="VAR" id="id">id</field>
</block>
</value>
<value name="B">
<block type="math_number" id="/cf$mYK^qOG3#m~X!@!M">
<field name="NUM">31</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="{K@F+~R,SzQ]{x)t*xMz">
<field name="VAR" id="range_r2">R2Distance</field>
<value name="VALUE">
<block type="variables_get" id="gD7.jeJbjTrbTXF)rH)P">
<field name="VAR" id="rg">range</field>
</block>
</value>
<next>
<block type="variables_set" id="uS}.m}%;E@p7TzVfV56[">
<field name="VAR" id="tri_group">group</field>
<value name="VALUE">
<block type="math_number" id="VOHZ@~o%3P4D^=JhSVwU">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="variables_set" id="Nm(K,!L-].IfcN7HCQOj">
<field name="VAR" id="tri_offset">offset</field>
<value name="VALUE">
<block type="math_number" id="gF;dq6U?2J7{-Du7:Xt6">
<field name="NUM">9.25</field>
</block>
</value>
<next>
<block type="variables_set" id="clusterOffset_R2Distance">
<field name="VAR" id="cluster_offset">clusterOffset</field>
<value name="VALUE">
<block type="math_number" id="^T|4vVbuo]4C#*}^y/!?">
<field name="NUM">2.75</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id=")V5jo%mxTEKSKLyX2yIw">
<value name="IF0">
<block type="logic_compare" id="3qSL%u#u^mAPi.J$4:HZ">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="=p5{x4`p~6h-1Bm47W!9">
<field name="VAR" id="id">id</field>
</block>
</value>
<value name="B">
<block type="math_number" id="`lo;Q)ElqiU;k5.H`*a4">
<field name="NUM">32</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="b@$b3rYb?]L-$.$eyQQW">
<field name="VAR" id="range_r3">R3Distance</field>
<value name="VALUE">
<block type="variables_get" id="mxSw/kmf_%$vmepOeKhY">
<field name="VAR" id="rg">range</field>
</block>
</value>
<next>
<block type="variables_set" id="tk~9?Nf6DP%{.|r^*PA9">
<field name="VAR" id="tri_group">group</field>
<value name="VALUE">
<block type="math_number" id="Bg6m*b?aOFjd=:q,k,[I">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="variables_set" id="xv!8#!71iO,uJts4n2k3">
<field name="VAR" id="tri_offset">offset</field>
<value name="VALUE">
<block type="math_number" id="u^LS#4QT^,Bj1;RwVd;Y">
<field name="NUM">3.75</field>
</block>
</value>
<next>
<block type="variables_set" id="clusterOffset_R3Distance">
<field name="VAR" id="cluster_offset">clusterOffset</field>
<value name="VALUE">
<block type="math_number" id="xLbc:q^Rzt3NBnw}luci">
<field name="NUM">-2.75</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id="EOh,(jTfiVa)=SnUTB-d">
<value name="IF0">
<block type="logic_compare" id="g@%Lb7UQ)[*E+,dPlQc9">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="/{scgknf+:0FIDv*8Ll1">
<field name="VAR" id="id">id</field>
</block>
</value>
<value name="B">
<block type="math_number" id="R^L~M6qmGip2%/LsIfcF">
<field name="NUM">33</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="b=rT5]xnE!X5YiHWkW!p">
<field name="VAR" id="range_r4">R4Distance</field>
<value name="VALUE">
<block type="variables_get" id="x?Pp#)q((+qN8_M4$R=$">
<field name="VAR" id="rg">range</field>
</block>
</value>
<next>
<block type="variables_set" id="g|?Ze)GX_(p,fH+QaEz(">
<field name="VAR" id="tri_group">group</field>
<value name="VALUE">
<block type="math_number" id="o*Jv=/3K9mW@F77Di#$1">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="variables_set" id="j?j)D9XNajOo:o4~y,3h">
<field name="VAR" id="tri_offset">offset</field>
<value name="VALUE">
<block type="math_number" id="`Q]9oMj8SCe1?)bT=]sA">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="variables_set" id="clusterOffset_R4Distance">
<field name="VAR" id="cluster_offset">clusterOffset</field>
<value name="VALUE">
<block type="math_number" id="EmHL*8qV+3egeQC[W*NG">
<field name="NUM">-6.5</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id="Pk*y([hQ|8~[.OS,ca3H">
<value name="IF0">
<block type="logic_compare" id="r@5-q(H}gY.K7s!uzNkU">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="ps@VgT-$_TK~vH}xB!5O">
<field name="VAR" id="id">id</field>
</block>
</value>
<value name="B">
<block type="math_number" id="8Vx#+0?%Pz3w|}cIi=b8">
<field name="NUM">34</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="zz5uz9^?oZUYV2Yk#DX*">
<field name="VAR" id="range_r5">R5Distance</field>
<value name="VALUE">
<block type="variables_get" id="E]{-,fqHP`.r)}e7(Ul*">
<field name="VAR" id="rg">range</field>
</block>
</value>
<next>
<block type="variables_set" id="(k~U$^9G]ZIC1N5P#erx">
<field name="VAR" id="tri_group">group</field>
<value name="VALUE">
<block type="math_number" id="?JFw+m?3|viDi6ApA3c0">
<field name="NUM">1</field>
</block>
</value>
<next>
<block type="variables_set" id="cNV|:OSozFnhP?`Q@U`^">
<field name="VAR" id="tri_offset">offset</field>
<value name="VALUE">
<block type="math_number" id="aaezy]AS=zef#6IX~9:j">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="variables_set" id="clusterOffset_R5Distance">
<field name="VAR" id="cluster_offset">clusterOffset</field>
<value name="VALUE">
<block type="math_number" id="q=oj,Hz1OK=-Ms~$gDjf">
<field name="NUM">6.5</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id="%z%OnVaw4JM.c]`3AHOU">
<value name="IF0">
<block type="logic_compare" id=":Jms3Qgu7p-`8X[TgR|z">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="Hl8NG]Ruy#U.DqEh3L!x">
<field name="VAR" id="id">id</field>
</block>
</value>
<value name="B">
<block type="math_number" id="zmp/,2#%;O9u~C_{?`NK">
<field name="NUM">35</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="ol6A*_,7PTZU[yTMgOuf">
<field name="VAR" id="range_r6">R6Distance</field>
<value name="VALUE">
<block type="variables_get" id="54+N2vlQH5es=2|9UX98">
<field name="VAR" id="rg">range</field>
</block>
</value>
<next>
<block type="variables_set" id="##jj)kaRfy0TG?Y.gCJq">
<field name="VAR" id="tri_group">group</field>
<value name="VALUE">
<block type="math_number" id="wfO5kFOt/N`~={CWEf9/">
<field name="NUM">1</field>
</block>
</value>
<next>
<block type="variables_set" id="PYzl8Q@p6mzIP0gGq|+c">
<field name="VAR" id="tri_offset">offset</field>
<value name="VALUE">
<block type="math_number" id="4kAyRSc#d]f@3#Wt[CfV">
<field name="NUM">-3.75</field>
</block>
</value>
<next>
<block type="variables_set" id="clusterOffset_R6Distance">
<field name="VAR" id="cluster_offset">clusterOffset</field>
<value name="VALUE">
<block type="math_number" id="k0S+RUn;?]8yD7i:=?0c">
<field name="NUM">2.75</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id="RGF^dJ/iki.ky0/seXOE">
<value name="IF0">
<block type="logic_compare" id="geN^G_Yo_nAXuYkO|M|O">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="%gaW@5X}tis$bT#Pnt{|">
<field name="VAR" id="id">id</field>
</block>
</value>
<value name="B">
<block type="math_number" id="iaO[)3*OkgfOr@QBZD`$">
<field name="NUM">36</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id=";+TJwLRuGHFi4Z`]Ab`?">
<field name="VAR" id="range_r7">R7Distance</field>
<value name="VALUE">
<block type="variables_get" id="=0KlDYg?8wwYFh?P1*At">
<field name="VAR" id="rg">range</field>
</block>
</value>
<next>
<block type="variables_set" id="G=jc]:9amL@}SGhi/xt_">
<field name="VAR" id="tri_group">group</field>
<value name="VALUE">
<block type="math_number" id="EtkfDny3uN8Y*r:X-u0j">
<field name="NUM">1</field>
</block>
</value>
<next>
<block type="variables_set" id="[_g}pf),g-U~cR3PKdfK">
<field name="VAR" id="tri_offset">offset</field>
<value name="VALUE">
<block type="math_number" id="*Nm1r)yPkP`[W54UPq92">
<field name="NUM">-9.25</field>
</block>
</value>
<next>
<block type="variables_set" id="clusterOffset_R7Distance">
<field name="VAR" id="cluster_offset">clusterOffset</field>
<value name="VALUE">
<block type="math_number" id="Da($M8EV9Zbfn#3A{~;I">
<field name="NUM">-2.75</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id="t=r3oaX#xZ,Zp#f%sH/K">
<value name="IF0">
<block type="logic_compare" id="EuC{`v~VpCc}4uj2k~qa">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="{kb%o,iydHgve/27%ZK_">
<field name="VAR" id="id">id</field>
</block>
</value>
<value name="B">
<block type="math_number" id="FoZs7$to1@t9*k@{1hi+">
<field name="NUM">37</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="6{=m[kDyzIN6fqt2aAr5">
<field name="VAR" id="range_r8">R8Distance</field>
<value name="VALUE">
<block type="variables_get" id="6XSc[E$%LJDU]@;h,RR_">
<field name="VAR" id="rg">range</field>
</block>
</value>
<next>
<block type="variables_set" id="X=X~gU4A99cy}P?[r(ym">
<field name="VAR" id="tri_group">group</field>
<value name="VALUE">
<block type="math_number" id="y!XTr~O@3kt3:*WpkBt|">
<field name="NUM">1</field>
</block>
</value>
<next>
<block type="variables_set" id="Y`C5pej{:Z~#;}jcsw/D">
<field name="VAR" id="tri_offset">offset</field>
<value name="VALUE">
<block type="math_number" id="tSRu9uZ9[@X;p:Ia1[NR">
<field name="NUM">-13</field>
</block>
</value>
<next>
<block type="variables_set" id="clusterOffset_R8Distance">
<field name="VAR" id="cluster_offset">clusterOffset</field>
<value name="VALUE">
<block type="math_number" id="6OiSz8.8JoYJo4BY#W.F">
<field name="NUM">-6.5</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id="CJ^N(j.,,FssX!0`#~mV">
<value name="IF0">
<block type="logic_compare" id="z|q]b:J)-;r9.tLxURXA">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="L|RiPdIJu%mwot{N$v:2">
<field name="VAR" id="id">id</field>
</block>
</value>
<value name="B">
<block type="math_number" id="FiSgr4qe}ZY1M;K:@BB(">
<field name="NUM">38</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="a/Vhj}V,swg?DT~D{xXL">
<field name="VAR" id="range_b1">B1Distance</field>
<value name="VALUE">
<block type="variables_get" id="-SFM~nlx3TLr;rj^^?YE">
<field name="VAR" id="rg">range</field>
</block>
</value>
<next>
<block type="variables_set" id="-3|yCSEXNyUAOVJXzPkq">
<field name="VAR" id="tri_group">group</field>
<value name="VALUE">
<block type="math_number" id="deZ$v*0.uZ(qU5owoMos">
<field name="NUM">2</field>
</block>
</value>
<next>
<block type="variables_set" id=")U3Fn5+4wrNnt9[q=g5E">
<field name="VAR" id="tri_offset">offset</field>
<value name="VALUE">
<block type="math_number" id="isEbQdPu/0;|%o,ii.i@">
<field name="NUM">13</field>
</block>
</value>
<next>
<block type="variables_set" id="clusterOffset_B1Distance">
<field name="VAR" id="cluster_offset">clusterOffset</field>
<value name="VALUE">
<block type="math_number" id="nf,__z5uu/gJ+v5-5VoY">
<field name="NUM">6.5</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id="_TX=,1va/dNO3oL(urWm">
<value name="IF0">
<block type="logic_compare" id="Z:cFMQE~Hy|CV9nR,(31">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="3M_8WXm.Y`tHzf8t7i!7">
<field name="VAR" id="id">id</field>
</block>
</value>
<value name="B">
<block type="math_number" id="Q_Xq+A(X-]~+=v4V^lE{">
<field name="NUM">39</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="pCr80HH-ISEXj$1s7.rG">
<field name="VAR" id="range_b2">B2Distance</field>
<value name="VALUE">
<block type="variables_get" id="-/!#Z`2Ah+NgoN|wDup#">
<field name="VAR" id="rg">range</field>
</block>
</value>
<next>
<block type="variables_set" id=")NRYS~D{*tvC`ZE3+2Qg">
<field name="VAR" id="tri_group">group</field>
<value name="VALUE">
<block type="math_number" id="cF(AD6v+WG(7Z$6g~OwP">
<field name="NUM">2</field>
</block>
</value>
<next>
<block type="variables_set" id="%5E=J]GL~}y^b|Flr[Lu">
<field name="VAR" id="tri_offset">offset</field>
<value name="VALUE">
<block type="math_number" id="1)fEWc@8SN`}O%5xL.o9">
<field name="NUM">9.25</field>
</block>
</value>
<next>
<block type="variables_set" id="clusterOffset_B2Distance">
<field name="VAR" id="cluster_offset">clusterOffset</field>
<value name="VALUE">
<block type="math_number" id="8vp|a0(1I7N:s:iV4qV6">
<field name="NUM">2.75</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id="CVC^$37!9f=m@}j_$mv~">
<value name="IF0">
<block type="logic_compare" id="JSngFSo%A9aNEj9o*+k5">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="rN1W~q;}^D#?Tvw)A%9I">
<field name="VAR" id="id">id</field>
</block>
</value>
<value name="B">
<block type="math_number" id="wZ;]o~Mlwqd]fR(_WPp_">
<field name="NUM">40</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="GjcHcx9u/DmKPI7UNFfH">
<field name="VAR" id="range_b3">B3Distance</field>
<value name="VALUE">
<block type="variables_get" id="`Op@ui|atK]~J?81gY$m">
<field name="VAR" id="rg">range</field>
</block>
</value>
<next>
<block type="variables_set" id="LDShInm61lULPSSRE:$k">
<field name="VAR" id="tri_group">group</field>
<value name="VALUE">
<block type="math_number" id="Yy|.9/A~Q.uf)Gi|Wm2T">
<field name="NUM">2</field>
</block>
</value>
<next>
<block type="variables_set" id="s/0+[Yf1/r0@+lY|M+Ua">
<field name="VAR" id="tri_offset">offset</field>
<value name="VALUE">
<block type="math_number" id="z2a*#hmn[ORdsWHtl3X3">
<field name="NUM">3.75</field>
</block>
</value>
<next>
<block type="variables_set" id="clusterOffset_B3Distance">
<field name="VAR" id="cluster_offset">clusterOffset</field>
<value name="VALUE">
<block type="math_number" id="~I,u5,`L^Ta0s0k}._*a">
<field name="NUM">-2.75</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id="#a/TUll89^]B3fnTG%T6">
<value name="IF0">
<block type="logic_compare" id="kd?LMn?Q=.=)o0(0[79-">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="D/FQ7NWf(qMG=Wo3GUqL">
<field name="VAR" id="id">id</field>
</block>
</value>
<value name="B">
<block type="math_number" id="|gN)=MC)$=V2Ur]2ZP@g">
<field name="NUM">41</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="HN66IiYT4W:t{?~aZ@`Z">
<field name="VAR" id="range_b4">B4Distance</field>
<value name="VALUE">
<block type="variables_get" id=";MPCX9(yK12]PY.dZxs!">
<field name="VAR" id="rg">range</field>
</block>
</value>
<next>
<block type="variables_set" id="1gX~YoK|~{T{-XMZ+UJ%">
<field name="VAR" id="tri_group">group</field>
<value name="VALUE">
<block type="math_number" id="v216#bbH[XS,qZugkH.Q">
<field name="NUM">2</field>
</block>
</value>
<next>
<block type="variables_set" id="@0V,v8!ZDtMTf721569*">
<field name="VAR" id="tri_offset">offset</field>
<value name="VALUE">
<block type="math_number" id="g(;Yfs2PHp8%D8{g:B)o">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="variables_set" id="clusterOffset_B4Distance">
<field name="VAR" id="cluster_offset">clusterOffset</field>
<value name="VALUE">
<block type="math_number" id="{eok=xr@^C^Q6%o@uE`~">
<field name="NUM">-6.5</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id="*Kd$(j8[8k(qAvP`^qJq">
<value name="IF0">
<block type="logic_compare" id="67Mq+]g3;.Zje5N$Tp2?">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="f8BoKqS7T!.10drM2%)$">
<field name="VAR" id="id">id</field>
</block>
</value>
<value name="B">
<block type="math_number" id="/E4]:mE6$t,)Hi;d%bQV">
<field name="NUM">42</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="CAgS{,4axy8nkM!/1B@c">
<field name="VAR" id="range_b5">B5Distance</field>
<value name="VALUE">
<block type="variables_get" id=":gcaIV~Rt{-3(X4yb5G.">
<field name="VAR" id="rg">range</field>
</block>
</value>
<next>
<block type="variables_set" id="HeZ:|AMJyD_hiIbnG3%C">
<field name="VAR" id="tri_group">group</field>
<value name="VALUE">
<block type="math_number" id="^4Xrw*#lbKW]}dC1XF$`">
<field name="NUM">3</field>
</block>
</value>
<next>
<block type="variables_set" id="@GG?.eIGR1yDXyJdOO3M">
<field name="VAR" id="tri_offset">offset</field>
<value name="VALUE">
<block type="math_number" id="|4[e3d%+VycwP{skx/^r">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="variables_set" id="clusterOffset_B5Distance">
<field name="VAR" id="cluster_offset">clusterOffset</field>
<value name="VALUE">
<block type="math_number" id="yRri+V!+a6,(1PFk[k(z">
<field name="NUM">6.5</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id="-[Ik({2N:}%61FftsD,s">
<value name="IF0">
<block type="logic_compare" id="R/YW?TYtY-kdO5;RDX%{">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="WpW9O8sg-5XS/MozJC?%">
<field name="VAR" id="id">id</field>
</block>
</value>
<value name="B">
<block type="math_number" id="q;d#rj(y{Xq@gRH25/=v">
<field name="NUM">43</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="zM;hVh*tEe5sAzx9M!yd">
<field name="VAR" id="range_b6">B6Distance</field>
<value name="VALUE">
<block type="variables_get" id="|=RC|#$98?.|eL@u}oJr">
<field name="VAR" id="rg">range</field>
</block>
</value>
<next>
<block type="variables_set" id="w+ChHg1jHTyS@rXp{P,!">
<field name="VAR" id="tri_group">group</field>
<value name="VALUE">
<block type="math_number" id="t$-T(iJU2b/HkCcr{OAi">
<field name="NUM">3</field>
</block>
</value>
<next>
<block type="variables_set" id="k2r=COW{xn(Yrfx[@NbF">
<field name="VAR" id="tri_offset">offset</field>
<value name="VALUE">
<block type="math_number" id="bXg]|0_[q9Wx!?HKpTIZ">
<field name="NUM">-3.75</field>
</block>
</value>
<next>
<block type="variables_set" id="clusterOffset_B6Distance">
<field name="VAR" id="cluster_offset">clusterOffset</field>
<value name="VALUE">
<block type="math_number" id="R)JJ+~gNr{kW0%T$gWG~">
<field name="NUM">2.75</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id="OMSJnI,n[;/_+NP5dq@H">
<value name="IF0">
<block type="logic_compare" id="2`aL:,`4z+Q[v|Z:6b!q">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="/Zo$!}N?(#6;+PSe%s$d">
<field name="VAR" id="id">id</field>
</block>
</value>
<value name="B">
<block type="math_number" id="BQk59b8f1WeALdl@yS!f">
<field name="NUM">44</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="#v6%h5}C`,2[$v;^WiGh">
<field name="VAR" id="range_b7">B7Distance</field>
<value name="VALUE">
<block type="variables_get" id="qJ_N0O]~Z]1mmgW%y7Mh">
<field name="VAR" id="rg">range</field>
</block>
</value>
<next>
<block type="variables_set" id="3q|($M;DA]FF8H@PAe1?">
<field name="VAR" id="tri_group">group</field>
<value name="VALUE">
<block type="math_number" id="bG/`@$#YwkR05MQQSXR+">
<field name="NUM">3</field>
</block>
</value>
<next>
<block type="variables_set" id="SLhyz9Uy`r~qU4Ftt@Rc">
<field name="VAR" id="tri_offset">offset</field>
<value name="VALUE">
<block type="math_number" id="(Q.:onY+Xqm$dmNy2q,v">
<field name="NUM">-9.25</field>
</block>
</value>
<next>
<block type="variables_set" id="clusterOffset_B7Distance">
<field name="VAR" id="cluster_offset">clusterOffset</field>
<value name="VALUE">
<block type="math_number" id="Z;S:;60ueM,o#%V[5H8{">
<field name="NUM">-2.75</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id="RhbP0w%mi$2c,YeWGBIJ">
<value name="IF0">
<block type="logic_compare" id="3.oNUTC@abO?rO!Pi26-">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="V]]sp81ZdzLbd4l`TrYi">
<field name="VAR" id="id">id</field>
</block>
</value>
<value name="B">
<block type="math_number" id="-y3M;C/QR}l=_zV~^##$">
<field name="NUM">45</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="kkHC[V?!h:t0H;rq709F">
<field name="VAR" id="range_b8">B8Distance</field>
<value name="VALUE">
<block type="variables_get" id="W~*pn$_q|tnq){}7;j%[">
<field name="VAR" id="rg">range</field>
</block>
</value>
<next>
<block type="variables_set" id="8Ha^SdWieNLJz]:[MRht">
<field name="VAR" id="tri_group">group</field>
<value name="VALUE">
<block type="math_number" id="GFBKQk}9tSxY6VCbx.,Q">
<field name="NUM">3</field>
</block>
</value>
<next>
<block type="variables_set" id="t_X}T.5B5tOoO5EV{in^">
<field name="VAR" id="tri_offset">offset</field>
<value name="VALUE">
<block type="math_number" id="2JU0X|*M6Bx;)vS{@Wqx">
<field name="NUM">-13</field>
</block>
</value>
<next>
<block type="variables_set" id="clusterOffset_B8Distance">
<field name="VAR" id="cluster_offset">clusterOffset</field>
<value name="VALUE">
<block type="math_number" id="2tKP3mYd`RhZJSP3%Hf[">
<field name="NUM">-6.5</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="comment" id="student_scan_trig">
<field name="COMMENT">WHY SINE AND COSINE?
The known tag offset lies along the tag strip, but the camera may view that strip at an angle. Cosine tells how much of the offset points along one camera axis; sine tells the perpendicular part. We use yaw and pitch to rotate the offset into camera X, Y, and Z. Inches are divided by 39.3701 because the camera pose uses meters.</field>
<next>
<block type="comment" id="student_scan_cluster_distance">
<field name="COMMENT">CLUSTER CENTER DISTANCE
A cluster is one sticker containing four AprilTags. clusterOffset moves from whichever tag is visible to that sticker’s middle. Sine and cosine rotate the offset into camera coordinates. Then square root of X²+Y²+Z² gives distance to the cluster center, not distance to one tag.</field>
<next>
<block type="variables_set" id="clusterCalcStart">
<field name="VAR" id="cluster_x">clusterX</field>
<value name="VALUE">
<block type="math_arithmetic" id="Gv,p^{C6,;gSMG!^qwWH">
<field name="OP">ADD</field>
<value name="A">
<block type="variables_get" id="V+0l;e_PQX`j#bu*P=0H">
<field name="VAR" id="x">x</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="[?1(fx6e?pRP*$-_7VaR">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_arithmetic" id="*wq(wUe4q-*=(*!d^ZRS">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id="/P{n0YI,03z~HJI2q`zY">
<field name="VAR" id="cluster_offset">clusterOffset</field>
</block>
</value>
<value name="B">
<block type="math_number" id="9tSs[}r[mqh5zA,jXj0P">
<field name="NUM">39.3701</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id=";r+FNDQ9a?S@L5O6V~]:">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_trig" id="[om2}a_Yu^Xqw{LaVQ7A">
<field name="OP">COS</field>
<value name="NUM">
<block type="variables_get" id="]Nl8_wPX5(y;-=m]Ro%W">
<field name="VAR" id="tri_yaw">yaw</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_trig" id="QPINw29wP~dx4wqjRhLx">
<field name="OP">COS</field>
<value name="NUM">
<block type="variables_get" id="hQ%yzA`YF7=9J2L!2iu*">
<field name="VAR" id="tri_pitch">pitch</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="Q=yW(K5)b!Hh2(r5eR*#">
<field name="VAR" id="cluster_y">clusterY</field>
<value name="VALUE">
<block type="math_arithmetic" id="4c!IodBlKatED{Z`,]P;">
<field name="OP">ADD</field>
<value name="A">
<block type="variables_get" id="9pkk$*~z=HP?8Gd,$X}=">
<field name="VAR" id="y">y</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="@3Hg%MVCZU%npMPr%XsC">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_arithmetic" id="pvcXDyokNbK;-)=}C-|=">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id="@zOqY2=|]V9Km!%.3%},">
<field name="VAR" id="cluster_offset">clusterOffset</field>
</block>
</value>
<value name="B">
<block type="math_number" id="%BHQ!0RmPHBw4@8ImUBT">
<field name="NUM">39.3701</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="]dbZhg_BCrMHebx5j2W=">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_trig" id="L^+ja4^ASNe#EsODz}!=">
<field name="OP">SIN</field>
<value name="NUM">
<block type="variables_get" id="~y9(CauXxCqzQvz*f2os">
<field name="VAR" id="tri_yaw">yaw</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_trig" id="jmbxrAmTBc$,Fe.#x/Ue">
<field name="OP">COS</field>
<value name="NUM">
<block type="variables_get" id="Ez$Z8XWL.||M#I0wn}c5">
<field name="VAR" id="tri_pitch">pitch</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="o+~vhxkVeH{}9FS/#Mcz">
<field name="VAR" id="cluster_z">clusterZ</field>
<value name="VALUE">
<block type="math_arithmetic" id="Taa]+)(OCRHYCPzmk4x.">
<field name="OP">MINUS</field>
<value name="A">
<block type="variables_get" id="C@^@L=lYU4#Iw@v{Hg[M">
<field name="VAR" id="z">z</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="aDFjQ1yueNDQ^%2Qm1qo">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_arithmetic" id="sQ`0#G;FjIR?9,r8^6a2">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id="kXh0WJA9BZt[_qSY}zH5">
<field name="VAR" id="cluster_offset">clusterOffset</field>
</block>
</value>
<value name="B">
<block type="math_number" id="Ca-!O{7%~;8B_7^m]@YU">
<field name="NUM">39.3701</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_trig" id="u+n(u1v)/0wDFm4WTZ:z">
<field name="OP">SIN</field>
<value name="NUM">
<block type="variables_get" id="4/~Zq[C,56t*#KHw+n4,">
<field name="VAR" id="tri_pitch">pitch</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="ABaYA3]5kv:p7:P7-sZa">
<field name="VAR" id="cluster_range">clusterRange</field>
<value name="VALUE">
<block type="math_arithmetic" id="f(cEZkhz?7zKcKpR35@B">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_single" id="_bS}JoC19BO4cjn2~x_x">
<field name="OP">ROOT</field>
<value name="NUM">
<block type="math_arithmetic" id="D~epdZ4BNaw0K92nZ.Un">
<field name="OP">ADD</field>
<value name="A">
<block type="math_arithmetic" id="=5S;E.ioBJe6Zg,m`pP6">
<field name="OP">ADD</field>
<value name="A">
<block type="math_arithmetic" id="Aj.w,n)-KD^e9NTN1M(~">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="]j@?pBB3~8]trOky-;Q9">
<field name="VAR" id="cluster_x">clusterX</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="L?`_C4va^gT@k]Bz`{Jz">
<field name="VAR" id="cluster_x">clusterX</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="]#?8HQS(r817oQEt^yG#">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="pA?grz+f`,;Vp.~C_DOL">
<field name="VAR" id="cluster_y">clusterY</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="WG[`x85K)bGVM!hYW0MS">
<field name="VAR" id="cluster_y">clusterY</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="Rd2v]4:5=wO@H5f{RN7U">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="?^J8GLnkvkWC]@c/FE$w">
<field name="VAR" id="cluster_z">clusterZ</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="@V]-d!dm,W5tzv^AkjXz">
<field name="VAR" id="cluster_z">clusterZ</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_number" id="hld3Nyo(DwOattS#IxYm">
<field name="NUM">39.3701</field>
</block>
</value>
</block>
</value>
<next>
<block type="controls_if" id="3UWB%pj3Tj@w}U@-Yg_F">
<value name="IF0">
<block type="logic_compare" id="#!mci$kz)Gav*_$*;=P`">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="0DfvH0zY_V_+s%8?OLU9">
<field name="VAR" id="tri_group">group</field>
</block>
</value>
<value name="B">
<block type="math_number" id="{5n3F^Fmj]4}DzdasVf~">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="N#3f?Fs7/IEG9*)X~X~J">
<field name="VAR" id="cluster_red_scoring">redScoring</field>
<value name="VALUE">
<block type="variables_get" id="2c5+ev,MH-}?X9%C01:$">
<field name="VAR" id="cluster_range">clusterRange</field>
</block>
</value>
</block>
</statement>
<next>
<block type="controls_if" id="7bK,mu]Ij0J-xxX}:f-c">
<value name="IF0">
<block type="logic_compare" id="Op]2-WJcljov6ajh!HpV">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="~_Bdf~bdrf5V:o@vAG,J">
<field name="VAR" id="tri_group">group</field>
</block>
</value>
<value name="B">
<block type="math_number" id=":R??0i,0?7zL!vEv|?-D">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="DYZIoG{y5+K~tdXaM65g">
<field name="VAR" id="cluster_red_audience">redAudience</field>
<value name="VALUE">
<block type="variables_get" id="m_@F/(W[2pC:VJhy.qEB">
<field name="VAR" id="cluster_range">clusterRange</field>
</block>
</value>
</block>
</statement>
<next>
<block type="controls_if" id="145}a34j}oi6~lcohZmX">
<value name="IF0">
<block type="logic_compare" id="_HZjHYvs3WYuhVgkqQU|">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="0KvWtmitse|eRvN#[[m%">
<field name="VAR" id="tri_group">group</field>
</block>
</value>
<value name="B">
<block type="math_number" id="c3;~r6FD^u+;o6n$(f5b">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="*}=MMG`]l1PzMwjTepEa">
<field name="VAR" id="cluster_blue_audience">blueAudience</field>
<value name="VALUE">
<block type="variables_get" id="Mj!*0@goIW[M]bn@PQ/D">
<field name="VAR" id="cluster_range">clusterRange</field>
</block>
</value>
</block>
</statement>
<next>
<block type="controls_if" id="%6Lvw)n.g^-J6ti(pf$;">
<value name="IF0">
<block type="logic_compare" id="_dlNwr%@%2hwk:4j?$ZC">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="%:,Y4-07^QBUB_L[@deS">
<field name="VAR" id="tri_group">group</field>
</block>
</value>
<value name="B">
<block type="math_number" id="M|Kp_lnrV8HXPl[gu(w[">
<field name="NUM">3</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="itm8?-.mTIt2#kqm)*38">
<field name="VAR" id="cluster_blue_scoring">blueScoring</field>
<value name="VALUE">
<block type="variables_get" id="4H`.}tKY}-xC2}~LD$6~">
<field name="VAR" id="cluster_range">clusterRange</field>
</block>
</value>
</block>
</statement>
<next>
<block type="controls_if" id="db@XVj?:=2?YZUcCCaGd">
<value name="IF0">
<block type="logic_compare" id="c^$cP5v}mBF`#1e7;P9u">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="l+0]UVD^U,/%iRGpQ:iD">
<field name="VAR" id="tri_group">group</field>
</block>
</value>
<value name="B">
<block type="math_number" id="=xczpJopn6%{,mA20v46">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="TjCd=(1OmMd1fl/GE?gw">
<field name="VAR" id="pair_r4_x">r4X</field>
<value name="VALUE">
<block type="math_arithmetic" id="I/K|2k[W-W.C2h`{Q@:0">
<field name="OP">ADD</field>
<value name="A">
<block type="variables_get" id="LB(Xjh_oWHo_JFu8q#^]">
<field name="VAR" id="x">x</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="#$?%J4n:~M-VS[jUkRFh">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_arithmetic" id="OD|M{d#N@mwpERMbK!Z6">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id="E[ZQ^Yvf;KEZ(f/NGKyK">
<field name="VAR" id="tri_offset">offset</field>
</block>
</value>
<value name="B">
<block type="math_number" id="lg!)`7mUmky2!}^-_SHX">
<field name="NUM">39.3701</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="F0UYfTTV5F(PA4.ze@^{">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_trig" id="fJ.+J(3edC.,huGGTAJO">
<field name="OP">COS</field>
<value name="NUM">
<block type="variables_get" id="^?q+z{2nz|un4azypIrt">
<field name="VAR" id="tri_yaw">yaw</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_trig" id="lQpGLnnsJ$dtV0?GA*]6">
<field name="OP">COS</field>
<value name="NUM">
<block type="variables_get" id="c/IxaaKcc{l+K$hc=Kv6">
<field name="VAR" id="tri_pitch">pitch</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="6hI)3s178{@?WLqwbtyc">
<field name="VAR" id="pair_r4_y">r4Y</field>
<value name="VALUE">
<block type="math_arithmetic" id="Rr_Zqq0Lqg7ZlYTM]!L,">
<field name="OP">ADD</field>
<value name="A">
<block type="variables_get" id="zz-A+IM#P4*r?FbeHScJ">
<field name="VAR" id="y">y</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="Z{EjTi]O03MaC,2O(H~Z">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_arithmetic" id="pV/uhE3nk#^F!vt}%1s4">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id="1VxmM~[,=jFQ5s9s%`Um">
<field name="VAR" id="tri_offset">offset</field>
</block>
</value>
<value name="B">
<block type="math_number" id="7X,;w1y/_cT*qif)3?H/">
<field name="NUM">39.3701</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="S}7:x6ph,34Fq{@-d%cK">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_trig" id="Q{_#Mr-.jKyvT]9~~t;2">
<field name="OP">SIN</field>
<value name="NUM">
<block type="variables_get" id="Ne0*P|.)NxOeah!]p}a_">
<field name="VAR" id="tri_yaw">yaw</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_trig" id=",/sT$*YdkQ!Uk$/u-mDZ">
<field name="OP">COS</field>
<value name="NUM">
<block type="variables_get" id="Xo(GzibUU0VUXN-Dd(KZ">
<field name="VAR" id="tri_pitch">pitch</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="=`9Lk~o{F[{Bs^0uctL9">
<field name="VAR" id="pair_r4_z">r4Z</field>
<value name="VALUE">
<block type="math_arithmetic" id="cB.(Udst!+Nn(MH*J67D">
<field name="OP">MINUS</field>
<value name="A">
<block type="variables_get" id="yVpgAXgEf4}krz}l$-1t">
<field name="VAR" id="z">z</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="5C.!A[:krVM**fGm2nX!">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_arithmetic" id="pBOX|5f@IwgW5id5s%86">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id="XIbMvB{3u+[}(m?Doio3">
<field name="VAR" id="tri_offset">offset</field>
</block>
</value>
<value name="B">
<block type="math_number" id="_E@;JXC/5S,Y#JzfpO4(">
<field name="NUM">39.3701</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_trig" id="|?=/teB!L#Iuit[KW!2N">
<field name="OP">SIN</field>
<value name="NUM">
<block type="variables_get" id="`yJ-W8Fg3oLkiC=^)xhr">
<field name="VAR" id="tri_pitch">pitch</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="PVOV5%Adr`U+S;3}:[hS">
<field name="VAR" id="pair_r4_tx">r4Tx</field>
<value name="VALUE">
<block type="variables_get" id="/rGNn@1?Q.5BI3~(^6|(">
<field name="VAR" id="tx">tx</field>
</block>
</value>
<next>
<block type="variables_set" id="[-CW1}jgQj_]A^?A,V!K">
<field name="VAR" id="pair_r4_seen">r4Seen</field>
<value name="VALUE">
<block type="logic_boolean" id="]h20+q@e2Q%}!qV6Q!J%">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id="9Y$8}m]}uJ7_a:DaFDHY">
<value name="IF0">
<block type="logic_compare" id="Iy_zg@R_io_^6e1RFz-Z">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="!dEX{N3.Hudif=/G}X0r">
<field name="VAR" id="tri_group">group</field>
</block>
</value>
<value name="B">
<block type="math_number" id="emrJUJwI1@Io+||uBfu,">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="E7$HIt8[,=r489L}o4/4">
<field name="VAR" id="pair_r5_x">r5X</field>
<value name="VALUE">
<block type="math_arithmetic" id="Hs/cZNa9b6cMmlM||(`1">
<field name="OP">ADD</field>
<value name="A">
<block type="variables_get" id="{(hekqr#{-cs^d1~S=6S">
<field name="VAR" id="x">x</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="F;_[r4`IO)ebr`a%b9,^">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_arithmetic" id="7q~SYaGJkge8LFwRM8MA">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id="olFNVhHI!lLI6zI`ITZ/">
<field name="VAR" id="tri_offset">offset</field>
</block>
</value>
<value name="B">
<block type="math_number" id="Q.a;O!6rY;5TB-!IUxxj">
<field name="NUM">39.3701</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="CQi~.=.+$A{3uB]Gs#~y">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_trig" id="JQSi[`jBuu]f)zN8wt`x">
<field name="OP">COS</field>
<value name="NUM">
<block type="variables_get" id="Rr(I1-s-FLPWtj6j^ryh">
<field name="VAR" id="tri_yaw">yaw</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_trig" id="pZ.7XoGQ$b*m$3Ksbt9f">
<field name="OP">COS</field>
<value name="NUM">
<block type="variables_get" id="Zh*;0un!Ij8OXJDC~HIV">
<field name="VAR" id="tri_pitch">pitch</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id=".%[]M-{WUy~y?xYDtW;Z">
<field name="VAR" id="pair_r5_y">r5Y</field>
<value name="VALUE">
<block type="math_arithmetic" id="F;ue;}E8k?i~LUk7^PmP">
<field name="OP">ADD</field>
<value name="A">
<block type="variables_get" id="^Rk}q_1;d8f#?!@)rf!m">
<field name="VAR" id="y">y</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="!Y)}gA_VwmksO-qzahLE">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_arithmetic" id="7Pz#4HV]90H+!@FT._vy">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id=".AM)MbHYLnQ{Wc%CiQ|@">
<field name="VAR" id="tri_offset">offset</field>
</block>
</value>
<value name="B">
<block type="math_number" id="lnaP(z3t8ZA9.Ucv.?v(">
<field name="NUM">39.3701</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="v=i=O!t[CBV*SUKyIEF7">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_trig" id="bJaOQV9j=.W8kyKvu1;)">
<field name="OP">SIN</field>
<value name="NUM">
<block type="variables_get" id="6(w]Xc@H%$o8RO-4:iWQ">
<field name="VAR" id="tri_yaw">yaw</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_trig" id=";o_rP#Jat_r1n05`,?U:">
<field name="OP">COS</field>
<value name="NUM">
<block type="variables_get" id=",i_5VRfwLpBST,5T4bB3">
<field name="VAR" id="tri_pitch">pitch</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id=")SgxyV{I-y-{:{`yZz`m">
<field name="VAR" id="pair_r5_z">r5Z</field>
<value name="VALUE">
<block type="math_arithmetic" id="urA,$oXqO_3ImNiAvY7w">
<field name="OP">MINUS</field>
<value name="A">
<block type="variables_get" id="sd?^yk/ee=/me`k}|#*6">
<field name="VAR" id="z">z</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="[|1T}d+$rv_}G@+RFkga">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_arithmetic" id="H{Ujw6w:e:H:0|3D:?8L">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id="DcsRh2FhYjpok%[x/0bw">
<field name="VAR" id="tri_offset">offset</field>
</block>
</value>
<value name="B">
<block type="math_number" id="zPl+rll.!M3QrU%f[9_(">
<field name="NUM">39.3701</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_trig" id="(P:fa1G{/1DK]FCaS9:G">
<field name="OP">SIN</field>
<value name="NUM">
<block type="variables_get" id="_/((b)1xe(=A::m0|Ixn">
<field name="VAR" id="tri_pitch">pitch</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="5A^{y.uggO)AL{{JfvNf">
<field name="VAR" id="pair_r5_tx">r5Tx</field>
<value name="VALUE">
<block type="variables_get" id="cU/5?r$qx1IM4q*S0R3[">
<field name="VAR" id="tx">tx</field>
</block>
</value>
<next>
<block type="variables_set" id="}ReYIHIAw:~C@3Gz55qm">
<field name="VAR" id="pair_r5_seen">r5Seen</field>
<value name="VALUE">
<block type="logic_boolean" id="e}aYF$R=4Jxb%HahKW6g">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id="{2rk3DDHhaK0S:Y6WPGt">
<value name="IF0">
<block type="logic_compare" id="ti]9[;b/tMcfmm}|h:zs">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="h[a1lJMVMP_hxBs7Qnp4">
<field name="VAR" id="tri_group">group</field>
</block>
</value>
<value name="B">
<block type="math_number" id="b}|dUsF4y(JR$(FM`_aI">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="JNqv_2;?1/SyrBz0E~;B">
<field name="VAR" id="pair_b4_x">b4X</field>
<value name="VALUE">
<block type="math_arithmetic" id="|Kg*`T`0m(rGE_uE^veO">
<field name="OP">ADD</field>
<value name="A">
<block type="variables_get" id="I^E~}xxz#LjlyLU6*sG,">
<field name="VAR" id="x">x</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="|KCt4s6Pxc%*bkBF+z8^">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_arithmetic" id="!k/vAL3(-=5M22~fr_nE">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id=")=y%bJw_m5)qvf*L%3+S">
<field name="VAR" id="tri_offset">offset</field>
</block>
</value>
<value name="B">
<block type="math_number" id="/|J7u_O-2{Zu-9B(=@$d">
<field name="NUM">39.3701</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="-GqeyeZ7_X^kLj:VrI^g">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_trig" id="c(SOSz%VzbD.Di3V!X#A">
<field name="OP">COS</field>
<value name="NUM">
<block type="variables_get" id="-`.{,~bGATN24vx?Ki9*">
<field name="VAR" id="tri_yaw">yaw</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_trig" id="W12[(#VWPq_MBaDt-bH]">
<field name="OP">COS</field>
<value name="NUM">
<block type="variables_get" id="8c.NB,C*{N+MTMNUnQda">
<field name="VAR" id="tri_pitch">pitch</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="%r!i}c{JrHq1CkOMv|sj">
<field name="VAR" id="pair_b4_y">b4Y</field>
<value name="VALUE">
<block type="math_arithmetic" id="nAwj=t%@U.XtT-L-MU@X">
<field name="OP">ADD</field>
<value name="A">
<block type="variables_get" id="u*nqCSP!2hveG2o0zztv">
<field name="VAR" id="y">y</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="M.:C,{%sY?kTg!.bbW+k">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_arithmetic" id="W[$j#9t.(FguHFhg.Kl;">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id="Z(FCY3POrpbug(prjNpe">
<field name="VAR" id="tri_offset">offset</field>
</block>
</value>
<value name="B">
<block type="math_number" id="69M2j@3/^XN%p=10C6X;">
<field name="NUM">39.3701</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="kOA$q{w~;zTj.kpd!NC8">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_trig" id="LSN?Ss53(NNKnBpG6^oO">
<field name="OP">SIN</field>
<value name="NUM">
<block type="variables_get" id="9#0AY][Y.~Y8j|wYvQZa">
<field name="VAR" id="tri_yaw">yaw</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_trig" id="05I|TYm)[|#!){n9#_EH">
<field name="OP">COS</field>
<value name="NUM">
<block type="variables_get" id="bGC[ME6eH%SgK0w~d[/^">
<field name="VAR" id="tri_pitch">pitch</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="%jgR:I}E{HS+Y2Gc[d[A">
<field name="VAR" id="pair_b4_z">b4Z</field>
<value name="VALUE">
<block type="math_arithmetic" id="r(ABYJ%]%8y|X83XP]CL">
<field name="OP">MINUS</field>
<value name="A">
<block type="variables_get" id="N:cudr8LI:rOy{*OFwIX">
<field name="VAR" id="z">z</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="}fQ[[/$NonwP_^ov={}:">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_arithmetic" id="9u`@-*=tdJ`js*twJ.t[">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id="ICgX94}}_9HI738FmR$2">
<field name="VAR" id="tri_offset">offset</field>
</block>
</value>
<value name="B">
<block type="math_number" id="6j8W*,Ld~A`9a9%Ii]^K">
<field name="NUM">39.3701</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_trig" id="#P/JNhXScN.#z_BH5*H=">
<field name="OP">SIN</field>
<value name="NUM">
<block type="variables_get" id="r|dae4:P5-*ZEMjvTccF">
<field name="VAR" id="tri_pitch">pitch</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="V16S@`jKt.$L{2H/{ZeK">
<field name="VAR" id="pair_b4_tx">b4Tx</field>
<value name="VALUE">
<block type="variables_get" id="n=O|,Y}MK6z[,fP?uTyw">
<field name="VAR" id="tx">tx</field>
</block>
</value>
<next>
<block type="variables_set" id="Vu=osl{Zwn6it~W!#;6~">
<field name="VAR" id="pair_b4_seen">b4Seen</field>
<value name="VALUE">
<block type="logic_boolean" id="g(;q=kYg+.VmenBlpA~m">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id="X()1Vt%`l;omXSZGI=o6">
<value name="IF0">
<block type="logic_compare" id="({`P7J%L;_[2yy=QtutL">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="./6A`~Dz6lgY2I/^i_;/">
<field name="VAR" id="tri_group">group</field>
</block>
</value>
<value name="B">
<block type="math_number" id="=q+YEheMATYaU^.iC%X|">
<field name="NUM">3</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="R.!T$#6saf3GiGAi8?r%">
<field name="VAR" id="pair_b5_x">b5X</field>
<value name="VALUE">
<block type="math_arithmetic" id="x.}$p={1k~i6Qjyn?fp-">
<field name="OP">ADD</field>
<value name="A">
<block type="variables_get" id="jJHJJYYCm2MunbG^I:z0">
<field name="VAR" id="x">x</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="1jkkifvA+ZA0z8bT%/-/">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_arithmetic" id="U2h2)ZpsWC]1!I3hNl0U">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id="lu*)!6%QXg?.KLRrV)=T">
<field name="VAR" id="tri_offset">offset</field>
</block>
</value>
<value name="B">
<block type="math_number" id="Q8gWDOPIy`31;$Z+#X1s">
<field name="NUM">39.3701</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="yt!6t8{8r4h%_pg`-g~5">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_trig" id="Yud]$n]r}=-U.Y~@|;Wa">
<field name="OP">COS</field>
<value name="NUM">
<block type="variables_get" id="{5B.VlHSp{(0J+Yp[^UG">
<field name="VAR" id="tri_yaw">yaw</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_trig" id="fQwLO}8h8n.YVNTMgZ+)">
<field name="OP">COS</field>
<value name="NUM">
<block type="variables_get" id="!ILq|)$~3vB}*T:Fge:1">
<field name="VAR" id="tri_pitch">pitch</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="#BE}T{2/1{kvj3/}DUvU">
<field name="VAR" id="pair_b5_y">b5Y</field>
<value name="VALUE">
<block type="math_arithmetic" id="8w#axb%oX?xe4nw/;7--">
<field name="OP">ADD</field>
<value name="A">
<block type="variables_get" id=";*8Q54b43=r,y%J,B!`v">
<field name="VAR" id="y">y</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id=".SRlR5thuJ/Nd8XA([(r">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_arithmetic" id="^A)lImT@N[:QFhE_nkx!">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id="ujcr9;xwL5;;9U{*FA=t">
<field name="VAR" id="tri_offset">offset</field>
</block>
</value>
<value name="B">
<block type="math_number" id="XA[|58FW9f3t,~SjSbE2">
<field name="NUM">39.3701</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="o9ycNj=4cYcFY|)hL)G]">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_trig" id="f,-+]_}}Y(]6Jio3[P*_">
<field name="OP">SIN</field>
<value name="NUM">
<block type="variables_get" id="),EwO]8ACzwvphh_0rdV">
<field name="VAR" id="tri_yaw">yaw</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_trig" id="Orhn!G}*i+f+2LwX/}@!">
<field name="OP">COS</field>
<value name="NUM">
<block type="variables_get" id="4D9~v=dsYSP#JGCo4hV}">
<field name="VAR" id="tri_pitch">pitch</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="cX+r$?#oBC.L9:w!sw@c">
<field name="VAR" id="pair_b5_z">b5Z</field>
<value name="VALUE">
<block type="math_arithmetic" id="N1PhvOG!+WXnG~li?+rH">
<field name="OP">MINUS</field>
<value name="A">
<block type="variables_get" id="Anmaq|8I|CZoZ{UtxyGX">
<field name="VAR" id="z">z</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="?]hgUB8;h.^MN~@k~WF3">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_arithmetic" id="YBOhO`#OH#zZGhiVIU2q">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="variables_get" id="!HBr}yAfrri#[!R;:OZ1">
<field name="VAR" id="tri_offset">offset</field>
</block>
</value>
<value name="B">
<block type="math_number" id="F0QkT8aI+zQOnYQ(u5k@">
<field name="NUM">39.3701</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_trig" id="b:dBN~oatXkVLl]9da//">
<field name="OP">SIN</field>
<value name="NUM">
<block type="variables_get" id="8dN8?u#YhmMHq-~jHI6L">
<field name="VAR" id="tri_pitch">pitch</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="#32lsI;lu%NhSdb1dS4N">
<field name="VAR" id="pair_b5_tx">b5Tx</field>
<value name="VALUE">
<block type="variables_get" id="kJ|ZrVLk`eRftBS3tedm">
<field name="VAR" id="tx">tx</field>
</block>
</value>
<next>
<block type="variables_set" id=")%3kP{TZ6S`3@$aPUBn+">
<field name="VAR" id="pair_b5_seen">b5Seen</field>
<value name="VALUE">
<block type="logic_boolean" id="qh^)~yA`?HNjHvRDPi_m">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="comment" id="student_scan_center">
<field name="COMMENT">HOW CENTER DISTANCE AND ANGLE WORK
First average the estimated endpoints: center=(end1+end2)/2 for X, Y, and Z. Then use the 3D Pythagorean theorem: distance=square root of X²+Y²+Z². atan2(X,Z) answers “what left/right angle points from the camera to that center?” This angle replaces the raw tag horizontal angle.</field>
<next>
<block type="controls_if" id="pLPg]A[y%wgA^CINVHpt">
<value name="IF0">
<block type="logic_operation" id="tVx1m3!LaSeUQs~1=t,U">
<field name="OP">AND</field>
<value name="A">
<block type="variables_get" id="U5oyJpwrDhgf|;bo8llq">
<field name="VAR" id="pair_r4_seen">r4Seen</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="BO.65siO).a}!tswNLaP">
<field name="VAR" id="pair_r5_seen">r5Seen</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="Fk.qCNq_,(JS2Nmd+J*v">
<field name="VAR" id="pair_red_x">redX</field>
<value name="VALUE">
<block type="math_arithmetic" id="gn6wiJ,9sM9w{4e#O#Zf">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="math_arithmetic" id=".q~Aj(4_bV2JLbENe!w6">
<field name="OP">ADD</field>
<value name="A">
<block type="variables_get" id="L:I$a%=1IF9IuiZ74y{w">
<field name="VAR" id="pair_r4_x">r4X</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="gNZBg6E.~(H8n_%VA9b!">
<field name="VAR" id="pair_r5_x">r5X</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_number" id="mS|ey=3*$SU;sETb`ii8">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="`S-;Ux0rn)yRGr6qT~8O">
<field name="VAR" id="pair_red_y">redY</field>
<value name="VALUE">
<block type="math_arithmetic" id="LIHz`-X7p!q-=jMFyC!)">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="math_arithmetic" id="w,jJl]tJG2Hrm.*^5k)B">
<field name="OP">ADD</field>
<value name="A">
<block type="variables_get" id="OHJXa+v$0RRP+kNMa8nU">
<field name="VAR" id="pair_r4_y">r4Y</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="}QWL=F*H6:SG=q}+Zoy+">
<field name="VAR" id="pair_r5_y">r5Y</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_number" id="Yf#h+$N3(zd:FAg9|f|x">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="UORW?u-wWnxjorbvEsHB">
<field name="VAR" id="pair_red_z">redZ</field>
<value name="VALUE">
<block type="math_arithmetic" id="?~k|ggX(e3Z@FdIT.Y[u">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="math_arithmetic" id="eD5dS2:A-P[~%Hp4.,5{">
<field name="OP">ADD</field>
<value name="A">
<block type="variables_get" id="YC/6@Cp*EK*jT}wS!voF">
<field name="VAR" id="pair_r4_z">r4Z</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="=b)|dd$W]#yC-A]rJVq5">
<field name="VAR" id="pair_r5_z">r5Z</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_number" id="a*)ZJD.jCI,iQ_kB=YC$">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="CQ6(JoJ*5Qwye(8p!O$i">
<field name="VAR" id="pair_red_range">redRange</field>
<value name="VALUE">
<block type="math_arithmetic" id="9-]$l{hlRzccd*(}NWN(">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_single" id="X+.at8ST0:89^A}hM0s^">
<field name="OP">ROOT</field>
<value name="NUM">
<block type="math_arithmetic" id="5~H#B]agYzD5PHYXjo@H">
<field name="OP">ADD</field>
<value name="A">
<block type="math_arithmetic" id="H6AQosBk{!RMSxxRC:TR">
<field name="OP">ADD</field>
<value name="A">
<block type="math_arithmetic" id="c5b7_MAQ1D?]O3$-9w^!">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="p:G{G;0]%ZwuB+;)FkQy">
<field name="VAR" id="pair_red_x">redX</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="yS47P3(7BkZE5+[;ZYMp">
<field name="VAR" id="pair_red_x">redX</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="ig02cBH6C1i.5iR$`Nx!">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="!uYDK!OVlc?$1lD}4p,u">
<field name="VAR" id="pair_red_y">redY</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="cJKc*w#P#d].WW,z~5z*">
<field name="VAR" id="pair_red_y">redY</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="p%f8gk7umY=}AgH@L9da">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="=[64fR.:,q?Jb7,Yvn-B">
<field name="VAR" id="pair_red_z">redZ</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="Cr{Uvwff{qR?LzBxHh0,">
<field name="VAR" id="pair_red_z">redZ</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_number" id="q!B_I0bAtJwm=WcFZ+Ua">
<field name="NUM">39.3701</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="8,,?uU[%7^;XDg21,1RD">
<field name="VAR" id="red_center_display">redCenterDistance</field>
<value name="VALUE">
<block type="variables_get" id="DFzH7FmIH9;]pq?I(O7d">
<field name="VAR" id="pair_red_range">redRange</field>
</block>
</value>
<next>
<block type="variables_set" id="Dhp/Q~Gnc9s-YU`:~o`G">
<field name="VAR" id="pair_red_tx">redTx</field>
<value name="VALUE">
<block type="math_atan2" id="xqU:Jra0l-PuCXzY9u{2">
<value name="X">
<block type="variables_get" id="XT0M`;DX.lmCx:aDK:Tg">
<field name="VAR" id="pair_red_z">redZ</field>
</block>
</value>
<value name="Y">
<block type="variables_get" id="Yo7d{u]F-z4A9XY(C`PS">
<field name="VAR" id="pair_red_x">redX</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id="]f{1.s)[|E4C.lcu^=|[">
<value name="IF0">
<block type="logic_operation" id="]a3R2K4^=Q-YS;#-m(D$">
<field name="OP">AND</field>
<value name="A">
<block type="variables_get" id="6RW,fo.6z#S}`|Gf;|xV">
<field name="VAR" id="pair_b4_seen">b4Seen</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="aGQY/znritoc4r#nGW2h">
<field name="VAR" id="pair_b5_seen">b5Seen</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id=";ort4V]j/bX*j7vhf[{%">
<field name="VAR" id="pair_blue_x">blueX</field>
<value name="VALUE">
<block type="math_arithmetic" id="D6wFh;~hkkSWjb]gbn}U">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="math_arithmetic" id="NX,/PdlgDo8k[ZO4OFXf">
<field name="OP">ADD</field>
<value name="A">
<block type="variables_get" id="nH1v@-wsrp?/x(N@x#r{">
<field name="VAR" id="pair_b4_x">b4X</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="5s]d~JUnd,EK3!;.KyZ*">
<field name="VAR" id="pair_b5_x">b5X</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_number" id="Dp-+n}^tsD(HI$7h|2p,">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="2if@,yDxklG-vip7)Q*p">
<field name="VAR" id="pair_blue_y">blueY</field>
<value name="VALUE">
<block type="math_arithmetic" id="rO::6vHY=DF[E-YV;bPW">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="math_arithmetic" id="rieIhJOh2DD;KTgdWRJ_">
<field name="OP">ADD</field>
<value name="A">
<block type="variables_get" id="oiAuE#Sq%[[MwvdQ_BxR">
<field name="VAR" id="pair_b4_y">b4Y</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="pUrk}~79!(H+[mokm?|]">
<field name="VAR" id="pair_b5_y">b5Y</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_number" id="Fv;4|79VhqZQ0^k`rd;6">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id=")awPWZqa0;.]X/JtDEhR">
<field name="VAR" id="pair_blue_z">blueZ</field>
<value name="VALUE">
<block type="math_arithmetic" id="gy)x-!kax*xxpB1(@![K">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="math_arithmetic" id="~kBBng}!TtJgT};`lx:p">
<field name="OP">ADD</field>
<value name="A">
<block type="variables_get" id="_oqFIAmJj2G.OeG_sS6W">
<field name="VAR" id="pair_b4_z">b4Z</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="Ltt/[y%HtYY/@smnz_H.">
<field name="VAR" id="pair_b5_z">b5Z</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_number" id="[lm.?4bKj/%x9F3(+PAh">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id=",+gK3r:sVdI[n$Qih?a(">
<field name="VAR" id="pair_blue_range">blueRange</field>
<value name="VALUE">
<block type="math_arithmetic" id="pAOe8znNZR:-HUuN106n">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="math_single" id="XXX=W,!YvPSOO931H5h%">
<field name="OP">ROOT</field>
<value name="NUM">
<block type="math_arithmetic" id="$hxRVr$^[_g/TcWMU)u%">
<field name="OP">ADD</field>
<value name="A">
<block type="math_arithmetic" id="H9w7mT?A-W#`$t]lp(^-">
<field name="OP">ADD</field>
<value name="A">
<block type="math_arithmetic" id="Y/Co9HaXCFNcZ7ay8JdY">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="vr^zYQ1ih|l#xNY}5$qe">
<field name="VAR" id="pair_blue_x">blueX</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="@d9A^Q3NDVs8#vmQ,nVB">
<field name="VAR" id="pair_blue_x">blueX</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="?P-{E3-E8-XL1BmW_v%z">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id=";2Bg-5~Wr-#e9l{-v3bS">
<field name="VAR" id="pair_blue_y">blueY</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="Jcf,Yf9caai,-}hwHFm^">
<field name="VAR" id="pair_blue_y">blueY</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="4JEkC0F?@Jq].RT;=(l7">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="pr^=_JrTi|-`oLl^:.Fc">
<field name="VAR" id="pair_blue_z">blueZ</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="7^(f=8~VIn)$,qpftbt.">
<field name="VAR" id="pair_blue_z">blueZ</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_number" id="tXxB$v%9/#,S^g.V7jP8">
<field name="NUM">39.3701</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="6J]d2)HnO(qFD{=(op$?">
<field name="VAR" id="pair_blue_tx">blueTx</field>
<value name="VALUE">
<block type="math_atan2" id="XuT.gu,1@?Bd0Skov#ok">
<value name="X">
<block type="variables_get" id="KsY}%=E`W}F#vleZfh,.">
<field name="VAR" id="pair_blue_z">blueZ</field>
</block>
</value>
<value name="Y">
<block type="variables_get" id="5/WUHLFi2;9ZqPckk%(L">
<field name="VAR" id="pair_blue_x">blueX</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="comment" id="student_scan_select">
<field name="COMMENT">FOUND, SELECTED ID, AND CURRENT VALUES
found is a true/false safety flag. selectedId is 0 for the red center or 1 for the blue center; it is not an AprilTag number. currentRange stores inches to the chosen center. currentTx stores its horizontal angle in degrees; here Tx means target X angle, not transmit.</field>
<next>
<block type="controls_if" id="eJjPQ;j`JLLK4A?f]zd[">
<mutation else="1"/>
<value name="IF0">
<block type="variables_get" id="EQ3Q$9yr7ZByuLCZ=v_{">
<field name="VAR" id="sel">selecting</field>
</block>
</value>
<statement name="DO0">
<block type="controls_if" id="oA+?MVGw7Ky~I$?00;e.">
<value name="IF0">
<block type="logic_operation" id="mZk5!bjM3np)ie{JiGuq">
<field name="OP">AND</field>
<value name="A">
<block type="logic_operation" id=":iMHSBP/n)Eij4CdR_ni">
<field name="OP">AND</field>
<value name="A">
<block type="variables_get" id="OI|E[i1B*aXs(%w(L.U?">
<field name="VAR" id="pair_r4_seen">r4Seen</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="qEsms:P|7lf)m0LCnsvy">
<field name="VAR" id="pair_r5_seen">r5Seen</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_compare" id="%rQsU;=Rjg9+C:^b@ZwL">
<field name="OP">LT</field>
<value name="A">
<block type="variables_get" id="lAYlYn69/S+]T:Totfbz">
<field name="VAR" id="pair_red_range">redRange</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="^u7E.;WTc%;t9$M!XA0J">
<field name="VAR" id="srg">selectedRange</field>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="-hB8}d(qA}e/5{P{ZuT%">
<field name="VAR" id="srg">selectedRange</field>
<value name="VALUE">
<block type="variables_get" id="=tH0}Bfh;6DxW*8}ta_G">
<field name="VAR" id="pair_red_range">redRange</field>
</block>
</value>
<next>
<block type="variables_set" id="jT`36Hbc%9G=*GmQ@i:|">
<field name="VAR" id="sid">selectedId</field>
<value name="VALUE">
<block type="math_number" id="K(Jh?D:SB-eW=BSC4liE">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="variables_set" id="bv4uJUgr+g?gx|RHVz%P">
<field name="VAR" id="crg">currentRange</field>
<value name="VALUE">
<block type="variables_get" id="F:PJHu`yem[3eRZZQF?e">
<field name="VAR" id="pair_red_range">redRange</field>
</block>
</value>
<next>
<block type="variables_set" id="X{`uf-d/7[SngI?UOhY#">
<field name="VAR" id="ctx">currentTx</field>
<value name="VALUE">
<block type="variables_get" id="W;F)CRUWF=*0KxvT=)Ei">
<field name="VAR" id="pair_red_tx">redTx</field>
</block>
</value>
<next>
<block type="variables_set" id="Q~%_,7m47[,6}3ZN_-M%">
<field name="VAR" id="found">found</field>
<value name="VALUE">
<block type="logic_boolean" id="[NouC{GV/yi|jR4y.a|i">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id="UVD@{OWLQ;;x2RrxQ[_F">
<value name="IF0">
<block type="logic_operation" id="Rib%%*=}3A~`Zix|Q7sE">
<field name="OP">AND</field>
<value name="A">
<block type="logic_operation" id="f@EV:3zHM#WTM/mhd2)h">
<field name="OP">AND</field>
<value name="A">
<block type="variables_get" id="$rGoZKVmKk_u5S*Y^;/.">
<field name="VAR" id="pair_b4_seen">b4Seen</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="_H3|~j2m+KXa}83L@4z/">
<field name="VAR" id="pair_b5_seen">b5Seen</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_compare" id="Q(Ahl~awOPq]=iuZGjD:">
<field name="OP">LT</field>
<value name="A">
<block type="variables_get" id="m8EGse(^lh937IY9Ij?k">
<field name="VAR" id="pair_blue_range">blueRange</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="wxGW,}B0h/7}r~{CO!8*">
<field name="VAR" id="srg">selectedRange</field>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id=";|ap$^[5b#+9SKDu3PP6">
<field name="VAR" id="srg">selectedRange</field>
<value name="VALUE">
<block type="variables_get" id="b9Yu~7d?IlTvUD-nu4(;">
<field name="VAR" id="pair_blue_range">blueRange</field>
</block>
</value>
<next>
<block type="variables_set" id="_93R5,4!:mInl#xL/yug">
<field name="VAR" id="sid">selectedId</field>
<value name="VALUE">
<block type="math_number" id="GiuzSWx_~gVMZS2xA;Me">
<field name="NUM">1</field>
</block>
</value>
<next>
<block type="variables_set" id="#L^lYxIQ?B?^Pt=(oOc/">
<field name="VAR" id="crg">currentRange</field>
<value name="VALUE">
<block type="variables_get" id="^L`)3%XyXQlB-TRGTpgY">
<field name="VAR" id="pair_blue_range">blueRange</field>
</block>
</value>
<next>
<block type="variables_set" id="9#Kv,9u(]X}5q~_8P)=C">
<field name="VAR" id="ctx">currentTx</field>
<value name="VALUE">
<block type="variables_get" id=".Wg$@9G@igntm^biB$dS">
<field name="VAR" id="pair_blue_tx">blueTx</field>
</block>
</value>
<next>
<block type="variables_set" id="8+{;f@;c_;76)buhC3:H">
<field name="VAR" id="found">found</field>
<value name="VALUE">
<block type="logic_boolean" id="_w_FEC?O$+O]*XGg$sZ]">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</statement>
<statement name="ELSE">
<block type="controls_if" id="2]FA0t5$.kkMBq9?7!Wo">
<value name="IF0">
<block type="logic_operation" id="gnr|twmXoh+6qDVg%QCU">
<field name="OP">AND</field>
<value name="A">
<block type="logic_compare" id="V9zf1FVu0k5hW]j1ZtWP">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="gGe.J|V*i;In1BZ+G`Mo">
<field name="VAR" id="sid">selectedId</field>
</block>
</value>
<value name="B">
<block type="math_number" id="DTEgXrFLgVRiO)ExINle">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_operation" id="g~Nh6C!?EsWkW9mGyd/E">
<field name="OP">AND</field>
<value name="A">
<block type="variables_get" id="Us/}$-ge=XVdf{Y8lg8Z">
<field name="VAR" id="pair_r4_seen">r4Seen</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="(tx%+^%yuY0fX%`))Ani">
<field name="VAR" id="pair_r5_seen">r5Seen</field>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="g^4-0w5Dnn^z5(RtwrX*">
<field name="VAR" id="crg">currentRange</field>
<value name="VALUE">
<block type="variables_get" id="FIK(=b7^^Pi}r/hTH[,f">
<field name="VAR" id="pair_red_range">redRange</field>
</block>
</value>
<next>
<block type="variables_set" id="@Ze=Gop?2-UvEGmS~FFQ">
<field name="VAR" id="ctx">currentTx</field>
<value name="VALUE">
<block type="variables_get" id="l=ux=3yK~1HhZc~xX-$5">
<field name="VAR" id="pair_red_tx">redTx</field>
</block>
</value>
<next>
<block type="variables_set" id="7FU],odi,=m4+C-^23Kn">
<field name="VAR" id="found">found</field>
<value name="VALUE">
<block type="logic_boolean" id="-Fmn/.S_mVNscRrkEGAI">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="controls_if" id="@,F^wmiza-NlQczCxyCt">
<value name="IF0">
<block type="logic_operation" id="G7YBZG@c1Jj,r8Ga@Vms">
<field name="OP">AND</field>
<value name="A">
<block type="logic_compare" id="(E.|W.Cm}^~N5VIJUOP6">
<field name="OP">EQ</field>
<value name="A">
<block type="variables_get" id="Ps;4?#mgLQ#05*ewwK.z">
<field name="VAR" id="sid">selectedId</field>
</block>
</value>
<value name="B">
<block type="math_number" id="hn9BOegl9mI}=YWep|u=">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_operation" id=",4O)J1^8^(;)mH^2|?QM">
<field name="OP">AND</field>
<value name="A">
<block type="variables_get" id="l%(prOyuzPkeJ/={{w95">
<field name="VAR" id="pair_b4_seen">b4Seen</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="1oZ|UU80lDS=nWK^{)Au">
<field name="VAR" id="pair_b5_seen">b5Seen</field>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="T|Ey=/vXFj=O9}s.Lw5u">
<field name="VAR" id="crg">currentRange</field>
<value name="VALUE">
<block type="variables_get" id="X3U)j?)sgP!Rqm1VPn)8">
<field name="VAR" id="pair_blue_range">blueRange</field>
</block>
</value>
<next>
<block type="variables_set" id="]@2R{l%.6tu),`nJ(U}u">
<field name="VAR" id="ctx">currentTx</field>
<value name="VALUE">
<block type="variables_get" id="A`[PJLjs9OX1eHnKC|hD">
<field name="VAR" id="pair_blue_tx">blueTx</field>
</block>
</value>
<next>
<block type="variables_set" id="Y!++MX_T+{20nA?NAW|y">
<field name="VAR" id="found">found</field>
<value name="VALUE">
<block type="logic_boolean" id="E3dP2/|/kL)p]=G`j-s2">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block type="procedures_defnoreturn" id=",7k!xn{4Jst{#}^|Wc+D" deletable="false" x="25" y="7396">
<field name="NAME">runOpMode</field>
<comment pinned="true" h="100" w="460">APRILTAG TELEOP

This program combines normal mecanum driving with Limelight vision.
During INIT it shows red tag distances.
While driving, hold Square to make the robot face a calculated cluster center.
Release Square to return to joystick control.</comment>
<data>{"commentPositionLeft":-115,"commentPositionTop":-125}</data>
<statement name="STACK">
<block type="comment" id="student_teleop_setup">
<field name="COMMENT">ROBOT SETUP: Configure motor directions, braking, and encoder mode. Reversing the left motors makes positive power mean forward on both sides.</field>
<next>
<block type="dcMotor_setProperty_Direction" id="HkgyB~+Kn!dp|4Ms{DUh">
<field name="IDENTIFIER">front_left_driveAsDcMotor</field>
<field name="PROP">Direction</field>
<data>{"IDENTIFIER":"front_left_drive"}</data>
<value name="VALUE">
<block type="dcMotor_typedEnum_direction" id="f3c4]H:Nr8~1j/yBb+W#">
<field name="DIRECTION">REVERSE</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Direction" id="P})Kf6K@4uf:Hni1M`=t">
<field name="IDENTIFIER">back_left_driveAsDcMotor</field>
<field name="PROP">Direction</field>
<data>{"IDENTIFIER":"back_left_drive"}</data>
<value name="VALUE">
<block type="dcMotor_typedEnum_direction" id="v6S3vwi^EJ#STebsMXC7">
<field name="DIRECTION">REVERSE</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Direction" id="+S/b]2c)U[EG,|BnE9[Z">
<field name="IDENTIFIER">front_right_driveAsDcMotor</field>
<field name="PROP">Direction</field>
<data>{"IDENTIFIER":"front_right_drive"}</data>
<value name="VALUE">
<block type="dcMotor_typedEnum_direction" id=")`IJmKFj72{oc7*t~zTS">
<field name="DIRECTION">FORWARD</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Direction" id="g%Z]9AhSS=;a1hHyk*Dt">
<field name="IDENTIFIER">back_right_driveAsDcMotor</field>
<field name="PROP">Direction</field>
<data>{"IDENTIFIER":"back_right_drive"}</data>
<value name="VALUE">
<block type="dcMotor_typedEnum_direction" id="dB#*2~z7-xJyMUjA]UyA">
<field name="DIRECTION">REVERSE</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_ZeroPowerBehavior" id="5.*r{?i.102{/g@_qRrN">
<field name="IDENTIFIER">front_left_driveAsDcMotor</field>
<field name="PROP">ZeroPowerBehavior</field>
<data>{"IDENTIFIER":"front_left_drive"}</data>
<value name="VALUE">
<block type="dcMotor_typedEnum_zeroPowerBehavior" id="J6VKh(};oo[jHH`Q$ZJI">
<field name="ZERO_POWER_BEHAVIOR">BRAKE</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_ZeroPowerBehavior" id="ZXL{V%18}vZG8JZYkR:G">
<field name="IDENTIFIER">front_right_driveAsDcMotor</field>
<field name="PROP">ZeroPowerBehavior</field>
<data>{"IDENTIFIER":"front_right_drive"}</data>
<value name="VALUE">
<block type="dcMotor_typedEnum_zeroPowerBehavior" id="In73Z3~9hJG99Z9YwR#e">
<field name="ZERO_POWER_BEHAVIOR">BRAKE</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_ZeroPowerBehavior" id="Vo#.liN4TOk^tIu]Z,^e">
<field name="IDENTIFIER">back_left_driveAsDcMotor</field>
<field name="PROP">ZeroPowerBehavior</field>
<data>{"IDENTIFIER":"back_left_drive"}</data>
<value name="VALUE">
<block type="dcMotor_typedEnum_zeroPowerBehavior" id="YS_R)^n/y^({d/OJG57b">
<field name="ZERO_POWER_BEHAVIOR">BRAKE</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_ZeroPowerBehavior" id="T@[^mpvr;G8Wp]cVdIk7">
<field name="IDENTIFIER">back_right_driveAsDcMotor</field>
<field name="PROP">ZeroPowerBehavior</field>
<data>{"IDENTIFIER":"back_right_drive"}</data>
<value name="VALUE">
<block type="dcMotor_typedEnum_zeroPowerBehavior" id="4_l1}UH^Vi,#~EzJ}f,D">
<field name="ZERO_POWER_BEHAVIOR">BRAKE</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_RunMode" id="4#Xzn585Q8nx1I`O|,Gj">
<field name="IDENTIFIER">front_left_driveAsDcMotor</field>
<field name="PROP">Mode</field>
<data>{"IDENTIFIER":"front_left_drive"}</data>
<value name="VALUE">
<block type="dcMotor_typedEnum_runMode" id="0{RhjMB.TuvJU$M4yAYK">
<field name="RUN_MODE">RUN_WITHOUT_ENCODER</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_RunMode" id="_#Bup/)5zCd4fv7iTylV">
<field name="IDENTIFIER">front_right_driveAsDcMotor</field>
<field name="PROP">Mode</field>
<data>{"IDENTIFIER":"front_right_drive"}</data>
<value name="VALUE">
<block type="dcMotor_typedEnum_runMode" id="67}gkRn-Ws4=#ASju]^R">
<field name="RUN_MODE">RUN_WITHOUT_ENCODER</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_RunMode" id="b~-N[,w188/c$y5uFdtV">
<field name="IDENTIFIER">back_left_driveAsDcMotor</field>
<field name="PROP">Mode</field>
<data>{"IDENTIFIER":"back_left_drive"}</data>
<value name="VALUE">
<block type="dcMotor_typedEnum_runMode" id="fBZ8c.gY=%3cj$2:m.t{">
<field name="RUN_MODE">RUN_WITHOUT_ENCODER</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_RunMode" id="n[tu*9#z$/aoQ~)j0-(t">
<field name="IDENTIFIER">back_right_driveAsDcMotor</field>
<field name="PROP">Mode</field>
<data>{"IDENTIFIER":"back_right_drive"}</data>
<value name="VALUE">
<block type="dcMotor_typedEnum_runMode" id="Ki.Hkhpv^z4{@M5=`ZFq">
<field name="RUN_MODE">RUN_WITHOUT_ENCODER</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Number" id="23o2;tl4Ms_Mo.u@HhtS">
<field name="IDENTIFIER">front_left_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"front_left_drive"}</data>
<value name="VALUE">
<block type="math_number" id="NR`9[k9p?OU`o-lntB#5">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Number" id="N4/4T~X,_axH|E/YO.;6">
<field name="IDENTIFIER">front_right_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"front_right_drive"}</data>
<value name="VALUE">
<block type="math_number" id="d$W)O16xgNQ-yiCrP58t">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Number" id="f;Mzdb/oi+wrx%W_;;;-">
<field name="IDENTIFIER">back_left_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"back_left_drive"}</data>
<value name="VALUE">
<block type="math_number" id="-~FF_2qalqNEg~ubEgad">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Number" id="OU`6Vd*6N,}lc*)Prj6A">
<field name="IDENTIFIER">back_right_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"back_right_drive"}</data>
<value name="VALUE">
<block type="math_number" id="El;0K@q_2:9im,Ej6A8e">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="telemetry_addLine" id="readyTelemetryLine">
<value name="TEXT">
<shadow type="text" id="~Zz6WH(Gt@Rzz*@T:X^!">
<field name="TEXT">INIT: red tag and triangulated center distances</field>
</shadow>
</value>
<next>
<block type="telemetry_update" id="readyTelemetryUpdate">
<next>
<block type="limelight3A_setPollRateHz" id="teleopLimelightInit">
<field name="IDENTIFIER">limelightAsLimelight3A</field>
<data>{"IDENTIFIER":"limelight"}</data>
<value name="RATE_HZ">
<block type="math_number" id="6IROAT4.MIH#ZJ`[VaT[">
<field name="NUM">100</field>
</block>
</value>
<next>
<block type="limelight3A_pipelineSwitch" id="kEeW}1lUy;O}+zd7kCxE">
<mutation has_output="false"/>
<field name="IDENTIFIER">limelightAsLimelight3A</field>
<data>{"IDENTIFIER":"limelight"}</data>
<value name="INDEX">
<block type="math_number" id="`R)8J~Y1J]1-N=oK4Wc#">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="comment" id="student_teleop_camera">
<field name="COMMENT">START THE CAMERA: Pipeline 0 looks for AprilTags. Starting the Limelight here lets INIT and Square alignment use fresh vision results.</field>
<next>
<block type="limelight3A_start" id="?I?PbdoY#IH4d~lDHo,%">
<field name="IDENTIFIER">limelightAsLimelight3A</field>
<data>{"IDENTIFIER":"limelight"}</data>
<next>
<block type="telemetry_addLine" id="lemx1u6Id[_gJFQI~.RG">
<value name="TEXT">
<shadow type="text" id="r?ea6~}eCBk1R@p]M*[,">
<field name="TEXT">Hold Square: align to triangulated cluster center</field>
</shadow>
</value>
<next>
<block type="comment" id="student_teleop_init">
<field name="COMMENT">INIT VISION: Before START, repeatedly scan tags and show R1-R8 plus the calculated red-center distance. Motor powers stay at zero during INIT.</field>
<next>
<block type="controls_whileUntil" id="teleopInitVisionLoop">
<field name="MODE">WHILE</field>
<value name="BOOL">
<block type="linearOpMode_opModeInInit" id="{|.d.DPIlFDre9)bZH1y"/>
</value>
<statement name="DO">
<block type="procedures_callnoreturn" id="aM;M|;d-32/ZZIn2Adz,">
<mutation name="scanTags"/>
<next>
<block type="telemetry_addTextData_All" id="WuOqQnZl;jN/i}0;]TI2">
<value name="KEY">
<shadow type="text" id="5+g1=Ac/U+Uap2cc~StL">
<field name="TEXT">R1</field>
</shadow>
</value>
<value name="TEXT">
<block type="variables_get" id="S9=BP.2~7]7CBDplm%F{">
<field name="VAR" id="range_r1">R1Distance</field>
</block>
</value>
<next>
<block type="telemetry_addTextData_All" id="D*/1}8ZC*6=^`ETw(Hta">
<value name="KEY">
<shadow type="text" id="sZox~JcLgQrgJ:eKYK9i">
<field name="TEXT">R2</field>
</shadow>
</value>
<value name="TEXT">
<block type="variables_get" id="$Ai#z;_8{wWAZgVUwYiv">
<field name="VAR" id="range_r2">R2Distance</field>
</block>
</value>
<next>
<block type="telemetry_addTextData_All" id="4,:402TqNqgv_K}fh0P2">
<value name="KEY">
<shadow type="text" id="cAQa5w2[4(j[+`l68%cz">
<field name="TEXT">R3</field>
</shadow>
</value>
<value name="TEXT">
<block type="variables_get" id="VF=NRm,K[gq=pH!E$7)L">
<field name="VAR" id="range_r3">R3Distance</field>
</block>
</value>
<next>
<block type="telemetry_addTextData_All" id="8xL`UYEv1K}sPVU-]!p}">
<value name="KEY">
<shadow type="text" id="^mk,ad4SNCOmfk@=F),Q">
<field name="TEXT">R4</field>
</shadow>
</value>
<value name="TEXT">
<block type="variables_get" id="Cl39RS_f-Z;S?M^kZibH">
<field name="VAR" id="range_r4">R4Distance</field>
</block>
</value>
<next>
<block type="telemetry_addTextData_All" id="$L6i]luXP8#oROoE^T!x">
<value name="KEY">
<shadow type="text" id="Q{hU}VhXM|E1nGlylsWI">
<field name="TEXT">R5</field>
</shadow>
</value>
<value name="TEXT">
<block type="variables_get" id="cFh_LR8?H2?Y5h/Et@(M">
<field name="VAR" id="range_r5">R5Distance</field>
</block>
</value>
<next>
<block type="telemetry_addTextData_All" id="u~eBs[XPcR$|db^zk05p">
<value name="KEY">
<shadow type="text" id="W;Vd*r/#XI$|BAa7Zi|%">
<field name="TEXT">R6</field>
</shadow>
</value>
<value name="TEXT">
<block type="variables_get" id="1dCZ2)}*el29D2Vd%!YN">
<field name="VAR" id="range_r6">R6Distance</field>
</block>
</value>
<next>
<block type="telemetry_addTextData_All" id="fTOp]@Fn{{S!K11P)%}3">
<value name="KEY">
<shadow type="text" id="gL_5TjA~IYd.?iQjIaGc">
<field name="TEXT">R7</field>
</shadow>
</value>
<value name="TEXT">
<block type="variables_get" id="MDQmZw/k*pz?L`i^YorK">
<field name="VAR" id="range_r7">R7Distance</field>
</block>
</value>
<next>
<block type="telemetry_addTextData_All" id="~[79LuC2KZUDxMOg|(Rf">
<value name="KEY">
<shadow type="text" id="u9UYWsHs@x+0b2w=lbnC">
<field name="TEXT">R8</field>
</shadow>
</value>
<value name="TEXT">
<block type="variables_get" id="59,C]SWvtTQash(g53jp">
<field name="VAR" id="range_r8">R8Distance</field>
</block>
</value>
<next>
<block type="telemetry_addTextData_All" id="FL^,NC~7qYMkfWf-`^;X">
<value name="KEY">
<shadow type="text" id="6ItF5Km;V30+B)h@hJ(L">
<field name="TEXT">Red center distance (in)</field>
</shadow>
</value>
<value name="TEXT">
<block type="variables_get" id="?0p#n$(kD.ulFH;F|F-2">
<field name="VAR" id="red_center_display">redCenterDistance</field>
</block>
</value>
<next>
<block type="telemetry_update" id="Weepv0l1l!Z|a3!yU$)/">
<next>
<block type="linearOpMode_idle" id="`aEjMYTD{vBSmgj.}rHo"/>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="comment" id="student_teleop_wait">
<field name="COMMENT">WAIT FOR START: The robot is ready, but this block prevents driving until the Driver Station START button is pressed.</field>
<next>
<block type="linearOpMode_waitForStart" id="Nn}{i{$Ge0l,MZ]u[.Cb">
<next>
<block type="controls_whileUntil" id="i+sK2^HF9pX3Un)N.Y+[">
<field name="MODE">WHILE</field>
<value name="BOOL">
<block type="linearOpMode_opModeIsActive" id="lGSLNCZ4l)}?:T%kt]eW"/>
</value>
<statement name="DO">
<block type="variables_set" id="continuousScanStart">
<field name="VAR" id="sel">selecting</field>
<value name="VALUE">
<block type="logic_boolean" id="0}`*=$kq8vMVj9OPsi7}">
<field name="BOOL">TRUE</field>
</block>
</value>
<next>
<block type="variables_set" id="m4vvdF-.2DuyQe*P[pU~">
<field name="VAR" id="sid">selectedId</field>
<value name="VALUE">
<block type="math_number" id="5G+[rA4w9f=L@pW5/|tN">
<field name="NUM">-1</field>
</block>
</value>
<next>
<block type="variables_set" id="PrA`FJ`$,Kcz_:6vYFK0">
<field name="VAR" id="srg">selectedRange</field>
<value name="VALUE">
<block type="math_number" id="kE!lY^=}%H%k,{C~7}S,">
<field name="NUM">9999</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" id="[Yx(=m~3iJ0}?~?e].)9">
<mutation name="scanTags"/>
<next>
<block type="comment" id="student_teleop_controls">
<field name="COMMENT">MANUAL DRIVE: Read the joysticks every loop. Left stick drives and strafes; right stick X rotates; left bumper chooses slow mode.</field>
<next>
<block type="variables_set" id="iTWdCUy-+2gE1.5*2Pl1">
<field name="VAR" id="v_forward">forward</field>
<value name="VALUE">
<block type="math_single" id="41)eJ3kuq.Bpa7!i{T30">
<field name="OP">NEG</field>
<value name="NUM">
<block type="gamepad_getProperty" id="I.3*rH+0q/$TL8L$P5G2">
<field name="IDENTIFIER">gamepad1</field>
<field name="PROP">LeftStickY</field>
<data>{"IDENTIFIER":"gamepad1"}</data>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="4N:sEftFN9?~zU@co}!v">
<field name="VAR" id="v_strafe">strafe</field>
<value name="VALUE">
<block type="gamepad_getProperty" id="yqcNH}h@Ipr.|4F59Mj$">
<field name="IDENTIFIER">gamepad1</field>
<field name="PROP">LeftStickX</field>
<data>{"IDENTIFIER":"gamepad1"}</data>
</block>
</value>
<next>
<block type="variables_set" id="f{ot5PeP^3VYV`^!Fk2V">
<field name="VAR" id="v_turn">turn</field>
<value name="VALUE">
<block type="gamepad_getProperty" id="9O3yChi)=8AOqD|sB#Ct">
<field name="IDENTIFIER">gamepad1</field>
<field name="PROP">RightStickX</field>
<data>{"IDENTIFIER":"gamepad1"}</data>
</block>
</value>
<next>
<block type="variables_set" id="RUM-R*9wx{^k(7M48q*f">
<field name="VAR" id="v_speed">speed</field>
<value name="VALUE">
<block type="math_number" id="3t4:wPJ@_bH!TJeHBY@%">
<field name="NUM">1</field>
</block>
</value>
<next>
<block type="controls_if" id="(tg$q@,KRD|X!Gp1!_Ga">
<value name="IF0">
<block type="gamepad_getProperty" id="8fQ##=BvO.%*XXc_IM1A">
<field name="IDENTIFIER">gamepad1</field>
<field name="PROP">LeftBumper</field>
<data>{"IDENTIFIER":"gamepad1"}</data>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="@_=m}J4#{xESZ{T.B1-k">
<field name="VAR" id="v_speed">speed</field>
<value name="VALUE">
<block type="math_number" id="+*QpMGLJw7f9;(5u#fwD">
<field name="NUM">0.35</field>
</block>
</value>
</block>
</statement>
<next>
<block type="variables_set" id="1[7P0yvh*^Jc3WYBnU^k">
<field name="VAR" id="v_denominator">denominator</field>
<value name="VALUE">
<block type="math_arithmetic" id="kE`Da[|8?F2!4P8#R3HN">
<field name="OP">ADD</field>
<value name="A">
<block type="math_arithmetic" id="}.q4bT_qYsExI!-gUAhe">
<field name="OP">ADD</field>
<value name="A">
<block type="math_single" id="1=j@~?-E-[.l?7P-c|k2">
<field name="OP">ABS</field>
<value name="NUM">
<block type="variables_get" id="L.l@Lfh67Io@`7Y.P~=A">
<field name="VAR" id="v_forward">forward</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_single" id="$bgO6=$WF~;hVcG@^.A4">
<field name="OP">ABS</field>
<value name="NUM">
<block type="variables_get" id="n9]PlpVP*^kpgIoFB7)w">
<field name="VAR" id="v_strafe">strafe</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_single" id="M,S1PwLr#KyMwcWQZ:98">
<field name="OP">ABS</field>
<value name="NUM">
<block type="variables_get" id="Y8Uk0soYqp()?WG@-82f">
<field name="VAR" id="v_turn">turn</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="controls_if" id="@/,!]~9,=WXjRAE7/E?2">
<value name="IF0">
<block type="logic_compare" id="+kti(wXs@x/D;-5(beV6">
<field name="OP">LT</field>
<value name="A">
<block type="variables_get" id="7Gnm0)=@|~!KcxzHhwA$">
<field name="VAR" id="v_denominator">denominator</field>
</block>
</value>
<value name="B">
<block type="math_number" id="JoqD1rE=}llP%?2|0Nt[">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="Fp^U13wNe,8;;{QE_J9o">
<field name="VAR" id="v_denominator">denominator</field>
<value name="VALUE">
<block type="math_number" id="kTrZK4c@o$[+BvK5;NWN">
<field name="NUM">1</field>
</block>
</value>
</block>
</statement>
<next>
<block type="comment" id="student_teleop_mecanum">
<field name="COMMENT">WHEEL POWERS: Mecanum drive mixes forward, strafe, and turn differently for each wheel. Dividing by the denominator keeps every command in the safe -1 to +1 range.</field>
<next>
<block type="dcMotor_setProperty_Number" id="JjE.YAola@n-ueLQZher">
<field name="IDENTIFIER">front_left_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"front_left_drive"}</data>
<value name="VALUE">
<block type="math_arithmetic" id="8;TAtf~~Wb*=7^R!Rm@h">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="iQ:khC~HlFUXz(jHMwJp">
<field name="VAR" id="v_speed">speed</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="vh@gUSSbTkI=2t%/iW|{">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="math_arithmetic" id="i/1[dh8;^*//2tRy91`s">
<field name="OP">ADD</field>
<value name="A">
<block type="math_arithmetic" id="*h{[/;aewNVqhQVxH{!)">
<field name="OP">ADD</field>
<value name="A">
<block type="variables_get" id="*eYih]`w]XJ~z~k1mxkc">
<field name="VAR" id="v_forward">forward</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="!s@l/V-u1iwFAtCzvT~:">
<field name="VAR" id="v_strafe">strafe</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="variables_get" id="s?/~mQo#NiAHIqI/0*9`">
<field name="VAR" id="v_turn">turn</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="variables_get" id="CEcY+yQ@XL*WU1r}LR,N">
<field name="VAR" id="v_denominator">denominator</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Number" id=")nRzD:.Qk|b-jp[}6`}i">
<field name="IDENTIFIER">front_right_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"front_right_drive"}</data>
<value name="VALUE">
<block type="math_arithmetic" id="g4V:N4Ym[5Fn=j9RP)N6">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="?M#dTSl?=*AP@)A4}:bm">
<field name="VAR" id="v_speed">speed</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="-;@qv,}4N[rV6;@Y3}3*">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="math_arithmetic" id=")m~#fdW7!?@])s_9jPL(">
<field name="OP">MINUS</field>
<value name="A">
<block type="math_arithmetic" id="d%)t}@,%Z?!1N^FNZc~J">
<field name="OP">MINUS</field>
<value name="A">
<block type="variables_get" id="-vrBuV]_*sTIM?[vWxl-">
<field name="VAR" id="v_forward">forward</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="mD,FAo?eeqjln9]%X!Ge">
<field name="VAR" id="v_strafe">strafe</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="variables_get" id=",5B66ro-M33$%Bj8+:2T">
<field name="VAR" id="v_turn">turn</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="variables_get" id=",?I_?T3@A[v;cCR^-O!-">
<field name="VAR" id="v_denominator">denominator</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Number" id="Ij_p-ie[Mo-|T/=-|^/#">
<field name="IDENTIFIER">back_left_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"back_left_drive"}</data>
<value name="VALUE">
<block type="math_arithmetic" id="s+S,Jt+O.xq(5E*m]g4+">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="S0@6}-`u#eEY)(.eQ~U{">
<field name="VAR" id="v_speed">speed</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="Ich^Vnm7ZOyu;H:g~=GK">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="math_arithmetic" id="~.kmX9*pYV8R@@igpX~A">
<field name="OP">ADD</field>
<value name="A">
<block type="math_arithmetic" id="$m7C)umBds7.ZXT5STWw">
<field name="OP">MINUS</field>
<value name="A">
<block type="variables_get" id="PM?JcD_~wGO#5t[Yb_o3">
<field name="VAR" id="v_forward">forward</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="LyL!/{_3])8?(82w$6S6">
<field name="VAR" id="v_strafe">strafe</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="variables_get" id="4,Y^n92mU_#MN=)9)lP%">
<field name="VAR" id="v_turn">turn</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="variables_get" id="dO(sSE#r;D$Vy|ZM~g#*">
<field name="VAR" id="v_denominator">denominator</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Number" id="`#E;P=0pA^}%dPSke}t~">
<field name="IDENTIFIER">back_right_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"back_right_drive"}</data>
<value name="VALUE">
<block type="math_arithmetic" id="-3/pn67?l`lUt#[eETrw">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="eC/oaHQ(?Df{vMs]9H/=">
<field name="VAR" id="v_speed">speed</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="FPX7,y8^*~1K7{7.pfP~">
<field name="OP">DIVIDE</field>
<value name="A">
<block type="math_arithmetic" id="K5#v/F]hB)(`_o3Txd~n">
<field name="OP">MINUS</field>
<value name="A">
<block type="math_arithmetic" id="PL0@U/vsg}i5rTWQZwqh">
<field name="OP">ADD</field>
<value name="A">
<block type="variables_get" id="Vz]FrUQ1rmDm8%OOjowV">
<field name="VAR" id="v_forward">forward</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="egdq8`n^)s_zK3gGB.V[">
<field name="VAR" id="v_strafe">strafe</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="variables_get" id="p@4n8nvi(mYu!I/1i|ua">
<field name="VAR" id="v_turn">turn</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="variables_get" id="K:eNBvOJ5%LMaC@cK*bm">
<field name="VAR" id="v_denominator">denominator</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="comment" id="student_teleop_square">
<field name="COMMENT">WHAT SQUARE DOES
Square temporarily overrides the joystick motor powers. The program scans the tags, calculates a center, and turns until the center is within 2 degrees of straight ahead. A degree is 1/360 of a full circle. Releasing Square immediately gives control back to the driver. If the center cannot be calculated, all motor powers become zero.</field>
<next>
<block type="controls_if" id="squareAlignOverride">
<value name="IF0">
<block type="gamepad_getProperty" id="IPc(i.N?2]u|_T,JV|2?">
<field name="IDENTIFIER">gamepad1</field>
<field name="PROP">Square</field>
<data>{"IDENTIFIER":"gamepad1"}</data>
</block>
</value>
<statement name="DO0">
<block type="controls_if" id=",4.AH},$1UE$[CQaq4i3">
<mutation else="1"/>
<value name="IF0">
<block type="variables_get" id="iIH=M(Z?=F$rpGGs6Xyz">
<field name="VAR" id="found">found</field>
</block>
</value>
<statement name="DO0">
<block type="controls_if" id="nGalxq(~h~qn!`4azvs^">
<mutation else="1"/>
<value name="IF0">
<block type="logic_compare" id="dyev;3Z$cr|21xW{1Vv?">
<field name="OP">LTE</field>
<value name="A">
<block type="math_single" id="TCIuoWo=UugT:g5^=D*V">
<field name="OP">ABS</field>
<value name="NUM">
<block type="variables_get" id="-3WpjUq|LHBw0oK:DyrS">
<field name="VAR" id="ctx">currentTx</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_number" id="j=pT:-Fhe)}va6)SevlA">
<field name="NUM">2</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="dcMotor_setProperty_Number" id="N(G??0zr*442;aLd5v;~">
<field name="IDENTIFIER">front_left_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"front_left_drive"}</data>
<value name="VALUE">
<block type="math_number" id="uc#LLzCw{^:{=4YNM$_I">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Number" id="s_/P4P$0sM^^M#u`r?=_">
<field name="IDENTIFIER">back_left_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"back_left_drive"}</data>
<value name="VALUE">
<block type="math_number" id="Nl][*s=`_aq|5Y.f*5#-">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Number" id="HBgGo/l:N4fi.J;FXCVp">
<field name="IDENTIFIER">front_right_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"front_right_drive"}</data>
<value name="VALUE">
<block type="math_number" id="[c.#@t)vo/|(lXb/KEBD">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Number" id="CVO%!U:@+UAa*@]J-^gs">
<field name="IDENTIFIER">back_right_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"back_right_drive"}</data>
<value name="VALUE">
<block type="math_number" id="6UNH6|}{;t(YTK4RJ[O@">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="comment" id="student_teleop_clusters">
<field name="COMMENT">FOUR CLUSTER DISTANCES
These rows are live after START. Red Scoring means IDs 30–33, Red Audience 34–37, Blue Audience 38–41, and Blue Scoring 42–45. “not visible” means no tag from that sticker was found in the newest camera frame.</field>
<next>
<block type="telemetry_addTextData_All" id="^H_Adnnalssd]#W`6;O!">
<value name="KEY">
<shadow type="text" id="vl/L-=j5!oM*i3z{p`r|">
<field name="TEXT">Red scoring cluster (in)</field>
</shadow>
</value>
<value name="TEXT">
<block type="variables_get" id="kFsu1i~e(x@qo~rB:v#8">
<field name="VAR" id="cluster_red_scoring">redScoring</field>
</block>
</value>
<next>
<block type="telemetry_addTextData_All" id="T~])qQIH[:n+^hol,we7">
<value name="KEY">
<shadow type="text" id="UX0%Sq1eOsC_Jcwf3Mfu">
<field name="TEXT">Red audience cluster (in)</field>
</shadow>
</value>
<value name="TEXT">
<block type="variables_get" id="bX.lR2P%,H/,e7*)mIG(">
<field name="VAR" id="cluster_red_audience">redAudience</field>
</block>
</value>
<next>
<block type="telemetry_addTextData_All" id="HOOA9o0xl@FPz=:!^jC6">
<value name="KEY">
<shadow type="text" id="Q`,7r___9TzT,Cnql{*Z">
<field name="TEXT">Blue audience cluster (in)</field>
</shadow>
</value>
<value name="TEXT">
<block type="variables_get" id="?mOe1L@geVzuKt:cr4{L">
<field name="VAR" id="cluster_blue_audience">blueAudience</field>
</block>
</value>
<next>
<block type="telemetry_addTextData_All" id="tcuC7fv;A?!B}jHw|`4%">
<value name="KEY">
<shadow type="text" id=".8]HfMCkZF-QvcDEGju%">
<field name="TEXT">Blue scoring cluster (in)</field>
</shadow>
</value>
<value name="TEXT">
<block type="variables_get" id="!1QhNO(rnGtjdw9I$7#S">
<field name="VAR" id="cluster_blue_scoring">blueScoring</field>
</block>
</value>
<next>
<block type="comment" id="student_teleop_telemetry">
<field name="COMMENT">DRIVER STATION DISPLAY: Send commands, motor powers, buttons, and Square-alignment information to the Driver Station.</field>
<next>
<block type="telemetry_addTextData_All" id="squareCenteredStatus">
<value name="KEY">
<shadow type="text" id=",7dUXoPO1SD=I|QVBPQ8">
<field name="TEXT">Square align</field>
</shadow>
</value>
<value name="TEXT">
<shadow type="text" id=",o::47`J`1cz?{LLa@0+">
<field name="TEXT">CENTERED</field>
</shadow>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<statement name="ELSE">
<block type="controls_if" id="CuIfQCcf8iIOk:(V^rO%">
<mutation else="1"/>
<value name="IF0">
<block type="logic_compare" id="0Tc`ms),}c90WG3uk;gl">
<field name="OP">GT</field>
<value name="A">
<block type="variables_get" id="LR%}xC$^w5*9sgNv,ym3">
<field name="VAR" id="ctx">currentTx</field>
</block>
</value>
<value name="B">
<block type="math_number" id="0:Q#)J!;{Lc-:F=KY,.X">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="dcMotor_setProperty_Number" id="T.Q`.Tw:UjR.AtS3YAC^">
<field name="IDENTIFIER">front_left_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"front_left_drive"}</data>
<value name="VALUE">
<block type="math_number" id="qT9WM(HoeB$9JJi:ex~$">
<field name="NUM">0.18</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Number" id="5,77Alqa4DOwn[).#i.M">
<field name="IDENTIFIER">back_left_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"back_left_drive"}</data>
<value name="VALUE">
<block type="math_number" id="1MXcdfPBd2*4R7#C|l~x">
<field name="NUM">0.18</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Number" id="#}Zs5*[w[z(7}/|/%gvv">
<field name="IDENTIFIER">front_right_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"front_right_drive"}</data>
<value name="VALUE">
<block type="math_number" id="`[RSs?dMY`4UJhm/nMDk">
<field name="NUM">-0.24</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Number" id="xz5k@Hd;uI/NHTz-v7+P">
<field name="IDENTIFIER">back_right_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"back_right_drive"}</data>
<value name="VALUE">
<block type="math_number" id="Kr1Y7}@}+itQtd0_TWic">
<field name="NUM">-0.18</field>
</block>
</value>
<next>
<block type="telemetry_addTextData_All" id="qAR;wk:c{z-#3%sD.8b$">
<value name="KEY">
<shadow type="text" id="(ze8$G#osBk|xF`8l8y`">
<field name="TEXT">Square align</field>
</shadow>
</value>
<value name="TEXT">
<shadow type="text" id="V*k0UG!/!`uR82-4x0c4">
<field name="TEXT">turning to center</field>
</shadow>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<statement name="ELSE">
<block type="dcMotor_setProperty_Number" id="Gr4J.PO;ky-nTz=(R!.C">
<field name="IDENTIFIER">front_left_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"front_left_drive"}</data>
<value name="VALUE">
<block type="math_number" id="y-vXSg|LH#]98(+@m:`U">
<field name="NUM">-0.18</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Number" id="O+Z6hw:X,3z=LiylbdFQ">
<field name="IDENTIFIER">back_left_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"back_left_drive"}</data>
<value name="VALUE">
<block type="math_number" id="p8VvsNOMKQJ{tiyS)xL@">
<field name="NUM">-0.18</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Number" id="wX5Tk5n`hWFE0PU][BZ=">
<field name="IDENTIFIER">front_right_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"front_right_drive"}</data>
<value name="VALUE">
<block type="math_number" id="-zeVaQo%@yeulEGtg[v%">
<field name="NUM">0.24</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Number" id="w?K4RGql#by,a9apXrU^">
<field name="IDENTIFIER">back_right_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"back_right_drive"}</data>
<value name="VALUE">
<block type="math_number" id="XdsY.Zt+_y|mS75g3L:`">
<field name="NUM">0.18</field>
</block>
</value>
<next>
<block type="telemetry_addTextData_All" id="g3)yL8me41WLXEAZxS3b">
<value name="KEY">
<shadow type="text" id="chZ{](gh2.vc+J|.Uu/a">
<field name="TEXT">Square align</field>
</shadow>
</value>
<value name="TEXT">
<shadow type="text" id="PZbi}?TahuG{ORysCyGV">
<field name="TEXT">turning to center</field>
</shadow>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</statement>
<next>
<block type="telemetry_addTextData_All" id="M*z:.m+|O.EluP4eTV|b">
<value name="KEY">
<shadow type="text" id="+JDnNSkmXJ2x}O{Zl[K5">
<field name="TEXT">Center error (deg)</field>
</shadow>
</value>
<value name="TEXT">
<block type="variables_get" id="mF^bG@Lbhx/$w+u=iTfM">
<field name="VAR" id="ctx">currentTx</field>
</block>
</value>
<next>
<block type="telemetry_addTextData_All" id="*jmWVwoD{:cF%smk;+Uk">
<value name="KEY">
<shadow type="text" id=";|9+l_ww?M#l=-UxXwB2">
<field name="TEXT">Center distance (in)</field>
</shadow>
</value>
<value name="TEXT">
<block type="variables_get" id="+zi4(Hq/jez*pu[NlvvJ">
<field name="VAR" id="crg">currentRange</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</statement>
<statement name="ELSE">
<block type="dcMotor_setProperty_Number" id="EJ@;esEI#/z;OWpd{MA.">
<field name="IDENTIFIER">front_left_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"front_left_drive"}</data>
<value name="VALUE">
<block type="math_number" id="R=6N3S`QEa(Mco)a*wW/">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Number" id="pntd`s[=^^-{/}}h;`Py">
<field name="IDENTIFIER">back_left_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"back_left_drive"}</data>
<value name="VALUE">
<block type="math_number" id="iz{[txm{u|6Q6|ht5C%0">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Number" id="bbF%{9O*R7r2!RH{3rHD">
<field name="IDENTIFIER">front_right_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"front_right_drive"}</data>
<value name="VALUE">
<block type="math_number" id="%Dc8Zd[nFKNoLX1MXlnY">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Number" id="K%;B`Lb~OW9KQK$qB!C%">
<field name="IDENTIFIER">back_right_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"back_right_drive"}</data>
<value name="VALUE">
<block type="math_number" id="o_pG}(eUfK7aZt]hie]+">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="telemetry_addTextData_All" id="squareUnavailableStatus">
<value name="KEY">
<shadow type="text" id=":dlvBx|!{4|.Pq,2`UtT">
<field name="TEXT">Square align</field>
</shadow>
</value>
<value name="TEXT">
<shadow type="text" id="=T_DR;O4AaXr%kQ1,-*6">
<field name="TEXT">need one visible tag from each cluster half</field>
</shadow>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</statement>
<next>
<block type="telemetry_addNumericData_Number" id="liveTelemetryStart">
<value name="KEY">
<shadow type="text" id="CU:,P[;0rX0+OS~-3r5c">
<field name="TEXT">Forward command</field>
</shadow>
</value>
<value name="NUMBER">
<block type="variables_get" id="OAh=_N[;KBm4hQGA*`%Z">
<field name="VAR" id="v_forward">forward</field>
</block>
</value>
<next>
<block type="telemetry_addNumericData_Number" id="+]81ks/,[JNR,%XgRr?/">
<value name="KEY">
<shadow type="text" id="?Dvw[tBM9XO7=L};-Mr$">
<field name="TEXT">Strafe command</field>
</shadow>
</value>
<value name="NUMBER">
<block type="variables_get" id="#m;0qrvSr[[*8fA@HJ`-">
<field name="VAR" id="v_strafe">strafe</field>
</block>
</value>
<next>
<block type="telemetry_addNumericData_Number" id="G[Ovrtva/RZVQ(MPdig~">
<value name="KEY">
<shadow type="text" id="t58#~]Sdo8rdxj|v{ZgT">
<field name="TEXT">Rotate command</field>
</shadow>
</value>
<value name="NUMBER">
<block type="variables_get" id="Ay{])smXO(m5WrILMf78">
<field name="VAR" id="v_turn">turn</field>
</block>
</value>
<next>
<block type="telemetry_addNumericData_Number" id="}Ax/v}:+1EZ*Ce,1[LDM">
<value name="KEY">
<shadow type="text" id="{JCu0|F$qVAT!yC:34E@">
<field name="TEXT">Speed scale</field>
</shadow>
</value>
<value name="NUMBER">
<block type="variables_get" id="E-~0Ie?*sgTD?~!7io3T">
<field name="VAR" id="v_speed">speed</field>
</block>
</value>
<next>
<block type="telemetry_addNumericData_Number" id="dY|dr9`.hFU6wn.v@We7">
<value name="KEY">
<shadow type="text" id="cRrrmhqZcRh!VKbh3$xt">
<field name="TEXT">FL motor power</field>
</shadow>
</value>
<value name="NUMBER">
<block type="dcMotor_getProperty_Number" id="8*PAH-/mF?fm%#;2h1-$">
<field name="IDENTIFIER">front_left_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"front_left_drive"}</data>
</block>
</value>
<next>
<block type="telemetry_addNumericData_Number" id="b#8$Xr?X;c}$sq($a+2/">
<value name="KEY">
<shadow type="text" id="b`);y4:mlN8e}v6m4.bX">
<field name="TEXT">FR motor power</field>
</shadow>
</value>
<value name="NUMBER">
<block type="dcMotor_getProperty_Number" id="h|)`(~:@hdlLQd0yVqaw">
<field name="IDENTIFIER">front_right_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"front_right_drive"}</data>
</block>
</value>
<next>
<block type="telemetry_addNumericData_Number" id="UnV*F-h#;}M^4.zHXpYD">
<value name="KEY">
<shadow type="text" id="-QidORWf-vJrc3}ULm[%">
<field name="TEXT">BL motor power</field>
</shadow>
</value>
<value name="NUMBER">
<block type="dcMotor_getProperty_Number" id="HmlKIfM4Jv(bYGFq755R">
<field name="IDENTIFIER">back_left_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"back_left_drive"}</data>
</block>
</value>
<next>
<block type="telemetry_addNumericData_Number" id="~1HnU4]SlN.o+/udp|zw">
<value name="KEY">
<shadow type="text" id="MoJbq93_^m:BW#GkA7?;">
<field name="TEXT">BR motor power</field>
</shadow>
</value>
<value name="NUMBER">
<block type="dcMotor_getProperty_Number" id="eX@EWY399lvugo;aF;LE">
<field name="IDENTIFIER">back_right_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"back_right_drive"}</data>
</block>
</value>
<next>
<block type="telemetry_addTextData_All" id="`!umIM/S0,.AH=.K#:Kc">
<value name="KEY">
<shadow type="text" id="//KDVCsp-w*k:pR=RYBD">
<field name="TEXT">Face buttons</field>
</shadow>
</value>
<value name="TEXT">
<block type="text_join" id="n+/8*g8!O2D#G4v?-Ktg">
<mutation items="8"/>
<value name="ADD0">
<shadow type="text" id="*5(.kkZWmwB7!,%ym_UJ">
<field name="TEXT">A:</field>
</shadow>
</value>
<value name="ADD1">
<block type="gamepad_getProperty" id="3_X^D:wuvql7+i9b5}e{">
<field name="IDENTIFIER">gamepad1</field>
<field name="PROP">A</field>
<data>{"IDENTIFIER":"gamepad1"}</data>
</block>
</value>
<value name="ADD2">
<shadow type="text" id="FrxIMG?eL+p:AVw|~A.]">
<field name="TEXT"> B:</field>
</shadow>
</value>
<value name="ADD3">
<block type="gamepad_getProperty" id="Xf!(AR]_9_KcA9{41W_[">
<field name="IDENTIFIER">gamepad1</field>
<field name="PROP">B</field>
<data>{"IDENTIFIER":"gamepad1"}</data>
</block>
</value>
<value name="ADD4">
<shadow type="text" id="3nCY.Y]B|G|Lxlh|ERoI">
<field name="TEXT"> X:</field>
</shadow>
</value>
<value name="ADD5">
<block type="gamepad_getProperty" id="~pm]1xbhs*g7%+biv;oH">
<field name="IDENTIFIER">gamepad1</field>
<field name="PROP">X</field>
<data>{"IDENTIFIER":"gamepad1"}</data>
</block>
</value>
<value name="ADD6">
<shadow type="text" id="UL:o$gZy|e}[lhx?IWg:">
<field name="TEXT"> Y:</field>
</shadow>
</value>
<value name="ADD7">
<block type="gamepad_getProperty" id="qgb{lbMw9o6R?Ylk-9U4">
<field name="IDENTIFIER">gamepad1</field>
<field name="PROP">Y</field>
<data>{"IDENTIFIER":"gamepad1"}</data>
</block>
</value>
</block>
</value>
<next>
<block type="telemetry_addTextData_All" id="xbSu|CCGfkZeU3m}X^Bf">
<value name="KEY">
<shadow type="text" id="M`b8j+X!X[B7Uf1=D#b=">
<field name="TEXT">D-pad</field>
</shadow>
</value>
<value name="TEXT">
<block type="text_join" id="$dsT=LLGTLbxiiuL:4o}">
<mutation items="8"/>
<value name="ADD0">
<shadow type="text" id="F-T/S2@fybkn3$_BTP.v">
<field name="TEXT">U:</field>
</shadow>
</value>
<value name="ADD1">
<block type="gamepad_getProperty" id="#EplFT}Z+G,p15_[ifZJ">
<field name="IDENTIFIER">gamepad1</field>
<field name="PROP">DpadUp</field>
<data>{"IDENTIFIER":"gamepad1"}</data>
</block>
</value>
<value name="ADD2">
<shadow type="text" id="n6[U+T!u$QD55C?IK;xT">
<field name="TEXT"> D:</field>
</shadow>
</value>
<value name="ADD3">
<block type="gamepad_getProperty" id="lg^mqAbN~5G;kwiPMs1%">
<field name="IDENTIFIER">gamepad1</field>
<field name="PROP">DpadDown</field>
<data>{"IDENTIFIER":"gamepad1"}</data>
</block>
</value>
<value name="ADD4">
<shadow type="text" id="-[eWPG#;tZ.J_R*,]z~`">
<field name="TEXT"> L:</field>
</shadow>
</value>
<value name="ADD5">
<block type="gamepad_getProperty" id="sX`qbA3e}m[dQ7!b_[5+">
<field name="IDENTIFIER">gamepad1</field>
<field name="PROP">DpadLeft</field>
<data>{"IDENTIFIER":"gamepad1"}</data>
</block>
</value>
<value name="ADD6">
<shadow type="text" id="|)$NV!ano^uD]0NDS[;l">
<field name="TEXT"> R:</field>
</shadow>
</value>
<value name="ADD7">
<block type="gamepad_getProperty" id="yz/`Cb!DW,K]!fC*F`[;">
<field name="IDENTIFIER">gamepad1</field>
<field name="PROP">DpadRight</field>
<data>{"IDENTIFIER":"gamepad1"}</data>
</block>
</value>
</block>
</value>
<next>
<block type="telemetry_addTextData_All" id="x,GR4OqnWnsZQ#W]3.W{">
<value name="KEY">
<shadow type="text" id="vWo=slp-K#cYx):oifn.">
<field name="TEXT">Other buttons</field>
</shadow>
</value>
<value name="TEXT">
<block type="text_join" id="tA9fh_U/2t?YriQX2;UN">
<mutation items="8"/>
<value name="ADD0">
<shadow type="text" id="PG^O[h9:v:tX3.q($x$U">
<field name="TEXT">LB:</field>
</shadow>
</value>
<value name="ADD1">
<block type="gamepad_getProperty" id="YO$=t+NO2|f+|vqjkk],">
<field name="IDENTIFIER">gamepad1</field>
<field name="PROP">LeftBumper</field>
<data>{"IDENTIFIER":"gamepad1"}</data>
</block>
</value>
<value name="ADD2">
<shadow type="text" id="lCtddKngHVZf@rIAnB|b">
<field name="TEXT"> RB:</field>
</shadow>
</value>
<value name="ADD3">
<block type="gamepad_getProperty" id=".[!w]}nzr73urkoog7[^">
<field name="IDENTIFIER">gamepad1</field>
<field name="PROP">RightBumper</field>
<data>{"IDENTIFIER":"gamepad1"}</data>
</block>
</value>
<value name="ADD4">
<shadow type="text" id="WF.$%HH$#:rPWpJh3Du~">
<field name="TEXT"> Start:</field>
</shadow>
</value>
<value name="ADD5">
<block type="gamepad_getProperty" id=":*)k0^-0tr`Z|K~:}qRH">
<field name="IDENTIFIER">gamepad1</field>
<field name="PROP">Start</field>
<data>{"IDENTIFIER":"gamepad1"}</data>
</block>
</value>
<value name="ADD6">
<shadow type="text" id="4}e+_3:xe]L}Dw~lI!A|">
<field name="TEXT"> Back:</field>
</shadow>
</value>
<value name="ADD7">
<block type="gamepad_getProperty" id="Ye[qMP=4~ZG$OzQm`JCD">
<field name="IDENTIFIER">gamepad1</field>
<field name="PROP">Back</field>
<data>{"IDENTIFIER":"gamepad1"}</data>
</block>
</value>
</block>
</value>
<next>
<block type="telemetry_update" id="liveTelemetryUpdate"/>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
<next>
<block type="comment" id="student_teleop_stop">
<field name="COMMENT">SAFETY STOP: After STOP is pressed, set all motors to zero and stop the Limelight.</field>
<next>
<block type="dcMotor_setProperty_Number" id="Msuu[d!iIbH$9m]2:kEC">
<field name="IDENTIFIER">front_left_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"front_left_drive"}</data>
<value name="VALUE">
<block type="math_number" id="ypL~.[/KlR.}L=(@=.QU">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Number" id="m@o_^zm+s68dbj=tu6m3">
<field name="IDENTIFIER">front_right_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"front_right_drive"}</data>
<value name="VALUE">
<block type="math_number" id="h1=:XYb2OZ6pJB$=ppC(">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Number" id="tG`_!~[nU`GQt%n_J9_G">
<field name="IDENTIFIER">back_left_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"back_left_drive"}</data>
<value name="VALUE">
<block type="math_number" id="KDQ!+(l/:vG:Knl:hv~t">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="dcMotor_setProperty_Number" id="f(|[=XuPGqYhmf#FBscz">
<field name="IDENTIFIER">back_right_driveAsDcMotor</field>
<field name="PROP">Power</field>
<data>{"IDENTIFIER":"back_right_drive"}</data>
<value name="VALUE">
<block type="math_number" id="[^y-H5Bs=e(!O{YzdYp.">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="limelight3A_stop" id="teleopLimelightStop">
<field name="IDENTIFIER">limelightAsLimelight3A</field>
<data>{"IDENTIFIER":"limelight"}</data>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</xml>
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<Extra>
<OpModeMeta flavor="TELEOP" group="" />
<Enabled value="true" />
</Extra>
