text:
"/>
<wire x1="89.789" y1="12.192" x2="86.995" y2="14.986" width="0.1524" layer="16"/>
<wire x1="88.265" y1="57.404" x2="85.0392" y2="60.6298" width="0.1524" layer="16"/>
<wire x1="62.23074375" y1="60.6298" x2="61.468" y2="59.86705625" width="0.1524" layer="16"/>
<wire x1="61.468" y1="59.86705625" x2="61.468" y2="57.658" width="0.1524" layer="16"/>
<wire x1="85.0392" y1="60.6298" x2="62.23074375" y2="60.6298" width="0.1524" layer="16"/>
<wire x1="66.335909375" y1="57.70088125" x2="66.293028125" y2="57.658" width="0.1524" layer="1"/>
<wire x1="66.293028125" y1="57.658" x2="61.468" y2="57.658" width="0.1524" layer="1"/>
<via x="61.468" y="57.658" extent="1-16" drill="0.35" shape="octagon"/>
</signal>
<signal name="IO67">
<contactref element="CON2" pad="71"/>
<contactref element="U9" pad="6"/>
<contactref element="CON13" pad="2"/>
<wire x1="96.409" y1="15.494" x2="96.409" y2="11.7" width="0.1524" layer="1"/>
<wire x1="96.409" y1="11.7" x2="95.631" y2="10.922" width="0.1524" layer="1"/>
<wire x1="77.597" y1="10.922" x2="75.438" y2="13.081" width="0.1524" layer="1"/>
<wire x1="75.438" y1="13.081" x2="75.438" y2="19.939" width="0.1524" layer="1"/>
<wire x1="75.438" y1="19.939" x2="76.835" y2="21.336" width="0.1524" layer="1"/>
<wire x1="76.835" y1="21.336" x2="78.612009375" y2="21.336" width="0.1524" layer="1"/>
<wire x1="95.631" y1="10.922" x2="77.597" y2="10.922" width="0.1524" layer="1"/>
<wire x1="78.612009375" y1="21.336" x2="80.391" y2="21.336" width="0.1524" layer="1"/>
<via x="80.391" y="21.336" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="84.4804" y1="42.5196" x2="84.4804" y2="22.098" width="0.1524" layer="16"/>
<wire x1="84.4804" y1="22.098" x2="83.7184" y2="21.336" width="0.1524" layer="16"/>
<wire x1="80.391" y1="21.336" x2="83.7184" y2="21.336" width="0.1524" layer="16"/>
<wire x1="84.4804" y1="42.5196" x2="83.185" y2="43.815" width="0.1524" layer="16"/>
<wire x1="83.185" y1="43.815" x2="83.185" y2="55.372" width="0.1524" layer="16"/>
<wire x1="83.185" y1="55.372" x2="82.169" y2="56.388" width="0.1524" layer="16"/>
<wire x1="82.169" y1="56.388" x2="64.389" y2="56.388" width="0.1524" layer="16"/>
<wire x1="64.389" y1="56.388" x2="64.262" y2="56.515" width="0.1524" layer="16"/>
<wire x1="66.335909375" y1="57.20088125" x2="64.94788125" y2="57.20088125" width="0.1524" layer="1"/>
<wire x1="64.94788125" y1="57.20088125" x2="64.262" y2="56.515" width="0.1524" layer="1"/>
<via x="64.262" y="56.515" extent="1-16" drill="0.35" shape="octagon"/>
</signal>
<signal name="IO53">
<contactref element="CON2" pad="57"/>
<contactref element="U8" pad="4"/>
<contactref element="CON1" pad="2"/>
<wire x1="96.409" y1="77.724" x2="90.043" y2="71.358" width="0.1524" layer="1"/>
<wire x1="90.043" y1="71.358" x2="90.043" y2="54.356" width="0.1524" layer="1"/>
<wire x1="90.043" y1="54.356" x2="84.709" y2="49.022" width="0.1524" layer="1"/>
<wire x1="76.962" y1="49.022" x2="76.073" y2="48.133" width="0.1524" layer="1"/>
<wire x1="76.073" y1="48.133" x2="76.073" y2="44.45" width="0.1524" layer="1"/>
<wire x1="76.073" y1="44.45" x2="77.343" y2="43.18" width="0.1524" layer="1"/>
<wire x1="77.343" y1="43.18" x2="78.993009375" y2="43.18" width="0.1524" layer="1"/>
<wire x1="84.709" y1="49.022" x2="80.137" y2="49.022" width="0.1524" layer="1"/>
<wire x1="80.137" y1="49.022" x2="76.962" y2="49.022" width="0.1524" layer="1"/>
<via x="80.137" y="49.022" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="80.137" y1="49.022" x2="80.137" y2="50.038" width="0.1524" layer="16"/>
<wire x1="80.137" y1="50.038" x2="77.343" y2="52.832" width="0.1524" layer="16"/>
<wire x1="58.674" y1="57.35394375" x2="58.674" y2="65.786" width="0.1524" layer="16"/>
<wire x1="77.343" y1="52.832" x2="63.19594375" y2="52.832" width="0.1524" layer="16"/>
<wire x1="63.19594375" y1="52.832" x2="58.674" y2="57.35394375" width="0.1524" layer="16"/>
<via x="58.674" y="65.786" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="58.674" y1="65.786" x2="58.75911875" y2="65.70088125" width="0.1524" layer="1"/>
<wire x1="66.335909375" y1="65.70088125" x2="58.75911875" y2="65.70088125" width="0.1524" layer="1"/>
</signal>
<signal name="IO52">
<contactref element="CON2" pad="58"/>
<contactref element="U8" pad="5"/>
<contactref element="CON1" pad="1"/>
<wire x1="78.993009375" y1="41.91" x2="77.343" y2="41.91" width="0.1524" layer="1"/>
<wire x1="77.343" y1="41.91" x2="75.692" y2="43.561" width="0.1524" layer="1"/>
<wire x1="75.692" y1="43.561" x2="75.692" y2="48.895" width="0.1524" layer="1"/>
<wire x1="76.708" y1="49.911" x2="85.09" y2="49.911" width="0.1524" layer="1"/>
<wire x1="85.09" y1="49.911" x2="89.7382" y2="54.5592" width="0.1524" layer="1"/>
<wire x1="89.7382" y1="54.5592" x2="89.7382" y2="71.48425625" width="0.1524" layer="1"/>
<wire x1="94.409" y1="76.15505625" x2="94.409" y2="77.724" width="0.1524" layer="1"/>
<wire x1="89.7382" y1="71.48425625" x2="94.409" y2="76.15505625" width="0.1524" layer="1"/>
<wire x1="75.692" y1="48.895" x2="76.708" y2="49.911" width="0.1524" layer="1"/>
<wire x1="76.708" y1="49.911" x2="76.708" y2="59.309" width="0.1524" layer="1"/>
<wire x1="76.708" y1="59.309" x2="74.676" y2="61.341" width="0.1524" layer="1"/>
<wire x1="74.676" y1="61.341" x2="74.676" y2="64.897" width="0.1524" layer="1"/>
<wire x1="73.87211875" y1="65.70088125" x2="72.303909375" y2="65.70088125" width="0.1524" layer="1"/>
<wire x1="74.676" y1="64.897" x2="73.87211875" y2="65.70088125" width="0.1524" layer="1"/>
</signal>
<signal name="N$1">
<contactref element="R44" pad="1"/>
<contactref element="LED2" pad="A"/>
<wire x1="3.29" y1="22.86" x2="3.29" y2="24.245" width="0.508" layer="1"/>
<wire x1="3.29" y1="24.245" x2="3.429" y2="24.384" width="0.508" layer="1"/>
<wire x1="3.429" y1="24.384" x2="3.429" y2="25.869" width="0.508" layer="1"/>
<wire x1="3.429" y1="25.869" x2="3.39" y2="25.908" width="0.508" layer="1"/>
</signal>
<signal name="+1.8V">
<contactref element="TP3" pad="TP"/>
<contactref element="C1" pad="1"/>
<contactref element="C2" pad="1"/>
<contactref element="CON2" pad="180"/>
<contactref element="CON2" pad="179"/>
<contactref element="U13" pad="22"/>
<wire x1="86.233" y1="7.874" x2="83.6676" y2="10.4394" width="0.508" layer="1"/>
<wire x1="83.6676" y1="10.4394" x2="77.3971" y2="10.4394" width="0.508" layer="1"/>
<wire x1="77.3971" y1="10.4394" x2="74.6285" y2="13.208" width="0.508" layer="1"/>
<wire x1="74.6285" y1="13.208" x2="74.6285" y2="18.542" width="0.508" layer="1"/>
<wire x1="74.6285" y1="18.542" x2="74.6285" y2="18.669" width="0.508" layer="1"/>
<wire x1="74.93" y1="18.669" x2="74.93" y2="23.622" width="0.508" layer="1"/>
<wire x1="73.914" y1="23.837" x2="74.715" y2="23.837" width="0.508" layer="1"/>
<wire x1="74.93" y1="23.622" x2="74.715" y2="23.837" width="0.508" layer="1"/>
<wire x1="73.914" y1="24.511" x2="73.914" y2="23.837" width="0.254" layer="1"/>
<wire x1="64.516" y1="24.765" x2="64.516" y2="23.837" width="0.254" layer="1"/>
<wire x1="64.95188125" y1="25.20088125" x2="64.516" y2="24.765" width="0.254" layer="1"/>
<wire x1="64.516" y1="23.837" x2="62.992" y2="23.837" width="0.508" layer="1"/>
<wire x1="62.992" y1="23.837" x2="62.992" y2="18.542" width="0.508" layer="1"/>
<via x="62.992" y="18.542" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="74.93" y1="18.669" x2="74.6285" y2="18.669" width="0.508" layer="1"/>
<wire x1="74.6285" y1="18.542" x2="74.676" y2="18.542" width="0.508" layer="1"/>
<via x="74.676" y="18.542" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="62.992" y1="18.542" x2="74.676" y2="18.542" width="0.508" layer="16"/>
<wire x1="55.499990625" y1="48.006" x2="57.404" y2="48.006" width="0.254" layer="1"/>
<wire x1="57.404" y1="48.006" x2="57.658" y2="47.752" width="0.254" layer="1"/>
<wire x1="57.658" y1="47.752" x2="57.658" y2="46.736" width="0.254" layer="1"/>
<via x="57.658" y="46.736" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="57.658" y1="46.736" x2="56.007" y2="45.085" width="0.254" layer="16"/>
<wire x1="57.404" y1="23.876" x2="56.007" y2="25.273" width="0.254" layer="16"/>
<via x="57.404" y="23.876" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="57.404" y1="23.876" x2="62.953" y2="23.876" width="0.254" layer="1"/>
<wire x1="62.953" y1="23.876" x2="62.992" y2="23.837" width="0.254" layer="1"/>
<wire x1="72.303909375" y1="25.20088125" x2="73.22411875" y2="25.20088125" width="0.254" layer="1"/>
<wire x1="73.22411875" y1="25.20088125" x2="73.914" y2="24.511" width="0.254" layer="1"/>
<wire x1="66.335909375" y1="25.20088125" x2="64.95188125" y2="25.20088125" width="0.254" layer="1"/>
<wire x1="56.007" y1="45.085" x2="56.007" y2="25.273" width="0.254" layer="16"/>
</signal>
<signal name="N$31">
<contactref element="R49" pad="1"/>
<contactref element="LED4" pad="A"/>
<wire x1="90.131" y1="5.207" x2="91.833" y2="5.207" width="0.508" layer="1"/>
</signal>
<signal name="N$32">
<contactref element="R50" pad="1"/>
<contactref element="LED5" pad="A"/>
<wire x1="90.131" y1="2.667" x2="91.833" y2="2.667" width="0.508" layer="1"/>
</signal>
<signal name="VDDIO">
<contactref element="R50" pad="2"/>
<contactref element="TP6" pad="TP"/>
<contactref element="C21" pad="1"/>
<contactref element="C22" pad="1"/>
<contactref element="CON2" pad="2"/>
<contactref element="CON2" pad="4"/>
<contactref element="CON2" pad="1"/>
<contactref element="CON2" pad="3"/>
<contactref element="U13" pad="21"/>
<wire x1="86.233" y1="2.54" x2="87.122" y2="2.54" width="0.508" layer="1"/>
<wire x1="87.122" y1="2.54" x2="87.249" y2="2.667" width="0.508" layer="1"/>
<wire x1="87.249" y1="2.667" x2="88.431" y2="2.667" width="0.508" layer="1"/>
<wire x1="86.233" y1="2.54" x2="78.994" y2="9.779" width="0.508" layer="1"/>
<wire x1="73.99605" y1="12.827" x2="70.993" y2="12.827" width="0.508" layer="1"/>
<wire x1="78.994" y1="9.779" x2="77.04405" y2="9.779" width="0.508" layer="1"/>
<wire x1="77.04405" y1="9.779" x2="73.99605" y2="12.827" width="0.508" layer="1"/>
<via x="70.993" y="12.827" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="70.993" y1="12.827" x2="65.913" y2="12.827" width="0.508" layer="16"/>
<wire x1="65.913" y1="12.827" x2="54.991" y2="23.749" width="0.508" layer="16"/>
<wire x1="54.991" y1="27.305" x2="49.403" y2="32.893" width="0.508" layer="16"/>
<wire x1="54.991" y1="23.749" x2="54.991" y2="27.305" width="0.508" layer="16"/>
<via x="49.403" y="32.893" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="49.403" y1="38.1" x2="49.403" y2="32.893" width="0.508" layer="1"/>
<wire x1="55.499990625" y1="46.736" x2="52.197" y2="46.736" width="0.508" layer="1"/>
<wire x1="52.197" y1="46.736" x2="52.197" y2="38.1" width="0.508" layer="1"/>
<wire x1="66.335909375" y1="79.20088125" x2="66.335909375" y2="79.70088125" width="0.254" layer="1"/>
<wire x1="72.937" y1="81.065" x2="76.073" y2="81.065" width="0.254" layer="1"/>
<wire x1="72.3265" y1="80.4545" x2="72.937" y2="81.065" width="0.254" layer="1"/>
<wire x1="65.112" y1="80.049" x2="64.135" y2="80.049" width="0.254" layer="1"/>
<wire x1="65.46011875" y1="79.70088125" x2="65.112" y2="80.049" width="0.254" layer="1"/>
<wire x1="78.232" y1="81.026" x2="76.112" y2="81.026" width="0.508" layer="1"/>
<wire x1="76.073" y1="81.065" x2="76.112" y2="81.026" width="0.508" layer="1"/>
<via x="78.232" y="81.026" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="78.232" y1="81.026" x2="66.421" y2="81.026" width="0.508" layer="16"/>
<wire x1="64.135" y1="80.049" x2="62.738" y2="80.049" width="0.508" layer="1"/>
<wire x1="62.738" y1="80.049" x2="62.738" y2="83.312" width="0.508" layer="1"/>
<via x="62.738" y="83.312" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="62.738" y1="83.312" x2="64.135" y2="83.312" width="0.508" layer="16"/>
<wire x1="64.135" y1="83.312" x2="66.421" y2="81.026" width="0.508" layer="16"/>
<via x="49.403" y="38.1" extent="1-16" drill="0.35" shape="octagon"/>
<via x="52.197" y="38.1" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="49.403" y1="38.1" x2="52.197" y2="38.1" width="0.508" layer="16"/>
<wire x1="52.197" y1="46.736" x2="52.197" y2="59.309" width="0.508" layer="1"/>
<wire x1="52.197" y1="59.309" x2="51.943" y2="59.563" width="0.508" layer="1"/>
<wire x1="51.943" y1="59.563" x2="38.989" y2="59.563" width="0.508" layer="1"/>
<via x="38.989" y="59.563" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="38.989" y1="59.563" x2="38.989" y2="61.722" width="0.508" layer="16"/>
<wire x1="38.989" y1="61.722" x2="44.577" y2="67.31" width="0.508" layer="16"/>
<wire x1="44.577" y1="67.31" x2="44.577" y2="74.295" width="0.508" layer="16"/>
<wire x1="44.577" y1="74.295" x2="46.863" y2="76.581" width="0.508" layer="16"/>
<via x="46.863" y="76.581" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="46.863" y1="76.581" x2="46.863" y2="79.121" width="0.508" layer="1"/>
<wire x1="46.863" y1="79.121" x2="47.791" y2="80.049" width="0.508" layer="1"/>
<wire x1="47.791" y1="80.049" x2="62.738" y2="80.049" width="0.508" layer="1"/>
<wire x1="72.303909375" y1="79.20088125" x2="72.303909375" y2="79.70088125" width="0.254" layer="1"/>
<wire x1="72.303909375" y1="79.70088125" x2="72.3265" y2="79.723471875" width="0.254" layer="1"/>
<wire x1="72.3265" y1="79.723471875" x2="72.3265" y2="80.4545" width="0.254" layer="1"/>
<wire x1="66.335909375" y1="79.70088125" x2="65.46011875" y2="79.70088125" width="0.254" layer="1"/>
</signal>
<signal name="ADIG_SP1">
<contactref element="CON2" pad="163"/>
</signal>
<signal name="ADIG_SP3">
<contactref element="CON2" pad="165"/>
</signal>
<signal name="ADIG_SP5">
<contactref element="CON2" pad="167"/>
</signal>
<signal name="MUX_EN">
<contactref element="CON2" pad="169"/>
<contactref element="R1" pad="1"/>
<contactref element="R4" pad="1"/>
<contactref element="R6" pad="1"/>
<contactref element="R45" pad="1"/>
<contactref element="R46" pad="1"/>
<contactref element="R52" pad="1"/>
<wire x1="28.79" y1="82.296" x2="29.845" y2="82.296" width="0.1524" layer="1"/>
<wire x1="29.845" y1="82.296" x2="30.861" y2="81.28" width="0.1524" layer="1"/>
<wire x1="93.726" y1="31.877" x2="92.925" y2="31.076" width="0.1524" layer="1"/>
<wire x1="92.925" y1="19.05" x2="92.925" y2="31.076" width="0.1524" layer="1"/>
<wire x1="95.504" y1="37.338" x2="94.068" y2="37.338" width="0.1524" layer="1"/>
<wire x1="97.409" y1="32.639" x2="97.409" y2="35.433" width="0.1524" layer="1"/>
<wire x1="97.409" y1="35.433" x2="95.504" y2="37.338" width="0.1524" layer="1"/>
<wire x1="93.726" y1="31.877" x2="96.647" y2="31.877" width="0.1524" layer="1"/>
<wire x1="96.647" y1="31.877" x2="97.409" y2="32.639" width="0.1524" layer="1"/>
<wire x1="30.861" y1="81.28" x2="30.861" y2="57.404" width="0.1524" layer="1"/>
<wire x1="30.861" y1="57.404" x2="31.203" y2="57.062" width="0.1524" layer="1"/>
<wire x1="31.203" y1="57.062" x2="31.203" y2="53.975" width="0.1524" layer="1"/>
<wire x1="53.76" y1="34.417" x2="52.959" y2="34.417" width="0.1524" layer="1"/>
<wire x1="31.877" y1="53.975" x2="31.203" y2="53.975" width="0.1524" layer="1"/>
<wire x1="51.39015625" y1="35.98584375" x2="51.39015625" y2="49.8789" width="0.1524" layer="1"/>
<wire x1="51.39015625" y1="49.8789" x2="48.38625625" y2="52.8828" width="0.1524" layer="1"/>
<wire x1="32.9692" y1="52.8828" x2="31.877" y2="53.975" width="0.1524" layer="1"/>
<wire x1="48.38625625" y1="52.8828" x2="32.9692" y2="52.8828" width="0.1524" layer="1"/>
<wire x1="52.959" y1="34.417" x2="51.39015625" y2="35.98584375" width="0.1524" layer="1"/>
<wire x1="82.384" y1="77.47" x2="82.384" y2="61.429" width="0.1524" layer="1"/>
<wire x1="82.296" y1="61.341" x2="82.384" y2="61.429" width="0.1524" layer="1"/>
<via x="82.296" y="61.341" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="88.646" y1="57.531" x2="84.836" y2="61.341" width="0.1524" layer="16"/>
<wire x1="82.296" y1="61.341" x2="84.836" y2="61.341" width="0.1524" layer="16"/>
<wire x1="88.646" y1="57.531" x2="88.646" y2="40.259" width="0.1524" layer="16"/>
<wire x1="88.646" y1="40.259" x2="90.424" y2="38.481" width="0.1524" layer="16"/>
<via x="90.424" y="38.481" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="93.726" y1="38.481" x2="90.424" y2="38.481" width="0.1524" layer="1"/>
<wire x1="94.068" y1="38.139" x2="93.726" y2="38.481" width="0.1524" layer="1"/>
<wire x1="94.068" y1="37.338" x2="94.068" y2="38.139" width="0.1524" layer="1"/>
<wire x1="53.76" y1="34.417" x2="53.76" y2="33.616" width="0.1524" layer="1"/>
<wire x1="59.67511875" y1="27.70088125" x2="63.754" y2="27.70088125" width="0.1524" layer="1"/>
<wire x1="63.754" y1="27.70088125" x2="66.335909375" y2="27.70088125" width="0.1524" layer="1"/>
<wire x1="53.76" y1="33.616" x2="59.67511875" y2="27.70088125" width="0.1524" layer="1"/>
<wire x1="90.424" y1="38.481" x2="90.424" y2="36.83" width="0.1524" layer="16"/>
<wire x1="85.852" y1="32.258" x2="85.852" y2="29.337" width="0.1524" layer="16"/>
<wire x1="90.424" y1="36.83" x2="85.852" y2="32.258" width="0.1524" layer="16"/>
<via x="85.852" y="29.337" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="85.852" y1="29.337" x2="84.455" y2="30.734" width="0.1524" layer="1"/>
<wire x1="84.455" y1="30.734" x2="83.185" y2="30.734" width="0.1524" layer="1"/>
<wire x1="83.058" y1="30.861" x2="83.185" y2="30.734" width="0.1524" layer="1"/>
<via x="83.058" y="30.861" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="83.058" y1="30.861" x2="82.804" y2="31.115" width="0.1524" layer="16"/>
<wire x1="82.804" y1="31.115" x2="79.502" y2="31.115" width="0.1524" layer="16"/>
<wire x1="79.502" y1="31.115" x2="75.565" y2="27.178" width="0.1524" layer="16"/>
<wire x1="75.565" y1="27.178" x2="63.754" y2="27.178" width="0.1524" layer="16"/>
<via x="63.754" y="27.178" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="63.754" y1="27.178" x2="63.754" y2="27.70088125" width="0.1524" layer="1"/>
</signal>
<signal name="AN_AD1">
<contactref element="CON2" pad="171"/>
<contactref element="U1" pad="11"/>
<contactref element="U6" pad="11"/>
<contactref element="U8" pad="11"/>
<contactref element="U9" pad="11"/>
<contactref element="U10" pad="11"/>
<wire x1="23.622" y1="80.771009375" x2="23.622" y2="79.121" width="0.1524" layer="1"/>
<wire x1="23.622" y1="79.121" x2="23.622" y2="77.343" width="0.1524" layer="1"/>
<wire x1="23.622" y1="77.343" x2="22.987" y2="76.708" width="0.1524" layer="1"/>
<wire x1="29.083" y1="50.419" x2="29.083" y2="50.165" width="0.1524" layer="1"/>
<wire x1="29.083" y1="50.165" x2="29.718" y2="49.53" width="0.1524" layer="1"/>
<wire x1="22.987" y1="76.708" x2="22.987" y2="56.515" width="0.1524" layer="1"/>
<wire x1="22.987" y1="56.515" x2="29.083" y2="50.419" width="0.1524" layer="1"/>
<wire x1="29.718" y1="49.53" x2="31.369990625" y2="49.53" width="0.1524" layer="1"/>
<via x="23.622" y="79.121" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="23.622" y1="79.121" x2="29.972" y2="79.121" width="0.1524" layer="16"/>
<wire x1="29.972" y1="79.121" x2="36.703" y2="85.852" width="0.1524" layer="16"/>
<wire x1="36.703" y1="85.852" x2="71.755" y2="85.852" width="0.1524" layer="16"/>
<wire x1="71.755" y1="85.852" x2="74.676" y2="82.931" width="0.1524" layer="16"/>
<wire x1="74.676" y1="82.931" x2="80.01" y2="82.931" width="0.1524" layer="16"/>
<wire x1="85.471" y1="77.47" x2="85.471" y2="76.581" width="0.1524" layer="16"/>
<wire x1="85.471" y1="77.47" x2="80.01" y2="82.931" width="0.1524" layer="16"/>
<via x="85.471" y="76.581" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="85.471" y1="76.581" x2="85.471" y2="74.422" width="0.1524" layer="1"/>
<wire x1="85.979" y1="73.914" x2="87.630990625" y2="73.914" width="0.1524" layer="1"/>
<wire x1="85.471" y1="74.422" x2="85.979" y2="73.914" width="0.1524" layer="1"/>
<wire x1="78.993009375" y1="34.29" x2="80.772" y2="34.29" width="0.1524" layer="1"/>
<wire x1="82.296" y1="17.526" x2="82.296" y2="16.764" width="0.1524" layer="1"/>
<wire x1="80.518" y1="14.986" x2="78.612009375" y2="14.986" width="0.1524" layer="1"/>
<wire x1="82.296" y1="16.764" x2="80.518" y2="14.986" width="0.1524" layer="1"/>
<wire x1="87.630990625" y1="73.914" x2="89.027" y2="73.914" width="0.1524" layer="1"/>
<wire x1="89.027" y1="73.914" x2="89.408" y2="73.533" width="0.1524" layer="1"/>
<wire x1="89.408" y1="73.533" x2="89.408" y2="54.737" width="0.1524" layer="1"/>
<wire x1="85.217" y1="50.546" x2="82.55" y2="50.546" width="0.1524" layer="1"/>
<wire x1="89.408" y1="54.737" x2="85.217" y2="50.546" width="0.1524" layer="1"/>
<via x="82.55" y="50.546" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="82.55" y1="50.546" x2="82.55" y2="43.688" width="0.1524" layer="16"/>
<wire x1="82.55" y1="43.688" x2="83.947" y2="42.291" width="0.1524" layer="16"/>
<wire x1="83.947" y1="42.291" x2="83.947" y2="34.798" width="0.1524" layer="16"/>
<wire x1="83.439" y1="34.29" x2="83.947" y2="34.798" width="0.1524" layer="16"/>
<via x="80.772" y="34.29" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="66.335909375" y1="27.20088125" x2="68.17611875" y2="27.20088125" width="0.1524" layer="1"/>
<wire x1="68.453" y1="26.924" x2="68.453" y2="21.082" width="0.1524" layer="1"/>
<wire x1="68.17611875" y1="27.20088125" x2="68.453" y2="26.924" width="0.1524" layer="1"/>
<via x="68.453" y="21.082" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="68.453" y1="21.082" x2="69.723" y2="19.812" width="0.1524" layer="16"/>
<wire x1="80.01" y1="19.812" x2="82.296" y2="17.526" width="0.1524" layer="16"/>
<wire x1="69.723" y1="19.812" x2="80.01" y2="19.812" width="0.1524" layer="16"/>
<via x="82.296" y="17.526" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="80.772" y1="34.29" x2="82.296" y2="32.766" width="0.1524" layer="1"/>
<wire x1="82.296" y1="32.766" x2="82.296" y2="17.526" width="0.1524" layer="1"/>
<wire x1="80.772" y1="34.29" x2="83.439" y2="34.29" width="0.1524" layer="16"/>
</signal>
<signal name="AN_AD3">
<contactref element="CON2" pad="173"/>
<contactref element="U1" pad="13"/>
<contactref element="U6" pad="13"/>
<contactref element="U8" pad="13"/>
<contactref element="U9" pad="13"/>
<contactref element="U10" pad="13"/>
<wire x1="5.5118" y1="78.232" x2="10.795" y2="83.5152" width="0.1524" layer="1"/>
<wire x1="5.5118" y1="57.9882" x2="10.16" y2="53.34" width="0.1524" layer="1"/>
<wire x1="5.5118" y1="78.232" x2="5.5118" y2="57.9882" width="0.1524" layer="1"/>
<wire x1="21.970009375" y1="50.8" x2="20.32" y2="50.8" width="0.1524" layer="1"/>
<via x="20.32" y="50.8" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="20.32" y1="50.8" x2="17.78" y2="53.34" width="0.1524" layer="16"/>
<wire x1="17.78" y1="53.34" x2="16.002" y2="53.34" width="0.1524" layer="16"/>
<via x="16.002" y="53.34" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="10.16" y1="53.34" x2="16.002" y2="53.34" width="0.1524" layer="1"/>
<wire x1="88.392990625" y1="33.02" x2="91.313" y2="33.02" width="0.1524" layer="1"/>
<via x="91.313" y="33.02" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="89.916" y1="13.589" x2="88.138990625" y2="13.589" width="0.1524" layer="1"/>
<wire x1="88.011990625" y1="13.716" x2="88.138990625" y2="13.589" width="0.1524" layer="1"/>
<via x="89.916" y="13.589" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="91.313" y1="14.605" x2="90.297" y2="13.589" width="0.1524" layer="16"/>
<wire x1="90.297" y1="13.589" x2="89.916" y2="13.589" width="0.1524" layer="16"/>
<wire x1="91.567" y1="33.655" x2="91.313" y2="33.401" width="0.1524" layer="16"/>
<wire x1="91.313" y1="33.401" x2="91.313" y2="33.02" width="0.1524" layer="16"/>
<wire x1="91.567" y1="72.517" x2="88.646" y2="75.438" width="0.1524" layer="16"/>
<wire x1="88.646" y1="75.438" x2="80.391" y2="75.438" width="0.1524" layer="16"/>
<wire x1="91.567" y1="33.655" x2="91.567" y2="72.517" width="0.1524" layer="16"/>
<via x="80.391" y="75.438" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="80.391" y1="75.438" x2="80.390009375" y2="75.438" width="0.1524" layer="1"/>
<wire x1="80.390009375" y1="75.438" x2="80.136009375" y2="75.184" width="0.1524" layer="1"/>
<wire x1="78.231009375" y1="75.184" x2="80.136009375" y2="75.184" width="0.1524" layer="1"/>
<wire x1="80.391" y1="75.438" x2="80.391" y2="81.534" width="0.1524" layer="16"/>
<wire x1="74.422" y1="82.296" x2="71.501" y2="85.217" width="0.1524" layer="16"/>
<wire x1="71.501" y1="85.217" x2="38.354" y2="85.217" width="0.1524" layer="16"/>
<wire x1="38.354" y1="85.217" x2="34.036" y2="80.899" width="0.1524" layer="16"/>
<wire x1="80.391" y1="81.534" x2="79.629" y2="82.296" width="0.1524" layer="16"/>
<wire x1="79.629" y1="82.296" x2="74.422" y2="82.296" width="0.1524" layer="16"/>
<via x="34.036" y="80.899" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="34.036" y1="80.899" x2="32.131" y2="80.899" width="0.1524" layer="1"/>
<wire x1="32.131" y1="80.899" x2="29.464" y2="83.566" width="0.1524" layer="1"/>
<wire x1="27.178" y1="83.566" x2="26.416" y2="84.328" width="0.1524" layer="1"/>
<wire x1="29.464" y1="83.566" x2="27.178" y2="83.566" width="0.1524" layer="1"/>
<wire x1="22.8092" y1="83.5152" x2="23.622" y2="84.328" width="0.1524" layer="1"/>
<wire x1="10.795" y1="83.5152" x2="22.8092" y2="83.5152" width="0.1524" layer="1"/>
<via x="23.622" y="84.328" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="23.622" y1="84.328" x2="26.416" y2="84.328" width="0.1524" layer="16"/>
<via x="26.416" y="84.328" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="24.13" y1="84.836" x2="23.622" y2="84.328" width="0.1524" layer="1"/>
<wire x1="24.13" y1="84.836" x2="24.13" y2="86.233" width="0.1524" layer="1"/>
<wire x1="91.313" y1="33.02" x2="91.313" y2="14.605" width="0.1524" layer="16"/>
<wire x1="66.335909375" y1="26.70088125" x2="67.40611875" y2="26.70088125" width="0.1524" layer="1"/>
<wire x1="67.40611875" y1="26.70088125" x2="67.818" y2="26.289" width="0.1524" layer="1"/>
<wire x1="67.818" y1="26.289" x2="67.818" y2="21.59" width="0.1524" layer="1"/>
<wire x1="67.818" y1="21.59" x2="67.31" y2="21.082" width="0.1524" layer="1"/>
<via x="67.31" y="21.082" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="67.31" y1="21.082" x2="68.199" y2="21.971" width="0.1524" layer="16"/>
<wire x1="83.312" y1="20.32" x2="83.185" y2="20.193" width="0.1524" layer="16"/>
<wire x1="83.185" y1="20.193" x2="70.739" y2="20.193" width="0.1524" layer="16"/>
<wire x1="68.199" y1="21.971" x2="68.961" y2="21.971" width="0.1524" layer="16"/>
<wire x1="68.961" y1="21.971" x2="70.739" y2="20.193" width="0.1524" layer="16"/>
<wire x1="84.963" y1="13.716" x2="83.312" y2="15.367" width="0.1524" layer="1"/>
<wire x1="83.312" y1="15.367" x2="83.312" y2="20.32" width="0.1524" layer="1"/>
<wire x1="88.011990625" y1="13.716" x2="84.963" y2="13.716" width="0.1524" layer="1"/>
<via x="83.312" y="20.32" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="24.13" y1="86.233" x2="24.892" y2="86.995" width="0.1524" layer="1"/>
<wire x1="24.892" y1="86.995" x2="24.892" y2="90.170990625" width="0.1524" layer="1"/>
</signal>
<signal name="AN_AD5">
<contactref element="CON2" pad="175"/>
<contactref element="U13" pad="11"/>
<wire x1="46.100009375" y1="37.846" x2="47.625" y2="37.846" width="0.1524" layer="1"/>
<wire x1="47.625" y1="37.846" x2="48.133" y2="37.338" width="0.1524" layer="1"/>
<wire x1="48.133" y1="37.338" x2="48.133" y2="33.147" width="0.1524" layer="1"/>
<wire x1="55.07911875" y1="26.20088125" x2="66.335909375" y2="26.20088125" width="0.1524" layer="1"/>
<wire x1="48.133" y1="33.147" x2="55.07911875" y2="26.20088125" width="0.1524" layer="1"/>
</signal>
<signal name="AN_AD7">
<contactref element="CON2" pad="177"/>
<contactref element="U13" pad="13"/>
<wire x1="55.499990625" y1="36.576" x2="57.15" y2="36.576" width="0.1524" layer="1"/>
<wire x1="66.335909375" y1="25.70088125" x2="58.21288125" y2="25.70088125" width="0.1524" layer="1"/>
<wire x1="58.21288125" y1="25.70088125" x2="58.039" y2="25.527" width="0.1524" layer="1"/>
<via x="58.039" y="25.527" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="58.039" y1="25.527" x2="57.98894375" y2="25.527" width="0.1524" layer="16"/>
<wire x1="57.98894375" y1="25.527" x2="57.0992" y2="26.41674375" width="0.1524" layer="16"/>
<wire x1="57.0992" y1="36.525203125" x2="57.15" y2="36.576" width="0.1524" layer="16"/>
<wire x1="57.0992" y1="26.41674375" x2="57.0992" y2="36.525203125" width="0.1524" layer="16"/>
<via x="57.15" y="36.576" extent="1-16" drill="0.35" shape="octagon"/>
</signal>
<signal name="AN_AD6">
<contactref element="CON2" pad="178"/>
<contactref element="U13" pad="14"/>
<via x="57.658" y="37.846" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="55.499990625" y1="37.846" x2="57.658" y2="37.846" width="0.1524" layer="1"/>
<wire x1="72.303909375" y1="25.70088125" x2="74.88311875" y2="25.70088125" width="0.1524" layer="1"/>
<wire x1="74.88311875" y1="25.70088125" x2="75.184" y2="25.4" width="0.1524" layer="1"/>
<via x="75.184" y="25.4" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="75.184" y1="25.4" x2="74.803" y2="25.781" width="0.1524" layer="16"/>
<wire x1="74.803" y1="25.781" x2="59.182" y2="25.781" width="0.1524" layer="16"/>
<wire x1="57.658" y1="37.846" x2="57.785" y2="37.719" width="0.1524" layer="16"/>
<wire x1="57.785" y1="37.719" x2="57.785" y2="27.178" width="0.1524" layer="16"/>
<wire x1="57.785" y1="27.178" x2="59.182" y2="25.781" width="0.1524" layer="16"/>
</signal>
<signal name="AN_AD4">
<contactref element="CON2" pad="176"/>
<contactref element="U13" pad="10"/>
<wire x1="46.100009375" y1="39.116" x2="49.657" y2="39.116" width="0.1524" layer="1"/>
<wire x1="49.657" y1="39.116" x2="50.165" y2="38.608" width="0.1524" layer="1"/>
<wire x1="50.165" y1="38.608" x2="50.165" y2="34.29" width="0.1524" layer="1"/>
<wire x1="57.531" y1="26.924" x2="59.309" y2="26.924" width="0.1524" layer="1"/>
<wire x1="50.165" y1="34.29" x2="57.531" y2="26.924" width="0.1524" layer="1"/>
<via x="59.309" y="26.924" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="59.309" y1="26.924" x2="60.071" y2="26.162" width="0.1524" layer="16"/>
<wire x1="75.819" y1="26.162" x2="75.946" y2="26.035" width="0.1524" layer="16"/>
<wire x1="60.071" y1="26.162" x2="75.819" y2="26.162" width="0.1524" layer="16"/>
<via x="75.946" y="26.035" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="75.946" y1="26.035" x2="75.78011875" y2="26.20088125" width="0.1524" layer="1"/>
<wire x1="75.78011875" y1="26.20088125" x2="72.303909375" y2="26.20088125" width="0.1524" layer="1"/>
</signal>
<signal name="AN_AD2">
<contactref element="CON2" pad="174"/>
<contactref element="U1" pad="14"/>
<contactref element="U6" pad="14"/>
<contactref element="U8" pad="14"/>
<contactref element="U9" pad="14"/>
<contactref element="U10" pad="14"/>
<wire x1="23.622" y1="90.170990625" x2="23.622" y2="85.471" width="0.1524" layer="1"/>
<wire x1="22.098" y1="83.947" x2="10.795" y2="83.947" width="0.1524" layer="1"/>
<wire x1="10.795" y1="83.947" x2="5.207" y2="78.359" width="0.1524" layer="1"/>
<wire x1="12.7" y1="49.53" x2="5.207" y2="57.023" width="0.1524" layer="1"/>
<wire x1="23.622" y1="85.471" x2="22.098" y2="83.947" width="0.1524" layer="1"/>
<wire x1="5.207" y1="78.359" x2="5.207" y2="57.023" width="0.1524" layer="1"/>
<wire x1="21.970009375" y1="49.53" x2="20.32" y2="49.53" width="0.1524" layer="1"/>
<via x="20.32" y="49.53" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="20.32" y1="49.53" x2="16.002" y2="49.53" width="0.1524" layer="16"/>
<via x="16.002" y="49.53" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="16.002" y1="49.53" x2="12.7" y2="49.53" width="0.1524" layer="1"/>
<wire x1="88.392990625" y1="34.29" x2="90.551" y2="34.29" width="0.1524" layer="1"/>
<via x="90.551" y="34.29" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="88.011990625" y1="14.986" x2="89.916" y2="14.986" width="0.1524" layer="1"/>
<via x="89.916" y="14.986" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="89.916" y1="14.986" x2="89.916" y2="15.113" width="0.1524" layer="16"/>
<wire x1="90.551" y1="15.621" x2="90.551" y2="34.29" width="0.1524" layer="16"/>
<wire x1="91.186" y1="71.12" x2="91.186" y2="34.925" width="0.1524" layer="16"/>
<wire x1="90.551" y1="34.29" x2="91.186" y2="34.925" width="0.1524" layer="16"/>
<wire x1="88.392" y1="73.914" x2="80.391" y2="73.914" width="0.1524" layer="16"/>
<wire x1="91.186" y1="71.12" x2="88.392" y2="73.914" width="0.1524" layer="16"/>
<via x="80.391" y="73.914" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="78.231009375" y1="73.914" x2="80.391" y2="73.914" width="0.1524" layer="1"/>
<wire x1="20.32" y1="49.53" x2="20.32" y2="40.132" width="0.1524" layer="16"/>
<wire x1="20.32" y1="40.132" x2="21.336" y2="39.116" width="0.1524" layer="16"/>
<wire x1="21.336" y1="39.116" x2="21.336" y2="35.306" width="0.1524" layer="16"/>
<wire x1="21.336" y1="35.306" x2="25.654" y2="30.988" width="0.1524" layer="16"/>
<wire x1="25.654" y1="30.988" x2="25.654" y2="19.812" width="0.1524" layer="16"/>
<via x="25.654" y="19.812" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="25.654" y1="19.812" x2="60.452" y2="19.812" width="0.1524" layer="1"/>
<wire x1="60.452" y1="19.812" x2="64.389" y2="15.875" width="0.1524" layer="1"/>
<via x="64.389" y="15.875" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="64.389" y1="15.875" x2="70.231" y2="15.875" width="0.1524" layer="16"/>
<wire x1="70.231" y1="15.875" x2="89.154" y2="15.875" width="0.1524" layer="16"/>
<wire x1="89.154" y1="15.875" x2="89.916" y2="15.113" width="0.1524" layer="16"/>
<wire x1="89.916" y1="14.986" x2="90.551" y2="15.621" width="0.1524" layer="16"/>
<wire x1="72.303909375" y1="26.70088125" x2="70.76988125" y2="26.70088125" width="0.1524" layer="1"/>
<wire x1="70.76988125" y1="26.70088125" x2="70.485" y2="26.416" width="0.1524" layer="1"/>
<wire x1="70.213803125" y1="23.350803125" x2="70.213803125" y2="15.892196875" width="0.1524" layer="1"/>
<wire x1="70.213803125" y1="15.892196875" x2="70.231" y2="15.875" width="0.1524" layer="1"/>
<wire x1="70.485" y1="23.622" x2="70.213803125" y2="23.350803125" width="0.1524" layer="1"/>
<wire x1="70.485" y1="26.416" x2="70.485" y2="23.622" width="0.1524" layer="1"/>
<via x="70.231" y="15.875" extent="1-16" drill="0.35" shape="octagon"/>
</signal>
<signal name="AN_AD0">
<contactref element="CON2" pad="172"/>
<contactref element="U1" pad="10"/>
<contactref element="U6" pad="10"/>
<contactref element="U8" pad="10"/>
<contactref element="U9" pad="10"/>
<contactref element="U10" pad="10"/>
<wire x1="31.369990625" y1="48.26" x2="28.829" y2="48.26" width="0.1524" layer="1"/>
<wire x1="28.829" y1="48.26" x2="28.7274" y2="48.3616" width="0.1524" layer="1"/>
<wire x1="28.7274" y1="50.28605" x2="22.352" y2="56.66145" width="0.1524" layer="1"/>
<wire x1="28.7274" y1="48.3616" x2="28.7274" y2="50.28605" width="0.1524" layer="1"/>
<wire x1="22.352" y1="56.66145" x2="22.352" y2="79.121" width="0.1524" layer="1"/>
<wire x1="22.352" y1="79.121" x2="22.352" y2="80.771009375" width="0.1524" layer="1"/>
<via x="22.352" y="79.121" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="22.352" y1="79.121" x2="23.114" y2="78.359" width="0.1524" layer="16"/>
<wire x1="29.845" y1="78.359" x2="37.0332" y2="85.5472" width="0.1524" layer="16"/>
<wire x1="71.62874375" y1="85.5472" x2="74.54974375" y2="82.6262" width="0.1524" layer="16"/>
<wire x1="37.0332" y1="85.5472" x2="71.62874375" y2="85.5472" width="0.1524" layer="16"/>
<wire x1="74.54974375" y1="82.6262" x2="79.8068" y2="82.6262" width="0.1524" layer="16"/>
<wire x1="79.8068" y1="82.6262" x2="84.455" y2="77.978" width="0.1524" layer="16"/>
<wire x1="84.455" y1="77.978" x2="84.455" y2="76.581" width="0.1524" layer="16"/>
<wire x1="23.114" y1="78.359" x2="29.845" y2="78.359" width="0.1524" layer="16"/>
<via x="84.455" y="76.581" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="87.630990625" y1="72.644" x2="85.471" y2="72.644" width="0.1524" layer="1"/>
<wire x1="85.471" y1="72.644" x2="84.455" y2="73.66" width="0.1524" layer="1"/>
<wire x1="84.455" y1="73.66" x2="84.455" y2="76.581" width="0.1524" layer="1"/>
<wire x1="78.612009375" y1="16.256" x2="80.518" y2="16.256" width="0.1524" layer="1"/>
<wire x1="80.518" y1="16.256" x2="81.28" y2="17.018" width="0.1524" layer="1"/>
<wire x1="81.28" y1="17.018" x2="81.28" y2="17.526" width="0.1524" layer="1"/>
<wire x1="81.915" y1="18.161" x2="81.915" y2="29.718" width="0.1524" layer="1"/>
<wire x1="81.28" y1="17.526" x2="81.915" y2="18.161" width="0.1524" layer="1"/>
<wire x1="31.369990625" y1="48.26" x2="32.766" y2="48.26" width="0.1524" layer="1"/>
<wire x1="37.084" y1="52.578" x2="48.26" y2="52.578" width="0.1524" layer="1"/>
<wire x1="32.766" y1="48.26" x2="37.084" y2="52.578" width="0.1524" layer="1"/>
<wire x1="50.83135625" y1="50.00664375" x2="50.83135625" y2="34.38564375" width="0.1524" layer="1"/>
<via x="81.28" y="17.526" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="48.26" y1="52.578" x2="50.83135625" y2="50.00664375" width="0.1524" layer="1"/>
<wire x1="57.404" y1="27.813" x2="58.674" y2="27.813" width="0.1524" layer="1"/>
<wire x1="50.83135625" y1="34.38564375" x2="57.404" y2="27.813" width="0.1524" layer="1"/>
<via x="58.674" y="27.813" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="58.674" y1="27.813" x2="60.071" y2="27.813" width="0.1524" layer="16"/>
<wire x1="60.071" y1="27.813" x2="60.706" y2="27.178" width="0.1524" layer="16"/>
<wire x1="60.706" y1="27.178" x2="60.706" y2="26.543" width="0.1524" layer="16"/>
<wire x1="60.706" y1="26.543" x2="60.7822" y2="26.4668" width="0.1524" layer="16"/>
<wire x1="60.7822" y1="26.4668" x2="75.51965" y2="26.4668" width="0.1524" layer="16"/>
<wire x1="75.84985" y1="26.797" x2="76.708" y2="26.797" width="0.1524" layer="16"/>
<wire x1="75.84985" y1="26.797" x2="75.51965" y2="26.4668" width="0.1524" layer="16"/>
<via x="76.708" y="26.797" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="72.303909375" y1="27.20088125" x2="75.16111875" y2="27.20088125" width="0.1524" layer="1"/>
<wire x1="75.565" y1="26.797" x2="76.708" y2="26.797" width="0.1524" layer="1"/>
<wire x1="75.16111875" y1="27.20088125" x2="75.565" y2="26.797" width="0.1524" layer="1"/>
<wire x1="81.915" y1="29.718" x2="81.28" y2="30.353" width="0.1524" layer="1"/>
<wire x1="81.28" y1="30.353" x2="80.137" y2="31.496" width="0.1524" layer="1"/>
<wire x1="77.851" y1="31.496" x2="76.835" y2="32.512" width="0.1524" layer="1"/>
<wire x1="76.835" y1="34.925" x2="77.47" y2="35.56" width="0.1524" layer="1"/>
<wire x1="77.47" y1="35.56" x2="78.993009375" y2="35.56" width="0.1524" layer="1"/>
<wire x1="80.137" y1="31.496" x2="77.851" y2="31.496" width="0.1524" layer="1"/>
<wire x1="76.835" y1="32.512" x2="76.835" y2="34.925" width="0.1524" layer="1"/>
<wire x1="79.248" y1="30.353" x2="76.708" y2="27.813" width="0.1524" layer="16"/>
<wire x1="76.708" y1="26.797" x2="76.708" y2="27.813" width="0.1524" layer="16"/>
<wire x1="81.28" y1="30.353" x2="79.248" y2="30.353" width="0.1524" layer="16"/>
<via x="81.28" y="30.353" extent="1-16" drill="0.35" shape="octagon"/>
</signal>
<signal name="DUT_AN">
<contactref element="CON2" pad="170"/>
<contactref element="U13" pad="1"/>
<wire x1="46.100003125" y1="50.546" x2="48.133" y2="50.546" width="0.1524" layer="1"/>
<wire x1="48.133" y1="50.546" x2="48.26" y2="50.419" width="0.1524" layer="1"/>
<via x="48.26" y="50.419" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="48.26" y1="50.419" x2="48.26" y2="49.022" width="0.1524" layer="16"/>
<wire x1="48.26" y1="49.022" x2="47.498" y2="48.26" width="0.1524" layer="16"/>
<wire x1="47.498" y1="48.26" x2="47.498" y2="44.831" width="0.1524" layer="16"/>
<wire x1="72.303909375" y1="27.70088125" x2="73.42088125" y2="27.70088125" width="0.1524" layer="1"/>
<wire x1="73.42088125" y1="27.70088125" x2="74.041" y2="28.321" width="0.1524" layer="1"/>
<via x="74.041" y="28.321" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="63.373" y1="28.321" x2="74.041" y2="28.321" width="0.1524" layer="16"/>
<wire x1="61.976" y1="44.577" x2="61.976" y2="29.718" width="0.1524" layer="16"/>
<wire x1="61.976" y1="44.577" x2="61.087" y2="45.466" width="0.1524" layer="16"/>
<wire x1="61.087" y1="45.466" x2="61.087" y2="45.66994375" width="0.1524" layer="16"/>
<wire x1="60.96074375" y1="45.7962" x2="59.94474375" y2="45.7962" width="0.1524" layer="16"/>
<wire x1="59.13194375" y1="46.609" x2="58.928" y2="46.609" width="0.1524" layer="16"/>
<wire x1="59.94474375" y1="45.7962" x2="59.13194375" y2="46.609" width="0.1524" layer="16"/>
<wire x1="61.087" y1="45.66994375" x2="60.96074375" y2="45.7962" width="0.1524" layer="16"/>
<wire x1="58.928" y1="46.609" x2="57.785" y2="47.752" width="0.1524" layer="16"/>
<wire x1="57.785" y1="47.752" x2="55.372" y2="47.752" width="0.1524" layer="16"/>
<wire x1="55.372" y1="47.752" x2="52.451" y2="44.831" width="0.1524" layer="16"/>
<wire x1="52.451" y1="44.831" x2="47.498" y2="44.831" width="0.1524" layer="16"/>
<wire x1="61.976" y1="29.718" x2="63.373" y2="28.321" width="0.1524" layer="16"/>
</signal>
<signal name="ADIG_SP6">
<contactref element="CON2" pad="168"/>
</signal>
<signal name="ADIG_SP4">
<contactref element="CON2" pad="166"/>
</signal>
<signal name="ADIG_SP2">
<contactref element="CON2" pad="164"/>
</signal>
<signal name="N$10">
<contactref element="U1" pad="15"/>
<contactref element="R1" pad="2"/>
<wire x1="21.970009375" y1="48.26" x2="24.511" y2="48.26" width="0.1524" layer="1"/>
<via x="24.511" y="48.26" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="24.511" y1="48.26" x2="25.908" y2="48.26" width="0.1524" layer="16"/>
<wire x1="25.908" y1="48.26" x2="29.464" y2="51.816" width="0.1524" layer="16"/>
<wire x1="29.464" y1="51.816" x2="29.464" y2="52.705" width="0.1524" layer="16"/>
<via x="29.464" y="52.705" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="29.503" y1="53.975" x2="29.464" y2="53.936" width="0.1524" layer="1"/>
<wire x1="29.464" y1="53.936" x2="29.464" y2="52.705" width="0.1524" layer="1"/>
</signal>
<signal name="N$4">
<contactref element="U6" pad="15"/>
<contactref element="R4" pad="2"/>
<wire x1="22.352" y1="90.170990625" x2="22.352" y2="86.487" width="0.1524" layer="1"/>
<via x="22.352" y="86.487" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="25.908" y1="82.296" x2="22.733" y2="82.296" width="0.1524" layer="16"/>
<wire x1="22.733" y1="82.296" x2="22.352" y2="82.677" width="0.1524" layer="16"/>
<wire x1="22.352" y1="82.677" x2="22.352" y2="86.487" width="0.1524" layer="16"/>
<via x="25.908" y="82.296" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="25.908" y1="82.296" x2="27.09" y2="82.296" width="0.1524" layer="1"/>
</signal>
<signal name="N$11">
<contactref element="U8" pad="15"/>
<contactref element="R6" pad="2"/>
<wire x1="88.392990625" y1="35.56" x2="90.043" y2="35.56" width="0.1524" layer="1"/>
<wire x1="91.059" y1="36.576" x2="91.059" y2="37.211" width="0.1524" layer="1"/>
<wire x1="91.059" y1="37.211" x2="91.186" y2="37.338" width="0.1524" layer="1"/>
<wire x1="91.186" y1="37.338" x2="92.368" y2="37.338" width="0.1524" layer="1"/>
<wire x1="90.043" y1="35.56" x2="91.059" y2="36.576" width="0.1524" layer="1"/>
</signal>
<signal name="IO22">
<contactref element="U6" pad="3"/>
</signal>
<signal name="IO23">
<contactref element="U6" pad="2"/>
</signal>
<signal name="IO24">
<contactref element="U6" pad="23"/>
</signal>
<signal name="IO25">
<contactref element="U6" pad="22"/>
</signal>
<signal name="IO26">
<contactref element="U6" pad="21"/>
</signal>
<signal name="IO27">
<contactref element="U6" pad="20"/>
</signal>
<signal name="IO28">
<contactref element="U6" pad="19"/>
</signal>
<signal name="IO29">
<contactref element="U6" pad="18"/>
</signal>
<signal name="IO30">
<contactref element="U6" pad="17"/>
</signal>
<signal name="IO31">
<contactref element="U6" pad="16"/>
</signal>
<signal name="IO48">
<contactref element="U8" pad="9"/>
</signal>
<signal name="IO49">
<contactref element="U8" pad="8"/>
</signal>
<signal name="IO50">
<contactref element="U8" pad="7"/>
</signal>
<signal name="ANMUX_1">
<contactref element="U1" pad="1"/>
<contactref element="U13" pad="9"/>
<wire x1="31.369996875" y1="36.83" x2="38.989" y2="36.83" width="0.1524" layer="1"/>
<wire x1="42.545" y1="40.386" x2="46.100009375" y2="40.386" width="0.1524" layer="1"/>
<wire x1="38.989" y1="36.83" x2="42.545" y2="40.386" width="0.1524" layer="1"/>
</signal>
<signal name="ANMUX_2">
<contactref element="U6" pad="1"/>
<contactref element="U13" pad="8"/>
<wire x1="46.100009375" y1="41.656" x2="49.149" y2="41.656" width="0.1524" layer="1"/>
<wire x1="49.149" y1="41.656" x2="50.39955625" y2="42.90655625" width="0.1524" layer="1"/>
<wire x1="50.39955625" y1="50.0073875" x2="48.234971875" y2="52.171971875" width="0.1524" layer="1"/>
<wire x1="50.39955625" y1="42.90655625" x2="50.39955625" y2="50.0073875" width="0.1524" layer="1"/>
<wire x1="48.234971875" y1="52.171971875" x2="38.328971875" y2="52.171971875" width="0.1524" layer="1"/>
<wire x1="38.328971875" y1="52.171971875" x2="36.322" y2="50.165" width="0.1524" layer="1"/>
<via x="36.322" y="50.165" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="36.322" y1="62.23" x2="36.322" y2="50.165" width="0.1524" layer="16"/>
<wire x1="10.922" y1="80.771003125" x2="10.922" y2="79.121" width="0.1524" layer="1"/>
<wire x1="12.192" y1="77.851" x2="13.843" y2="77.851" width="0.1524" layer="1"/>
<wire x1="10.922" y1="79.121" x2="12.192" y2="77.851" width="0.1524" layer="1"/>
<via x="13.843" y="77.851" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="13.843" y1="77.851" x2="17.272" y2="74.422" width="0.1524" layer="16"/>
<wire x1="35.433" y1="74.422" x2="35.941" y2="73.914" width="0.1524" layer="16"/>
<wire x1="35.941" y1="73.914" x2="35.941" y2="62.611" width="0.1524" layer="16"/>
<wire x1="17.272" y1="74.422" x2="35.433" y2="74.422" width="0.1524" layer="16"/>
<wire x1="35.941" y1="62.611" x2="36.322" y2="62.23" width="0.1524" layer="16"/>
</signal>
<signal name="ANMUX_3">
<contactref element="U13" pad="7"/>
</signal>
<signal name="ANMUX_4">
<contactref element="U8" pad="1"/>
<contactref element="U13" pad="6"/>
<wire x1="46.100009375" y1="44.196" x2="49.149" y2="44.196" width="0.1524" layer="1"/>
<wire x1="49.149" y1="44.196" x2="49.53" y2="44.577" width="0.1524" layer="1"/>
<wire x1="49.53" y1="46.228" x2="49.53" y2="44.577" width="0.1524" layer="1"/>
<wire x1="78.993003125" y1="46.99" x2="76.835" y2="46.99" width="0.1524" layer="1"/>
<via x="76.835" y="46.99" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="76.835" y1="46.99" x2="76.581" y2="47.244" width="0.1524" layer="16"/>
<wire x1="76.581" y1="47.244" x2="64.643" y2="47.244" width="0.1524" layer="16"/>
<via x="64.643" y="47.244" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="64.643" y1="47.244" x2="64.516" y2="47.244" width="0.1524" layer="1"/>
<wire x1="64.516" y1="47.244" x2="63.881" y2="47.879" width="0.1524" layer="1"/>
<wire x1="63.881" y1="47.879" x2="60.198" y2="47.879" width="0.1524" layer="1"/>
<via x="49.53" y="46.228" extent="1-16" drill="0.35" shape="octagon"/>
<via x="60.198" y="47.879" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="60.198" y1="47.879" x2="59.563" y2="48.514" width="0.1524" layer="16"/>
<wire x1="59.563" y1="48.514" x2="51.816" y2="48.514" width="0.1524" layer="16"/>
<wire x1="51.816" y1="48.514" x2="49.53" y2="46.228" width="0.1524" layer="16"/>
</signal>
<signal name="N$12">
<contactref element="U9" pad="15"/>
<contactref element="R45" pad="2"/>
<wire x1="88.011990625" y1="16.256" x2="90.551" y2="16.256" width="0.1524" layer="1"/>
<wire x1="91.225" y1="16.93" x2="91.225" y2="19.05" width="0.1524" layer="1"/>
<wire x1="90.551" y1="16.256" x2="91.225" y2="16.93" width="0.1524" layer="1"/>
</signal>
<signal name="N$13">
<contactref element="U10" pad="15"/>
<contactref element="R46" pad="2"/>
<wire x1="80.899" y1="72.644" x2="81.407" y2="73.152" width="0.1524" layer="1"/>
<wire x1="81.407" y1="73.152" x2="81.407" y2="76.073" width="0.1524" layer="1"/>
<wire x1="81.407" y1="76.073" x2="80.684" y2="76.796" width="0.1524" layer="1"/>
<wire x1="80.684" y1="76.796" x2="80.684" y2="77.47" width="0.1524" layer="1"/>
<wire x1="78.231009375" y1="72.644" x2="80.899" y2="72.644" width="0.1524" layer="1"/>
</signal>
<signal name="N$18">
<contactref element="R52" pad="2"/>
<contactref element="U13" pad="15"/>
<wire x1="55.46" y1="34.417" x2="55.46" y2="35.218" width="0.1524" layer="1"/>
<wire x1="53.975" y1="39.116" x2="55.499990625" y2="39.116" width="0.1524" layer="1"/>
<wire x1="55.46" y1="35.218" x2="55.118" y2="35.56" width="0.1524" layer="1"/>
<wire x1="55.118" y1="35.56" x2="53.975" y2="35.56" width="0.1524" layer="1"/>
<wire x1="53.975" y1="35.56" x2="53.467" y2="36.068" width="0.1524" layer="1"/>
<wire x1="53.467" y1="36.068" x2="53.467" y2="38.608" width="0.1524" layer="1"/>
<wire x1="53.467" y1="38.608" x2="53.975" y2="39.116" width="0.1524" layer="1"/>
</signal>
<signal name="IO68">
<contactref element="U9" pad="5"/>
</signal>
<signal name="IO69">
<contactref element="U9" pad="4"/>
</signal>
<signal name="IO70">
<contactref element="U9" pad="3"/>
</signal>
<signal name="IO71">
<contactref element="U9" pad="2"/>
</signal>
<signal name="IO72">
<contactref element="U9" pad="23"/>
</signal>
<signal name="IO73">
<contactref element="U9" pad="22"/>
</signal>
<signal name="IO74">
<contactref element="U9" pad="21"/>
</signal>
<signal name="IO75">
<contactref element="U9" pad="20"/>
</signal>
<signal name="IO76">
<contactref element="U9" pad="19"/>
</signal>
<signal name="IO77">
<contactref element="U9" pad="18"/>
</signal>
<signal name="IO78">
<contactref element="U9" pad="17"/>
</signal>
<signal name="IO79">
<contactref element="U9" pad="16"/>
</signal>
<signal name="IO80">
<contactref element="U10" pad="9"/>
</signal>
<signal name="IO81">
<contactref element="U10" pad="8"/>
</signal>
<signal name="IO82">
<contactref element="U10" pad="7"/>
</signal>
<signal name="IO83">
<contactref element="U10" pad="6"/>
</signal>
<signal name="IO84">
<contactref element="U10" pad="5"/>
</signal>
<signal name="IO85">
<contactref element="U10" pad="4"/>
</signal>
<signal name="IO86">
<contactref element="U10" pad="3"/>
</signal>
<signal name="IO87">
<contactref element="U10" pad="2"/>
</signal>
<signal name="IO88">
<contactref element="U10" pad="23"/>
</signal>
<signal name="IO89">
<contactref element="U10" pad="22"/>
</signal>
<signal name="IO90">
<contactref element="U10" pad="21"/>
</signal>
<signal name="IO91">
<contactref element="U10" pad="20"/>
</signal>
<signal name="IO92">
<contactref element="U10" pad="19"/>
</signal>
<signal name="IO93">
<contactref element="U10" pad="18"/>
</signal>
<signal name="IO94">
<contactref element="U10" pad="17"/>
</signal>
<signal name="IO95">
<contactref element="U10" pad="16"/>
</signal>
<signal name="ANMUX_5">
<contactref element="U9" pad="1"/>
<contactref element="U13" pad="5"/>
<wire x1="78.612003125" y1="27.686" x2="76.073" y2="27.686" width="0.1524" layer="1"/>
<wire x1="75.438" y1="28.321" x2="75.057" y2="28.321" width="0.1524" layer="1"/>
<wire x1="76.073" y1="27.686" x2="75.438" y2="28.321" width="0.1524" layer="1"/>
<via x="75.057


