text:
="28.81" y2="1.27" width="0.2" layer="16"/>
<via x="31.9" y="17.2" extent="1-16" drill="0.5"/>
</signal>
<signal name="LEFT_A">
<contactref element="CON2" pad="11"/>
<contactref element="SEL1-R7" pad="1"/>
<wire x1="43.5" y1="22.45" x2="43.45" y2="22.5" width="0.2" layer="1"/>
<wire x1="43.45" y1="21.35" x2="43.45" y2="22.4" width="0.2" layer="1"/>
<wire x1="43.35" y1="21.35" x2="43.45" y2="21.35" width="0.2" layer="1"/>
<wire x1="43.35" y1="16" x2="43.35" y2="21.35" width="0.2" layer="16"/>
<wire x1="42.85" y1="15.5" x2="43.35" y2="16" width="0.2" layer="16"/>
<wire x1="42.75" y1="15.6" x2="42.85" y2="15.5" width="0.2" layer="1"/>
<wire x1="36.95" y1="15.6" x2="42.75" y2="15.6" width="0.2" layer="1"/>
<wire x1="36.75" y1="15.8" x2="36.95" y2="15.6" width="0.2" layer="1"/>
<wire x1="32.35" y1="15.8" x2="36.75" y2="15.8" width="0.2" layer="1"/>
<wire x1="31.2" y1="16.95" x2="32.35" y2="15.8" width="0.2" layer="1"/>
<wire x1="31.2" y1="18.6" x2="31.2" y2="16.95" width="0.2" layer="1"/>
<wire x1="31.45" y1="18.6" x2="31.2" y2="18.6" width="0.2" layer="1"/>
<wire x1="28.25" y1="18.6" x2="31.45" y2="18.6" width="0.2" layer="16"/>
<wire x1="28" y1="18.4" x2="28.25" y2="18.6" width="0.2" layer="16"/>
<wire x1="28" y1="4.5" x2="28" y2="18.4" width="0.2" layer="16"/>
<wire x1="26.3" y1="2.8" x2="28" y2="4.5" width="0.2" layer="16"/>
<wire x1="26.3" y1="1.3" x2="26.3" y2="2.8" width="0.2" layer="16"/>
<wire x1="43.45" y1="22.4" x2="43.45" y2="22.5" width="0.2" layer="1"/>
<wire x1="26.3" y1="1.3" x2="26.27" y2="1.27" width="0.2" layer="16"/>
<via x="43.35" y="21.35" extent="1-16" drill="0.5"/>
<via x="42.85" y="15.5" extent="1-16" drill="0.5"/>
<via x="31.45" y="18.6" extent="1-16" drill="0.5"/>
</signal>
<signal name="_EQUAL_IN">
<contactref element="CON2" pad="15"/>
<contactref element="OR2-R1" pad="1"/>
<wire x1="43.25" y1="30.05" x2="43.25" y2="31.4" width="0.2" layer="1"/>
<wire x1="43.55" y1="30.05" x2="43.25" y2="30.05" width="0.2" layer="1"/>
<wire x1="44.05" y1="29.55" x2="43.55" y2="30.05" width="0.2" layer="16"/>
<wire x1="44.05" y1="8.95" x2="44.1" y2="20.3" width="0.2" layer="16"/>
<wire x1="44.1" y1="20.3" x2="44.5" y2="20.7" width="0.2" layer="16"/>
<wire x1="44.5" y1="20.7" x2="44.5" y2="22.3" width="0.2" layer="16"/>
<wire x1="44.5" y1="22.3" x2="44.05" y2="22.75" width="0.2" layer="16"/>
<wire x1="44.05" y1="22.75" x2="44.05" y2="29.55" width="0.2" layer="16"/>
<wire x1="38.45" y1="3.35" x2="44.05" y2="8.95" width="0.2" layer="16"/>
<wire x1="38.2" y1="3.6" x2="38.45" y2="3.35" width="0.2" layer="1"/>
<wire x1="31.9" y1="3.6" x2="38.2" y2="3.6" width="0.2" layer="1"/>
<wire x1="31.7" y1="3.4" x2="31.9" y2="3.6" width="0.2" layer="16"/>
<wire x1="31.7" y1="1.65" x2="31.7" y2="3.4" width="0.2" layer="16"/>
<wire x1="31.35" y1="1.3" x2="31.7" y2="1.65" width="0.2" layer="16"/>
<wire x1="31.35" y1="1.3" x2="31.35" y2="1.27" width="0.2" layer="16"/>
<via x="43.55" y="30.05" extent="1-16" drill="0.5"/>
<via x="38.45" y="3.35" extent="1-16" drill="0.5"/>
<via x="31.9" y="3.6" extent="1-16" drill="0.5"/>
</signal>
<signal name="_EQUAL_OUT">
<contactref element="CON2" pad="19"/>
<contactref element="OR2-R5" pad="1"/>
<contactref element="OR2-Q3" pad="P$3"/>
<wire x1="42.4" y1="41.5" x2="42.4" y2="40.7" width="0.2" layer="1"/>
<wire x1="42.4" y1="40.7" x2="42.7" y2="40.4" width="0.2" layer="1"/>
<wire x1="42.7" y1="40.4" x2="44.05" y2="40.4" width="0.2" layer="1"/>
<wire x1="44.05" y1="40.4" x2="44.85" y2="39.6" width="0.2" layer="1"/>
<wire x1="36.95" y1="1.8" x2="36.45" y2="1.3" width="0.2" layer="16"/>
<wire x1="36.95" y1="33.8" x2="36.95" y2="30.25" width="0.2" layer="16"/>
<wire x1="36.95" y1="30.25" x2="36.5" y2="29.8" width="0.2" layer="16"/>
<wire x1="36.5" y1="29.8" x2="36.5" y2="28.4" width="0.2" layer="16"/>
<wire x1="36.5" y1="28.4" x2="37" y2="27.9" width="0.2" layer="16"/>
<wire x1="37" y1="27.9" x2="37" y2="17.4" width="0.2" layer="16"/>
<wire x1="37" y1="17.4" x2="37.6" y2="16.8" width="0.2" layer="16"/>
<wire x1="37.6" y1="16.8" x2="37.6" y2="15.1" width="0.2" layer="16"/>
<wire x1="37.6" y1="15.1" x2="36.95" y2="14.45" width="0.2" layer="16"/>
<wire x1="36.95" y1="14.45" x2="36.95" y2="1.8" width="0.2" layer="16"/>
<wire x1="38.95" y1="35.8" x2="36.95" y2="33.8" width="0.2" layer="16"/>
<wire x1="39.35" y1="36.2" x2="38.95" y2="35.8" width="0.2" layer="1"/>
<wire x1="40" y1="36.2" x2="39.35" y2="36.2" width="0.2" layer="1"/>
<wire x1="40.7" y1="36.9" x2="40" y2="36.2" width="0.2" layer="1"/>
<wire x1="40.7" y1="40.65" x2="40.7" y2="36.9" width="0.2" layer="1"/>
<wire x1="42.35" y1="40.65" x2="40.7" y2="40.65" width="0.2" layer="1"/>
<wire x1="36.45" y1="1.3" x2="36.43" y2="1.27" width="0.2" layer="16"/>
<wire x1="42.35" y1="40.65" x2="42.4" y2="40.7" width="0.2" layer="1"/>
<via x="38.95" y="35.8" extent="1-16" drill="0.5"/>
</signal>
<signal name="N$6">
<contactref element="R1" pad="2"/>
<contactref element="L1" pad="C"/>
<wire x1="3.5" y1="11.05" x2="3.5" y2="13.15" width="0.2" layer="1"/>
</signal>
<signal name="SEL3-N$27">
<contactref element="SEL3-R2" pad="2"/>
<wire x1="8.7" y1="6.55" x2="8.7" y2="7.1" width="0.2" layer="1"/>
<wire x1="8.7" y1="7.1" x2="8.4" y2="7.4" width="0.2" layer="1"/>
<wire x1="8.4" y1="7.4" x2="8.1" y2="7.7" width="0.2" layer="1"/>
<wire x1="8.1" y1="7.7" x2="8" y2="7.8" width="0.2" layer="1"/>
<wire x1="8" y1="7.8" x2="8" y2="12.3" width="0.2" layer="1"/>
<wire x1="8" y1="12.3" x2="8.3" y2="12.6" width="0.2" layer="1"/>
<wire x1="8.3" y1="12.6" x2="8.85" y2="12.6" width="0.2" layer="1"/>
<contactref element="SEL3-Q1" pad="P$1"/>
</signal>
<signal name="SEL3-N$28">
<contactref element="SEL3-R3" pad="2"/>
<wire x1="10.9" y1="6.55" x2="10.9" y2="7.2" width="0.2" layer="1"/>
<wire x1="10.9" y1="7.2" x2="10.6" y2="7.5" width="0.2" layer="1"/>
<wire x1="10.6" y1="7.5" x2="9.1" y2="7.5" width="0.2" layer="1"/>
<wire x1="9.1" y1="7.5" x2="8.9" y2="7.7" width="0.2" layer="1"/>
<wire x1="8.9" y1="7.7" x2="8.9" y2="8.55" width="0.2" layer="1"/>
<wire x1="8.9" y1="8.55" x2="8.85" y2="8.6" width="0.2" layer="1"/>
<contactref element="SEL3-Q2" pad="P$1"/>
</signal>
<signal name="SEL3-N$29">
<wire x1="9.8" y1="10.8" x2="9.8" y2="11" width="0.2" layer="1"/>
<wire x1="9.8" y1="11" x2="10.2" y2="11.4" width="0.2" layer="1"/>
<wire x1="10.2" y1="11.4" x2="10.7" y2="11.9" width="0.2" layer="1"/>
<wire x1="10.7" y1="11.9" x2="10.7" y2="12.55" width="0.2" layer="1"/>
<wire x1="10.7" y1="12.55" x2="10.75" y2="12.6" width="0.2" layer="1"/>
<contactref element="SEL3-Q2" pad="P$3"/>
<contactref element="SEL3-Q1" pad="P$2"/>
</signal>
<signal name="SEL3-SEL_INT">
<contactref element="SEL3-R1" pad="1"/>
<contactref element="SEL3-R18" pad="1"/>
<wire x1="9.8" y1="14.8" x2="14.2" y2="14.8" width="0.2" layer="1"/>
<wire x1="14.2" y1="14.8" x2="18.6" y2="14.8" width="0.2" layer="1"/>
<wire x1="18.6" y1="14.8" x2="23" y2="14.8" width="0.2" layer="1"/>
<wire x1="23" y1="14.8" x2="27.4" y2="14.8" width="0.2" layer="1"/>
<wire x1="27.4" y1="14.8" x2="31.8" y2="14.8" width="0.2" layer="1"/>
<wire x1="31.8" y1="14.8" x2="36.2" y2="14.8" width="0.2" layer="1"/>
<wire x1="36.4" y1="14.8" x2="38.9" y2="14.8" width="0.2" layer="1"/>
<wire x1="38.9" y1="14.8" x2="39.3" y2="14.4" width="0.2" layer="1"/>
<wire x1="39.3" y1="14.4" x2="39.3" y2="14.25" width="0.2" layer="1"/>
<wire x1="39.3" y1="14.25" x2="39.25" y2="14.2" width="0.2" layer="1"/>
<wire x1="39.25" y1="14.2" x2="39.3" y2="14.2" width="0.2" layer="1"/>
<wire x1="39.3" y1="14.2" x2="39.3" y2="12.05" width="0.2" layer="1"/>
<wire x1="39.3" y1="12.05" x2="39.25" y2="12" width="0.2" layer="1"/>
<contactref element="SEL3-Q3" pad="P$3"/>
<contactref element="SEL3-Q5" pad="P$3"/>
<contactref element="SEL3-Q7" pad="P$3"/>
<contactref element="SEL3-Q9" pad="P$3"/>
<contactref element="SEL3-Q11" pad="P$3"/>
<contactref element="SEL3-Q13" pad="P$3"/>
<contactref element="SEL3-Q1" pad="P$3"/>
<wire x1="36.25" y1="14.8" x2="36.35" y2="14.8" width="0.2" layer="1"/>
<wire x1="36.35" y1="14.8" x2="36.4" y2="14.8" width="0.2" layer="1"/>
<wire x1="36.25" y1="14.8" x2="36.2" y2="14.8" width="0.2" layer="1"/>
</signal>
<signal name="SEL3-N$32">
<contactref element="SEL3-R4" pad="2"/>
<wire x1="13.1" y1="6.55" x2="13.1" y2="7.1" width="0.2" layer="1"/>
<wire x1="13.1" y1="7.1" x2="12.4" y2="7.8" width="0.2" layer="1"/>
<wire x1="12.4" y1="7.8" x2="12.4" y2="12.3" width="0.2" layer="1"/>
<wire x1="12.4" y1="12.3" x2="12.7" y2="12.6" width="0.2" layer="1"/>
<wire x1="12.7" y1="12.6" x2="13.25" y2="12.6" width="0.2" layer="1"/>
<contactref element="SEL3-Q3" pad="P$1"/>
</signal>
<signal name="SEL3-N$33">
<contactref element="SEL3-R5" pad="2"/>
<wire x1="15.3" y1="6.55" x2="15.3" y2="7.2" width="0.2" layer="1"/>
<wire x1="15.3" y1="7.2" x2="15.1" y2="7.4" width="0.2" layer="1"/>
<wire x1="15.1" y1="7.4" x2="15" y2="7.5" width="0.2" layer="1"/>
<wire x1="15" y1="7.5" x2="13.5" y2="7.5" width="0.2" layer="1"/>
<wire x1="13.5" y1="7.5" x2="13.3" y2="7.7" width="0.2" layer="1"/>
<wire x1="13.3" y1="7.7" x2="13.3" y2="8.55" width="0.2" layer="1"/>
<wire x1="13.3" y1="8.55" x2="13.25" y2="8.6" width="0.2" layer="1"/>
<contactref element="SEL3-Q4" pad="P$1"/>
</signal>
<signal name="SEL3-N$34">
<wire x1="14.2" y1="10.8" x2="14.2" y2="11" width="0.2" layer="1"/>
<wire x1="14.2" y1="11" x2="15.1" y2="11.9" width="0.2" layer="1"/>
<wire x1="15.1" y1="11.9" x2="15.1" y2="12.55" width="0.2" layer="1"/>
<wire x1="15.1" y1="12.55" x2="15.15" y2="12.6" width="0.2" layer="1"/>
<contactref element="SEL3-Q3" pad="P$2"/>
<contactref element="SEL3-Q4" pad="P$3"/>
</signal>
<signal name="SEL3-N$35">
<contactref element="SEL3-R6" pad="2"/>
<wire x1="17.5" y1="6.55" x2="17.5" y2="7.1" width="0.2" layer="1"/>
<wire x1="17.5" y1="7.1" x2="16.8" y2="7.8" width="0.2" layer="1"/>
<wire x1="16.8" y1="7.8" x2="16.8" y2="12.3" width="0.2" layer="1"/>
<wire x1="16.8" y1="12.3" x2="17.1" y2="12.6" width="0.2" layer="1"/>
<wire x1="17.1" y1="12.6" x2="17.65" y2="12.6" width="0.2" layer="1"/>
<contactref element="SEL3-Q5" pad="P$1"/>
</signal>
<signal name="SEL3-N$36">
<contactref element="SEL3-R7" pad="2"/>
<wire x1="19.7" y1="6.55" x2="19.7" y2="7.2" width="0.2" layer="1"/>
<wire x1="19.7" y1="7.2" x2="19.4" y2="7.5" width="0.2" layer="1"/>
<wire x1="19.4" y1="7.5" x2="17.9" y2="7.5" width="0.2" layer="1"/>
<wire x1="17.9" y1="7.5" x2="17.7" y2="7.7" width="0.2" layer="1"/>
<wire x1="17.7" y1="7.7" x2="17.7" y2="8.55" width="0.2" layer="1"/>
<wire x1="17.7" y1="8.55" x2="17.65" y2="8.6" width="0.2" layer="1"/>
<contactref element="SEL3-Q6" pad="P$1"/>
</signal>
<signal name="SEL3-N$37">
<wire x1="18.6" y1="10.8" x2="18.6" y2="11" width="0.2" layer="1"/>
<wire x1="18.6" y1="11" x2="19.5" y2="11.9" width="0.2" layer="1"/>
<wire x1="19.5" y1="11.9" x2="19.5" y2="12.55" width="0.2" layer="1"/>
<wire x1="19.5" y1="12.55" x2="19.55" y2="12.6" width="0.2" layer="1"/>
<contactref element="SEL3-Q5" pad="P$2"/>
<contactref element="SEL3-Q6" pad="P$3"/>
</signal>
<signal name="SEL3-N$38">
<contactref element="SEL3-R8" pad="2"/>
<wire x1="21.9" y1="6.55" x2="21.9" y2="7.1" width="0.2" layer="1"/>
<wire x1="21.9" y1="7.1" x2="21.2" y2="7.8" width="0.2" layer="1"/>
<wire x1="21.2" y1="7.8" x2="21.2" y2="12.4" width="0.2" layer="1"/>
<wire x1="21.2" y1="12.4" x2="21.4" y2="12.6" width="0.2" layer="1"/>
<wire x1="21.4" y1="12.6" x2="22.05" y2="12.6" width="0.2" layer="1"/>
<contactref element="SEL3-Q7" pad="P$1"/>
</signal>
<signal name="SEL3-N$39">
<contactref element="SEL3-R9" pad="2"/>
<wire x1="24.1" y1="6.55" x2="24.1" y2="7.2" width="0.2" layer="1"/>
<wire x1="24.1" y1="7.2" x2="23.8" y2="7.5" width="0.2" layer="1"/>
<wire x1="23.8" y1="7.5" x2="22.3" y2="7.5" width="0.2" layer="1"/>
<wire x1="22.3" y1="7.5" x2="22.1" y2="7.7" width="0.2" layer="1"/>
<wire x1="22.1" y1="7.7" x2="22.1" y2="8.55" width="0.2" layer="1"/>
<wire x1="22.1" y1="8.55" x2="22.05" y2="8.6" width="0.2" layer="1"/>
<contactref element="SEL3-Q8" pad="P$1"/>
</signal>
<signal name="SEL3-N$40">
<wire x1="23" y1="10.8" x2="23" y2="11" width="0.2" layer="1"/>
<wire x1="23" y1="11" x2="23.9" y2="11.9" width="0.2" layer="1"/>
<wire x1="23.9" y1="11.9" x2="23.9" y2="12.55" width="0.2" layer="1"/>
<wire x1="23.9" y1="12.55" x2="23.95" y2="12.6" width="0.2" layer="1"/>
<contactref element="SEL3-Q7" pad="P$2"/>
<contactref element="SEL3-Q8" pad="P$3"/>
</signal>
<signal name="SEL3-N$41">
<contactref element="SEL3-R10" pad="2"/>
<wire x1="26.3" y1="6.55" x2="26.3" y2="7.1" width="0.2" layer="1"/>
<wire x1="26.3" y1="7.1" x2="25.6" y2="7.8" width="0.2" layer="1"/>
<wire x1="25.6" y1="7.8" x2="25.6" y2="12.3" width="0.2" layer="1"/>
<wire x1="25.6" y1="12.3" x2="25.9" y2="12.6" width="0.2" layer="1"/>
<wire x1="25.9" y1="12.6" x2="26.45" y2="12.6" width="0.2" layer="1"/>
<contactref element="SEL3-Q9" pad="P$1"/>
</signal>
<signal name="SEL3-N$42">
<contactref element="SEL3-R11" pad="2"/>
<wire x1="28.5" y1="6.55" x2="28.5" y2="7.2" width="0.2" layer="1"/>
<wire x1="28.5" y1="7.2" x2="28.2" y2="7.5" width="0.2" layer="1"/>
<wire x1="28.2" y1="7.5" x2="26.6" y2="7.5" width="0.2" layer="1"/>
<wire x1="26.6" y1="7.5" x2="26.4" y2="7.7" width="0.2" layer="1"/>
<wire x1="26.4" y1="7.7" x2="26.4" y2="8.55" width="0.2" layer="1"/>
<wire x1="26.4" y1="8.55" x2="26.45" y2="8.6" width="0.2" layer="1"/>
<contactref element="SEL3-Q10" pad="P$1"/>
</signal>
<signal name="SEL3-N$43">
<wire x1="27.4" y1="10.8" x2="27.4" y2="11" width="0.2" layer="1"/>
<wire x1="27.4" y1="11" x2="28.3" y2="11.9" width="0.2" layer="1"/>
<wire x1="28.3" y1="11.9" x2="28.3" y2="12.55" width="0.2" layer="1"/>
<wire x1="28.3" y1="12.55" x2="28.35" y2="12.6" width="0.2" layer="1"/>
<contactref element="SEL3-Q9" pad="P$2"/>
<contactref element="SEL3-Q10" pad="P$3"/>
</signal>
<signal name="SEL3-N$44">
<contactref element="SEL3-R12" pad="2"/>
<wire x1="30.7" y1="6.55" x2="30.7" y2="7.1" width="0.2" layer="1"/>
<wire x1="30.7" y1="7.1" x2="30" y2="7.8" width="0.2" layer="1"/>
<wire x1="30" y1="7.8" x2="30" y2="12.3" width="0.2" layer="1"/>
<wire x1="30" y1="12.3" x2="30.3" y2="12.6" width="0.2" layer="1"/>
<wire x1="30.3" y1="12.6" x2="30.85" y2="12.6" width="0.2" layer="1"/>
<contactref element="SEL3-Q11" pad="P$1"/>
</signal>
<signal name="SEL3-N$45">
<contactref element="SEL3-R13" pad="2"/>
<wire x1="32.9" y1="6.55" x2="32.9" y2="7.2" width="0.2" layer="1"/>
<wire x1="32.9" y1="7.2" x2="32.6" y2="7.5" width="0.2" layer="1"/>
<wire x1="32.6" y1="7.5" x2="31" y2="7.5" width="0.2" layer="1"/>
<wire x1="31" y1="7.5" x2="30.8" y2="7.7" width="0.2" layer="1"/>
<wire x1="30.8" y1="7.7" x2="30.8" y2="8.55" width="0.2" layer="1"/>
<wire x1="30.8" y1="8.55" x2="30.85" y2="8.5" width="0.2" layer="1"/>
<contactref element="SEL3-Q12" pad="P$1"/>
</signal>
<signal name="SEL3-N$46">
<wire x1="31.8" y1="10.7" x2="31.8" y2="11" width="0.2" layer="1"/>
<wire x1="31.8" y1="11" x2="32.7" y2="11.9" width="0.2" layer="1"/>
<wire x1="32.7" y1="11.9" x2="32.7" y2="12.55" width="0.2" layer="1"/>
<wire x1="32.7" y1="12.55" x2="32.75" y2="12.6" width="0.2" layer="1"/>
<contactref element="SEL3-Q11" pad="P$2"/>
<contactref element="SEL3-Q12" pad="P$3"/>
</signal>
<signal name="SEL3-N$47">
<contactref element="SEL3-R14" pad="2"/>
<wire x1="35.1" y1="6.55" x2="35.1" y2="7.1" width="0.2" layer="1"/>
<wire x1="35.1" y1="7.1" x2="34.4" y2="7.8" width="0.2" layer="1"/>
<wire x1="34.4" y1="7.8" x2="34.4" y2="12.3" width="0.2" layer="1"/>
<wire x1="34.4" y1="12.3" x2="34.6" y2="12.5" width="0.2" layer="1"/>
<wire x1="34.6" y1="12.5" x2="35.15" y2="12.5" width="0.2" layer="1"/>
<wire x1="35.15" y1="12.5" x2="35.25" y2="12.6" width="0.2" layer="1"/>
<contactref element="SEL3-Q13" pad="P$1"/>
</signal>
<signal name="SEL3-N$48">
<contactref element="SEL3-R15" pad="2"/>
<wire x1="37.3" y1="6.55" x2="37.3" y2="7.2" width="0.2" layer="1"/>
<wire x1="37.3" y1="7.2" x2="37" y2="7.5" width="0.2" layer="1"/>
<wire x1="37" y1="7.5" x2="35.5" y2="7.5" width="0.2" layer="1"/>
<wire x1="35.5" y1="7.5" x2="35.3" y2="7.7" width="0.2" layer="1"/>
<wire x1="35.3" y1="7.7" x2="35.3" y2="8.55" width="0.2" layer="1"/>
<wire x1="35.3" y1="8.55" x2="35.25" y2="8.6" width="0.2" layer="1"/>
<contactref element="SEL3-Q14" pad="P$1"/>
</signal>
<signal name="SEL3-N$49">
<wire x1="36.2" y1="10.8" x2="36.2" y2="11" width="0.2" layer="1"/>
<wire x1="36.2" y1="11" x2="37.1" y2="11.9" width="0.2" layer="1"/>
<wire x1="37.1" y1="11.9" x2="37.1" y2="12.55" width="0.2" layer="1"/>
<wire x1="37.1" y1="12.55" x2="37.15" y2="12.6" width="0.2" layer="1"/>
<contactref element="SEL3-Q13" pad="P$2"/>
<contactref element="SEL3-Q14" pad="P$3"/>
</signal>
<signal name="SEL3-N$54">
<contactref element="SEL3-R18" pad="2"/>
<wire x1="40.95" y1="14.2" x2="41" y2="14.2" width="0.2" layer="1"/>
<wire x1="41" y1="14.2" x2="40.3" y2="14.2" width="0.2" layer="1"/>
<wire x1="40.3" y1="14.2" x2="40.1" y2="14" width="0.2" layer="1"/>
<wire x1="40.1" y1="14" x2="40.1" y2="9.2" width="0.2" layer="1"/>
<wire x1="40.1" y1="9.2" x2="40.1" y2="9" width="0.2" layer="1"/>
<wire x1="40.1" y1="9" x2="41" y2="8.1" width="0.2" layer="1"/>
<wire x1="41" y1="8.1" x2="41" y2="7.25" width="0.2" layer="1"/>
<wire x1="41" y1="7.25" x2="41.05" y2="7.2" width="0.2" layer="1"/>
<contactref element="SEL3-Q17" pad="P$1"/>
</signal>
<signal name="OR1-N$7">
<contactref element="OR1-R1" pad="2"/>
<wire x1="33.55" y1="31.4" x2="33.5" y2="31.4" width="0.2" layer="1"/>
<wire x1="33.5" y1="31.4" x2="33.4" y2="31.5" width="0.2" layer="1"/>
<wire x1="33.4" y1="31.5" x2="33.4" y2="33.25" width="0.2" layer="1"/>
<wire x1="33.4" y1="33.25" x2="33.45" y2="33.3" width="0.2" layer="1"/>
<contactref element="OR1-Q1" pad="P$1"/>
</signal>
<signal name="OR1-N$9">
<contactref element="OR1-R2" pad="2"/>
<wire x1="36.85" y1="31.4" x2="36.7" y2="31.4" width="0.2" layer="1"/>
<wire x1="36.7" y1="31.4" x2="36.7" y2="33.25" width="0.2" layer="1"/>
<wire x1="36.7" y1="33.25" x2="36.75" y2="33.3" width="0.2" layer="1"/>
<contactref element="OR1-Q2" pad="P$1"/>
</signal>
<signal name="OR1-N$10">
<contactref element="OR1-R4" pad="2"/>
<wire x1="33.55" y1="37.4" x2="33.4" y2="37.4" width="0.2" layer="1"/>
<wire x1="33.4" y1="37.4" x2="33.4" y2="39.25" width="0.2" layer="1"/>
<wire x1="33.4" y1="39.25" x2="33.45" y2="39.3" width="0.2" layer="1"/>
<contactref element="OR1-Q3" pad="P$1"/>
</signal>
<signal name="OR1-N$11">
<contactref element="OR1-R3" pad="1"/>
<contactref element="OR1-R4" pad="1"/>
<wire x1="37.7" y1="35.5" x2="37.7" y2="37.1" width="0.2" layer="1"/>
<wire x1="37.7" y1="37.1" x2="37.4" y2="37.4" width="0.2" layer="1"/>
<wire x1="37.4" y1="37.4" x2="36.85" y2="37.4" width="0.2" layer="1"/>
<wire x1="36.85" y1="37.4" x2="35.25" y2="37.4" width="0.2" layer="1"/>
<wire x1="35.25" y1="37.4" x2="35.25" y2="35.75" width="0.2" layer="1"/>
<wire x1="35.25" y1="35.75" x2="35" y2="35.5" width="0.2" layer="1"/>
<wire x1="35" y1="35.5" x2="34.4" y2="35.5" width="0.2" layer="1"/>
<contactref element="OR1-Q1" pad="P$3"/>
<contactref element="OR1-Q2" pad="P$3"/>
</signal>
<signal name="OR2-N$7">
<contactref element="OR2-R1" pad="2"/>
<wire x1="41.55" y1="31.4" x2="41.5" y2="31.4" width="0.2" layer="1"/>
<wire x1="41.5" y1="31.4" x2="41.4" y2="31.5" width="0.2" layer="1"/>
<wire x1="41.4" y1="31.5" x2="41.4" y2="33.25" width="0.2" layer="1"/>
<wire x1="41.4" y1="33.25" x2="41.45" y2="33.3" width="0.2" layer="1"/>
<contactref element="OR2-Q1" pad="P$1"/>
</signal>
<signal name="OR2-N$9">
<contactref element="OR2-R2" pad="2"/>
<wire x1="44.85" y1="31.4" x2="44.7" y2="31.4" width="0.2" layer="1"/>
<wire x1="44.7" y1="31.4" x2="44.7" y2="33.25" width="0.2" layer="1"/>
<wire x1="44.7" y1="33.25" x2="44.75" y2="33.3" width="0.2" layer="1"/>
<contactref element="OR2-Q2" pad="P$1"/>
</signal>
<signal name="OR2-N$10">
<contactref element="OR2-R4" pad="2"/>
<wire x1="41.55" y1="37.4" x2="41.4" y2="37.4" width="0.2" layer="1"/>
<wire x1="41.4" y1="37.4" x2="41.4" y2="39.25" width="0.2" layer="1"/>
<wire x1="41.4" y1="39.25" x2="41.45" y2="39.3" width="0.2" layer="1"/>
<contactref element="OR2-Q3" pad="P$1"/>
</signal>
<signal name="OR2-N$11">
<contactref element="OR2-R3" pad="1"/>
<contactref element="OR2-R4" pad="1"/>
<wire x1="45.7" y1="35.5" x2="45.7" y2="37.1" width="0.2" layer="1"/>
<wire x1="45.7" y1="37.1" x2="45.4" y2="37.4" width="0.2" layer="1"/>
<wire x1="45.4" y1="37.4" x2="44.85" y2="37.4" width="0.2" layer="1"/>
<wire x1="44.85" y1="37.4" x2="43.25" y2="37.4" width="0.2" layer="1"/>
<wire x1="43.25" y1="37.4" x2="43.25" y2="35.75" width="0.2" layer="1"/>
<wire x1="43.25" y1="35.75" x2="43" y2="35.5" width="0.2" layer="1"/>
<wire x1="43" y1="35.5" x2="42.4" y2="35.5" width="0.2" layer="1"/>
<contactref element="OR2-Q1" pad="P$3"/>
<contactref element="OR2-Q2" pad="P$3"/>
</signal>
<signal name="SEL1-N$53">
<contactref element="SEL1-R2" pad="2"/>
<wire x1="41.75" y1="20.2" x2="41.75" y2="20.15" width="0.2" layer="1"/>
<wire x1="41.75" y1="20.15" x2="41.4" y2="19.8" width="0.2" layer="1"/>
<wire x1="41.4" y1="19.8" x2="41" y2="19.4" width="0.2" layer="1"/>
<wire x1="41" y1="19.4" x2="40.8" y2="19.2" width="0.2" layer="1"/>
<wire x1="40.8" y1="19.2" x2="40.7" y2="19.1" width="0.2" layer="1"/>
<wire x1="40.7" y1="19.1" x2="39" y2="19.1" width="0.2" layer="1"/>
<wire x1="39" y1="19.1" x2="38.8" y2="18.9" width="0.2" layer="1"/>
<wire x1="38.8" y1="18.9" x2="38.8" y2="18.3" width="0.2" layer="1"/>
<wire x1="38.8" y1="18.3" x2="38.6" y2="18.1" width="0.2" layer="1"/>
<wire x1="38.6" y1="18.1" x2="35.75" y2="18.1" width="0.2" layer="1"/>
<wire x1="35.75" y1="18.1" x2="35.7" y2="18.05" width="0.2" layer="1"/>
<contactref element="SEL1-Q1" pad="P$1"/>
</signal>
<signal name="SEL1-N$55">
<contactref element="SEL1-R3" pad="2"/>
<wire x1="41.75" y1="18" x2="41.5" y2="18" width="0.2" layer="1"/>
<wire x1="41.5" y1="18" x2="41.4" y2="18.1" width="0.2" layer="1"/>
<wire x1="41.4" y1="18.1" x2="39.95" y2="18.1" width="0.2" layer="1"/>
<wire x1="39.95" y1="18.1" x2="39.9" y2="18.15" width="0.2" layer="1"/>
<contactref element="SEL1-Q2" pad="P$1"/>
</signal>
<signal name="SEL1-N$56">
<wire x1="37.7" y1="19.1" x2="37.7" y2="19.7" width="0.2" layer="1"/>
<wire x1="37.7" y1="19.7" x2="37.5" y2="19.9" width="0.2" layer="1"/>
<wire x1="37.5" y1="19.9" x2="35.75" y2="19.9" width="0.2" layer="1"/>
<wire x1="35.75" y1="19.9" x2="35.7" y2="19.95" width="0.2" layer="1"/>
<contactref element="SEL1-Q1" pad="P$2"/>
<contactref element="SEL1-Q2" pad="P$3"/>
</signal>
<signal name="SEL1-SEL_INT1">
<contactref element="SEL1-R1" pad="1"/>
<contactref element="SEL1-R8" pad="1"/>
<wire x1="33.5" y1="19" x2="33.5" y2="19.1" width="0.2" layer="1"/>
<wire x1="33.5" y1="19.1" x2="33.5" y2="24" width="0.2" layer="1"/>
<wire x1="33.1" y1="24.1" x2="33.3" y2="23.9" width="0.2" layer="1"/>
<wire x1="34.7" y1="26.25" x2="33.85" y2="26.25" width="0.2" layer="1"/>
<wire x1="33.85" y1="26.25" x2="33.6" y2="26" width="0.2" layer="1"/>
<wire x1="33.6" y1="26" x2="33.6" y2="24.1" width="0.2" layer="1"/>
<wire x1="33.6" y1="24.1" x2="33.5" y2="24" width="0.2" layer="1"/>
<wire x1="33.5" y1="24" x2="33.4" y2="24" width="0.2" layer="1"/>
<wire x1="33.4" y1="24" x2="33.3" y2="23.9" width="0.2" layer="1"/>
<wire x1="34.7" y1="26.25" x2="36.9" y2="26.25" width="0.2" layer="1"/>
<contactref element="SEL1-Q1" pad="P$3"/>
<contactref element="SEL1-Q5" pad="P$3"/>
</signal>
<signal name="SEL1-N$57">
<contactref element="SEL1-R6" pad="2"/>
<wire x1="40.9" y1="21.5" x2="36.1" y2="21.5" width="0.2" layer="1"/>
<wire x1="36.1" y1="21.5" x2="35.7" y2="21.9" width="0.2" layer="1"/>
<wire x1="35.7" y1="21.9" x2="35.7" y2="23.05" width="0.2" layer="1"/>
<wire x1="41.75" y1="24.6" x2="41.75" y2="23.85" width="0.2" layer="1"/>
<wire x1="41.75" y1="23.85" x2="42.1" y2="23.5" width="0.2" layer="1"/>
<wire x1="42.1" y1="23.5" x2="42.4" y2="23.5" width="0.2" layer="1"/>
<wire x1="42.4" y1="23.5" x2="42.6" y2="23.3" width="0.2" layer="1"/>
<wire x1="42.6" y1="23.3" x2="42.6" y2="21.9" width="0.2" layer="1"/>
<wire x1="42.6" y1="21.9" x2="42.2" y2="21.5" width="0.2" layer="1"/>
<wire x1="42.2" y1="21.5" x2="40.9" y2="21.5" width="0.2" layer="1"/>
<contactref element="SEL1-Q5" pad="P$1"/>
</signal>
<signal name="SEL1-N$58">
<contactref element="SEL1-R7" pad="2"/>
<wire x1="41.75" y1="22.5" x2="41.8" y2="22.5" width="0.2" layer="1"/>
<wire x1="41.8" y1="22.5" x2="39.95" y2="22.5" width="0.2" layer="1"/>
<wire x1="39.95" y1="22.5" x2="39.9" y2="22.55" width="0.2" layer="1"/>
<contactref element="SEL1-Q4" pad="P$1"/>
</signal>
<signal name="SEL1-N$59">
<wire x1="37.7" y1="23.5" x2="37.7" y2="24.6" width="0.2" layer="1"/>
<wire x1="37.7" y1="24.6" x2="37.4" y2="24.9" width="0.2" layer="1"/>
<wire x1="37.4" y1="24.9" x2="35.75" y2="24.9" width="0.2" layer="1"/>
<wire x1="35.75" y1="24.9" x2="35.7" y2="24.95" width="0.2" layer="1"/>
<contactref element="SEL1-Q4" pad="P$3"/>
<contactref element="SEL1-Q5" pad="P$2"/>
</signal>
<signal name="SEL1-N$60">
<contactref element="SEL1-R8" pad="2"/>
<wire x1="38.8" y1="28.05" x2="37" y2="28.05" width="0.2" layer="1"/>
<wire x1="37" y1="28.05" x2="36.9" y2="27.95" width="0.2" layer="1"/>
<contactref element="SEL1-Q6" pad="P$1"/>
</signal>
<signal name="SEL1-I-S2">
<contactref element="SEL1-R6" pad="1"/>
<contactref element="SEL1-R4" pad="1"/>
<wire x1="45.7" y1="24.6" x2="45.8" y2="24.8" width="0.2" layer="1"/>
<wire x1="45.8" y1="24.8" x2="45.5" y2="25.1" width="0.2" layer="1"/>
<wire x1="45.5" y1="25.1" x2="45.5" y2="26.15" width="0.2" layer="1"/>
<wire x1="45.5" y1="26.15" x2="45.2" y2="26.45" width="0.2" layer="1"/>
<wire x1="45.5" y1="25.1" x2="45.5" y2="24.9" width="0.2" layer="1"/>
<wire x1="45.5" y1="24.9" x2="45.7" y2="24.6" width="0.2" layer="1"/>
<wire x1="45.7" y1="24.6" x2="43.45" y2="24.6" width="0.2" layer="1"/>
<contactref element="SEL1-Q3" pad="P$3"/>
</signal>
<signal name="SEL1-N$62">
<contactref element="SEL1-R5" pad="2"/>
<wire x1="46.65" y1="20.2" x2="46.65" y2="20.45" width="0.2" layer="1"/>
<wire x1="46.65" y1="20.45" x2="46.6" y2="20.5" width="0.2" layer="1"/>
<wire x1="46.6" y1="20.5" x2="46.6" y2="21" width="0.2" layer="1"/>
<wire x1="46.6" y1="21" x2="46.3" y2="21.3" width="0.2" layer="1"/>
<wire x1="46.3" y1="21.3" x2="45" y2="21.3" width="0.2" layer="1"/>
<wire x1="45" y1="21.3" x2="44.8" y2="21.5" width="0.2" layer="1"/>
<wire x1="44.8" y1="21.5" x2="44.8" y2="22.35" width="0.2" layer="1"/>
<wire x1="44.8" y1="22.35" x2="44.75" y2="22.4" width="0.2" layer="1"/>
<contactref element="SEL1-Q3" pad="P$1"/>
</signal>
<signal name="NOT1-N$14">
<contactref element="NOT1-R1" pad="2"/>
<wire x1="44.15" y1="9.3" x2="44.15" y2="9.35" width="0.2" layer="1"/>
<wire x1="44.15" y1="9.35" x2="44.1" y2="9.4" width="0.2" layer="1"/>
<wire x1="44.1" y1="9.4" x2="44.1" y2="11.15" width="0.2" layer="1"/>
<wire x1="44.1" y1="11.15" x2="44.05" y2="11.2" width="0.2" layer="1"/>
<contactref element="NOT1-Q1" pad="P$1"/>
</signal>
<signal name="XOR2-N$19">
<wire x1="5.25" y1="35.1" x2="5.25" y2="35.95" width="0.2" layer="1"/>
<wire x1="5.25" y1="35.95" x2="5.5" y2="36.2" width="0.2" layer="1"/>
<wire x1="5.5" y1="36.2" x2="7.5" y2="36.2" width="0.2" layer="1"/>
<wire x1="7.5" y1="36.2" x2="7.8" y2="36.5" width="0.2" layer="1"/>
<wire x1="7.8" y1="36.5" x2="7.8" y2="37.3" width="0.2" layer="1"/>
<contactref element="XOR2-Q1" pad="P$2"/>
<contactref element="XOR2-Q2" pad="P$3"/>
</signal>
<signal name="XOR2-N$21">
<contactref element="XOR2-R1" pad="2"/>
<wire x1="3.8" y1="33.25" x2="3.9" y2="33.3" width="0.2" layer="1"/>
<wire x1="3.9" y1="33.3" x2="3.8" y2="33.3" width="0.2" layer="1"/>
<wire x1="3.8" y1="33.3" x2="3.5" y2="33.5" width="0.2" layer="1"/>
<wire x1="3.5" y1="33.5" x2="3.5" y2="34.95" width="0.2" layer="1"/>
<wire x1="3.5" y1="34.95" x2="3.35" y2="35.1" width="0.2" layer="1"/>
<contactref element="XOR2-Q1" pad="P$1"/>
</signal>
<signal name="XOR2-N$22">
<contactref element="XOR2-R2" pad="2"/>
<wire x1="6.1" y1="33.25" x2="6.45" y2="33.25" width="0.2" layer="1"/>
<wire x1="6.45" y1="33.25" x2="6.7" y2="33.5" width="0.2" layer="1"/>
<wire x1="6.7" y1="33.5" x2="6.7" y2="34.95" width="0.2" layer="1"/>
<wire x1="6.7" y1="34.95" x2="6.85" y2="35.1" width="0.2" layer="1"/>
<contactref element="XOR2-Q2" pad="P$1"/>
</signal>
<signal name="XOR2-N$23">
<contactref element="XOR2-R5" pad="2"/>
<wire x1="10.7" y1="34.75" x2="10.525" y2="34.925" width="0.2" layer="1"/>
<wire x1="10.525" y1="34.925" x2="10.35" y2="35.1" width="0.2" layer="1"/>
<wire x1="10.5" y1="34.85" x2="10.525" y2="34.925" width="0.2" layer="1"/>
<wire x1="13" y1="33.25" x2="12.95" y2="33.25" width="0.2" layer="1"/>
<wire x1="12.95" y1="33.25" x2="12.6" y2="33.5" width="0.2" layer="1"/>
<wire x1="12.6" y1="33.5" x2="12" y2="33.5" width="0.2" layer="1"/>
<wire x1="12" y1="33.5" x2="11" y2="34.5" width="0.2" layer="1"/>
<wire x1="11" y1="34.5" x2="10.7" y2="34.5" width="0.2" layer="1"/>
<wire x1="10.7" y1="34.5" x2="10.4" y2="34.6" width="0.2" layer="1"/>
<wire x1="10.4" y1="34.6" x2="10.4" y2="34.75" width="0.2" layer="1"/>
<wire x1="10.4" y1="34.75" x2="10.5" y2="34.85" width="0.2" layer="1"/>
<contactref element="XOR2-Q3" pad="P$1"/>
</signal>
<signal name="XOR2-N$24">
<contactref element="XOR2-R4" pad="2"/>
<wire x1="13.9" y1="35.05" x2="13.85" y2="35.1" width="0.2" layer="1"/>
<wire x1="15.3" y1="33.25" x2="15.25" y2="33.25" width="0.2" layer="1"/>
<wire x1="15.25" y1="33.25" x2="14.9" y2="33.5" width="0.2" layer="1"/>
<wire x1="14.9" y1="33.5" x2="14.9" y2="33.9" width="0.2" layer="1"/>
<wire x1="14.9" y1="33.9" x2="14.2" y2="34.6" width="0.2" layer="1"/>
<wire x1="14.2" y1="34.6" x2="14.2" y2="34.75" width="0.2" layer="1"/>
<wire x1="14.2" y1="34.75" x2="13.85" y2="35.1" width="0.2" layer="1"/>
<contactref element="XOR2-Q4" pad="P$1"/>
</signal>
<signal name="XOR2-N$25">
<contactref element="XOR2-R8" pad="2"/>
<wire x1="8.3" y1="33.25" x2="8.3" y2="33.7" width="0.2" layer="1"/>
<wire x1="8.3" y1="33.7" x2="7.8" y2="34.2" width="0.2" layer="1"/>
<wire x1="7.8" y1="34.2" x2="7.8" y2="35.9" width="0.2" layer="1"/>
<wire x1="7.8" y1="35.9" x2="8.1" y2="36.2" width="0.2" layer="1"/>
<wire x1="8.1" y1="36.2" x2="15.5" y2="36.2" width="0.2" layer="1"/>
<wire x1="15.5" y1="36.2" x2="15.7" y2="36.4" width="0.2" layer="1"/>
<wire x1="15.7" y1="36.4" x2="15.7" y2="38" width="0.2" layer="1"/>
<wire x1="15.7" y1="38" x2="15.5" y2="38.2" width="0.2" layer="1"/>
<wire x1="15.5" y1="38.2" x2="15.4" y2="38.3" width="0.2" layer="1"/>
<wire x1="15.4" y1="38.3" x2="14.1" y2="38.3" width="0.2" layer="1"/>
<wire x1="14.1" y1="38.3" x2="13.9" y2="38.5" width="0.2" layer="1"/>
<wire x1="13.9" y1="38.5" x2="13.8" y2="38.6" width="0.2" layer="1"/>
<wire x1="13.8" y1="38.6" x2="13.8" y2="39.25" width="0.2" layer="1"/>
<wire x1="13.8" y1="39.25" x2="13.85" y2="39.3" width="0.2" layer="1"/>
<contactref element="XOR2-Q6" pad="P$1"/>
</signal>
<signal name="XOR2-N$26">
<contactref element="XOR2-R7" pad="2"/>
<wire x1="8.65" y1="39.2" x2="10.25" y2="39.2" width="0.2" layer="1"/>
<wire x1="10.25" y1="39.2" x2="10.35" y2="39.3" width="0.2" layer="1"/>
<contactref element="XOR2-Q5" pad="P$1"/>
</signal>
<signal name="XOR3-N$19">
<wire x1="20.25" y1="22.1" x2="20.25" y2="22.95" width="0.2" layer="1"/>
<wire x1="20.25" y1="22.95" x2="20.5" y2="23.2" width="0.2" layer="1"/>
<wire x1="20.5" y1="23.2" x2="22.5" y2="23.2" width="0.2" layer="1"/>
<wire x1="22.5" y1="23.2" x2="22.8" y2="23.5" width="0.2" layer="1"/>
<wire x1="22.8" y1="23.5" x2="22.8" y2="24.3" width="0.2" layer="1"/>
<contactref element="XOR3-Q1" pad="P$2"/>
<contactref element="XOR3-Q2" pad="P$3"/>
</signal>
<signal name="XOR3-N$21">
<contactref element="XOR3-R1" pad="2"/>
<wire x1="18.8" y1="20.25" x2="18.9" y2="20.3" width="0.2" layer="1"/>
<wire x1="18.9" y1="20.3" x2="18.8" y2="20.3" width="0.2" layer="1"/>
<wire x1="18.8" y1="20.3" x2="18.5" y2="20.5" width="0.2" layer="1"/>
<wire x1="18.5" y1="20.5" x2="18.5" y2="21.95" width="0.2" layer="1"/>
<wire x1="18.5" y1="21.95" x2="18.35" y2="22.1" width="0.2" layer="1"/>
<contactref element="XOR3-Q1" pad="P$1"/>
</signal>
<signal name="XOR3-N$22">
<contactref element="XOR3-R2" pad="2"/>
<wire x1="21.1" y1="20.25" x2="21.45" y2="20.25" width="0.2" layer="1"/>
<wire x1="21.45" y1="20.25" x2="21.7" y2="20.5" width="0.2" layer="1"/>
<wire x1="21.7" y1="20.5" x2="21.7" y2="21.95" width="0.2" layer="1"/>
<wire x1="21.7" y1="21.95" x2="21.85" y2="22.1" width="0.2" layer="1"/>
<contactref element="XOR3-Q2" pad="P$1"/>
</signal>
<signal name="XOR3-N$23">
<contactref element="XOR3-R5" pad="2"/>
<wire x1="25.7" y1="21.75" x2="25.525" y2="21.925" width="0.2" layer="1"/>
<wire x1="25.525" y1="21.925" x2="25.35" y2="22.1" width="0.2" layer="1"/>
<wire x1="25.5" y1="21.85" x2="25.525" y2="21.925" width="0.2" layer="1"/>
<wire x1="28" y1="20.25" x2="27.95" y2="20.25" width="0.2" layer="1"/>
<wire x1="27.95" y1="20.25" x2="27.6" y2="20.5" width="0.2" layer="1"/>
<wire x1="27.6" y1="20.5" x2="27" y2="20.5" width="0.2" layer="1"/>
<wire x1="27" y1="20.5" x2="26" y2="21.5" width="0.2" layer="1"/>
<wire x1="26" y1="21.5" x2="25.7" y2="21.5" width="0.2" layer="1"/>
<wire x1="25.7" y1="21.5" x2="25.4" y2="21.6" width="0.2" layer="1"/>
<wire x1="25.4" y1="21.6" x2="25.4" y2="21.75" width="0.2" layer="1"/>
<wire x1="25.4" y1="21.75" x2="25.5" y2="21.85" width="0.2" layer="1"/>
<contactref element="XOR3-Q3" pad="P$1"/>
</signal>
<signal name="XOR3-N$24">
<contactref element="XOR3-R4" pad="2"/>
<wire x1="28.9" y1="22.05" x2="28.85" y2="22.1" width="0.2" layer="1"/>
<wire x1="30.3" y1="20.25" x2="30.25" y2="20.25" width="0.2" layer="1"/>
<wire x1="30.25" y1="20.25" x2="29.9" y2="20.5" width="0.2" layer="1"/>
<wire x1="29.9" y1="20.5" x2="29.9" y2="20.9" width="0.2" layer="1"/>
<wire x1="29.9" y1="20.9" x2="29.2" y2="21.6" width="0.2" layer="1"/>
<wire x1="29.2" y1="21.6" x2="29.2" y2="21.75" width="0.2" layer="1"/>
<wire x1="29.2" y1="21.75" x2="28.85" y2="22.1" width="0.2" layer="1"/>
<contactref element="XOR3-Q4" pad="P$1"/>
</signal>
<signal name="XOR3-N$25">
<contactref element="XOR3-R8" pad="2"/>
<wire x1="23.3" y1="20.25" x2="23.3" y2="20.7" width="0.2" layer="1"/>
<wire x1="23.3" y1="20.7" x2="22.8" y2="21.2" width="0.2" layer="1"/>
<wire x1="22.8" y1="21.2" x2="22.8" y2="22.9" width="0.2" layer="1"/>
<wire x1="22.8" y1="22.9" x2="23.1" y2="23.2" width="0.2" layer="1"/>
<wire x1="23.1" y1="23.2" x2="30.5" y2="23.2" width="0.2" layer="1"/>
<wire x1="30.5" y1="23.2" x2="30.7" y2="23.4" width="0.2" layer="1"/>
<wire x1="30.7" y1="23.4" x2="30.7" y2="25" width="0.2" layer="1"/>
<wire x1="30.7" y1="25" x2="30.5" y2="25.2" width="0.2" layer="1"/>
<wire x1="30.5" y1="25.2" x2="30.4" y2="25.3" width="0.2" layer="1"/>
<wire x1="30.4" y1="25.3" x2="29.1" y2="25.3" width="0.2" layer="1"/>
<wire x1="29.1" y1="25.3" x2="28.9" y2="25.5" width="0.2" layer="1"/>
<wire x1="28.9" y1="25.5" x2="28.8" y2="25.6" width="0.2" layer="1"/>
<wire x1="28.8" y1="25.6" x2="28.8" y2="26.25" width="0.2" layer="1"/>
<wire x1="28.8" y1="26.25" x2="28.85" y2="26.3" width="0.2" layer="1"/>
<contactref element="XOR3-Q6" pad="P$1"/>
</signal>
<signal name="XOR3-N$26">
<contactref element="XOR3-R7" pad="2"/>
<wire x1="23.65" y1="26.2" x2="25.25" y2="26.2" width="0.2" layer="1"/>
<wire x1="25.25" y1="26.2" x2="25.35" y2="26.3" width="0.2" layer="1"/>
<contactref element="XOR3-Q5" pad="P$1"/>
</signal>
<signal name="XOR3-NOR">
<contactref element="XOR3-R6" pad="1"/>
<wire x1="29.8" y1="24.3" x2="29.8" y2="23.8" width="0.2" layer="1"/>
<wire x1="29.8" y1="23.8" x2="26.4" y2="23.8" width="0.2" layer="1"/>
<wire x1="26.4" y1="23.8" x2="26.3" y2="23.9" width="0.2" layer="1"/>
<wire x1="26.3" y1="23.9" x2="26.3" y2="24.3" width="0.2" layer="1"/>
<wire x1="25.1" y1="24.8" x2="25.5" y2="24.4" width="0.2" layer="1"/>
<wire x1="25.5" y1="24.4" x2="25.6" y2="24.3" width="0.2" layer="1"/>
<wire x1="25.6" y1="24.3" x2="26.3" y2="24.3" width="0.2" layer="1"/>
<wire x1="25.1" y1="24.8" x2="24.6" y2="25.3" width="0.2" layer="1"/>
<wire x1="24.6" y1="25.3" x2="23.1" y2="25.3" width="0.2" layer="1"/>
<wire x1="23.1" y1="25.3" x2="22.8" y2="25.6" width="0.2" layer="1"/>
<wire x1="22.8" y1="25.6" x2="22.8" y2="26" width="0.2" layer="1"/>
<contactref element="XOR3-R7" pad="1"/>
<wire x1="20.2" y1="26.25" x2="20.45" y2="26.2" width="0.2" layer="1"/>
<wire x1="21.95" y1="26.2" x2="22.6" y2="26.2" width="0.2" layer="1"/>
<wire x1="22.6" y1="26.2" x2="22.8" y2="26" width="0.2" layer="1"/>
<wire x1="20.2" y1="26.25" x2="21.9" y2="26.25" width="0.2" layer="1"/>
<wire x1="21.9" y1="26.25" x2="21.95" y2="26.2" width="0.2" layer="1"/>
<contactref element="XOR3-Q3" pad="P$3"/>
<contactref element="XOR3-Q4" pad="P$3"/>
</signal>
<signal name="XOR1-N$19">
<wire x1="5.25" y1="22.1" x2="5.25" y2="22.95" width="0.2" layer="1"/>
<wire x1="5.25" y1="22.95" x2="5.5" y2="23.2" width="0.2" layer="1"/>
<wire x1="5.5" y1="23.2" x2="7.5" y2="23.2" width="0.2" layer="1"/>
<wire x1="7.5" y1="23.2" x2="7.8" y2="23.5" width="0.2" layer="1"/>
<wire x1="7.8" y1="23.5" x2="7.8" y2="24.3" width="0.2" layer="1"/>
<contactref element="XOR1-Q1" pad="P$2"/>
<contactref element="XOR1-Q2" pad="P$3"/>
</signal>
<signal name="XOR1-N$21">
<contactref element="XOR1-R1" pad="2"/>
<wire x1="3.8" y1="20.25" x2="3.9" y2="20.3" width="0.2" layer="1"/>
<wire x1="3.9" y1="20.3" x2="3.8" y2="20.3" width="0.2" layer="1"/>
<wire x1="3.8" y1="20.3" x2="3.5" y2="20.5" width="0.2" layer="1"/>
<wire x1="3.5" y1="20.5" x2="3.5" y2="21.95" width="0.2" layer="1"/>
<wire x1="3.5" y1="21.95" x2="3.35" y2="22.1" width="0.2" layer="1"/>
<contactref element="XOR1-Q1" pad="P$1"/>
</signal>
<signal name="XOR1-N$22">
<contactref element="XOR1-R2" pad="2"/>
<wire x1="6.1" y1="20.25" x2="6.45" y2="20.25" width="0.2" layer="1"/>
<wire x1="6.45" y1="20.25" x2="6.7" y2="20.5" width="0.2" layer="1"/>
<wire x1="6.7" y1="20.5" x2="6.7" y2="21.95" width="0.2" layer="1"/>
<wire x1="6.7" y1="21.95" x2="6.85" y2="22.1" width="0.2" layer="1"/>
<contactref element="XOR1-Q2" pad="P$1"/>
</signal>
<signal name="XOR1-N$23">
<contactref element="XOR1-R5" pad="2"/>
<wire x1="10.7" y1="21.75" x2="10.525" y2="21.925" width="0.2" layer="1"/>
<wire x1="10.525" y1="21.925" x2="10.35" y2="22.1" width="0.2" layer="1"/>
<wire x1="10.5" y1="21.85" x2="10.525" y2="21.925" width="0.2" layer="1"/>
<wire x1="13" y1="20.25" x2="12.95" y2="20.25" width="0.2" layer="1"/>
<wire x1="12.95" y1="20.25" x2="12.6" y2="20.5" width="0.2" layer="1"/>
<wire x1="12.6" y1="20.5" x2="12" y2="20.5" width="0.2" layer="1"/>
<wire x1="12" y1="20.5" x2="11" y2="21.5" width="0.2" layer="1"/>
<wire x1="11" y1="21.5" x2="10.7" y2="21.5" width="0.2" layer="1"/>
<wire x1="10.7" y1="21.5" x2="10.4" y2="21.6" width="0.2" layer="1"/>
<wire x1="10.4" y1="21.6" x2="10.4" y2="21.75" width="0.2" layer="1"/>
<wire x1="10.4" y1="21.75" x2="10.5" y2="21.85" width="0.2" layer="1"/>
<contactref element="XOR1-Q3" pad="P$1"/>
</signal>
<signal name="XOR1-N$24">
<contactref element="XOR1-R4" pad="2"/>
<wire x1="13.9" y1="22.05" x2="13.85" y2="22.1" width="0.2" layer="1"/>
<wire x1="15.3" y1="20.25" x2="15.25" y2="20.25" width="0.2" layer="1"/>
<wire x1="15.25" y1="20.25" x2="14.9" y2="20.5" width="0.2" layer="1"/>
<wire x1="14.9" y1="20.5" x2="14.9" y2="20.9" width="0.2" layer="1"/>
<wire x1="14.9" y1="20.9" x2="14.2" y2="21.6" width="0.2" layer="1"/>
<wire x1="14.2" y1="21.6" x2="14.2" y2="21.75" width="0.2" layer="1"/>
<wire x1="14.2" y1="21.75" x2="13.85" y2="22.1" width="0.2" layer="1"/>
<contactref element="XOR1-Q4" pad="P$1"/>
</signal>
<signal name="XOR1-N$25">
<contactref element="XOR1-R8" pad="2"/>
<wire x1="8.3" y1="20.25" x2="8.3" y2="20.7" width="0.2" layer="1"/>
<wire x1="8.3" y1="20.7" x2="7.8" y2="21.2" width="0.2" layer="1"/>
<wire x1="7.8" y1="21.2" x2="7.8" y2="22.9" width="0.2" layer="1"/>
<wire x1="7.8" y1="22.9" x2="8.1" y2="23.2" width="0.2" layer="1"/>
<wire x1="8.1" y1="23.2" x2="15.5" y2="23.2" width="0.2" layer="1"/>
<wire x1="15.5" y1="23.2" x2="15.7" y2="23.4" width="0.2" layer="1"/>
<wire x1="15.7" y1="23.4" x2="15.7" y2="25" width="0.2" layer="1"/>
<wire x1="15.7" y1="25" x2="15.5" y2="25.2" width="0.2" layer="1"/>
<wire x1="15.5" y1="25.2" x2="15.4" y2="25.3" width="0.2" layer="1"/>
<wire x1="15.4" y1="25.3" x2="14.1" y2="25.3" width="0.2" layer="1"/>
<wire x1="14.1" y1="25.3" x2="13.9" y2="25.5" width="0.2" layer="1"/>
<wire x1="13.9" y1="25.5" x2="13.8" y2="25.6" width="0.2" layer="1"/>
<wire x1="13.8" y1="25.6" x2="13.8" y2="26.25" width="0.2" layer="1"/>
<wire x1="13.8" y1="26.25" x2="13.85" y2="26.3" width="0.2" layer="1"/>
<contactref element="XOR1-Q6" pad="P$1"/>
</signal>
<signal name="XOR1-N$26">
<contactref element="XOR1-R7" pad="2"/>
<wire x1="8.65" y1="26.2" x2="10.25" y2="26.2" width="0.2" layer="1"/>
<wire x1="10.25" y1="26.2" x2="10.35" y2="26.3" width="0.2" layer="1"/>
<contactref element="XOR1-Q5" pad="P$1"/>
</signal>
<signal name="XOR1-NOR">
<contactref element="XOR1-R6" pad="1"/>
<wire x1="14.8" y1="24.3" x2="14.8" y2="23.8" width="0.2" layer="1"/>
<wire x1="14.8" y1="23.8" x2="11.4" y2="23.8" width="0.2" layer="1"/>
<wire x1="11.4" y1="23.8" x2="11.3" y2="23.9" width="0.2" layer="1"/>
<wire x1="11.3" y1="23.9" x2="11.3" y2="24.3" width="0.2" layer="1"/>
<wire x1="10.1" y1="24.8" x2="10.5" y2="24.4" width="0.2" layer="1"/>
<wire x1="10.5" y1="24.4" x2="10.6" y2="24.3" width="0.2" layer="1"/>
<wire x1="10.6" y1="24.3" x2="11.3" y2="24.3" width="0.2" layer="1"/>
<wire x1="10.1" y1="24.8" x2="9.6" y2="25.3" width="0.2" layer="1"/>
<wire x1="9.6" y1="25.3" x2="8.1" y2="25.3" width="0.2" layer="1"/>
<wire x1="8.1" y1="25.3" x2="7.8" y2="25.6" width="0.2" layer="1"/>
<wire x1="7.8" y1="25.6" x2="7.8" y2="26" width="0.2" layer="1"/>
<contactref element="XOR1-R7" pad="1"/>
<wire x1="5.2" y1="26.25" x2="5.45" y2="26.2" width="0.2" layer="1"/>
<wire x1="6.95" y1="26.2" x2="7.6" y2="26.2" width="0.2" layer="1"/>
<wire x1="7.6" y1="26.2" x2="7.8" y2="26" width="0.2" layer="1"/>
<wire x1="5.2" y1="26.25" x2="6.9" y2="26.25" width="0.2" layer="1"/>
<wire x1="6.9" y1="26.25" x2="6.95" y2="26.2" width="0.2" layer="1"/>
<contactref element="XOR1-Q3" pad="P$3"/>
<contactref element="XOR1-Q4" pad="P$3"/>
</signal>
<signal name="XOR1-AND">
<contactref element="XOR1-R3" pad="2"/>
<wire x1="8.7" y1="22.05" x2="8.75" y2="22.1" width="0.2" layer="1"/>
<wire x1="8.8" y1="22.15" x2="8.75" y2="22.1" width="0.2" layer="1"/>
<wire x1="8.7" y1="22.05" x2="9.05" y2="22.05" width="0.2" layer="1"/>
<wire x1="9.05" y1="22.05" x2="9.1" y2="22" width="0.2" layer="1"/>
<wire x1="10.65" y1="20.2" x2="10.7" y2="20.25" width="0.2" layer="1"/>
<wire x1="8.65" y1="22" x2="8.75" y2="22.1" width="0.2" layer="1"/>
<wire x1="8.5" y1="21.9" x2="8.55" y2="21.9" width="0.2" layer="1"/>
<wire x1="9.1" y1="22" x2="9.1" y2="21.3" width="0.2" layer="1"/>
<wire x1="9.1" y1="21.3" x2="9.6" y2="20.8" width="0.2" layer="1"/>
<wire x1="9.6" y1="20.8" x2="9.6" y2="20.3" width="0.2" layer="1"/>
<wire x1="10.7" y1="20.25" x2="10.7" y2="20.3" width="0.2" layer="1"/>
<wire x1="10.7" y1="20.3" x2="9.6" y2="20.3" width="0.2" layer="1"/>
<contactref element="XOR1-R8" pad="1"/>
<wire x1="9.6" y1="20.3" x2="9.6" y2="18.8" width="0.2" layer="1"/>
<wire x1="9.6" y1="18.8" x2="9.3" y2="18.5" width="0.2" layer="1"/>
<wire x1="9.3" y1="18.5" x2="8.35" y2="18.5" width="0.2" layer="1"/>
<wire x1="8.35" y1="18.5" x2="8.35" y2="18.7" width="0.2" layer="1"/>
<wire x1="8.3" y1="18.55" x2="8.3" y2="18.65" width="0.2" layer="1"/>
<wire x1="8.3" y1="18.65" x2="8.35" y2="18.7" width="0.2" layer="1"/>
<wire x1="8.55" y1="21.9" x2="8.75" y2="21.9" width="0.4064" layer="1"/>
<wire x1="8.75" y1="21.9" x2="8.75" y2="22.1" width="0.4064" layer="1"/>
<contactref element="XOR1-Q2" pad="P$2"/>
</signal>
<signal name="XOR4-N$19">
<wire x1="20.25" y1="35.1" x2="20.25" y2="35.95" width="0.2" layer="1"/>
<wire x1="20.25" y1="35.95" x2="20.5" y2="36.2" width="0.2" layer="1"/>
<wire x1="20.5" y1="36.2" x2="22.5" y2="36.2" width="0.2" layer="1"/>
<wire x1="22.5" y1="36.2" x2="22.8" y2="36.5" width="0.2" layer="1"/>
<wire x1="22.8" y1="36.5" x2="22.8" y2="37.3" width="0.2" layer="1"/>
<contactref element="XOR4-Q1" pad="P$2"/>
<contactref element="XOR4-Q2" pad="P$3"/>
</signal>
<signal name="XOR4-N$21">
<contactref element="XOR4-R1" pad="2"/>
<wire x1="18.8" y1="33.25" x2="18.9" y2="33.3" width="0.2" layer="1"/>
<wire x1="18.9" y1="33.3" x2="18.8" y2="33.3" width="0.2" layer="1"/>
<wire x1="18.8" y1="33.3" x2="18.5" y2="33.5" width="0.2" layer="1"/>
<wire x1="18.5" y1="33.5" x2="18.5" y2="34.95" width="0.2" layer="1"/>
<wire x1="18.5" y1="34.95" x2="18.35" y2="35.1" width="0.2" layer="1"/>
<contactref element="XOR4-Q1" pad="P$1"/>
</signal>
<signal name="XOR4-N$22">
<contactref element="XOR4-R2" pad="2"/>
<wire x1="21.1" y1="33.25" x2="21.45" y2="33.25" width="0.2" layer="1"/>
<wire x1="21.45" y1="33.25" x2="21.7" y2="33.5" width="0.2" layer="1"/>
<wire x1="21.7" y1="33.5" x2="21.7" y2="34.95" width="0.2" layer="1"/>
<wire x1="21.7" y1="34.95" x2="21.85" y2="35.1" width="0.2" layer="1"/>
<contactref element="XOR4-Q2" pad="P$1"/>
</signal>
<signal name="XOR4-N$23">
<contactref element="XOR4-R5" pad="2"/>
<wire x1="25.7" y1="34.75" x2="25.525" y2="34.925" width="0.2" layer="1"/>
<wire x1="25.525" y1="34.925" x2="25.35" y2="35.1" width="0.2" layer="1"/>
<wire x1="25.5" y1="34.85" x2="25.525" y2="34.925" width="0.2" layer="1"/>
<wire x1="28" y1="33.25" x2="27.95" y2="33.25" width="0.2" layer="1"/>
<wire x1="27.95" y1="33.25" x2="27.6" y2="33.5" width="0.2" layer="1"/>
<wire x1="27.6" y1="33.5" x2="27" y2="33.5" width="0.2" layer="1"/>
<wire x1="27" y1="33.5" x2="26" y2="34.5" width="0.2" layer="1"/>
<wire x1="26" y1="34.5" x2="25.7" y2="34.5" width="0.2" layer="1"/>
<wire x1="25.7" y1="34.5" x2="25.4" y2="34.6" width="0.2" layer="1"/>
<wire x1="25.4" y1="34.6" x2="25.4" y2="34.75" width="0.2" layer="1"/>
<wire x1="25.4" y1="34.75" x2="25.5" y2="34.85" width="0.2" layer="1"/>
<contactref element="XOR4-Q3" pad="P$1"/>
</signal>
<signal name="XOR4-N$24">
<contactref element="XOR4-R4" pad="2"/>
<wire x1="28.9" y1="35.05" x2="28.85" y2="35.1" width="0.2" layer="1"/>
<wire x1="30.3" y1="33.25" x2="30.25" y2="33.25" width="0.2" layer="1"/>
<wire x1="30.25" y1="33.25" x2="29.9" y2="33.5" width="0.2" layer="1"/>
<wire x1="29.9" y1="33.5" x2="29.9" y2="33.9" width="0.2" layer="1"/>
<wire x1="29.9" y1="33.9" x2="29.2" y2="34.6" width="0.2" layer="1"/>
<wire x1="29.2" y1="34.6" x2="29.2" y2="34.75" width="0.2" layer="1"/>
<wire x1="29.2" y1="34.75" x2="28.85" y2="35.1" width="0.2" layer="1"/>
<contactref element="XOR4-Q4" pad="P$1"/>
</signal>
<signal name="XOR4-N$25">
<contactref element="XOR4-R8" pad="2"/>
<wire x1="23.3" y1="33.25" x2="23.3" y2="33.7" width="0.2" layer="1"/>
<wire x1="23.3" y1="33.7" x2="22.8" y2="34.2" width="0.2" layer="1"/>
<wire x1="22.8" y1="34.2" x2="22.8" y2="35.9" width="0.2" layer="1"/>
<wire x1="22.8" y1="35.9" x2="23.1" y2="36.2" width="0.2" layer="1"/>
<wire x1="23.1" y1="36.2" x2="30.5" y2="36.2" width="0.2" layer="1"/>
<wire x1="30.5" y1="36.2" x2="30.7" y2="36.4" width="0.2" layer="1"/>
<wire x1="30.7" y1="36.4" x2="30.7" y2="38" width="0.2" layer="1"/>
<wire x1="30.7" y1="38" x2="30.5" y2="38.2" width="0.2" layer="1"/>
<wire x1="30.5" y1="38.2" x2="30.4" y2="38.3" width="0.2" layer="1"/>
<wire x1="30.4" y1="38.3" x2="29.1" y2="38.3" width="0.2" layer="1"/>
<wire x1="29.1" y1="38.3" x2="28.9" y2="38.5" width="0.2" layer="1"/>
<wire x1="28.9" y1="38.5" x2="28.8" y2="38.6" width="0.2" layer="1"/>
<wire x1="28.8" y1="38.6" x2="28.8" y2="39.25" width="0.2" layer="1"/>
<wire x1="28.8" y1="39.25" x2="28.85" y2="39.3" width="0.2" layer="1"/>
<contactref element="XOR4-Q6" pad="P$1"/>
</signal>
<signal name="XOR4-N$26">
<contactref element="XOR4-R7" pad="2"/>
<wire x1="23.65" y1="39.2" x2="25.25" y2="39.2" width="0.2" layer="1"/>
<wire x1="25.25" y1="39.2" x2="25.35" y2="39.3" width="0.2" layer="1"/>
<contactref element="XOR4-Q5" pad="P$1"/>
</signal>
<signal name="XOR4-NOR">
<contactref element="XOR4-R6" pad="1"/>
<wire x1="29.8" y1="37.3" x2="29.8" y2="36.8" width="0.2" layer="1"/>
<wire x1="29.8" y1="36.8" x2="26.4" y2="36.8" width="0.2" layer="1"/>
<wire x1="26.4" y1="36.8" x2="26.3" y2="36.9" width="0.2" layer="1"/>
<wire x1="26.3" y1="36.9" x2="26.3" y2="37.3" width="0.2" layer="1"/>
<wire x1="25.1" y1="37.8" x2="25.5" y2="37.4" width="0.2" layer="1"/>
<wire x1="25.5" y1="37.4" x2="25.6" y2="37.3" width="0.2" layer="1"/>
<wire x1="25.6" y1="37.3" x2="26.3" y2="37.3" width="0.2" layer="1"/>
<wire x1="25.1" y1="37.8" x2="24.6" y2="38.3" width="0.2" layer="1"/>
<wire x1="24.6" y1="38.3" x2="23.1" y2="38.3" width="0.2" layer="1"/>
<wire x1="23.1" y1="38.3" x2="22.8" y2="38.6" width="0.2" layer="1"/>
<wire x1="22.8" y1="38.6" x2="22.8" y2="39" width="0.2" layer="1"/>
<contactref element="XOR4-R7" pad="1"/>
<wire x1="20.2" y1="39.25" x2="20.45" y2="39.2" width="0.2" layer="1"/>
<wire x1="21.95" y1="39.2" x2="22.6" y2="39.2" width="0.2" layer="1"/>
<wire x1="22.6" y1="39.2" x2="22.8" y2="39" width="0.2" layer="1"/>
<wire x1="20.2" y1="39.25" x2="21.9" y2="39.25" width="0.2" layer="1"/>
<wire x1="21.9" y1="39.25" x2="21.95" y2="39.2" width="0.2" layer="1"/>
<contactref element="XOR4-Q3" pad="P$3"/>
<contactref element="XOR4-Q4" pad="P$3"/>
</signal>
<signal name="XOR4-AND">
<contactref element="XOR4-R3" pad="2"/>
<wire x1="23.7" y1="35.05" x2="23.75" y2="35.1" width="0.2" layer="1"/>
<wire x1="23.8" y1="35.15" x2="23.75" y2="35.1" width="0.2" layer="1"/>
<wire x1="23.7" y1="35.05" x2="24.05" y2="35.05" width="0.2" layer="1"/>
<wire x1="24.05" y1="35.05" x2="24.1" y2="35" width="0.2" layer="1"/>
<wire x1="25.65" y1="33.2" x2="25.7" y2="33.25" width="0.2" layer="1"/>
<wire x1="23.65" y1="35" x2="23.75" y2="35.1" width="0.2" layer="1"/>
<wire x1="23.5" y1="34.9" x2="23.55" y2="34.9" width="0.2" layer="1"/>
<wire x1="24.1" y1="35" x2="24.1" y2="34.3" width="0.2" layer="1"/>
<wire x1="24.1" y1="34.3" x2="24.6" y2="33.8" width="0.2" layer="1"/>
<wire x1="24.6" y1="33.8" x2="24.6" y2="33.3" width="0.2" layer="1"/>
<wire x1="25.7" y1="33.25" x2="25.7" y2="33.3" width="0.2" layer="1"/>
<wire x1="25.7" y1="33.3" x2="24.6" y2="33.3" width="0.2" layer="1"/>
<contactref element="XOR4-R8" pad="1"/>
<wire x1="24.6" y1="33.3" x2="24.6" y2="31.8" width="0.2" layer="1"/>
<wire x1="24.6" y1="31.8" x2="24.3" y2="31.5" width="0.2" layer="1"/>
<wire x1="24.3" y1="31.5" x2="23.35" y2="31.5" width="0.2" layer="1"/>
<wire x1="23.35" y1="31.5" x2="23.35" y2="31.7" width="0.2" layer="1"/>
<wire x1="23.3" y1="31.55" x2="23.3" y2="31.65" width="0.2" layer="1"/>
<wire x1="23.3" y1="31.65" x2="23.35" y2="31.7" width="0.2" layer="1"/>
<wire x1="23.55" y1="34.9" x2="23.75" y2="34.9" width="0.4064" layer="1"/>
<wire x1="23.75" y1="34.9" x2="23.75" y2="35.1" width="0.4064" layer="1"/>
<contactref element="XOR4-Q2" pad="P$2"/>
</signal>
<signal name="U$1-INT">
<contactref element="U$1-R2" pad="1"/>
<contactref element="L-A" pad="C"/>
<wire x1="11.45" y1="47" x2="10.05" y2="47" width="0.2" layer="1"/>
</signal>
<signal name="U$1-N$16">
<contactref element="U$1-R1" pad="2"/>
<wire x1="8.9" y1="45.15" x2="8.9" y2="45.3" width="0.2" layer="1"/>
<wire x1="8.9" y1="45.3" x2="8.9" y2="45.4" width="0.2" layer="1"/>
<wire x1="8.9" y1="45.4" x2="10.75" y2="45.4" width="0.2" layer="1"/>
<wire x1="10.75" y1="45.4" x2="10.8" y2="45.25" width="0.2" layer="1"/>
<contactref element="U$1-Q1" pad="P$1"/>
</signal>
<signal name="U$1-N$1">
<contactref element="U$1-Q1" pad="P$3"/>
<contactref element="U$1-R2" pad="2"/>
<wire x1="13" y1="44.3" x2="13.2" y2="44.3" width="0.2" layer="1"/>
<wire x1="13.2" y1="44.3" x2="13.2" y2="46.95" width="0.2" layer="1"/>
<wire x1="13.2" y1="46.95" x2="13.15" y2="47" width="0.2" layer="1"/>
</signal>
<signal name="U$2-INT">
<contactref element="U$2-R2" pad="1"/>
<contactref element="L-B" pad="C"/>
<wire x1="18.45" y1="47" x2="17.05" y2="47" width="0.2" layer="1"/>
</signal>
<signal name="U$2-N$16">
<contactref element="U$2-R1" pad="2"/>
<wire x1="15.9" y1="45.15" x2="15.9" y2="45.3" width="0.2" layer="1"/>
<wire x1="15.9" y1="45.3" x2="15.9" y2="45.4" width="0.2" layer="1"/>
<wire x1="15.9" y1="45.4" x2="17.75" y2="45.4" width="0.2" layer="1"/>
<wire x1="17.75" y1="45.4" x2="17.8" y2="45.25" width="0.2" layer="1"/>
<contactref element="U$2-Q1" pad="P$1"/>
</signal>
<signal name="U$2-N$1">
<contactref element="U$2-Q1" pad="P$3"/>
<contactref element="U$2-R2" pad="2"/>
<wire x1="20" y1="44.3" x2="20.2" y2="44.3" width="0.2" layer="1"/>
<wire x1="20.2" y1="44.3" x2="20.2" y2="46.95" width="0.2" layer="1"/>
<wire x1="20.2" y1="46.95" x2="20.15" y2="47" width="0.2" layer="1"/>
</signal>
<signal name="U$3-INT">
<contactref element="U$3-R2" pad="1"/>
<contactref element="L-C_IN" pad="C"/>
<wire x1="25.45" y1="47" x2="24.05" y2="47" width="0.2" layer="1"/>
</signal>
<signal name="U$3-N$16">
<contactref element="U$3-R1" pad="2"/>
<wire x1="22.9" y1="45.15" x2="22.9" y2="45.3" width="0.2" layer="1"/>
<wire x1="22.9" y1="45.3" x2="22.9" y2="45.4" width="0.2" layer="1"/>
<wire x1="22.9" y1="45.4" x2="24.75" y2="45.4" width="0.2" layer="1"/>
<wire x1="24.75" y1="45.4" x2="24.8" y2="45.25" width="0.2" layer="1"/>
<contactref element="U$3-Q1" pad="P$1"/>
</signal>
<signal name="U$3-N$1">
<contactref element="U$3-Q1" pad="P$3"/>
<contactref element="U$3-R2" pad="2"/>
<wire x1="27" y1="44.3" x2="27.2" y2="44.3" width="0.2" layer="1"/>
<wire x1="27.2" y1="44.3" x2="27.2" y2="46.95" width="0.2" layer="1"/>
<wire x1="27.2" y1="46.95" x2="27.15" y2="47" width="0.2" layer="1"/>
</signal>
<signal name="U$4-INT">
<contactref element="U$4-R2" pad="1"/>
<contactref element="L-R" pad="C"/>
<wire x1="32.45" y1="47" x2="31.05" y2="47" width="0.2" layer="1"/>
</signal>
<signal name="U$4-N$16">
<contactref element="U$4-R1" pad="2"/>
<wire x1="29.9" y1="45.15" x2="29.9" y2="45.3" width="0.2" layer="1"/>
<wire x1="29.9" y1="45.3" x2="29.9" y2="45.4" width="0.2" layer="1"/>
<wire x1="29.9" y1="45.4" x2="31.75" y2="45.4" width="0.2" layer="1"/>
<wire x1="31.75" y1="45.4" x2="31.8" y2="45.25" width="0.2" layer="1"/>
<contactref element="U$4-Q1" pad="P$1"/>
</signal>
<signal name="U$4-N$1">
<contactref element="U$4-Q1" pad="P$3"/>
<contactref element="U$4-R2" pad="2"/>
<wire x1="34" y1="44.3" x2="34.2" y2="44.3" width="0.2" layer="1"/>
<wire x1="34.2" y1="44.3" x2="34.2" y2="46.95" width="0.2" layer="1"/>
<wire x1="34.2" y1="46.95" x2="34.15" y2="47" width="0.2" layer="1"/>
</signal>
<signal name="U$5-INT">
<contactref element="U$5-R2" pad="1"/>
<contactref element="L-C_OUT" pad="C"/>
<wire x1="39.45" y1="47" x2="38.05" y2="47" width="0.2" layer="1"/>
</signal>
<signal name="U$5-N$16">
<contactref element="U$5-R1" pad="2"/>
<wire x1="36.9" y1="45.15" x2="36.9" y2="45.3" width="0.2" layer="1"/>
<wire x1="36.9" y1="45.3" x2="36.9" y2="45.4" width="0.2" layer="1"/>
<wire x1="36.9" y1="45.4" x2="38.75" y2="45.4" width="0.2" layer="1"/>
<wire x1="38.75" y1="45.4" x2="38.8" y2="45.25" width="0.2" layer="1"/>
<contactref element="U$5-Q1" pad="P$1"/>
</signal>
<signal name="U$5-N$1">
<contactref element="U$5-Q1" pad="P$3"/>
<contactref element="U$5-R2" pad="2"/>
<wire x1="41" y1="44.3" x2="41.2" y2="44.3

extension: brd


text:
" width="0.2" layer="1"/>
<wire x1="41.2" y1="44.3" x2="41.2" y2="46.95" width="0.2" layer="1"/>
<wire x1="41.2" y1="46.95" x2="41.15" y2="47" width="0.2" layer="1"/>
</signal>
</signals>
<errors>
<approved hash="4,1,0836dea622923a05"/>
<approved hash="4,1,5e2928be3a94c203"/>
<approved hash="4,1,2c3726a03e943603"/>
<approved hash="4,1,1e37a4a03e942601"/>
<approved hash="4,1,483706a232963a01"/>
<approved hash="4,1,2636d8a2da962201"/>
<approved hash="4,1,24352ea236943e03"/>
<approved hash="4,1,c6371ca006943e02"/>
<approved hash="4,1,18374ea032943afd"/>
<approved hash="4,1,4e3718a63a923205"/>
<approved hash="4,16,0836dea622923a05"/>
<approved hash="4,16,5e2928be3a94c203"/>
<approved hash="4,16,2c3726a03e943603"/>
<approved hash="4,16,1e37a4a03e942601"/>
<approved hash="4,16,483706a232963a01"/>
<approved hash="4,16,2636d8a2da962201"/>
<approved hash="4,16,24352ea236943e03"/>
<approved hash="4,16,c6371ca006943e02"/>
<approved hash="4,16,18374ea032943afd"/>
<approved hash="4,16,4e3718a63a923205"/>
<approved hash="4,1,2c3526a23e963603"/>
<approved hash="4,1,5e3524a03e942603"/>
<approved hash="4,1,0836c6a032943a03"/>
<approved hash="4,1,a63718a01a922205"/>
<approved hash="4,1,24292ebe368a3e1d"/>
<approved hash="4,1,0631dca646923e03"/>
<approved hash="4,1,58290ea032943a03"/>
<approved hash="4,1,0e36d8a03a943203"/>
<approved hash="4,1,5c3706a03e96c601"/>
<approved hash="4,1,2e3524a23e963601"/>
<approved hash="4,16,2c3526a23e963603"/>
<approved hash="4,16,5e3524a03e942603"/>
<approved hash="4,16,0836c6a032943a03"/>
<approved hash="4,16,a63718a01a922205"/>
<approved hash="4,16,24292ebe368a3e1d"/>
<approved hash="4,16,0631dca646923e03"/>
<approved hash="4,16,58290ea032943a03"/>
<approved hash="4,16,0e36d8a03a943203"/>
<approved hash="4,16,5c3706a03e96c601"/>
<approved hash="4,16,2e3524a23e963601"/>
</errors>
</board>
</drawing>
<compatibility>
<note version="6.3" minversion="6.2.2" severity="warning">
Since Version 6.2.2 text objects can contain more than one line,
which will not be processed correctly with this version.
</note>
</compatibility>
</eagle>