text:
" y="28.321" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="75.057" y1="28.321" x2="73.914" y2="29.464" width="0.1524" layer="16"/>
<wire x1="73.914" y1="29.464" x2="62.992" y2="29.464" width="0.1524" layer="16"/>
<wire x1="46.100009375" y1="45.466" x2="46.227009375" y2="45.593" width="0.1524" layer="1"/>
<wire x1="46.227009375" y1="45.593" x2="48.26" y2="45.593" width="0.1524" layer="1"/>
<via x="48.26" y="45.593" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="48.26" y1="45.593" x2="51.689" y2="45.593" width="0.1524" layer="16"/>
<wire x1="54.229" y1="48.133" x2="58.039" y2="48.133" width="0.1524" layer="16"/>
<wire x1="58.039" y1="48.133" x2="60.071" y2="46.101" width="0.1524" layer="16"/>
<wire x1="60.071" y1="46.101" x2="61.087" y2="46.101" width="0.1524" layer="16"/>
<wire x1="61.087" y1="46.101" x2="62.357" y2="44.831" width="0.1524" layer="16"/>
<wire x1="62.357" y1="30.099" x2="62.992" y2="29.464" width="0.1524" layer="16"/>
<wire x1="51.689" y1="45.593" x2="54.229" y2="48.133" width="0.1524" layer="16"/>
<wire x1="62.357" y1="44.831" x2="62.357" y2="30.099" width="0.1524" layer="16"/>
</signal>
<signal name="ANMUX_6">
<contactref element="U10" pad="1"/>
<contactref element="U13" pad="4"/>
<wire x1="48.3860125" y1="47.244003125" x2="47.878009375" y2="46.736" width="0.1524" layer="1"/>
<wire x1="46.100009375" y1="46.736" x2="47.878009375" y2="46.736" width="0.1524" layer="1"/>
<wire x1="48.514" y1="47.244" x2="48.3860125" y2="47.244003125" width="0.1524" layer="1"/>
<wire x1="59.436" y1="49.784" x2="51.816" y2="49.784" width="0.1524" layer="16"/>
<wire x1="51.816" y1="49.784" x2="49.276" y2="47.244" width="0.1524" layer="16"/>
<wire x1="49.276" y1="47.244" x2="48.514" y2="47.244" width="0.1524" layer="16"/>
<wire x1="59.436" y1="49.784" x2="61.341" y2="51.689" width="0.1524" layer="16"/>
<via x="48.514" y="47.244" extent="1-16" drill="0.35" shape="octagon"/>
<wire x1="61.341" y1="51.689" x2="77.343" y2="51.689" width="0.1524" layer="16"/>
<wire x1="87.630996875" y1="61.214" x2="89.027" y2="61.214" width="0.1524" layer="1"/>
<wire x1="89.027" y1="61.214" x2="89.027" y2="59.69" width="0.1524" layer="1"/>
<wire x1="89.027" y1="59.69" x2="89.1032" y2="59.6138" width="0.1524" layer="1"/>
<wire x1="89.1032" y1="59.6138" x2="89.1032" y2="54.86325625" width="0.1524" layer="1"/>
<wire x1="89.1032" y1="54.86325625" x2="85.92894375" y2="51.689" width="0.1524" layer="1"/>
<wire x1="85.92894375" y1="51.689" x2="77.343" y2="51.689" width="0.1524" layer="1"/>
<via x="77.343" y="51.689" extent="1-16" drill="0.35" shape="octagon"/>
</signal>
<signal name="ANMUX_8">
<contactref element="U13" pad="2"/>
</signal>
<signal name="ANMUX_7">
<contactref element="U13" pad="3"/>
</signal>
<signal name="N$19">
<contactref element="U13" pad="19"/>
<contactref element="TP1" pad="TP"/>
<wire x1="55.499990625" y1="44.196" x2="58.039" y2="44.196" width="0.1524" layer="1"/>
<wire x1="58.039" y1="44.196" x2="58.166" y2="44.323" width="0.1524" layer="1"/>
<wire x1="58.166" y1="44.323" x2="59.69" y2="44.323" width="0.1524" layer="1"/>
</signal>
<signal name="N$20">
<contactref element="U13" pad="18"/>
<contactref element="TP15" pad="TP"/>
<wire x1="55.499990625" y1="42.926" x2="57.658" y2="42.926" width="0.1524" layer="1"/>
<wire x1="57.658" y1="42.926" x2="58.293" y2="42.291" width="0.1524" layer="1"/>
<wire x1="58.293" y1="42.291" x2="59.69" y2="42.291" width="0.1524" layer="1"/>
</signal>
<signal name="N$21">
<contactref element="U13" pad="17"/>
<contactref element="TP16" pad="TP"/>
<wire x1="55.499990625" y1="41.656" x2="57.277" y2="41.656" width="0.1524" layer="1"/>
<wire x1="57.277" y1="41.656" x2="58.674" y2="40.259" width="0.1524" layer="1"/>
<wire x1="58.674" y1="40.259" x2="59.69" y2="40.259" width="0.1524" layer="1"/>
</signal>
<signal name="N$23">
<contactref element="U13" pad="16"/>
<contactref element="TP17" pad="TP"/>
<wire x1="55.499990625" y1="40.386" x2="57.023" y2="40.386" width="0.1524" layer="1"/>
<wire x1="57.023" y1="40.386" x2="58.039" y2="39.37" width="0.1524" layer="1"/>
<wire x1="58.547" y1="39.37" x2="59.69" y2="38.227" width="0.1524" layer="1"/>
<wire x1="58.547" y1="39.37" x2="58.039" y2="39.37" width="0.1524" layer="1"/>
</signal>
</signals>
<mfgpreviewcolors>
<mfgpreviewcolor name="soldermaskcolor" color="0xC8FF0000"/>
<mfgpreviewcolor name="silkscreencolor" color="0xFFFFFFFF"/>
<mfgpreviewcolor name="backgroundcolor" color="0xFF282828"/>
<mfgpreviewcolor name="coppercolor" color="0xFFFFFF00"/>
<mfgpreviewcolor name="substratecolor" color="0xFF786E46"/>
</mfgpreviewcolors>
</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>

repository: ARMmbed/fpga-ci-test-shield-hardware

license_type: permissive

repo_name: ARMmbed/fpga-ci-test-shield-hardware

branch_name: refs/heads/main

extension: brd


text:
#include "pch.h"

#include <cstdio>
#include <cstdlib>
#include <conio.h>

#include "calendar.h"
#include "CMonthInfo.h"
#include "user_interface.h"

void
CalendarControler::ClearScreen( void ) const
{
    system( "cls" );
} // CalendarControler::ClearScreen()

void
CalendarControler::cursor_key_proc( int key )
{
    switch( key )
    {
    case 0x50: // "↓"
        if( year_ < END_OF_YEAR )
            year_++;
        break;
    case 0x48: // "↑"
        if( year_ > 1 )
            year_--;
        break;
    case 0x4D: // "→"
        if( month_ < END_OF_MONTH )
            month_++;
        break;
    case 0x4B: // "←"
        if( month_ > 1 )
            month_--;
        break;
    }
} // CalendarControler::cursor_key_proc()

bool
CalendarControler::PrintMenu( void )
{
    ClearScreen(); // 画面表示をクリアする
    printf(
        "表示年月日を入力して下さい\n"
        "ex) 2019 2\n"
        "> "
    );

    char input_buffer[ 256 ];
    fgets( input_buffer, sizeof( input_buffer ), stdin );
    int input_value_count = sscanf( input_buffer, "%d %d", &year_, &month_ );

    // 入力値チェック
    bool success = true; // 先ずは入力成功に設定しておく
    if( input_value_count != 2 )// 入力値が2になっている？
    {
        success = false;
    }
    // 年は1から9999の値が指定されている？
    if( ( year_ <    1 ) || // 年が   1より小さい？
        ( year_ > 9999 ) )  // 年が9999より大きい？
    {
        success = false;
    }
    // 月は1から12の値が指定されている？
    if( ( month_ <  1 ) || // 月が 1より小さい？
        ( month_ > 12 ) )  // 月が12より大きい？
    {
        success = false;
    }
    if( !success )
    {
        printf( "入力に誤りがあります。もう一度入力して下さい\n" );
    }
    else
    {
        ClearScreen(); // 画面をクリアして、表示更新に備える
    }

    return success;
} // CalendarControler::PrintMenu()