license: MIT

license_type: permissive

branch_name: refs/heads/master


text:
DESCRIPTION = "Convert the physical locations of a USB device to/from its number"
AUTHOR = "Werner Almesberger <werner@openmoko.org>"
SECTION = "console/utils"
LICENSE = "GPL"
DEPENDS = "virtual/libusb0"

SRCREV = "3172"
PV = "0.0+svnr${SRCPV}"

SRC_URI = "svn://svn.openmoko.org/trunk/src/host;module=usbpath;proto=http"

S = "${WORKDIR}/usbpath"

inherit autotools

repository: overo/overo-oe-natty

repo_name: overo/overo-oe-natty

branch_name: HEAD

extension: bb


text:
// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package validation_test

import (
	"github.com/gardener/gardener-extension-networking-calico/pkg/apis/calico/install"
	"github.com/gardener/gardener/pkg/apis/core"
	. "github.com/onsi/ginkgo/v2"
	. "github.com/onsi/gomega"
	. "github.com/onsi/gomega/gstruct"
	"github.com/onsi/gomega/types"
	"k8s.io/apimachinery/pkg/runtime"
	"k8s.io/apimachinery/pkg/runtime/serializer"
	utilruntime "k8s.io/apimachinery/pkg/util/runtime"
	"k8s.io/apimachinery/pkg/util/validation/field"
	"k8s.io/utils/pointer"

	api "github.com/gardener/gardener-extension-provider-azure/pkg/apis/azure"
	. "github.com/gardener/gardener-extension-provider-azure/pkg/apis/azure/validation"
)

var _ = Describe("Shoot validation", func() {
	Describe("#ValidateNetworking", func() {
		networkingPath := field.NewPath("spec", "networking")
		scheme := runtime.NewScheme()
		utilruntime.Must(install.AddToScheme(scheme))
		decoder := serializer.NewCodecFactory(scheme, serializer.EnableStrict).UniversalDecoder()

		DescribeTable("",
			func(networking core.Networking, result types.GomegaMatcher) {
				errorList := ValidateNetworking(decoder, &networking, networkingPath)

				Expect(errorList).To(result)
			},

			Entry("should return no error because nodes CIDR was provided",
				core.Networking{
					Nodes: pointer.String("1.2.3.4/5"),
				},
				BeEmpty(),
			),
			Entry("should return an error because no nodes CIDR was provided",
				core.Networking{},
				ConsistOf(
					PointTo(MatchFields(IgnoreExtras, Fields{
						"Type":  Equal(field.ErrorTypeRequired),
						"Field": Equal("spec.networking.nodes"),
					})),
				),
			),
			Entry("should return an error if calico is used with overlay network",
				core.Networking{
					Nodes:          pointer.String("1.2.3.4/5"),
					Type:           pointer.String("calico"),
					ProviderConfig: &runtime.RawExtension{Raw: []byte(`{"apiVersion":"calico.networking.extensions.gardener.cloud/v1alpha1","kind":"NetworkConfig","overlay":{"enabled":true}}`)},
				},
				ConsistOf(
					PointTo(MatchFields(IgnoreExtras, Fields{
						"Type":  Equal(field.ErrorTypeForbidden),
						"Field": Equal("spec.networking.providerConfig.overlay.enabled"),
					})),
				),
			),
			Entry("should return no error if calico is used without overlay network",
				core.Networking{
					Nodes:          pointer.String("1.2.3.4/5"),
					Type:           pointer.String("calico"),
					ProviderConfig: &runtime.RawExtension{Raw: []byte(`{"apiVersion":"calico.networking.extensions.gardener.cloud/v1alpha1","kind":"NetworkConfig","overlay":{"enabled":false}}`)},
				},
				BeEmpty(),
			),
			Entry("should return no error if cilium is used with overlay network",
				core.Networking{
					Nodes:          pointer.String("1.2.3.4/5"),
					Type:           pointer.String("cilium"),
					ProviderConfig: &runtime.RawExtension{Raw: []byte(`{"apiVersion":"cilium.networking.extensions.gardener.cloud/v1alpha1","kind":"NetworkConfig","overlay":{"enabled":true}}`)},
				},
				BeEmpty(),
			),
		)
	})

	Describe("#ValidateWorkerConfig", func() {
		var (
			workers     []core.Worker
			infraConfig *api.InfrastructureConfig
		)

		BeforeEach(func() {
			workers = []core.Worker{
				{
					Name: "worker1",
					Volume: &core.Volume{
						Type:       pointer.String("Volume"),
						VolumeSize: "30G",
					},
				},
				{
					Name: "worker2",
					Volume: &core.Volume{
						Type:       pointer.String("Volume"),
						VolumeSize: "20G",
					},
				},
			}
		})

		Describe("#ValidateWorkers", func() {
			BeforeEach(func() {
				infraConfig = &api.InfrastructureConfig{}
			})

			Context("Non zoned cluster", func() {
				BeforeEach(func() {
					infraConfig.Zoned = false
				})

				It("should pass because workers are configured correctly", func() {
					errorList := ValidateWorkers(workers,
						infraConfig, field.NewPath(""))

					Expect(errorList).To(BeEmpty())
				})

				It("should forbid because zones are configured", func() {
					workers[0].Zones = []string{"1", "2"}
					errorList := ValidateWorkers(workers,
						infraConfig, field.NewPath("workers"))

					Expect(errorList).To(ConsistOf(
						PointTo(MatchFields(IgnoreExtras, Fields{
							"Type":  Equal(field.ErrorTypeRequired),
							"Field": Equal("workers[0].zones"),
						})),
					))
				})
			})

			Context("Zoned cluster", func() {
				BeforeEach(func() {
					infraConfig.Zoned = true
					workers[0].Zones = []string{"1", "2"}
					workers[1].Zones = []string{"1", "2"}
				})

				It("should pass because workers are configured correctly", func() {
					errorList := ValidateWorkers(workers,
						infraConfig, field.NewPath(""))

					Expect(errorList).To(BeEmpty())
				})

				It("should forbid because volume is not configured", func() {
					workers[1].Volume = nil

					errorList := ValidateWorkers(workers,
						infraConfig, field.NewPath("workers"))

					Expect(errorList).To(ConsistOf(
						PointTo(MatchFields(IgnoreExtras, Fields{
							"Type":  Equal(field.ErrorTypeRequired),
							"Field": Equal("workers[1].volume"),
						})),
					))
				})

				It("should forbid because volume type and size are not configured", func() {
					workers[0].Volume.Type = nil
					workers[0].Volume.VolumeSize = ""
					workers[0].Volume.Encrypted = pointer.Bool(false)
					workers[0].DataVolumes = []core.DataVolume{{Encrypted: pointer.Bool(true)}}

					errorList := ValidateWorkers(workers,
						infraConfig, field.NewPath("workers"))

					Expect(errorList).To(ConsistOf(
						PointTo(MatchFields(IgnoreExtras, Fields{
							"Type":  Equal(field.ErrorTypeRequired),
							"Field": Equal("workers[0].volume.type"),
						})),
						PointTo(MatchFields(IgnoreExtras, Fields{
							"Type":  Equal(field.ErrorTypeRequired),
							"Field": Equal("workers[0].volume.size"),
						})),
						PointTo(MatchFields(IgnoreExtras, Fields{
							"Type":  Equal(field.ErrorTypeNotSupported),
							"Field": Equal("workers[0].volume.encrypted"),
						})),
						PointTo(MatchFields(IgnoreExtras, Fields{
							"Type":  Equal(field.ErrorTypeRequired),
							"Field": Equal("workers[0].dataVolumes[0].type"),
						})),
						PointTo(MatchFields(IgnoreExtras, Fields{
							"Type":  Equal(field.ErrorTypeRequired),
							"Field": Equal("workers[0].dataVolumes[0].size"),
						})),
						PointTo(MatchFields(IgnoreExtras, Fields{
							"Type":  Equal(field.ErrorTypeNotSupported),
							"Field": Equal("workers[0].dataVolumes[0].encrypted"),
						})),
					))
				})

				It("should forbid because of too many data volumes", func() {
					for i := 0; i <= 64; i++ {
						workers[0].DataVolumes = append(workers[0].DataVolumes, core.DataVolume{
							Name:       "foo",
							VolumeSize: "20Gi",
							Type:       pointer.String("foo"),
						})
					}

					errorList := ValidateWorkers(workers,
						infraConfig, field.NewPath("workers"))

					Expect(errorList).To(ConsistOf(
						PointTo(MatchFields(IgnoreExtras, Fields{
							"Type":  Equal(field.ErrorTypeTooMany),
							"Field": Equal("workers[0].dataVolumes"),
						})),
					))
				})

				It("should forbid because worker does not specify a zone", func() {
					workers[0].Zones = nil

					errorList := ValidateWorkers(workers,
						infraConfig, field.NewPath("workers"))

					Expect(errorList).To(ConsistOf(
						PointTo(MatchFields(IgnoreExtras, Fields{
							"Type":  Equal(field.ErrorTypeRequired),
							"Field": Equal("workers[0].zones"),
						})),
					))
				})

				It("should forbid because worker use zone twice", func() {
					workers[0].Zones[1] = workers[0].Zones[0]

					errorList := ValidateWorkers(workers,
						infraConfig, field.NewPath("workers"))

					Expect(errorList).To(ConsistOf(
						PointTo(MatchFields(IgnoreExtras, Fields{
							"Type":  Equal(field.ErrorTypeInvalid),
							"Field": Equal("workers[0].zones[1]"),
						})),
					))
				})

				Context("multiple subnet network layout", func() {
					BeforeEach(func() {
						infraConfig = &api.InfrastructureConfig{
							Zoned: true,
							Networks: api.NetworkConfig{
								Zones: []api.Zone{
									{
										Name: 1,
									},
									{
										Name: 2,
									},
								},
							},
						}
					})

					It("should forbid using zones not configured in infrastructure", func() {
						workers[0].Zones[0] = "non-existent"
						errorList := ValidateWorkers(workers,
							infraConfig, field.NewPath("workers"))

						Expect(errorList).To(ConsistOf(
							PointTo(MatchFields(IgnoreExtras, Fields{
								"Type":  Equal(field.ErrorTypeInvalid),
								"Field": Equal("workers[0].zones[0]"),
							})),
						))
					})

					It("should allow zones when configured in infrastructure", func() {
						errorList := ValidateWorkers(workers,
							infraConfig, field.NewPath("workers"))

						Expect(errorList).To(BeEmpty())
					})
				})
			})
		})

		Describe("#ValidateWorkersUpdate", func() {
			Context("Zoned cluster", func() {
				BeforeEach(func() {
					workers[0].Zones = []string{"1", "2"}
					workers[1].Zones = []string{"1", "2"}
				})

				It("should pass because workers are unchanged", func() {
					newWorkers := copyWorkers(workers)
					errorList := ValidateWorkersUpdate(workers, newWorkers, field.NewPath("workers"))

					Expect(errorList).To(BeEmpty())
				})

				It("should allow adding workers", func() {
					newWorkers := append(workers[:0:0], workers...)
					workers = workers[:1]
					errorList := ValidateWorkersUpdate(workers, newWorkers, field.NewPath("workers"))

					Expect(errorList).To(BeEmpty())
				})

				It("should allow adding a zone to a worker", func() {
					newWorkers := copyWorkers(workers)
					newWorkers[0].Zones = append(newWorkers[0].Zones, "another-zone")
					errorList := ValidateWorkersUpdate(workers, newWorkers, field.NewPath("workers"))

					Expect(errorList).To(BeEmpty())
				})

				It("should forbid removing a zone from a worker", func() {
					newWorkers := copyWorkers(workers)
					newWorkers[1].Zones = newWorkers[1].Zones[1:]
					errorList := ValidateWorkersUpdate(workers, newWorkers, field.NewPath("workers"))

					Expect(errorList).To(ConsistOf(
						PointTo(MatchFields(IgnoreExtras, Fields{
							"Type":  Equal(field.ErrorTypeInvalid),
							"Field": Equal("workers[1].zones"),
						})),
					))
				})

				It("should forbid changing the zone order", func() {
					newWorkers := copyWorkers(workers)
					newWorkers[0].Zones[0] = workers[0].Zones[1]
					newWorkers[0].Zones[1] = workers[0].Zones[0]
					newWorkers[1].Zones[0] = workers[1].Zones[1]
					newWorkers[1].Zones[1] = workers[1].Zones[0]
					errorList := ValidateWorkersUpdate(workers, newWorkers, field.NewPath("workers"))

					Expect(errorList).To(ConsistOf(
						PointTo(MatchFields(IgnoreExtras, Fields{
							"Type":  Equal(field.ErrorTypeInvalid),
							"Field": Equal("workers[0].zones"),
						})),
						PointTo(MatchFields(IgnoreExtras, Fields{
							"Type":  Equal(field.ErrorTypeInvalid),
							"Field": Equal("workers[1].zones"),
						})),
					))
				})

				It("should forbid adding a zone while changing an existing one", func() {
					newWorkers := copyWorkers(workers)
					newWorkers = append(newWorkers, core.Worker{Name: "worker3", Zones: []string{"zone1"}})
					newWorkers[1].Zones[0] = workers[1].Zones[1]
					errorList := ValidateWorkersUpdate(workers, newWorkers, field.NewPath("workers"))

					Expect(errorList).To(ConsistOf(
						PointTo(MatchFields(IgnoreExtras, Fields{
							"Type":  Equal(field.ErrorTypeInvalid),
							"Field": Equal("workers[1].zones"),
						})),
					))
				})
			})
		})
	})
})