void
CalendarControler::ShowInstruction( void )
{
    printf( "↑:去年 ↓:来年 →:来月 ←:先月 c:年月指定 q:終了\n" );
} // CalendarControler::PrintInstruction()

bool
CalendarControler::ChangeCalendar( void )
{
    bool request_quit = false;
    int key_1st = _getch(); // 1回目のキーコードを拾う
    int key_2nd = _getch(); // 2回目のキーコードを拾う
    switch( key_1st )
    {
    case 'q':
        request_quit = true;
        break;

    case 'c':
        PrintMenu();
        break;

    case 0xE0:
        cursor_key_proc( key_2nd );
        ClearScreen();
        break;
    }

    return request_quit;
} // CalendarControler::ChangeCalendar()

DateInfo
CalendarControler::GetInputDate( void )
{
    DateInfo date;
    date.year = year_;
    date.month = month_;

    return date;
} // CalendarControler::GetInputDate()

branch_name: refs/heads/master

extension: cpp


text:
SUMMARY = "Very Secure FTP server"
HOMEPAGE = "https://security.appspot.com/vsftpd.html"
SECTION = "net"
LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=a6067ad950b28336613aed9dd47b1271"

DEPENDS = "libcap openssl"

SRC_URI = "https://security.appspot.com/downloads/vsftpd-${PV}.tar.gz \
           file://makefile-destdir.patch \
           file://makefile-libs.patch \
           file://makefile-strip.patch \
           file://init \
           file://vsftpd.conf \
           file://vsftpd.user_list \
           file://vsftpd.ftpusers \
           file://change-secure_chroot_dir.patch \
           file://volatiles.99_vsftpd \
           file://vsftpd.service \
           file://vsftpd-2.1.0-filter.patch \
           ${@bb.utils.contains('PACKAGECONFIG', 'tcp-wrappers', 'file://vsftpd-tcp_wrappers-support.patch', '', d)} \
           ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '', '${NOPAM_SRC}', d)} \
           file://0001-sysdeputil.c-Fix-with-musl-which-does-not-have-utmpx.patch \
           "

UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/v/vsftpd/"
UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.orig\.tar"

LIC_FILES_CHKSUM = "file://COPYING;md5=a6067ad950b28336613aed9dd47b1271 \
                        file://COPYRIGHT;md5=04251b2eb0f298dae376d92454f6f72e \
                        file://LICENSE;md5=654df2042d44b8cac8a5654fc5be63eb"
SRC_URI[sha256sum] = "26b602ae454b0ba6d99ef44a09b6b9e0dfa7f67228106736df1f278c70bc91d3"

PACKAGECONFIG ??= "tcp-wrappers"
PACKAGECONFIG[tcp-wrappers] = ",,tcp-wrappers"

DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
RDEPENDS:${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam-plugin-listfile', '', d)}"
PAMLIB = "${@bb.utils.contains('DISTRO_FEATURES', 'pam', '-L${STAGING_BASELIBDIR} -lpam', '', d)}"
WRAPLIB = "${@bb.utils.contains('PACKAGECONFIG', 'tcp-wrappers', '-lwrap', '', d)}"
NOPAM_SRC ="${@bb.utils.contains('PACKAGECONFIG', 'tcp-wrappers', 'file://nopam-with-tcp_wrappers.patch', 'file://nopam.patch', d)}"

inherit update-rc.d useradd systemd

CONFFILES:${PN} = "${sysconfdir}/vsftpd.conf"
LDFLAGS:append =" -lcrypt -lcap"
CFLAGS:append:libc-musl = " -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -include fcntl.h"
EXTRA_OEMAKE = "-e MAKEFLAGS="

do_configure() {
    # Fix hardcoded /usr, /etc, /var mess.
    cat tunables.c|sed s:\"/usr:\"${prefix}:g|sed s:\"/var:\"${localstatedir}:g \
    |sed s:\"/etc:\"${sysconfdir}:g > tunables.c.new
    mv tunables.c.new tunables.c
}

do_compile() {
   oe_runmake "LIBS=-L${STAGING_LIBDIR} -lcrypt -lcap ${PAMLIB} ${WRAPLIB}"
}

do_install() {
    install -d ${D}${sbindir}
    install -d ${D}${mandir}/man8
    install -d ${D}${mandir}/man5
    oe_runmake 'DESTDIR=${D}' install
    install -d ${D}${sysconfdir}
    install -m 600 ${WORKDIR}/vsftpd.conf ${D}${sysconfdir}/vsftpd.conf
    install -d ${D}${sysconfdir}/init.d/
    install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/vsftpd
    install -d ${D}/${sysconfdir}/default/volatiles
    install -m 644 ${WORKDIR}/volatiles.99_vsftpd ${D}/${sysconfdir}/default/volatiles/99_vsftpd

    install -m 600 ${WORKDIR}/vsftpd.ftpusers ${D}${sysconfdir}/
    install -m 600 ${WORKDIR}/vsftpd.user_list ${D}${sysconfdir}/
    if ! test -z "${PAMLIB}" ; then
        install -d ${D}${sysconfdir}/pam.d/
        cp ${S}/RedHat/vsftpd.pam ${D}${sysconfdir}/pam.d/vsftpd
        sed -i "s:/lib/security:${base_libdir}/security:" ${D}${sysconfdir}/pam.d/vsftpd
        sed -i "s:ftpusers:vsftpd.ftpusers:" ${D}${sysconfdir}/pam.d/vsftpd
    fi
    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
        install -d ${D}${sysconfdir}/tmpfiles.d
        echo "d /var/run/vsftpd/empty 0755 root root -" \
        > ${D}${sysconfdir}/tmpfiles.d/${BPN}.conf
    fi

    # Install systemd unit files
    install -d ${D}${systemd_unitdir}/system
    install -m 0644 ${WORKDIR}/vsftpd.service ${D}${systemd_unitdir}/system
    sed -i -e 's#@SBINDIR@#${sbindir}#g' ${D}${systemd_unitdir}/system/vsftpd.service
}

INITSCRIPT_PACKAGES = "${PN}"
INITSCRIPT_NAME:${PN} = "vsftpd"
INITSCRIPT_PARAMS:${PN} = "defaults 80"

USERADD_PACKAGES = "${PN}"
USERADD_PARAM:${PN} = "--system --home-dir /var/lib/ftp --no-create-home -g ftp \
                       --shell /bin/false ftp "
GROUPADD_PARAM:${PN} = "-r ftp"

SYSTEMD_SERVICE:${PN} = "vsftpd.service"

pkg_postinst:${PN}() {
    if [ -z "$D" ]; then
        if type systemd-tmpfiles >/dev/null; then
            systemd-tmpfiles --create
        elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
            ${sysconfdir}/init.d/populate-volatile.sh update
        fi
    fi
}

license: MIT

repository: openembedded/meta-openembedded

repo_name: openembedded/meta-openembedded

gha_license_id: MIT

gha_language: BitBake

extension: bb


text:
package amqprpc

import (
	amqp "github.com/rabbitmq/amqp091-go"
)

// SendFunc represents the function that Send does. It takes a Request as input
// and returns a delivery and an error.
type SendFunc func(r *Request) (d *amqp.Delivery, e error)

// ClientMiddlewareFunc represents a function that can be used as a middleware.
type ClientMiddlewareFunc func(next SendFunc) SendFunc

// ClientMiddlewareChain will attatch all given middlewares to your SendFunc.
// The middlewares will be executed in the same order as your input.
func ClientMiddlewareChain(next SendFunc, m ...ClientMiddlewareFunc) SendFunc {
	if len(m) == 0 {
		return next
	}

	return m[0](ClientMiddlewareChain(next, m[1:]...))
}

gha_language: Go

extension: go


text:
/*******************************************************************************
 * This file is part of Tiny3D (Tiny 3D Graphic Rendering Engine)
 * Copyright (C) 2015-2020  Answer Wong
 * For latest info, see https://github.com/answerear/Tiny3D
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 ******************************************************************************/

#include "Serializer/T3DSerializerManager.h"
#include "Serializer/T3DBinMaterialReader.h"
#include "Serializer/T3DBinMaterialWriter.h"
#include "Serializer/T3DJSONMaterialReader.h"
#include "Serializer/T3DJSONMaterialWriter.h"
#include "Serializer/T3DBinModelReader.h"
#include "Serializer/T3DBinModelWriter.h"
#include "Serializer/T3DJSONModelReader.h"
#include "Serializer/T3DJSONModelWriter.h"

namespace Tiny3D
{
    //--------------------------------------------------------------------------

    T3D_IMPLEMENT_CLASS_1(SerializerManager, Object);

    T3D_INIT_SINGLETON(SerializerManager);

    //--------------------------------------------------------------------------

    SerializerManagerPtr SerializerManager::create()
    {
        SerializerManagerPtr mgr = new SerializerManager();
        mgr->release();
        return mgr;
    }

    //--------------------------------------------------------------------------

    SerializerManager::SerializerManager()
        : mFileMode(FileMode::TEXT)
    {
        constructBuiltinConstantMap();
    }

    //--------------------------------------------------------------------------

    void SerializerManager::constructBuiltinConstantMap()
    {
        mBuiltinConstantMap[BuiltinConstantType::WORLD_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::INVERSE_WORLD_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::TRANSPOSE_WORLD_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::INVERSE_TRANSPOSE_WORLD_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);

        mBuiltinConstantMap[BuiltinConstantType::WORLD_MATRIX_ARRAY_3x4] = BuiltinConstantDefinition(12, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::WORLD_MATRIX_ARRAY] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::WORLD_DUALQUATERNION_ARRAY_2x4] = BuiltinConstantDefinition(8, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::WORLD_SCALE_SHEAR_MATRIX_ARRAY_3x4] = BuiltinConstantDefinition(9, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::VIEW_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::INVERSE_VIEW_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::TRANSPOSE_VIEW_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::INVERSE_TRANSPOSE_VIEW_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);

        mBuiltinConstantMap[BuiltinConstantType::PROJECTION_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::INVERSE_PROJECTION_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::TRANSPOSE_PROJECTION_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::INVERSE_TRANSPOSE_PROJECTION_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);

        mBuiltinConstantMap[BuiltinConstantType::VIEWPROJ_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::INVERSE_VIEWPROJ_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::TRANSPOSE_VIEWPROJ_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::INVERSE_TRANSPOSE_VIEWPROJ_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);

        mBuiltinConstantMap[BuiltinConstantType::WORLDVIEW_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::INVERSE_WORLDVIEW_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::TRANSPOSE_WORLDVIEW_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::INVERSE_TRANSPOSE_WORLDVIEW_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);

        mBuiltinConstantMap[BuiltinConstantType::WORLDVIEWPROJ_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::INVERSE_WORLDVIEWPROJ_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::TRANSPOSE_WORLDVIEWPROJ_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::INVERSE_TRANSPOSE_WORLDVIEWPROJ_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::NONE);

        mBuiltinConstantMap[BuiltinConstantType::RENDER_TARGET_FLIPPING] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::VERTEX_WINDING] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::NONE);

        mBuiltinConstantMap[BuiltinConstantType::FOG_COLOUR] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::FOG_PARAMS] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::NONE);

        mBuiltinConstantMap[BuiltinConstantType::SURFACE_AMBIENT_COLOUR] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::SURFACE_DIFFUSE_COLOUR] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::SURFACE_SPECULAR_COLOUR] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::SURFACE_EMISSIVE_COLOUR] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::SURFACE_SHININESS] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::SURFACE_ALPHA_REJECTION_VALUE] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::NONE);

        mBuiltinConstantMap[BuiltinConstantType::LIGHT_COUNT] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::NONE);

        mBuiltinConstantMap[BuiltinConstantType::AMBIENT_LIGHT_COLOUR] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_DIFFUSE_COLOUR] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_SPECULAR_COLOUR] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_ATTENUATION] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::SPOTLIGHT_PARAMS] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_POSITION] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_POSITION_OBJECT_SPACE] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_POSITION_VIEW_SPACE] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_DIRECTION] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_DIRECTION_OBJECT_SPACE] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_DIRECTION_VIEW_SPACE] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_DISTANCE_OBJECT_SPACE] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_POWER_SCALE] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_DIFFUSE_COLOUR_POWER_SCALED] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_SPECULAR_COLOUR_POWER_SCALED] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_DIFFUSE_COLOUR_ARRAY] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_SPECULAR_COLOUR_ARRAY] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_DIFFUSE_COLOUR_POWER_SCALED_ARRAY] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_SPECULAR_COLOUR_POWER_SCALED_ARRAY] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_ATTENUATION_ARRAY] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_POSITION_ARRAY] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_POSITION_OBJECT_SPACE_ARRAY] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_POSITION_VIEW_SPACE_ARRAY] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_DIRECTION_ARRAY] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_DIRECTION_OBJECT_SPACE_ARRAY] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_DIRECTION_VIEW_SPACE_ARRAY] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_DISTANCE_OBJECT_SPACE_ARRAY] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_POWER_SCALE_ARRAY] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::SPOTLIGHT_PARAMS_ARRAY] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);

        mBuiltinConstantMap[BuiltinConstantType::DERIVED_AMBIENT_LIGHT_COLOUR] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::DERIVED_SCENE_COLOUR] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::DERIVED_LIGHT_DIFFUSE_COLOUR] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::DERIVED_LIGHT_SPECULAR_COLOUR] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::DERIVED_LIGHT_DIFFUSE_COLOUR_ARRAY] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::DERIVED_LIGHT_SPECULAR_COLOUR_ARRAY] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);

        mBuiltinConstantMap[BuiltinConstantType::LIGHT_NUMBER] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_CASTS_SHADOWS] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_CASTS_SHADOWS_ARRAY] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::INT);

        mBuiltinConstantMap[BuiltinConstantType::SHADOW_EXTRUSION_DISTANCE] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::CAMERA_POSITION] = BuiltinConstantDefinition(3, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::CAMERA_POSITION_OBJECT_SPACE] = BuiltinConstantDefinition(3, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::TEXTURE_VIEWPROJ_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::TEXTURE_VIEWPROJ_MATRIX_ARRAY] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::TEXTURE_WORLDVIEWPROJ_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::TEXTURE_WORLDVIEWPROJ_MATRIX_ARRAY] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::SPOTLIGHT_VIEWPROJ_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::SPOTLIGHT_VIEWPROJ_MATRIX_ARRAY] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::SPOTLIGHT_WORLDVIEWPROJ_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::SPOTLIGHT_WORLDVIEWPROJ_MATRIX_ARRAY] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::CUSTOM] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);  // *** needs to be tested
        mBuiltinConstantMap[BuiltinConstantType::TIME] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::REAL);
        mBuiltinConstantMap[BuiltinConstantType::TIME_0_X] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::REAL);
        mBuiltinConstantMap[BuiltinConstantType::COSTIME_0_X] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::REAL);
        mBuiltinConstantMap[BuiltinConstantType::SINTIME_0_X] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::REAL);
        mBuiltinConstantMap[BuiltinConstantType::TANTIME_0_X] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::REAL);
        mBuiltinConstantMap[BuiltinConstantType::TIME_0_X_PACKED] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::REAL);
        mBuiltinConstantMap[BuiltinConstantType::TIME_0_1] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::REAL);
        mBuiltinConstantMap[BuiltinConstantType::COSTIME_0_1] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::REAL);
        mBuiltinConstantMap[BuiltinConstantType::SINTIME_0_1] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::REAL);
        mBuiltinConstantMap[BuiltinConstantType::TANTIME_0_1] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::REAL);
        mBuiltinConstantMap[BuiltinConstantType::TIME_0_1_PACKED] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::REAL);
        mBuiltinConstantMap[BuiltinConstantType::TIME_0_2PI] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::REAL);
        mBuiltinConstantMap[BuiltinConstantType::COSTIME_0_2PI] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::REAL);
        mBuiltinConstantMap[BuiltinConstantType::SINTIME_0_2PI] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::REAL);
        mBuiltinConstantMap[BuiltinConstantType::TANTIME_0_2PI] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::REAL);
        mBuiltinConstantMap[BuiltinConstantType::TIME_0_2PI_PACKED] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::REAL);
        mBuiltinConstantMap[BuiltinConstantType::FRAME_TIME] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::REAL);
        mBuiltinConstantMap[BuiltinConstantType::FPS] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::VIEWPORT_WIDTH] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::VIEWPORT_HEIGHT] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::INVERSE_VIEWPORT_WIDTH] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::INVERSE_VIEWPORT_HEIGHT] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::VIEWPORT_SIZE] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::VIEW_DIRECTION] = BuiltinConstantDefinition(3, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::VIEW_SIDE_VECTOR] = BuiltinConstantDefinition(3, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::VIEW_UP_VECTOR] = BuiltinConstantDefinition(3, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::FOV] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::NEAR_CLIP_DISTANCE] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::FAR_CLIP_DISTANCE] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::PASS_NUMBER] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::PASS_ITERATION_NUMBER] = BuiltinConstantDefinition(1, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::ANIMATION_PARAMETRIC] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::TEXEL_OFFSETS] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::SCENE_DEPTH_RANGE] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::SHADOW_SCENE_DEPTH_RANGE] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::SHADOW_SCENE_DEPTH_RANGE_ARRAY] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::SHADOW_COLOUR] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::TEXTURE_SIZE] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::INVERSE_TEXTURE_SIZE] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::PACKED_TEXTURE_SIZE] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::TEXTURE_MATRIX] = BuiltinConstantDefinition(16, BuiltinType::REAL, BuiltinType::INT);
        mBuiltinConstantMap[BuiltinConstantType::LOD_CAMERA_POSITION] = BuiltinConstantDefinition(3, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::LOD_CAMERA_POSITION_OBJECT_SPACE] = BuiltinConstantDefinition(3, BuiltinType::REAL, BuiltinType::NONE);
        mBuiltinConstantMap[BuiltinConstantType::LIGHT_CUSTOM] = BuiltinConstantDefinition(4, BuiltinType::REAL, BuiltinType::INT);
    }

    //--------------------------------------------------------------------------

    TResult SerializerManager::parseMaterial(
        DataStream &stream, Material *material)
    {
        MaterialReaderPtr reader;

        switch (mFileMode)
        {
        case FileMode::BINARY:
            {
                reader = BinMaterialReader::create(mBuiltinConstantMap);
            }
            break;
        case FileMode::TEXT:
            {
                reader = JsonMaterialReader::create(mBuiltinConstantMap);
            }
            break;
        default:
            {
                T3D_LOG_ERROR(LOG_TAG_ENGINE, "Invalid file mode of material !");
            }
            break;
        }

        TResult ret = T3D_OK;

        if (reader != nullptr)
        {
            ret = reader->parse(stream, material);
        }
        else
        {
            ret = T3D_ERR_INVALID_POINTER;
        }

        return ret;
    }

    //--------------------------------------------------------------------------

    TResult SerializerManager::serializeMaterial(
        DataStream &stream, Material *material)
    {
        MaterialWriterPtr writer;

        switch (mFileMode)
        {
        case FileMode::BINARY:
            {
                writer = BinMaterialWriter::create();
            }
            break;
        case FileMode::TEXT:
            {
                writer = JsonMaterialWriter::create();
            }
            break;
        default:
            {
                T3D_LOG_ERROR(LOG_TAG_ENGINE, "Invalid file mode of material !");
            }
            break;
        }

        TResult ret = T3D_OK;

        if (writer != nullptr)
        {
            ret = writer->serialize(stream, material);
        }
        else
        {
            ret = T3D_ERR_INVALID_POINTER;
        }

        return ret;
    }

    //--------------------------------------------------------------------------

    TResult SerializerManager::parseModel(DataStream &stream, Model *model)
    {
        ModelReaderPtr reader;

        switch (mFileMode)
        {
        case FileMode::BINARY:
            {
                reader = BinModelReader::create();
            }
            break;
        case FileMode::TEXT:
            {
                reader = JsonModelReader::create();
            }
            break;
        default:
            {
                T3D_LOG_ERROR(LOG_TAG_ENGINE, "Invalid file mode of model !");
            }
            break;
        }

        TResult ret = T3D_OK;

        if (reader != nullptr)
        {
            ret = reader->parse(stream, model);
        }
        else
        {
            ret = T3D_ERR_INVALID_POINTER;
        }

        return ret;
    }

    //--------------------------------------------------------------------------

    TResult SerializerManager::serializeModel(DataStream &stream, Model *model)
    {
        ModelWriterPtr writer;

        switch (mFileMode)
        {
        case FileMode::BINARY:
            {
                writer = BinModelWriter::create();
            }
            break;
        case FileMode::TEXT:
            {
                writer = JsonModelWriter::create();
            }
            break;
        default:
            {
                T3D_LOG_ERROR(LOG_TAG_ENGINE, "Invalid file mode of model !");
            }
            break;
        }

        TResult ret = T3D_OK;

        if (writer != nullptr)
        {
            ret = writer->serialize(stream, model);
        }
        else
        {
            ret = T3D_ERR_INVALID_POINTER;
        }

        return ret;
    }
}

repository: answerear/Fluid

repo_name: answerear/Fluid