func copyWorkers(workers []core.Worker) []core.Worker {
	cp := append(workers[:0:0], workers...)
	for i := range cp {
		cp[i].Zones = append(workers[i].Zones[:0:0], workers[i].Zones...)
	}
	return cp
}

gha_license_id: NOASSERTION

gha_language: Go

extension: go


text:
require ${PN}.inc

PR = "r1"

DEPENDS = "opkg"

EXTRA_QMAKEVARS_PRE += "LIBIPK_INC_DIR=${STAGING_INCDIR}/libopkg"

SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/settings/${APPNAME};cvsdate=${SRCDATE} \
           ${HANDHELDS_CVS};tag=${TAG};module=opie/pics;cvsdate=${SRCDATE} \
           ${HANDHELDS_CVS};tag=${TAG};module=opie/apps \
           file://split-config.patch;patch=1 \
           file://opkg.patch;patch=1"

repository: demsey/openembedded

repo_name: demsey/openembedded


text:
DESCRIPTION = "Libraries and applications to facilitate working with GPS data for research and high accuracy uses."
AUTHOR = "Applied Research Laboratories at The University of Texas at Austin (ARL:UT)."
HOMEPAGE = "http://www.gpstk.org/"

LICENSE = "GPLv3"
LIC_FILES_CHKSUM = "file://COPYING.md;md5=d32239bcb673463ab874e80d47fae504"

SRC_URI = "https://github.com/SGL-UT/GPSTk/archive/v${PV}.tar.gz"
SRC_URI[md5sum] = "040d3f28a20abf3b6a409103f830e15d"
SRC_URI[sha256sum] = "75aa04137b17b90a116700431b4170d0d423dca32374b4effbcfebe7b1c06017"
S="${WORKDIR}/GPSTk-${PV}"

inherit cmake

EXTRA_OECMAKE += " -DBUILD_EXT=OFF -DBUILD_PYTHON=OFF"

FILES_${PN} += " ${bindir}/* /usr/share/cmake/*"

repository: zarym/meta-gnss-sdr

repo_name: zarym/meta-gnss-sdr

gha_license_id: MIT


text:
// Copyright (c) 2020, The GoSLIDE Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package densified_minhash

import (
	"container/heap"
	"encoding/binary"
	"hash/maphash"
	"math"
	"math/rand"
	"time"

	"github.com/nlpodyssey/goslide/index_value"
)

type DensifiedMinhash struct {
	randHash   [2]int
	randa      int
	numHashes  int
	rangePow   int
	logNumHash int
	seed       maphash.Seed
}

func New(numHashes, numOfBitsToHash int) *DensifiedMinhash {
	rand.Seed(time.Now().UnixNano())

	return &DensifiedMinhash{
		// TODO: is second value of `randHash` used at all?
		randHash:   [2]int{positiveOddRandomInt(), positiveOddRandomInt()},
		randa:      positiveOddRandomInt(),
		numHashes:  numHashes,
		rangePow:   numOfBitsToHash,
		logNumHash: int(math.Log2(float64(numHashes))),
		seed:       maphash.MakeSeed(),
	}
}

func (dm *DensifiedMinhash) GetHash(
	indices []int,
	data []float64,
	binIds []int,
) []int {
	hashes := make([]int, dm.numHashes)
	hashArray := make([]int, dm.numHashes)

	for i := range hashes {
		hashes[i] = math.MinInt64
	}

	for i := range data {
		binId := binIds[indices[i]]
		if hashes[binId] < indices[i] {
			hashes[binId] = indices[i]
		}
	}

	for i, next := range hashes {
		if next != math.MinInt64 {
			hashArray[i] = next
			continue
		}

		for count := 1; next == math.MinInt64; count++ {
			index := minInt(dm.GetRandDoubleHash(i, count), dm.numHashes-1)
			next = hashes[index] // Kills GPU.

			if count > 100 { // Densification failure.
				break
			}
		}

		hashArray[i] = next
	}

	return hashArray
}

func (dm *DensifiedMinhash) GetHashEasy(
	binIds []int,
	data []index_value.Pair,
	topK int,
) []int {
	// Read the data and add it to priority queue O(dlogk approx 7d)
	// with index as key and values as priority value, get topk index
	// O(1) and apply minhash on retuned index.
	pq := make(indexValuePriorityQueue, topK, topK+1)
	for index, value := range data[0:topK] {
		pq[index] = indexValuePair{index, value.Value}
	}
	heap.Init(&pq)

	dataLen := len(data)
	for index := topK; index < dataLen; index++ {
		heap.Push(&pq, indexValuePair{index, data[index].Value})
		heap.Pop(&pq)
	}

	hashes := make([]int, dm.numHashes)
	hashArray := make([]int, dm.numHashes)

	for i := range hashes {
		hashes[i] = math.MinInt64
	}

	for i := 0; i < topK; i++ {
		pair := pq.Pop().(indexValuePair)
		index := pair.index
		binId := binIds[index]
		if hashes[binId] < index {
			hashes[binId] = index
		}
	}

	for i, next := range hashes {
		if next != math.MinInt64 {
			hashArray[i] = next
			continue
		}

		for count := 1; next == math.MinInt64; count++ {
			index := minInt(dm.GetRandDoubleHash(i, count), dm.numHashes-1)
			next = hashes[index] // Kills GPU.

			if count > 100 { // Densification failure.
				break
			}
		}

		hashArray[i] = next
	}

	return hashArray
}

// TODO: avoid code duplication
func (dm *DensifiedMinhash) GetHashEasyDense(
	binIds []int,
	data []float64,
	topK int,
) []int {
	// Read the data and add it to priority queue O(dlogk approx 7d)
	// with index as key and values as priority value, get topk index
	// O(1) and apply minhash on retuned index.
	pq := make(indexValuePriorityQueue, topK, topK+1)
	for index, value := range data[0:topK] {
		pq[index] = indexValuePair{index, value}
	}
	heap.Init(&pq)

	dataLen := len(data)
	for index := topK; index < dataLen; index++ {
		heap.Push(&pq, indexValuePair{index, data[index]})
		heap.Pop(&pq)
	}

	hashes := make([]int, dm.numHashes)
	hashArray := make([]int, dm.numHashes)

	for i := range hashes {
		hashes[i] = math.MinInt64
	}

	for i := 0; i < topK; i++ {
		pair := pq.Pop().(indexValuePair)
		index := pair.index
		binId := binIds[index]
		if hashes[binId] < index {
			hashes[binId] = index
		}
	}

	for i, next := range hashes {
		if next != math.MinInt64 {
			hashArray[i] = next
			continue
		}

		for count := 1; next == math.MinInt64; count++ {
			index := minInt(dm.GetRandDoubleHash(i, count), dm.numHashes-1)
			next = hashes[index] // Kills GPU.

			if count > 100 { // Densification failure.
				break
			}
		}

		hashArray[i] = next
	}

	return hashArray
}

func (dm *DensifiedMinhash) GetRandDoubleHash(binId, count int) int {
	toHash := ((uint(binId) + 1) << 6) + uint(count)
	return int((uint(dm.randHash[0]) * toHash << 3) >> (32 - dm.logNumHash)) // logNumHash needs to be ceiled.
}

func (dm *DensifiedMinhash) GetMap(n int) []int {
	binIds := make([]int, n)

	rng := 1 << dm.rangePow

	// The number of times the range is larger than
	// the total number of hashes we need.
	binSize := int(math.Ceil(float64(rng) / float64(dm.numHashes)))

	buf := make([]byte, 8)

	mh := maphash.Hash{}
	mh.SetSeed(dm.seed)

	for i := 0; i < n; i++ {
		bufLen := binary.PutVarint(buf, int64(i))
		mh.Reset()
		mh.Write(buf[:bufLen])
		curHash := mh.Sum64()

		curHash = curHash & ((1 << dm.rangePow) - 1)
		binIds[i] = int(math.Floor(float64(curHash) / float64(binSize)))
	}

	return binIds
}

func positiveOddRandomInt() int {
	n := rand.Int()
	if n%2 == 0 {
		return n + 1
	}
	return n
}

func minInt(a, b int) int {
	if a < b {
		return a
	}
	return b
}