text:
/***************************************************************************
 *
 *  @license
 *  Copyright (C) 2016 Codeplay Software Limited
 *  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
 *
 *  For your convenience, a copy of the License has been included in this
 *  repository.
 *
 *  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.
 *
 *  SYCL-BLAS: BLAS implementation using SYCL
 *
 *  @filename syclblas_benchmark.cpp
 *
 **************************************************************************/

#include "../common/blas_benchmark.hpp"

#include <interface/blas1_interface.hpp>

using namespace blas;

BENCHMARK_NAME_FORMAT(syclblas_level_1) {
  std::ostringstream fname;
  fname << benchmark<>::typestr<ElemT>() << "_" << name() << "_" << params;
  return fname.str();
}

BENCHMARK(scal, syclblas_level_1) {
  using ScalarT = ElemT;
  using IndexType = unsigned int;
  const IndexType size = params;

  std::vector<ScalarT> v1 = benchmark<>::random_data<ScalarT>(size);
  ScalarT alpha = benchmark<>::random_scalar<ScalarT>();

  auto in = ex.template allocate<ScalarT>(size);
  ex.copy_to_device(v1.data(), in, size);
  benchmark<>::flops_units_t flops =
      benchmark<>::measure(reps, size * 1, [&]() {
        auto event = _scal(ex, size, alpha, in, 1);
        ex.wait(event);
      });
  ex.template deallocate<ScalarT>(in);
  return flops;
}

BENCHMARK(axpy, syclblas_level_1) {
  using ScalarT = ElemT;
  using IndexType = unsigned int;
  const IndexType size = params;

  std::vector<ScalarT> v1 = benchmark<>::random_data<ScalarT>(size);
  std::vector<ScalarT> v2 = benchmark<>::random_data<ScalarT>(size);
  ScalarT alpha = benchmark<>::random_scalar<ScalarT>();

  auto inx = ex.template allocate<ScalarT>(size);
  auto iny = ex.template allocate<ScalarT>(size);
  ex.copy_to_device(v1.data(), inx, size);
  ex.copy_to_device(v2.data(), iny, size);

  benchmark<>::flops_units_t flops =
      benchmark<>::measure(reps, size * 2, [&]() {
        auto event = _axpy(ex, size, alpha, inx, 1, iny, 1);
        ex.wait(event);
      });

  ex.template deallocate<ScalarT>(inx);
  ex.template deallocate<ScalarT>(iny);
  return flops;
}

BENCHMARK(asum, syclblas_level_1) {
  using ScalarT = ElemT;
  using IndexType = unsigned int;
  const IndexType size = params;

  std::vector<ScalarT> v1 = benchmark<>::random_data<ScalarT>(size);
  ScalarT vr;

  auto inx = ex.template allocate<ScalarT>(size);
  auto inr = ex.template allocate<ScalarT>(1);
  ex.copy_to_device(v1.data(), inx, size);
  ex.copy_to_device(&vr, inr, 1);

  benchmark<>::flops_units_t flops =
      benchmark<>::measure(reps, size * 2, [&]() {
        auto event = _asum(ex, size, inx, 1, inr);
        ex.wait(event);
      });

  ex.template deallocate<ScalarT>(inx);
  ex.template deallocate<ScalarT>(inr);
  return flops;
}

BENCHMARK(nrm2, syclblas_level_1) {
  using ScalarT = ElemT;
  using IndexType = unsigned int;
  const IndexType size = params;

  std::vector<ScalarT> v1 = benchmark<>::random_data<ScalarT>(size);

  auto inx = ex.template allocate<ScalarT>(size);
  auto inr = ex.template allocate<ScalarT>(1);
  ex.copy_to_device(v1.data(), inx, size);

  benchmark<>::flops_units_t flops =
      benchmark<>::measure(reps, size * 2, [&]() {
        auto event = _nrm2(ex, size, inx, 1, inr);
        ex.wait(event);
      });

  ex.template deallocate<ScalarT>(inx);
  ex.template deallocate<ScalarT>(inr);
  return flops;
}

BENCHMARK(dot, syclblas_level_1) {
  using ScalarT = ElemT;
  using IndexType = unsigned int;
  const IndexType size = params;

  std::vector<ScalarT> v1 = benchmark<>::random_data<ScalarT>(size);
  std::vector<ScalarT> v2 = benchmark<>::random_data<ScalarT>(size);

  auto inx = ex.template allocate<ScalarT>(size);
  auto iny = ex.template allocate<ScalarT>(size);
  auto inr = ex.template allocate<ScalarT>(1);
  ex.copy_to_device(v1.data(), inx, size);
  ex.copy_to_device(v2.data(), iny, size);

  benchmark<>::flops_units_t flops =
      benchmark<>::measure(reps, size * 2, [&]() {
        auto event = _dot(ex, size, inx, 1, iny, 1, inr);
        ex.wait(event);
      });

  ex.template deallocate<ScalarT>(inx);
  ex.template deallocate<ScalarT>(iny);
  ex.template deallocate<ScalarT>(inr);
  return flops;
}

BENCHMARK(iamax, syclblas_level_1) {
  using ScalarT = ElemT;
  using IndexType = unsigned int;
  const IndexType size = params;

  std::vector<ScalarT> v1 = benchmark<>::random_data<ScalarT>(size);

  auto inx = ex.template allocate<ScalarT>(size);
  auto outI = ex.template allocate<IndexValueTuple<ScalarT, IndexType>>(1);
  ex.copy_to_device(v1.data(), inx, size);

  benchmark<>::flops_units_t flops =
      benchmark<>::measure(reps, size * 2, [&]() {
        auto event = _iamax(ex, size, inx, 1, outI);
        ex.wait(event);
      });

  ex.template deallocate<ScalarT>(inx);
  ex.template deallocate<IndexValueTuple<ScalarT, IndexType>>(outI);
  return flops;
}

BENCHMARK(iamin, syclblas_level_1) {
  using ScalarT = ElemT;
  using IndexType = unsigned int;
  const IndexType size = params;

  std::vector<ScalarT> v1 = benchmark<>::random_data<ScalarT>(size);
  auto inx = ex.template allocate<ScalarT>(size);
  auto outI = ex.template allocate<IndexValueTuple<ScalarT, IndexType>>(1);
  ex.copy_to_device(v1.data(), inx, size);

  benchmark<>::flops_units_t flops =
      benchmark<>::measure(reps, size * 2, [&]() {
        auto event = _iamin(ex, size, inx, 1, outI);
        ex.wait(event);
      });

  ex.template deallocate<ScalarT>(inx);
  ex.template deallocate<IndexValueTuple<ScalarT, IndexType>>(outI);
  return flops;
}

BENCHMARK(scal2op, syclblas_level_1) {
  using ScalarT = ElemT;
  using IndexType = unsigned int;
  const IndexType size = params;

  ScalarT alpha = benchmark<>::random_scalar<ScalarT>();
  std::vector<ScalarT> v1 = benchmark<>::random_data<ScalarT>(size);
  std::vector<ScalarT> v2 = benchmark<>::random_data<ScalarT>(size);

  auto inx = ex.template allocate<ScalarT>(size);
  auto iny = ex.template allocate<ScalarT>(size);
  ex.copy_to_device(v1.data(), inx, size);
  ex.copy_to_device(v2.data(), iny, size);

  benchmark<>::flops_units_t flops =
      benchmark<>::measure(reps, size * 2, [&]() {
        auto event0 = _scal(ex, size, alpha, inx, 1);
        auto event1 = _scal(ex, size, alpha, iny, 1);
        ex.wait(event0, event1);
      });

  ex.template deallocate<ScalarT>(inx);
  ex.template deallocate<ScalarT>(iny);
  return flops;
}

BENCHMARK(scal3op, syclblas_level_1) {
  using ScalarT = ElemT;
  using IndexType = unsigned int;
  const IndexType size = params;

  ScalarT alpha = benchmark<>::random_scalar<ScalarT>();
  std::vector<ScalarT> v1 = benchmark<>::random_data<ScalarT>(size);
  std::vector<ScalarT> v2 = benchmark<>::random_data<ScalarT>(size);
  std::vector<ScalarT> v3 = benchmark<>::random_data<ScalarT>(size);

  auto inx = ex.template allocate<ScalarT>(size);
  auto iny = ex.template allocate<ScalarT>(size);
  auto inz = ex.template allocate<ScalarT>(size);
  ex.copy_to_device(v1.data(), inx, size);
  ex.copy_to_device(v2.data(), iny, size);
  ex.copy_to_device(v3.data(), inz, size);

  benchmark<>::flops_units_t flops =
      benchmark<>::measure(reps, size * 3, [&]() {
        auto event0 = _scal(ex, size, alpha, inx, 1);
        auto event1 = _scal(ex, size, alpha, iny, 1);
        auto event2 = _scal(ex, size, alpha, inz, 1);
        ex.wait(event0, event1, event2);
      });

  ex.template deallocate<ScalarT>(inx);
  ex.template deallocate<ScalarT>(iny);
  ex.template deallocate<ScalarT>(inz);
  return flops;
}

BENCHMARK(axpy3op, syclblas_level_1) {
  using ScalarT = ElemT;
  using IndexType = unsigned int;
  const IndexType size = params;

  std::array<ScalarT, 3> alphas = {1.78426458744, 2.187346575843,
                                   3.78164387328};
  std::vector<ScalarT> vsrc1 = benchmark<>::random_data<ScalarT>(size);
  std::vector<ScalarT> vsrc2 = benchmark<>::random_data<ScalarT>(size);
  std::vector<ScalarT> vsrc3 = benchmark<>::random_data<ScalarT>(size);
  std::vector<ScalarT> vdst1 = benchmark<>::random_data<ScalarT>(size);
  std::vector<ScalarT> vdst2 = benchmark<>::random_data<ScalarT>(size);
  std::vector<ScalarT> vdst3 = benchmark<>::random_data<ScalarT>(size);

  auto insrc1 = ex.template allocate<ScalarT>(size);
  auto indst1 = ex.template allocate<ScalarT>(size);
  auto insrc2 = ex.template allocate<ScalarT>(size);
  auto indst2 = ex.template allocate<ScalarT>(size);
  auto insrc3 = ex.template allocate<ScalarT>(size);
  auto indst3 = ex.template allocate<ScalarT>(size);
  ex.copy_to_device(vsrc1.data(), insrc1, size);
  ex.copy_to_device(vdst1.data(), indst1, size);
  ex.copy_to_device(vsrc2.data(), insrc2, size);
  ex.copy_to_device(vdst2.data(), indst2, size);
  ex.copy_to_device(vsrc3.data(), insrc3, size);
  ex.copy_to_device(vdst3.data(), indst3, size);

  benchmark<>::flops_units_t flops =
      benchmark<>::measure(reps, size * 3 * 2, [&]() {
        auto event0 = _axpy(ex, size, alphas[0], insrc1, 1, indst1, 1);
        auto event1 = _axpy(ex, size, alphas[1], insrc2, 1, indst2, 1);
        auto event2 = _axpy(ex, size, alphas[2], insrc3, 1, indst3, 1);
        ex.wait(event0, event1, event2);
      });

  ex.template deallocate<ScalarT>(insrc1);
  ex.template deallocate<ScalarT>(indst1);
  ex.template deallocate<ScalarT>(insrc2);
  ex.template deallocate<ScalarT>(indst2);
  ex.template deallocate<ScalarT>(insrc3);
  ex.template deallocate<ScalarT>(indst3);
  return flops;
}

BENCHMARK(blas1, syclblas_level_1) {
  using ScalarT = ElemT;
  using IndexType = unsigned int;
  const IndexType size = params;

  std::vector<ScalarT> v1 = benchmark<>::random_data<ScalarT>(size);
  std::vector<ScalarT> v2 = benchmark<>::random_data<ScalarT>(size);
  ScalarT alpha = benchmark<>::random_scalar<ScalarT>();

  auto inx = ex.template allocate<ScalarT>(size);
  auto iny = ex.template allocate<ScalarT>(size);
  auto inr1 = ex.template allocate<ScalarT>(1);
  auto inr2 = ex.template allocate<ScalarT>(1);
  auto inr3 = ex.template allocate<ScalarT>(1);
  auto inr4 = ex.template allocate<ScalarT>(1);
  auto inrI = ex.template allocate<IndexValueTuple<ScalarT, IndexType>>(1);
  ex.copy_to_device(v1.data(), inx, size);
  ex.copy_to_device(v2.data(), iny, size);

  benchmark<>::flops_units_t flops =
      benchmark<>::measure(reps, size * 12, [&]() {
        auto event0 = _axpy(ex, size, alpha, inx, 1, iny, 1);
        auto event1 = _asum(ex, size, iny, 1, inr1);
        auto event2 = _dot(ex, size, inx, 1, iny, 1, inr2);
        auto event3 = _nrm2(ex, size, iny, 1, inr3);
        auto event4 = _iamax(ex, size, iny, 1, inrI);
        auto event5 = _dot(ex, size, inx, 1, iny, 1, inr4);
        ex.wait(event0, event1, event2, event3, event4, event5);
      });

  ex.template deallocate<ScalarT>(inx);
  ex.template deallocate<ScalarT>(iny);
  ex.template deallocate<ScalarT>(inr1);
  ex.template deallocate<ScalarT>(inr2);
  ex.template deallocate<ScalarT>(inr3);
  ex.template deallocate<ScalarT>(inr4);
  ex.template deallocate<IndexValueTuple<ScalarT, IndexType>>(inrI);
  return flops;
}

SUITE(ADD(scal), ADD(axpy), ADD(asum), ADD(nrm2), ADD(dot), ADD(scal2op),
      ADD(iamax), ADD(scal3op), ADD(axpy3op), ADD(blas1))

SYCL_BENCHMARK_MAIN(default_ranges::level_1, 10);

repository: r-potter/sycl-blas

repo_name: r-potter/sycl-blas


text:
/*================================================================================
  code generated by: java2cpp
  author: Zoran Angelov, mailto://baldzar@gmail.com
  class: android.text.SpannableStringInternal
================================================================================*/

#ifndef J2CPP_INCLUDE_IMPLEMENTATION

#ifndef J2CPP_ANDROID_TEXT_SPANNABLESTRINGINTERNAL_HPP_DECL
#define J2CPP_ANDROID_TEXT_SPANNABLESTRINGINTERNAL_HPP_DECL

namespace j2cpp { namespace java { namespace lang { class Object; } } }
namespace j2cpp { namespace java { namespace lang { class Class; } } }
namespace j2cpp { namespace java { namespace lang { class String; } } }

#include <java/lang/Class.hpp>
#include <java/lang/Object.hpp>
#include <java/lang/String.hpp>

namespace j2cpp {

namespace android { namespace text {

	class SpannableStringInternal;
	class SpannableStringInternal
		: public object<SpannableStringInternal>
	{
	public:

		J2CPP_DECLARE_CLASS

		J2CPP_DECLARE_METHOD(0)
		J2CPP_DECLARE_METHOD(1)
		J2CPP_DECLARE_METHOD(2)
		J2CPP_DECLARE_METHOD(3)
		J2CPP_DECLARE_METHOD(4)
		J2CPP_DECLARE_METHOD(5)
		J2CPP_DECLARE_METHOD(6)
		J2CPP_DECLARE_METHOD(7)
		J2CPP_DECLARE_METHOD(8)
		J2CPP_DECLARE_METHOD(9)

		explicit SpannableStringInternal(jobject jobj)
		: object<SpannableStringInternal>(jobj)
		{
		}

		operator local_ref<java::lang::Object>() const;

		jint length();
		jchar charAt(jint);
		local_ref< java::lang::String > toString();
		void getChars(jint, jint, local_ref< array<jchar,1> >  const&, jint);
		jint getSpanStart(local_ref< java::lang::Object >  const&);
		jint getSpanEnd(local_ref< java::lang::Object >  const&);
		jint getSpanFlags(local_ref< java::lang::Object >  const&);
		local_ref< array< local_ref< java::lang::Object >, 1> > getSpans(jint, jint, local_ref< java::lang::Class >  const&);
		jint nextSpanTransition(jint, jint, local_ref< java::lang::Class >  const&);
	}; //class SpannableStringInternal

} //namespace text
} //namespace android

} //namespace j2cpp

#endif //J2CPP_ANDROID_TEXT_SPANNABLESTRINGINTERNAL_HPP_DECL

#else //J2CPP_INCLUDE_IMPLEMENTATION

#ifndef J2CPP_ANDROID_TEXT_SPANNABLESTRINGINTERNAL_HPP_IMPL
#define J2CPP_ANDROID_TEXT_SPANNABLESTRINGINTERNAL_HPP_IMPL

namespace j2cpp {

android::text::SpannableStringInternal::operator local_ref<java::lang::Object>() const
{
	return local_ref<java::lang::Object>(get_jobject());
}

jint android::text::SpannableStringInternal::length()
{
	return call_method<
		android::text::SpannableStringInternal::J2CPP_CLASS_NAME,
		android::text::SpannableStringInternal::J2CPP_METHOD_NAME(1),
		android::text::SpannableStringInternal::J2CPP_METHOD_SIGNATURE(1),
		jint
	>(get_jobject());
}

jchar android::text::SpannableStringInternal::charAt(jint a0)
{
	return call_method<
		android::text::SpannableStringInternal::J2CPP_CLASS_NAME,
		android::text::SpannableStringInternal::J2CPP_METHOD_NAME(2),
		android::text::SpannableStringInternal::J2CPP_METHOD_SIGNATURE(2),
		jchar
	>(get_jobject(), a0);
}

local_ref< java::lang::String > android::text::SpannableStringInternal::toString()
{
	return call_method<
		android::text::SpannableStringInternal::J2CPP_CLASS_NAME,
		android::text::SpannableStringInternal::J2CPP_METHOD_NAME(3),
		android::text::SpannableStringInternal::J2CPP_METHOD_SIGNATURE(3),
		local_ref< java::lang::String >
	>(get_jobject());
}

void android::text::SpannableStringInternal::getChars(jint a0, jint a1, local_ref< array<jchar,1> > const &a2, jint a3)
{
	return call_method<
		android::text::SpannableStringInternal::J2CPP_CLASS_NAME,
		android::text::SpannableStringInternal::J2CPP_METHOD_NAME(4),
		android::text::SpannableStringInternal::J2CPP_METHOD_SIGNATURE(4),
		void
	>(get_jobject(), a0, a1, a2, a3);
}

jint android::text::SpannableStringInternal::getSpanStart(local_ref< java::lang::Object > const &a0)
{
	return call_method<
		android::text::SpannableStringInternal::J2CPP_CLASS_NAME,
		android::text::SpannableStringInternal::J2CPP_METHOD_NAME(5),
		android::text::SpannableStringInternal::J2CPP_METHOD_SIGNATURE(5),
		jint
	>(get_jobject(), a0);
}

jint android::text::SpannableStringInternal::getSpanEnd(local_ref< java::lang::Object > const &a0)
{
	return call_method<
		android::text::SpannableStringInternal::J2CPP_CLASS_NAME,
		android::text::SpannableStringInternal::J2CPP_METHOD_NAME(6),
		android::text::SpannableStringInternal::J2CPP_METHOD_SIGNATURE(6),
		jint
	>(get_jobject(), a0);
}

jint android::text::SpannableStringInternal::getSpanFlags(local_ref< java::lang::Object > const &a0)
{
	return call_method<
		android::text::SpannableStringInternal::J2CPP_CLASS_NAME,
		android::text::SpannableStringInternal::J2CPP_METHOD_NAME(7),
		android::text::SpannableStringInternal::J2CPP_METHOD_SIGNATURE(7),
		jint
	>(get_jobject(), a0);
}

local_ref< array< local_ref< java::lang::Object >, 1> > android::text::SpannableStringInternal::getSpans(jint a0, jint a1, local_ref< java::lang::Class > const &a2)
{
	return call_method<
		android::text::SpannableStringInternal::J2CPP_CLASS_NAME,
		android::text::SpannableStringInternal::J2CPP_METHOD_NAME(8),
		android::text::SpannableStringInternal::J2CPP_METHOD_SIGNATURE(8),
		local_ref< array< local_ref< java::lang::Object >, 1> >
	>(get_jobject(), a0, a1, a2);
}

jint android::text::SpannableStringInternal::nextSpanTransition(jint a0, jint a1, local_ref< java::lang::Class > const &a2)
{
	return call_method<
		android::text::SpannableStringInternal::J2CPP_CLASS_NAME,
		android::text::SpannableStringInternal::J2CPP_METHOD_NAME(9),
		android::text::SpannableStringInternal::J2CPP_METHOD_SIGNATURE(9),
		jint
	>(get_jobject(), a0, a1, a2);
}

J2CPP_DEFINE_CLASS(android::text::SpannableStringInternal,"android/text/SpannableStringInternal")
J2CPP_DEFINE_METHOD(android::text::SpannableStringInternal,0,"<init>","()V")
J2CPP_DEFINE_METHOD(android::text::SpannableStringInternal,1,"length","()I")
J2CPP_DEFINE_METHOD(android::text::SpannableStringInternal,2,"charAt","(I)C")
J2CPP_DEFINE_METHOD(android::text::SpannableStringInternal,3,"toString","()Ljava/lang/String;")
J2CPP_DEFINE_METHOD(android::text::SpannableStringInternal,4,"getChars","(II[CI)V")
J2CPP_DEFINE_METHOD(android::text::SpannableStringInternal,5,"getSpanStart","(Ljava/lang/Object;)I")
J2CPP_DEFINE_METHOD(android::text::SpannableStringInternal,6,"getSpanEnd","(Ljava/lang/Object;)I")
J2CPP_DEFINE_METHOD(android::text::SpannableStringInternal,7,"getSpanFlags","(Ljava/lang/Object;)I")
J2CPP_DEFINE_METHOD(android::text::SpannableStringInternal,8,"getSpans","(IILjava/lang/Class;)[java.lang.Object")
J2CPP_DEFINE_METHOD(android::text::SpannableStringInternal,9,"nextSpanTransition","(IILjava/lang/Class;)I")

} //namespace j2cpp

#endif //J2CPP_ANDROID_TEXT_SPANNABLESTRINGINTERNAL_HPP_IMPL

#endif //J2CPP_INCLUDE_IMPLEMENTATION

repository: tpurtell/android-cpp-sdk

license_type: permissive

repo_name: tpurtell/android-cpp-sdk

branch_name: refs/heads/master

extension: hpp


text:
@online{springer_statprob:_nodate,
	title = {{StatProb}: The Encyclopedia Sponsored by Statistics and Probability Societies},
	url = {http://statprob.com/},
	abstract = {Excerpt: "{StatProb}: The Encyclopedia Sponsored by Statistics and Probability Societies combines the advantages of traditional wikis (rapid and up-to-date publication, user-generated development, hyperlinking, and a saved history) with traditional publishing (quality assurance, review, credit to authors, and a structured information display). All contributions have been approved by an editorial board determined by leading statistical societies; the editorial board members are listed on the About page. All encyclopedia entries are written in {LaTeX}. All of the entries are automatically cross-referenced and the entire corpus is kept updated in real-time. Anyone can view articles. To submit a new article or propose a change in an existing article, you must create an account. It takes only a minute, so sign up!"},
	author = {Springer and {PlanetMath}},
	urldate = {2010-09-15}
}

@online{american_statistical_association_making_nodate,
	title = {Making Sense of Statistical Studies},
	url = {http://www.amstat.org/education/msss/?nl=0509},
	author = {American Statistical Association},
	urldate = {2009-05-20},
	keywords = {Teaching resources}
}

@online{schau_student_nodate,
	title = {Student Attitude Surveys and Online Educational Consulting},
	url = {http://www.evaluationandstatistics.com/index.html},
	author = {Schau, Candace},
	urldate = {2009-04-21},
	keywords = {Teaching resources}
}

@online{neal_radford_nodate,
	title = {Radford Neal’s blog},
	url = {http://radfordneal.wordpress.com/},
	author = {Neal, Radford},
	urldate = {2009-03-13},
	keywords = {Teaching resources}
}

@online{xie_keep_nodate,
	title = {Keep on Fighting! - Yihui {XIE}: A Blog Site for Statistics},
	url = {http://www.yihui.name/en/index.php},
	author = {Xie, Yihui},
	urldate = {2009-03-13},
	keywords = {Teaching resources}
}

@article{crow_mayr_2009,
	title = {Mayr, mathematics and the study of evolution},
	volume = {8},
	issn = {1475-4924},
	url = {http://jbiol.com/content/8/2/13},
	doi = {10.1186/jbiol117},
	abstract = {In 1959 Ernst Mayr challenged the relevance of mathematical models to evolutionary studies and was answered by {JBS} Haldane in a witty and convincing essay. Fifty years on, I conclude that the importance of mathematics has in fact increased and will continue to do so.},
	pages = {13},
	number = {2},
	journaltitle = {Journal of Biology},
	author = {Crow, James},
	urldate = {2009-03-09},
	date = {2009},
	keywords = {Teaching resources}
}

repository: pmean/build-website

repo_name: pmean/build-website

extension: bib


text:
#
# base recipe: meta/recipes-devtools/json-c/json-c_0.12.bb
# base branch: master
# base commit: 646a29c3dab7f18d03da8c966ce55d8a09483c0e
#

SUMMARY = "C bindings for apps which will manipulate JSON data"
DESCRIPTION = "\
	JSON-C implements a reference counting object model that allows \
	you to easily construct JSON objects in C."
HOMEPAGE = "https://github.com/json-c/json-c/wiki"

PR = "r0"
inherit debian-package

LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=de54b60fbbc35123ba193fea8ee216f2"

#The Makefile is lame, no parallel build
PARALLEL_MAKE = ""

RPROVIDES_${PN} = "libjson"

inherit autotools

do_configure_prepend() {
    # Clean up autoconf cruft that should not be in the tarball
    rm -f ${S}/config.status
}

#install follow Debian jessies
do_install_append () {
	install -d ${D}${base_libdir}
	mv ${D}${libdir}/*.so.2* ${D}${base_libdir}/

	chmod 0644 ${D}${base_libdir}/libjson-c.so.2.0.0

	rm ${D}${libdir}/libjson.so.0
	rm ${D}${libdir}/*.la

	rm ${D}${libdir}/libjson.a
	ln -s libjson-c.a ${D}${libdir}/libjson.a

	#Remove usr/lib/libjson.so.0.1.0 file
	rm ${D}${libdir}/*.so.*
	rm ${D}${libdir}/libjson.so
	ln -s libjson-c.so ${D}${libdir}/libjson.so

	chmod 0644 ${D}${base_libdir}/libjson-c.so.2.0.0

	ln -s libjson-c.so.2 ${D}${base_libdir}/libjson.so.0

	#Correct the softlink: libjson-c.so -> /lib/libjson-c.so.2.0.0
	LINKLIB=$(basename $(readlink ${D}${libdir}/libjson-c.so))
	rm ${D}${libdir}/libjson-c.so
	ln -s ../../lib/${LINKLIB} ${D}${libdir}/libjson-c.so

	#Correct the softlink json.pc -> json-c.pc
	rm ${D}${libdir}/pkgconfig/json.pc
	ln -s json-c.pc ${D}${libdir}/pkgconfig/json.pc
}
#Create new packages
PACKAGES =+ "libjson0 libjson0-dev libjson-c2"

DEBIANNAME_${PN}-doc = "libjson-c-doc"
DEBIANNAME_${PN}-dbg = "libjson-c2-dbg"
DEBIANNAME_${PN}-dev = "libjson-c-dev"

FILES_libjson0 = "${base_libdir}/libjson.so.0"

FILES_libjson0-dev =  " ${includedir}/json ${libdir}/pkgconfig/json.pc \
			${libdir}/libjson.so"

FILES_libjson-c2 = "${base_libdir}/*.so.2*"

FILES_libjson-c-dev =  "${includedir}/json-c/* ${libdir}/libjson-c.so \
			${libdir}/pkgconfig/json-c.pc"

license: MIT

repository: nghiaht-tsdv/meta-debian

repo_name: nghiaht-tsdv/meta-debian

branch_name: refs/heads/jethro

gha_language: BitBake

extension: bb


text:
package haskell

// https://futtetennismo.me/posts/algorithms-and-data-structures/2017-12-08-functional-graphs.html

const DepthFirst = `
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}

import Data.Foldable (foldlM)
import qualified Data.Vector.Mutable as MV
import qualified Data.Sequence as Seq
import Control.Monad.State.Strict (StateT, evalStateT, gets, modify', get, lift)
import Control.Monad.ST (ST, runST)
import Control.Applicative (liftA2)
import Control.Monad.Primitive (PrimMonad)

data Graph weight label = Graph [(label, [EdgeNode weight label])] Directed Int deriving Eq

type EdgeNode weight label = (label, weight)

type VertexState s = MV.MVector s VState

data DFSState s label weight =
  DFSState { dfsVertex :: label
           , dfsConnectedComponent :: ConnectedComponent a weight
           , dfsVertexState :: VertexState s
           }

-- undiscovered, discovered or processed
data VState = U | D | P deriving (Show, Eq, Ord)

type ConnectedComponent weight label = Tree weight label

data Tree weight label = Nil | Node !label [(weight, Tree weight a)] deriving (Show, Eq)

-- Let's assume for simplicity that vertices and weights are integers
dfs :: Graph Int Int -> [ConnectedComponent Int Int]
dfs g =
  runST $ do
    vstates <- MV.replicate (verticesCount g) U
    loop (vertices g) vstates
  where
    loop :: forall s. [Int]
         -> MV.MVector s VState
         -> ST s [ConnectedComponent Int Int]
    loop vs vstates = do
      mv <- findNextUndiscoveredVertex vstates
      maybe (return []) processVertex mv
        where
          processVertex v =
            liftA2 (:) (evalStateT dfs' (DFSState v (Node v []) vstates))
                       (loop vs vstates)

    dfs' :: StateT (DFSState s Int Int) (ST s) (ConnectedComponent Int Int)
    dfs' = do
      DFSState v tree vstates' <- get
      MV.write vstates' v D
      tree' <- foldlM (\tree' edge@(v', _) -> do
                          vstate <- MV.read vstates' v'
                          lift $ processEdgeNode v tree' vstate edge)
                      tree
                      (adjacent v g)
      MV.write vstates v P
      modify' (\s -> s{ dfsConnectedComponent = tree' })
      gets dfsConnectedComponent

    processEdgeNode :: Int -> Tree Int Int -> VState -> EdgeNode Int Int -> ST s (Tree Int Int)
    processEdgeNode v tree Undiscovered edgeNode@(v', _) =
      evalStateT dfs' (DFSState v' (buildTree v edgeNode tree) vstates)
    processEdgeNode _ tree _ _ = return tree

    findNextUndiscoveredVertex :: forall (m :: * -> *). PrimMonad m
                               => MV.MVector (PrimState m) VState
                               -> m (Maybe Int)
    findNextUndiscoveredVertex vstates =
      go 0 (MV.length vstates)
      where
        go idx size
          | idx == size = return Nothing
          | otherwise = do
              vstate <- MV.read vstates idx
              case vstate of
                U -> return (Just idx)
				_ -> go (idx + 1) size
`

repository: briandowns/super-hacker

repo_name: briandowns/super-hacker

gha_language: Go

extension: go


text:
require mender-monitor.inc

# This is the developent recipe for which the recipe version gets defined from the archive name.

def mender_monitor_srcrev_from_src_uri(d, src_uri):
    pref_version = d.getVar("PREFERRED_VERSION")
    if pref_version is not None and pref_version.find("-build") >= 0:
        # If "-build" is in the version, SRCREV won't be used for defining PV
        return ""
    else:
        # Extract SRCREV from the tarball filename
        import glob
        import re
        # Remove "file://" prefix
        src_uri_list = src_uri.split()
        if len(src_uri_list) == 0:
            # No source specified. We won't be building this component.
            return ""
        src_uri_glob = src_uri_list[0][len("file://"):]
        # Get the filename
        filenames = glob.glob(src_uri_glob)
        if len(filenames) == 0:
            bb.error("Failed to find mender monitor on path %s" % src_uri_glob)
            bb.error("Please make sure SRC_URI_pn-mender-monitor is pointing to the downloaded tarball ")
        elif len(filenames) != 1:
            bb.error("Expected exactly one file, found: %s" % filenames)
        filename = os.path.basename(filenames[0])
        # Now extract the version from the filename
        if filename == "mender-monitor-master.tar.gz":
            # Building from external tarball, do not append git info
            return ""
        m = re.match(r"mender-monitor-([0-9]+\.[0-9]+\.[0-9]+(?:-build[0-9]+)?)\.tar\.gz", filename)
        if m is not None:
            # The tarball is a tagged version, in which case SRCREV is not to
            # be used but still needs to parse
            return ""
        m = re.match(r"mender-monitor-([0-9a-f]{7,})\.tar\.gz", filename)
        if m is not None:
            # Building from internal tarball, append git info
            return "-git+" + m.group(1)
        # At this point the version is unknown.
        bb.fatal("Unknown version. Failed to parse %s" % filename)
        return ""

SRCREV = "${@mender_monitor_srcrev_from_src_uri(d, '${SRC_URI}')}"

def mender_monitor_version_from_preferred_version(d, srcrev):
    pref_version = d.getVar("PREFERRED_VERSION")
    if pref_version is not None and pref_version.find("-build") >= 0:
        # If "-build" is in the version, use the version as is. This means that
        # we can build tags with "-build" in them from this recipe, but not
        # final tags, which will need their own recipe.
        return pref_version
    else:
        # Else return "master${SRCREV}".
        return "master%s" % srcrev

PV = "${@mender_monitor_version_from_preferred_version(d, '${SRCREV}')}"

# Skip version check
MENDER_DEVMODE = "true"

# Downprioritize this recipe in version selections.
DEFAULT_PREFERENCE = "-1"

repository: oleorhagen/meta-mender

repo_name: oleorhagen/meta-mender

gha_license_id: NOASSERTION

gha_language: Python


text:
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: modules/map/proto/map_id.proto

#include "modules/map/proto/map_id.pb.h"

#include <algorithm>

#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/extension_set.h>
#include <google/protobuf/wire_format_lite.h>
#include <google/protobuf/descriptor.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/reflection_ops.h>
#include <google/protobuf/wire_format.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>

PROTOBUF_PRAGMA_INIT_SEG
namespace apollo {
namespace hdmap {
constexpr Id::Id(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : id_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string){}
struct IdDefaultTypeInternal {
  constexpr IdDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~IdDefaultTypeInternal() {}
  union {
    Id _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT IdDefaultTypeInternal _Id_default_instance_;
}  // namespace hdmap
}  // namespace apollo
static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_modules_2fmap_2fproto_2fmap_5fid_2eproto[1];
static constexpr ::PROTOBUF_NAMESPACE_ID::EnumDescriptor const** file_level_enum_descriptors_modules_2fmap_2fproto_2fmap_5fid_2eproto = nullptr;
static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_modules_2fmap_2fproto_2fmap_5fid_2eproto = nullptr;

const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_modules_2fmap_2fproto_2fmap_5fid_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  PROTOBUF_FIELD_OFFSET(::apollo::hdmap::Id, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::apollo::hdmap::Id, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::apollo::hdmap::Id, id_),
  0,
};
static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  { 0, 6, sizeof(::apollo::hdmap::Id)},
};

static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = {
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::apollo::hdmap::_Id_default_instance_),
};

const char descriptor_table_protodef_modules_2fmap_2fproto_2fmap_5fid_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
  "\n\036modules/map/proto/map_id.proto\022\014apollo"
  ".hdmap\"\020\n\002Id\022\n\n\002id\030\001 \001(\t"
  ;
static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_modules_2fmap_2fproto_2fmap_5fid_2eproto_once;
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_modules_2fmap_2fproto_2fmap_5fid_2eproto = {
  false, false, 64, descriptor_table_protodef_modules_2fmap_2fproto_2fmap_5fid_2eproto, "modules/map/proto/map_id.proto",
  &descriptor_table_modules_2fmap_2fproto_2fmap_5fid_2eproto_once, nullptr, 0, 1,
  schemas, file_default_instances, TableStruct_modules_2fmap_2fproto_2fmap_5fid_2eproto::offsets,
  file_level_metadata_modules_2fmap_2fproto_2fmap_5fid_2eproto, file_level_enum_descriptors_modules_2fmap_2fproto_2fmap_5fid_2eproto, file_level_service_descriptors_modules_2fmap_2fproto_2fmap_5fid_2eproto,
};
PROTOBUF_ATTRIBUTE_WEAK ::PROTOBUF_NAMESPACE_ID::Metadata
descriptor_table_modules_2fmap_2fproto_2fmap_5fid_2eproto_metadata_getter(int index) {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_modules_2fmap_2fproto_2fmap_5fid_2eproto);
  return descriptor_table_modules_2fmap_2fproto_2fmap_5fid_2eproto.file_level_metadata[index];
}

// Force running AddDescriptors() at dynamic initialization time.
PROTOBUF_ATTRIBUTE_INIT_PRIORITY static ::PROTOBUF_NAMESPACE_ID::internal::AddDescriptorsRunner dynamic_init_dummy_modules_2fmap_2fproto_2fmap_5fid_2eproto(&descriptor_table_modules_2fmap_2fproto_2fmap_5fid_2eproto);
namespace apollo {
namespace hdmap {

// ===================================================================

class Id::_Internal {
 public:
  using HasBits = decltype(std::declval<Id>()._has_bits_);
  static void set_has_id(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

Id::Id(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:apollo.hdmap.Id)
}
Id::Id(const Id& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  id_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_id()) {
    id_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_id(),
      GetArena());
  }
  // @@protoc_insertion_point(copy_constructor:apollo.hdmap.Id)
}

void Id::SharedCtor() {
id_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

Id::~Id() {
  // @@protoc_insertion_point(destructor:apollo.hdmap.Id)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void Id::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
  id_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

void Id::ArenaDtor(void* object) {
  Id* _this = reinterpret_cast< Id* >(object);
  (void)_this;
}
void Id::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Id::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Id::Clear() {
// @@protoc_insertion_point(message_clear_start:apollo.hdmap.Id)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    id_.ClearNonDefaultToEmpty();
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Id::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional string id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          auto str = _internal_mutable_id();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "apollo.hdmap.Id.id");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* Id::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:apollo.hdmap.Id)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional string id = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_id().data(), static_cast<int>(this->_internal_id().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "apollo.hdmap.Id.id");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_id(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:apollo.hdmap.Id)
  return target;
}

size_t Id::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:apollo.hdmap.Id)
  size_t total_size = 0;

  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // optional string id = 1;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_id());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void Id::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:apollo.hdmap.Id)
  GOOGLE_DCHECK_NE(&from, this);
  const Id* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<Id>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:apollo.hdmap.Id)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:apollo.hdmap.Id)
    MergeFrom(*source);
  }
}

void Id::MergeFrom(const Id& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:apollo.hdmap.Id)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_id()) {
    _internal_set_id(from._internal_id());
  }
}

void Id::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:apollo.hdmap.Id)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void Id::CopyFrom(const Id& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:apollo.hdmap.Id)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Id::IsInitialized() const {
  return true;
}

void Id::InternalSwap(Id* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  id_.Swap(&other->id_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}

::PROTOBUF_NAMESPACE_ID::Metadata Id::GetMetadata() const {
  return GetMetadataStatic();
}

// @@protoc_insertion_point(namespace_scope)
}  // namespace hdmap
}  // namespace apollo
PROTOBUF_NAMESPACE_OPEN
template<> PROTOBUF_NOINLINE ::apollo::hdmap::Id* Arena::CreateMaybeMessage< ::apollo::hdmap::Id >(Arena* arena) {
  return Arena::CreateMessageInternal< ::apollo::hdmap::Id >(arena);
}
PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)
#include <google/protobuf/port_undef.inc>

repository: Tsinghua-OpenICV/OpenICV

repo_name: Tsinghua-OpenICV/OpenICV

extension: cc


text:
@article{Abdelaal2019b,
 abstract = {BACKGROUND Single-cell transcriptomics is rapidly advancing our understanding of the cellular composition of complex tissues and organisms. A major limitation in most analysis pipelines is the reliance on manual annotations to determine cell identities, which are time-consuming and irreproducible. The exponential growth in the number of cells and samples has prompted the adaptation and development of supervised classification methods for automatic cell identification. RESULTS Here, we benchmarked 22 classification methods that automatically assign cell identities including single-cell-specific and general-purpose classifiers. The performance of the methods is evaluated using 27 publicly available single-cell RNA sequencing datasets of different sizes, technologies, species, and levels of complexity. We use 2 experimental setups to evaluate the performance of each method for within dataset predictions (intra-dataset) and across datasets (inter-dataset) based on accuracy, percentage of unclassified cells, and computation time. We further evaluate the methods' sensitivity to the input features, number of cells per population, and their performance across different annotation levels and datasets. We find that most classifiers perform well on a variety of datasets with decreased accuracy for complex datasets with overlapping classes or deep annotations. The general-purpose support vector machine classifier has overall the best performance across the different experiments. CONCLUSIONS We present a comprehensive evaluation of automatic cell identification methods for single-cell RNA sequencing data. All the code used for the evaluation is available on GitHub ( https://github.com/tabdelaal/scRNAseq_Benchmark ). Additionally, we provide a Snakemake workflow to facilitate the benchmarking and to support the extension of new methods and new datasets.},
 author = {Abdelaal, Tamim and Michielsen, Lieke and Cats, Davy and Hoogduin, Dylan and Mei, Hailiang and Reinders, Marcel J. T. and Mahfouz, Ahmed},
 doi = {10.1186/s13059-019-1795-z},
 file = {:C$\backslash$:/Users/amahfouz/Documents/Mendeley Desktop/Abdelaal et al/Genome Biology/Abdelaal et al. - 2019 - A comparison of automatic cell identification methods for single-cell RNA sequencing data.pdf:pdf},
 issn = {1474-760X},
 journal = {Genome Biology},
 number = {1},
 pages = {644435},
 pmid = {31500660},
 publisher = {Cold Spring Harbor Laboratory},
 title = {A comparison of automatic cell identification methods for single-cell RNA sequencing data},
 volume = {20},
 year = {2019}
}

repository: ahmedmahfouz/academic-kickstart

repo_name: ahmedmahfouz/academic-kickstart

gha_license_id: MIT


text:
#include "hwlib.hpp"
#ifndef SERVO_HPP
#define SERVO_HPP
/// \file

/// \brief
/// this is a control class for servo motors that use PWM.
/// \details
/// This class controls servos that use pwm.
/// You can manipulate the pulse duration.
/// Every millisecond you  must call the updateServo function, it
/// will send a new pulse to the servo if needed.
class Servo {
private:
    hwlib::pin_out & pin;
public:
    /// \brief
    /// Create a servo object
    /// \param[in] hwlib::pin_out pin, reference to the pin the servo's PWM pin is connected to
    Servo(hwlib::pin_out &pin);
    /// \brief
    /// Set the position of the servo
    /// \param[in] int position, give the position in degrees, 0 is the most left
    /// position ,180 is the most right position
    void setServo(const int &position);
};

#endif

repository: jarivandam/hu-ipass

repo_name: jarivandam/hu-ipass


text:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE eagle SYSTEM "eagle.dtd">
<eagle version="7.3.0">
<drawing>
<settings>
<setting alwaysvectorfont="yes"/>
<setting verticaltext="up"/>
</settings>
<grid distance="10" unitdist="mil" unit="mil" style="lines" multiple="1" display="yes" altdistance="5" altunitdist="mil" altunit="mil"/>
<layers>
<layer number="1" name="Top" color="4" fill="1" visible="no" active="yes"/>
<layer number="16" name="Bottom" color="1" fill="1" visible="no" active="yes"/>
<layer number="17" name="Pads" color="2" fill="1" visible="yes" active="yes"/>
<layer number="18" name="Vias" color="2" fill="1" visible="yes" active="yes"/>
<layer number="19" name="Unrouted" color="6" fill="1" visible="no" active="yes"/>
<layer number="20" name="Dimension" color="15" fill="1" visible="yes" active="yes"/>
<layer number="21" name="tPlace" color="7" fill="1" visible="no" active="yes"/>
<layer number="22" name="bPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="23" name="tOrigins" color="15" fill="1" visible="no" active="yes"/>
<layer number="24" name="bOrigins" color="15" fill="1" visible="yes" active="yes"/>
<layer number="25" name="tNames" color="7" fill="1" visible="no" active="yes"/>
<layer number="26" name="bNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="27" name="tValues" color="7" fill="1" visible="no" active="yes"/>
<layer number="28" name="bValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="29" name="tStop" color="7" fill="3" visible="no" active="yes"/>
<layer number="30" name="bStop" color="7" fill="6" visible="yes" active="yes"/>
<layer number="31" name="tCream" color="7" fill="4" visible="no" active="yes"/>
<layer number="32" name="bCream" color="7" fill="5" visible="no" active="yes"/>
<layer number="33" name="tFinish" color="6" fill="3" visible="no" active="yes"/>
<layer number="34" name="bFinish" color="6" fill="6" visible="no" active="yes"/>
<layer number="35" name="tGlue" color="7" fill="4" visible="no" active="yes"/>
<layer number="36" name="bGlue" color="7" fill="5" visible="no" active="yes"/>
<layer number="37" name="tTest" color="7" fill="1" visible="no" active="yes"/>
<layer number="38" name="bTest" color="7" fill="1" visible="no" active="yes"/>
<layer number="39" name="tKeepout" color="4" fill="11" visible="no" active="yes"/>
<layer number="40" name="bKeepout" color="1" fill="11" visible="yes" active="yes"/>
<layer number="41" name="tRestrict" color="4" fill="10" visible="no" active="yes"/>
<layer number="42" name="bRestrict" color="1" fill="10" visible="yes" active="yes"/>
<layer number="43" name="vRestrict" color="2" fill="10" visible="no" active="yes"/>
<layer number="44" name="Drills" color="7" fill="1" visible="no" active="yes"/>
<layer number="45" name="Holes" color="7" fill="1" visible="no" active="yes"/>
<layer number="46" name="Milling" color="3" fill="1" visible="no" active="yes"/>
<layer number="47" name="Measures" color="7" fill="1" visible="no" active="yes"/>
<layer number="48" name="Document" color="7" fill="1" visible="no" active="yes"/>
<layer number="49" name="Reference" color="7" fill="1" visible="no" active="yes"/>
<layer number="50" name="dxf" color="7" fill="1" visible="no" active="no"/>
<layer number="51" name="tDocu" color="7" fill="1" visible="no" active="yes"/>
<layer number="52" name="bDocu" color="7" fill="1" visible="no" active="yes"/>
<layer number="53" name="tGND_GNDA" color="7" fill="9" visible="no" active="no"/>
<layer number="54" name="bGND_GNDA" color="1" fill="9" visible="no" active="no"/>
<layer number="56" name="wert" color="7" fill="1" visible="no" active="no"/>
<layer number="90" name="Modules" color="5" fill="1" visible="no" active="no"/>
<layer number="91" name="Nets" color="2" fill="1" visible="no" active="no"/>
<layer number="92" name="Busses" color="1" fill="1" visible="no" active="no"/>
<layer number="93" name="Pins" color="2" fill="1" visible="no" active="no"/>
<layer number="94" name="Symbols" color="4" fill="1" visible="no" active="no"/>
<layer number="95" name="Names" color="7" fill="1" visible="no" active="no"/>
<layer number="96" name="Values" color="7" fill="1" visible="no" active="no"/>
<layer number="97" name="Info" color="7" fill="1" visible="no" active="no"/>
<layer number="98" name="Guide" color="6" fill="1" visible="no" active="no"/>
<layer number="99" name="SpiceOrder" color="5" fill="1" visible="no" active="no"/>
<layer number="100" name="Muster" color="7" fill="1" visible="no" active="no"/>
<layer number="101" name="Patch_Top" color="12" fill="4" visible="no" active="yes"/>
<layer number="102" name="Vscore" color="7" fill="1" visible="no" active="yes"/>
<layer number="103" name="tMap" color="7" fill="1" visible="no" active="yes"/>
<layer number="104" name="Name" color="16" fill="1" visible="no" active="yes"/>
<layer number="105" name="tPlate" color="7" fill="1" visible="no" active="yes"/>
<layer number="106" name="bPlate" color="7" fill="1" visible="no" active="yes"/>
<layer number="107" name="Crop" color="7" fill="1" visible="no" active="yes"/>
<layer number="108" name="centerline" color="7" fill="1" visible="no" active="yes"/>
<layer number="109" name="ref-old" color="11" fill="1" visible="no" active="yes"/>
<layer number="110" name="fp0" color="7" fill="1" visible="no" active="yes"/>
<layer number="116" name="Patch_BOT" color="9" fill="4" visible="no" active="yes"/>
<layer number="121" name="_tsilk" color="7" fill="1" visible="no" active="yes"/>
<layer number="122" name="_bsilk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="123" name="tTestmark" color="7" fill="1" visible="no" active="yes"/>
<layer number="124" name="bTestmark" color="7" fill="1" visible="no" active="yes"/>
<layer number="125" name="_tNames" color="7" fill="1" visible="no" active="yes"/>
<layer number="131" name="prix" color="7" fill="1" visible="no" active="yes"/>
<layer number="132" name="test" color="7" fill="1" visible="no" active="yes"/>
<layer number="144" name="Drill_legend" color="7" fill="1" visible="no" active="yes"/>
<layer number="151" name="HeatSink" color="7" fill="1" visible="no" active="yes"/>
<layer number="199" name="Contour" color="7" fill="1" visible="no" active="yes"/>
<layer number="200" name="200bmp" color="1" fill="10" visible="no" active="no"/>
<layer number="201" name="201bmp" color="2" fill="10" visible="no" active="yes"/>
<layer number="202" name="202bmp" color="3" fill="10" visible="no" active="yes"/>
<layer number="203" name="203bmp" color="4" fill="10" visible="no" active="yes"/>
<layer number="204" name="204bmp" color="5" fill="10" visible="no" active="yes"/>
<layer number="205" name="205bmp" color="6" fill="10" visible="no" active="yes"/>
<layer number="206" name="206bmp" color="7" fill="10" visible="no" active="yes"/>
<layer number="207" name="207bmp" color="8" fill="10" visible="no" active="yes"/>
<layer number="208" name="208bmp" color="9" fill="10" visible="no" active="yes"/>
<layer number="209" name="209bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="210" name="210bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="211" name="211bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="212" name="212bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="213" name="213bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="214" name="214bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="215" name="215bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="216" name="216bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="217" name="217bmp" color="18" fill="1" visible="no" active="no"/>
<layer number="218" name="218bmp" color="19" fill="1" visible="no" active="no"/>
<layer number="219" name="219bmp" color="20" fill="1" visible="no" active="no"/>
<layer number="220" name="220bmp" color="21" fill="1" visible="no" active="no"/>
<layer number="221" name="221bmp" color="22" fill="1" visible="no" active="no"/>
<layer number="222" name="222bmp" color="23" fill="1" visible="no" active="no"/>
<layer number="223" name="223bmp" color="24" fill="1" visible="no" active="no"/>
<layer number="224" name="224bmp" color="25" fill="1" visible="no" active="no"/>
<layer number="250" name="Descript" color="3" fill="1" visible="no" active="no"/>
<layer number="251" name="SMDround" color="12" fill="11" visible="no" active="no"/>
<layer number="254" name="cooling" color="7" fill="1" visible="no" active="yes"/>
</layers>
<board>
<plain>
<wire x1="0" y1="3.81" x2="0" y2="7.62" width="0" layer="20"/>
<wire x1="0" y1="7.62" x2="0" y2="11.43" width="0" layer="20"/>
<wire x1="0" y1="11.43" x2="3.81" y2="15.24" width="0" layer="20" curve="-90"/>
<wire x1="0" y1="3.81" x2="3.81" y2="0" width="0" layer="20" curve="90"/>
<wire x1="19.177" y1="15.24" x2="20.447" y2="13.97" width="0" layer="20" curve="-90"/>
<wire x1="19.177" y1="0" x2="20.447" y2="1.27" width="0" layer="20" curve="90"/>
<text x="6.604" y="12.7" size="1.016" layer="21" ratio="15" rot="R270" align="center-left">+5V</text>
<text x="10.16" y="2.667" size="1.016" layer="21" ratio="15" rot="R90" align="center-left">GND</text>
<text x="10.16" y="12.7" size="1.016" layer="21" ratio="12" rot="R270" align="center-left">RX</text>
<text x="11.938" y="2.667" size="1.016" layer="21" ratio="12" rot="R90" align="center-left">TX</text>
<text x="11.938" y="12.7" size="1.016" layer="21" ratio="12" rot="R270" align="center-left">V+</text>
<text x="13.716" y="2.667" size="1.016" layer="21" ratio="12" rot="R90" align="center-left">RES</text>
<text x="14.351" y="11.684" size="1.016" layer="22" ratio="12" rot="MR0">v0.1</text>
<wire x1="3.81" y1="0" x2="19.177" y2="0" width="0" layer="20"/>
<wire x1="20.447" y1="1.27" x2="20.447" y2="13.97" width="0" layer="20"/>
<wire x1="19.177" y1="15.24" x2="3.81" y2="15.24" width="0" layer="20"/>
<wire x1="0" y1="11.43" x2="0" y2="3.81" width="0" layer="20"/>
<text x="8.382" y="12.7" size="1.016" layer="21" ratio="15" rot="R270" align="center-left">0</text>
<text x="13.716" y="12.7" size="1.016" layer="21" ratio="15" rot="R270" align="center-left">16</text>
<text x="8.382" y="2.667" size="1.016" layer="21" ratio="15" rot="R90" align="center-left">2</text>
</plain>
<libraries>
<library name="p.peter-connectors">
<packages>
<package name="PINHEADER-100MIL-1X5-NOSILK">
<wire x1="-5.715" y1="1.27" x2="-4.445" y2="1.27" width="0.1524" layer="51"/>
<wire x1="-6.35" y1="0.635" x2="-6.35" y2="-0.635" width="0.1524" layer="51"/>
<wire x1="-5.715" y1="1.27" x2="-6.35" y2="0.635" width="0.1524" layer="51"/>
<wire x1="-6.35" y1="-0.635" x2="-5.715" y2="-1.27" width="0.1524" layer="51"/>
<wire x1="-4.445" y1="1.27" x2="5.715" y2="1.27" width="0.1524" layer="51"/>
<wire x1="5.715" y1="1.27" x2="6.35" y2="0.635" width="0.1524" layer="51"/>
<wire x1="6.35" y1="0.635" x2="6.35" y2="-0.635" width="0.1524" layer="51"/>
<wire x1="6.35" y1="-0.635" x2="5.715" y2="-1.27" width="0.1524" layer="51"/>
<wire x1="5.715" y1="-1.27" x2="-5.715" y2="-1.27" width="0.1524" layer="51"/>
<pad name="1" x="-5.08" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="2" x="-2.54" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="3" x="0" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="4" x="2.54" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="5" x="5.08" y="0" drill="1.016" shape="long" rot="R90"/>
<text x="0" y="2.54" size="0.8" layer="25" font="vector" ratio="10" align="center">>NAME</text>
<text x="0" y="-2.54" size="0.8" layer="27" font="vector" align="center">>VALUE</text>
<rectangle x1="2.286" y1="-0.254" x2="2.794" y2="0.254" layer="51"/>
<rectangle x1="-0.254" y1="-0.254" x2="0.254" y2="0.254" layer="51"/>
<rectangle x1="-2.794" y1="-0.254" x2="-2.286" y2="0.254" layer="51"/>
<rectangle x1="-5.334" y1="-0.254" x2="-4.826" y2="0.254" layer="51"/>
<rectangle x1="4.826" y1="-0.254" x2="5.334" y2="0.254" layer="51"/>
</package>
<package name="ANGLE-1X6">
<wire x1="-7.62" y1="-0.635" x2="-5.08" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="-5.08" y1="-0.635" x2="-5.08" y2="1.905" width="0.1524" layer="21"/>
<wire x1="-5.08" y1="1.905" x2="-7.62" y2="1.905" width="0.1524" layer="21"/>
<wire x1="-7.62" y1="1.905" x2="-7.62" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="-6.35" y1="8.255" x2="-6.35" y2="2.54" width="0.762" layer="51"/>
<wire x1="-5.08" y1="-0.635" x2="-2.54" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="-2.54" y1="-0.635" x2="-2.54" y2="1.905" width="0.1524" layer="21"/>
<wire x1="-2.54" y1="1.905" x2="-5.08" y2="1.905" width="0.1524" layer="21"/>
<wire x1="-3.81" y1="8.255" x2="-3.81" y2="2.54" width="0.762" layer="51"/>
<wire x1="-2.54" y1="-0.635" x2="0" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="0" y1="-0.635" x2="0" y2="1.905" width="0.1524" layer="21"/>
<wire x1="0" y1="1.905" x2="-2.54" y2="1.905" width="0.1524" layer="21"/>
<wire x1="-1.27" y1="8.255" x2="-1.27" y2="2.54" width="0.762" layer="51"/>
<wire x1="0" y1="-0.635" x2="2.54" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="2.54" y1="-0.635" x2="2.54" y2="1.905" width="0.1524" layer="21"/>
<wire x1="2.54" y1="1.905" x2="0" y2="1.905" width="0.1524" layer="21"/>
<wire x1="1.27" y1="8.255" x2="1.27" y2="2.54" width="0.762" layer="51"/>
<wire x1="2.54" y1="-0.635" x2="5.08" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="5.08" y1="-0.635" x2="5.08" y2="1.905" width="0.1524" layer="21"/>
<wire x1="5.08" y1="1.905" x2="2.54" y2="1.905" width="0.1524" layer="21"/>
<wire x1="3.81" y1="8.255" x2="3.81" y2="2.54" width="0.762" layer="51"/>
<wire x1="5.08" y1="-0.635" x2="7.62" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="7.62" y1="-0.635" x2="7.62" y2="1.905" width="0.1524" layer="21"/>
<wire x1="7.62" y1="1.905" x2="5.08" y2="1.905" width="0.1524" layer="21"/>
<wire x1="6.35" y1="8.255" x2="6.35" y2="2.54" width="0.762" layer="51"/>
<pad name="1" x="-6.35" y="-2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="2" x="-3.81" y="-2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="3" x="-1.27" y="-2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="4" x="1.27" y="-2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="5" x="3.81" y="-2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="6" x="6.35" y="-2.54" drill="1.016" shape="long" rot="R90"/>
<text x="-8.255" y="-2.54" size="1.27" layer="25" ratio="10" rot="R90">>NAME</text>
<text x="9.525" y="-2.54" size="1.27" layer="27" rot="R90">>VALUE</text>
<rectangle x1="-6.731" y1="1.905" x2="-5.969" y2="2.413" layer="51"/>
<rectangle x1="-4.191" y1="1.905" x2="-3.429" y2="2.413" layer="51"/>
<rectangle x1="-1.651" y1="1.905" x2="-0.889" y2="2.413" layer="51"/>
<rectangle x1="0.889" y1="1.905" x2="1.651" y2="2.413" layer="51"/>
<rectangle x1="3.429" y1="1.905" x2="4.191" y2="2.413" layer="51"/>
<rectangle x1="5.969" y1="1.905" x2="6.731" y2="2.413" layer="51"/>
<rectangle x1="-6.731" y1="-1.651" x2="-5.969" y2="-0.635" layer="21"/>
<rectangle x1="-4.191" y1="-1.651" x2="-3.429" y2="-0.635" layer="21"/>
<rectangle x1="-1.651" y1="-1.651" x2="-0.889" y2="-0.635" layer="21"/>
<rectangle x1="0.889" y1="-1.651" x2="1.651" y2="-0.635" layer="21"/>
<rectangle x1="3.429" y1="-1.651" x2="4.191" y2="-0.635" layer="21"/>
<rectangle x1="5.969" y1="-1.651" x2="6.731" y2="-0.635" layer="21"/>
</package>
</packages>
</library>
<library name="p.peter-rcl">
<packages>
<package name="R0603">
<description><b>RESISTOR</b></description>
<wire x1="-0.432" y1="-0.356" x2="0.432" y2="-0.356" width="0.1524" layer="51"/>
<wire x1="0.432" y1="0.356" x2="-0.432" y2="0.356" width="0.1524" layer="51"/>
<wire x1="-1.473" y1="0.983" x2="1.473" y2="0.983" width="0.0508" layer="39"/>
<wire x1="1.473" y1="0.983" x2="1.473" y2="-0.983" width="0.0508" layer="39"/>
<wire x1="1.473" y1="-0.983" x2="-1.473" y2="-0.983" width="0.0508" layer="39"/>
<wire x1="-1.473" y1="-0.983" x2="-1.473" y2="0.983" width="0.0508" layer="39"/>
<smd name="1" x="-0.85" y="0" dx="1" dy="1.1" layer="1"/>
<smd name="2" x="0.85" y="0" dx="1" dy="1.1" layer="1"/>
<text x="0" y="1.6" size="0.8" layer="25" font="vector" ratio="12" rot="SR0" align="center">>NAME</text>
<text x="0" y="-1.6" size="0.8" layer="27" font="vector" ratio="12" rot="SR0" align="center">>VALUE</text>
<rectangle x1="0.4318" y1="-0.4318" x2="0.8382" y2="0.4318" layer="51"/>
<rectangle x1="-0.8382" y1="-0.4318" x2="-0.4318" y2="0.4318" layer="51"/>
<rectangle x1="-0.1999" y1="-0.4001" x2="0.1999" y2="0.4001" layer="35"/>
<wire x1="-0.4" y1="0.73" x2="0.4" y2="0.73" width="0.15" layer="21"/>
<wire x1="-0.4" y1="-0.73" x2="0.4" y2="-0.73" width="0.15" layer="21"/>
</package>
</packages>
</library>
<library name="p.peter-periphery">
<packages>
<package name="ESP8266-ESP-01-NOSILK">
<wire x1="-3" y1="7.5" x2="22" y2="7.5" width="0.127" layer="48"/>
<wire x1="-3" y1="-7.5" x2="22" y2="-7.5" width="0.127" layer="48"/>
<pad name="GPIO2" x="1.27" y="1.27" drill="0.9"/>
<pad name="H_PD" x="-1.27" y="1.27" drill="0.9"/>
<pad name="GPIO16" x="-1.27" y="-1.27" drill="0.9"/>
<pad name="GPIO0" x="1.27" y="-1.27" drill="0.9"/>
<pad name="VCC" x="-1.27" y="-3.81" drill="0.9"/>
<pad name="RX" x="1.27" y="-3.81" drill="0.9"/>
<pad name="TX" x="-1.27" y="3.81" drill="0.9"/>
<pad name="GND" x="1.27" y="3.81" drill="0.9" shape="square"/>
<wire x1="-3" y1="-7.5" x2="-3" y2="7.5" width="0.127" layer="48"/>
<wire x1="22" y1="-7.5" x2="22" y2="7.5" width="0.127" layer="48"/>
<wire x1="20" y1="-4" x2="20" y2="-1" width="0.6" layer="48"/>
<wire x1="20" y1="-1" x2="16" y2="-1" width="0.6" layer="48"/>
<wire x1="16" y1="-1" x2="16" y2="0" width="0.6" layer="48"/>
<wire x1="16" y1="0" x2="20" y2="0" width="0.6" layer="48"/>
<wire x1="20" y1="0" x2="20" y2="1" width="0.6" layer="48"/>
<wire x1="20" y1="1" x2="16" y2="1" width="0.6" layer="48"/>
<wire x1="16" y1="1" x2="16" y2="2" width="0.6" layer="48"/>
<wire x1="16" y1="2" x2="20" y2="2" width="0.6" layer="48"/>
<wire x1="20" y1="2" x2="20" y2="3" width="0.6" layer="48"/>
<wire x1="20" y1="3" x2="16" y2="3" width="0.6" layer="48"/>
<wire x1="16" y1="3" x2="16" y2="4" width="0.6" layer="48"/>
<wire x1="16" y1="4" x2="20" y2="4" width="0.6" layer="48"/>
<wire x1="20" y1="4" x2="20" y2="5" width="0.6" layer="48"/>
<wire x1="20" y1="5" x2="11" y2="5" width="0.6" layer="48"/>
<text x="-2" y="6" size="0.8" layer="25" font="vector" ratio="12" align="center-left">>NAME</text>
<text x="4" y="0" size="0.8" layer="27" font="vector" ratio="12" rot="SR270" align="center">>VALUE</text>
<wire x1="-2.54" y1="4.572" x2="-2.54" y2="-4.572" width="0.127" layer="21"/>
<wire x1="-2.032" y1="-5.08" x2="2.032" y2="-5.08" width="0.127" layer="21"/>
<wire x1="2.54" y1="-4.572" x2="2.54" y2="4.572" width="0.127" layer="21"/>
<wire x1="2.032" y1="5.08" x2="-2.032" y2="5.08" width="0.127" layer="21"/>
<wire x1="-2.032" y1="5.08" x2="-2.54" y2="4.572" width="0.127" layer="21" curve="90"/>
<wire x1="2.032" y1="5.08" x2="2.54" y2="4.572" width="0.127" layer="21" curve="-90"/>
<wire x1="-2.54" y1="-4.572" x2="-2.032" y2="-5.08" width="0.127" layer="21" curve="90"/>
<wire x1="2.032" y1="-5.08" x2="2.54" y2="-4.572" width="0.127" layer="21" curve="90"/>
<wire x1="9.5" y1="0.5" x2="9.5" y2="-0.5" width="0.1" layer="51"/>
<wire x1="9" y1="0" x2="10" y2="0" width="0.1" layer="51"/>
</package>
</packages>
</library>
<library name="p.peter-passives">
<packages>
<package name="SWITCH-SMD-2_PIN-DX">
<wire x1="-2" y1="-1.5" x2="2" y2="-1.5" width="0.127" layer="51"/>
<wire x1="2" y1="-1.5" x2="2.5" y2="-1" width="0.127" layer="51" curve="90"/>
<wire x1="2.5" y1="-1" x2="2.5" y2="1" width="0.127" layer="51"/>
<wire x1="2.5" y1="1" x2="2" y2="1.5" width="0.127" layer="51" curve="90"/>
<wire x1="2" y1="1.5" x2="-2" y2="1.5" width="0.127" layer="51"/>
<wire x1="-2" y1="1.5" x2="-2.5" y2="1" width="0.16" layer="51" curve="90"/>
<wire x1="-2.5" y1="1" x2="-2.5" y2="-1" width="0.127" layer="51"/>
<wire x1="-2.5" y1="-1" x2="-2" y2="-1.5" width="0.127" layer="51" curve="90"/>
<circle x="0" y="0" radius="1" width="0.127" layer="51"/>
<smd name="P$1" x="-2.5" y="0" dx="1.2" dy="1.5" layer="1" roundness="10"/>
<smd name="P$2" x="2.5" y="0" dx="1.2" dy="1.5" layer="1" roundness="10"/>
<wire x1="-2" y1="1.5" x2="2" y2="1.5" width="0.16" layer="21"/>
<wire x1="-2" y1="-1.5" x2="2" y2="-1.5" width="0.16" layer="21"/>
<text x="0" y="2.5" size="0.8" layer="21" font="vector" ratio="12" align="center">>NAME</text>
<wire x1="-2" y1="1.5" x2="-2.5" y2="1" width="0.16" layer="21" curve="90"/>
<wire x1="2" y1="1.5" x2="2.5" y2="1" width="0.16" layer="21" curve="-90"/>
<wire x1="2" y1="-1.5" x2="2.5" y2="-1" width="0.16" layer="21" curve="90"/>
<wire x1="-2" y1="-1.5" x2="-2.5" y2="-1" width="0.16" layer="21" curve="-90"/>
</package>
</packages>
</library>
</libraries>
<attributes>
</attributes>
<variantdefs>
</variantdefs>
<classes>
<class number="0" name="default" width="0" drill="0">
</class>
</classes>
<designrules name="oshpark">
<description language="de"><b>OSH Park rules</b>
<p>
Design rules for OSH Park orders.

Vias smaller than 4mm are tented and all THT pads are reshaped round</description>
<description language="en"><b>Laen's PCB Order Design Rules</b>
<p>
Please make sure your boards conform to these design rules.</description>
<param name="layerSetup" value="(1*16)"/>
<param name="mtCopper" value="0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm 0.0356mm"/>
<param name="mtIsolate" value="1.5011mm 0.1499mm 0.2007mm 0.1499mm 0.2007mm 0.1499mm 0.2007mm 0.1499mm 0.2007mm 0.1499mm 0.2007mm 0.1499mm 0.2007mm 0.1499mm 0.2007mm"/>
<param name="mdWireWire" value="6mil"/>
<param name="mdWirePad" value="6mil"/>
<param name="mdWireVia" value="6mil"/>
<param name="mdPadPad" value="6mil"/>
<param name="mdPadVia" value="6mil"/>
<param name="mdViaVia" value="6mil"/>
<param name="mdSmdPad" value="6mil"/>
<param name="mdSmdVia" value="6mil"/>
<param name="mdSmdSmd" value="6mil"/>
<param name="mdViaViaSameLayer" value="8mil"/>
<param name="mnLayersViaInSmd" value="2"/>
<param name="mdCopperDimension" value="15mil"/>
<param name="mdDrill" value="6mil"/>
<param name="mdSmdStop" value="0mil"/>
<param name="msWidth" value="6mil"/>
<param name="msDrill" value="13mil"/>
<param name="msMicroVia" value="13mil"/>
<param name="msBlindViaRatio" value="0.5"/>
<param name="rvPadTop" value="0.25"/>
<param name="rvPadInner" value="0.25"/>
<param name="rvPadBottom" value="0.25"/>
<param name="rvViaOuter" value="0.25"/>
<param name="rvViaInner" value="0.25"/>
<param name="rvMicroViaOuter" value="0.25"/>
<param name="rvMicroViaInner" value="0.25"/>
<param name="rlMinPadTop" value="7mil"/>
<param name="rlMaxPadTop" value="20mil"/>
<param name="rlMinPadInner" value="7mil"/>
<param name="rlMaxPadInner" value="20mil"/>
<param name="rlMinPadBottom" value="7mil"/>
<param name="rlMaxPadBottom" value="20mil"/>
<param name="rlMinViaOuter" value="7mil"/>
<param name="rlMaxViaOuter" value="20mil"/>
<param name="rlMinViaInner" value="7mil"/>
<param name="rlMaxViaInner" value="20mil"/>
<param name="rlMinMicroViaOuter" value="4mil"/>
<param name="rlMaxMicroViaOuter" value="20mil"/>
<param name="rlMinMicroViaInner" value="4mil"/>
<param name="rlMaxMicroViaInner" value="20mil"/>
<param name="psTop" value="1"/>
<param name="psBottom" value="1"/>
<param name="psFirst" value="2"/>
<param name="psElongationLong" value="100"/>
<param name="psElongationOffset" value="100"/>
<param name="mvStopFrame" value="1"/>
<param name="mvCreamFrame" value="0"/>
<param name="mlMinStopFrame" value="4mil"/>
<param name="mlMaxStopFrame" value="4mil"/>
<param name="mlMinCreamFrame" value="0mil"/>
<param name="mlMaxCreamFrame" value="0mil"/>
<param name="mlViaStopLimit" value="4.1mm"/>
<param name="srRoundness" value="0"/>
<param name="srMinRoundness" value="0mil"/>
<param name="srMaxRoundness" value="0mil"/>
<param name="slThermalIsolate" value="10mil"/>
<param name="slThermalsForVias" value="0"/>
<param name="dpMaxLengthDifference" value="10mm"/>
<param name="dpGapFactor" value="2.5"/>
<param name="checkGrid" value="0"/>
<param name="checkAngle" value="0"/>
<param name="checkFont" value="1"/>
<param name="checkRestrict" value="1"/>
<param name="useDiameter" value="13"/>
<param name="maxErrors" value="50"/>
</designrules>
<autorouter>
<pass name="Default">
<param name="RoutingGrid" value="50mil"/>
<param name="AutoGrid" value="1"/>
<param name="Efforts" value="0"/>
<param name="TopRouterVariant" value="1"/>
<param name="tpViaShape" value="round"/>
<param name="PrefDir.1" value="a"/>
<param name="PrefDir.2" value="0"/>
<param name="PrefDir.3" value="0"/>
<param name="PrefDir.4" value="0"/>
<param name="PrefDir.5" value="0"/>
<param name="PrefDir.6" value="0"/>
<param name="PrefDir.7" value="0"/>
<param name="PrefDir.8" value="0"/>
<param name="PrefDir.9" value="0"/>
<param name="PrefDir.10" value="0"/>
<param name="PrefDir.11" value="0"/>
<param name="PrefDir.12" value="0"/>
<param name="PrefDir.13" value="0"/>
<param name="PrefDir.14" value="0"/>
<param name="PrefDir.15" value="0"/>
<param name="PrefDir.16" value="a"/>
<param name="cfVia" value="8"/>
<param name="cfNonPref" value="5"/>
<param name="cfChangeDir" value="2"/>
<param name="cfOrthStep" value="2"/>
<param name="cfDiagStep" value="3"/>
<param name="cfExtdStep" value="0"/>
<param name="cfBonusStep" value="1"/>
<param name="cfMalusStep" value="1"/>
<param name="cfPadImpact" value="4"/>
<param name="cfSmdImpact" value="4"/>
<param name="cfBusImpact" value="0"/>
<param name="cfHugging" value="3"/>
<param name="cfAvoid" value="4"/>
<param name="cfPolygon" value="10"/>
<param name="cfBase.1" value="0"/>
<param name="cfBase.2" value="1"/>
<param name="cfBase.3" value="1"/>
<param name="cfBase.4" value="1"/>
<param name="cfBase.5" value="1"/>
<param name="cfBase.6" value="1"/>
<param name="cfBase.7" value="1"/>
<param name="cfBase.8" value="1"/>
<param name="cfBase.9" value="1"/>
<param name="cfBase.10" value="1"/>
<param name="cfBase.11" value="1"/>
<param name="cfBase.12" value="1"/>
<param name="cfBase.13" value="1"/>
<param name="cfBase.14" value="1"/>
<param name="cfBase.15" value="1"/>
<param name="cfBase.16" value="0"/>
<param name="mnVias" value="20"/>
<param name="mnSegments" value="9999"/>
<param name="mnExtdSteps" value="9999"/>
<param name="mnRipupLevel" value="10"/>
<param name="mnRipupSteps" value="100"/>
<param name="mnRipupTotal" value="100"/>
</pass>
<pass name="Follow-me" refer="Default" active="yes">
</pass>
<pass name="Busses" refer="Default" active="yes">
<param name="cfNonPref" value="4"/>
<param name="cfBusImpact" value="4"/>
<param name="cfHugging" value="0"/>
<param name="mnVias" value="0"/>
</pass>
<pass name="Route" refer="Default" active="yes">
</pass>
<pass name="Optimize1" refer="Default" active="yes">
<param name="cfVia" value="99"/>
<param name="cfExtdStep" value="10"/>
<param name="cfHugging" value="1"/>
<param name="mnExtdSteps" value="1"/>
<param name="mnRipupLevel" value="0"/>
</pass>
<pass name="Optimize2" refer="Optimize1" active="yes">
<param name="cfNonPref" value="0"/>
<param name="cfChangeDir" value="6"/>
<param name="cfExtdStep" value="0"/>
<param name="cfBonusStep" value="2"/>
<param name="cfMalusStep" value="2"/>
<param name="cfPadImpact" value="2"/>
<param name="cfSmdImpact" value="2"/>
<param name="cfHugging" value="0"/>
</pass>
<pass name="Optimize3" refer="Optimize2" active="yes">
<param name="cfChangeDir" value="8"/>
<param name="cfPadImpact" value="0"/>
<param name="cfSmdImpact" value="0"/>
</pass>
<pass name="Optimize4" refer="Optimize3" active="yes">
<param name="cfChangeDir" value="25"/>
</pass>
</autorouter>
<elements>
<element name="R2" library="p.peter-rcl" package="R0603" value="10k" x="10.668" y="7.62" smashed="yes" rot="MR90"/>
<element name="R3" library="p.peter-rcl" package="R0603" value="10k" x="13.208" y="7.62" smashed="yes" rot="MR90"/>
<element name="RF1" library="p.peter-periphery" package="ESP8266-ESP-01-NOSILK" value="" x="17.145" y="7.62" smashed="yes" rot="R180">
<attribute name="VALUE" x="19.145" y="13.62" size="0.8" layer="27" font="vector" ratio="12" rot="R180" align="center-left"/>
</element>
<element name="R1" library="p.peter-rcl" package="R0603" value="10k" x="8.128" y="7.62" smashed="yes" rot="MR270"/>
<element name="CON4" library="p.peter-connectors" package="PINHEADER-100MIL-1X5-NOSILK" value="" x="13.97" y="1.27" smashed="yes">
<attribute name="VALUE" x="13.97" y="-1.27" size="0.8" layer="27" font="vector" align="center"/>
</element>
<element name="CON5" library="p.peter-connectors" package="PINHEADER-100MIL-1X5-NOSILK" value="" x="13.97" y="13.97" smashed="yes">
<attribute name="VALUE" x="13.97" y="11.43" size="0.8" layer="27" font="vector" align="center"/>
</element>
<element name="U$1" library="p.peter-connectors" package="ANGLE-1X6" value="UART-6_PINUART" x="2.032" y="7.62" smashed="yes" rot="R90"/>
<element name="RESET" library="p.peter-passives" package="SWITCH-SMD-2_PIN-DX" value="" x="8.382" y="7.62" smashed="yes" rot="R90">
<attribute name="NAME" x="6.009" y="7.62" size="0.8" layer="21" font="vector" ratio="12" rot="R90" align="center"/>
</element>
<element name="FLASH" library="p.peter-passives" package="SWITCH-SMD-2_PIN-DX" value="" x="11.938" y="7.62" smashed="yes" rot="R270">
<attribute name="NAME" x="14.057" y="7.62" size="0.8" layer="21" font="vector" ratio="12" rot="R270" align="center"/>
</element>
</elements>
<signals>
<signal name="GND">
<contactref element="RF1" pad="GND"/>
<contactref element="CON4" pad="3"/>
<wire x1="15.875" y1="3.81" x2="15.875" y2="3.175" width="0.4064" layer="16"/>
<wire x1="15.875" y1="3.175" x2="13.97" y2="1.27" width="0.4064" layer="16"/>
<contactref element="U$1" pad="1"/>
<contactref element="FLASH" pad="P$2"/>
<contactref element="RESET" pad="P$1"/>
<wire x1="8.382" y1="5.12" x2="8.469" y2="5.247" width="0.4064" layer="1"/>
<wire x1="8.469" y1="5.247" x2="8.509" y2="5.207" width="0.4064" layer="1"/>
<wire x1="8.509" y1="5.207" x2="11.898" y2="5.207" width="0.4064" layer="1"/>
<wire x1="11.898" y1="5.207" x2="11.938" y2="5.12" width="0.4064" layer="1"/>
<wire x1="11.938" y1="5.12" x2="12.025" y2="5.247" width="0.4064" layer="1"/>
<wire x1="12.025" y1="5.247" x2="12.065" y2="5.207" width="0.4064" layer="1"/>
<wire x1="12.065" y1="5.207" x2="14.478" y2="5.207" width="0.4064" layer="1"/>
<wire x1="14.478" y1="5.207" x2="15.875" y2="3.81" width="0.4064" layer="1"/>
<wire x1="8.382" y1="5.12" x2="8.168" y2="5.247" width="0.4064" layer="1"/>
<wire x1="8.168" y1="5.247" x2="8.001" y2="5.08" width="0.4064" layer="1"/>
<wire x1="8.001" y1="5.08" x2="8.001" y2="4.953" width="0.4064" layer="1"/>
<wire x1="8.001" y1="4.953" x2="8.001" y2="5.207" width="0.4064" layer="1"/>
<wire x1="2.921" y1="4.572" x2="2.921" y2="1.905" width="0.4064" layer="1"/>
<wire x1="2.921" y1="1.905" x2="3.556" y2="1.27" width="0.4064" layer="1"/>
<wire x1="3.556" y1="1.27" x2="4.572" y2="1.27" width="0.4064" layer="1"/>
<wire x1="2.921" y1="4.572" x2="3.429" y2="5.08" width="0.4064" layer="1"/>
<wire x1="3.429" y1="5.08" x2="7.239" y2="5.08" width="0.4064" layer="1"/>
<wire x1="7.239" y1="5.08" x2="8.342" y2="5.08" width="0.4064" layer="1"/>
<wire x1="8.342" y1="5.08" x2="8.382" y2="5.12" width="0.4064" layer="1" curve="90"/>
</signal>
<signal name="+5V">
<contactref element="CON5" pad="1"/>
</signal>
<signal name="+3V3">
<contactref element="R2" pad="2"/>
<contactref element="R3" pad="2"/>
<contactref element="RF1" pad="VCC"/>
<contactref element="R1" pad="2"/>
<contactref element="CON5" pad="4"/>
<wire x1="18.415" y1="11.43" x2="18.415" y2="12.065" width="0.4064" layer="16"/>
<wire x1="18.415" y1="12.065" x2="16.51" y2="13.97" width="0.4064" layer="16"/>
<contactref element="U$1" pad="3"/>
<wire x1="13.208" y1="8.47" x2="13.208" y2="8.509" width="0.4064" layer="16"/>
<wire x1="13.208" y1="8.509" x2="13.169" y2="8.47" width="0.4064" layer="16"/>
<wire x1="13.169" y1="8.47" x2="10.668" y2="8.47" width="0.4064" layer="16"/>
<wire x1="10.668" y1="8.47" x2="10.629" y2="8.509" width="0.4064" layer="16"/>
<wire x1="10.629" y1="8.509" x2="10.541" y2="8.509" width="0.4064" layer="16"/>
<wire x1="10.541" y1="8.509" x2="10.287" y2="8.509" width="0.4064" layer="16"/>
<wire x1="10.287" y1="8.509" x2="8.636" y2="6.858" width="0.4064" layer="16"/>
<wire x1="8.636" y1="6.858" x2="8.216" y2="6.858" width="0.4064" layer="16"/>
<wire x1="8.216" y1="6.858" x2="8.128" y2="6.77" width="0.4064" layer="16"/>
<wire x1="8.128" y1="6.77" x2="8.128" y2="6.604" width="0.4064" layer="16"/>
<wire x1="8.128" y1="6.604" x2="7.874" y2="6.604" width="0.4064" layer="16"/>
<wire x1="7.874" y1="6.604" x2="7.62" y2="6.35" width="0.4064" layer="16"/>
<wire x1="7.62" y1="6.35" x2="4.572" y2="6.35" width="0.4064" layer="16"/>
<wire x1="18.415" y1="11.43" x2="18.415" y2="11.176" width="0.4064" layer="16"/>
<wire x1="18.415" y1="11.176" x2="17.399" y2="10.16" width="0.4064" layer="16"/>
<wire x1="17.399" y1="10.16" x2="13.843" y2="10.16" width="0.4064" layer="16"/>
<wire x1="13.843" y1="10.16" x2="13.208" y2="9.525" width="0.4064" layer="16"/>
<wire x1="13.208" y1="9.525" x2="13.208" y2="8.47" width="0.4064" layer="16"/>
</signal>
<signal name="RX">
<contactref element="RF1" pad="RX"/>
<contactref element="CON5" pad="3"/>
<wire x1="15.875" y1="12.065" x2="13.97" y2="13.97" width="0.4064" layer="16"/>
<contactref element="U$1" pad="4"/>
<wire x1="15.875" y1="11.43" x2="7.112" y2="11.43" width="0.4064" layer="1"/>
<wire x1="7.112" y1="11.43" x2="4.572" y2="8.89" width="0.4064" layer="1"/>
<wire x1="15.875" y1="12.065" x2="15.875" y2="11.43" width="0.4064" layer="16"/>
</signal>
<signal name="TX">
<contactref element="RF1" pad="TX"/>
<contactref element="CON4" pad="4"/>
<wire x1="18.415" y1="3.81" x2="18.415" y2="3.175" width="0.4064" layer="16"/>
<wire x1="18.415" y1="3.175" x2="16.51" y2="1.27" width="0.4064" layer="16"/>
<contactref element="U$1" pad="5"/>
<wire x1="4.572" y1="11.43" x2="4.318" y2="11.43" width="0.4064" layer="16"/>
<wire x1="4.318" y1="11.43" x2="3.429" y2="11.43" width="0.4064" layer="16"/>
<wire x1="3.429" y1="11.43" x2="2.921" y2="10.922" width="0.4064" layer="16"/>
<wire x1="2.921" y1="10.922" x2="2.921" y2="3.81" width="0.4064" layer="16"/>
<wire x1="2.921" y1="3.81" x2="2.921" y2="3.556" width="0.4064" layer="16"/>
<wire x1="2.921" y1="3.556" x2="3.81" y2="2.54" width="0.4064" layer="16"/>
<wire x1="3.81" y1="2.54" x2="4.318" y2="2.54" width="0.4064" layer="16"/>
<wire x1="4.318" y1="2.54" x2="5.715" y2="2.54" width="0.4064" layer="16"/>
<via x="5.715" y="2.54" extent="1-16" drill="0.635" shape="octagon"/>
<wire x1="5.715" y1="2.54" x2="15.24" y2="2.54" width="0.4064" layer="1"/>
<wire x1="15.24" y1="2.54" x2="16.51" y2="1.27" width="0.4064" layer="1"/>
</signal>
<signal name="RESET">
<contactref element="R3" pad="1"/>
<contactref element="RF1" pad="H_PD"/>
<contactref element="CON4" pad="5"/>
<wire x1="19.05" y1="1.27" x2="19.685" y2="1.905" width="0.4064" layer="16"/>
<wire x1="19.685" y1="1.905" x2="19.685" y2="5.715" width="0.4064" layer="16"/>
<wire x1="19.685" y1="5.715" x2="19.05" y2="6.35" width="0.4064" layer="16"/>
<wire x1="19.05" y1="6.35" x2="18.415" y2="6.35" width="0.4064" layer="16"/>
<wire x1="18.415" y1="6.35" x2="17.145" y2="7.62" width="0.4064" layer="1"/>
<wire x1="17.145" y1="7.62" x2="15.24" y2="7.62" width="0.4064" layer="1"/>
<contactref element="RESET" pad="P$2"/>
<wire x1="15.24" y1="7.62" x2="15.113" y2="7.62" width="0.4064" layer="1"/>
<wire x1="13.208" y1="6.77" x2="13.501" y2="6.77" width="0.4064" layer="16"/>
<wire x1="13.501" y1="6.77" x2="13.589" y2="6.858" width="0.4064" layer="16"/>
<wire x1="13.589" y1="6.858" x2="13.97" y2="6.858" width="0.4064" layer="16"/>
<wire x1="13.97" y1="6.858" x2="14.732" y2="7.62" width="0.4064" layer="16"/>
<wire x1="17.145" y1="7.62" x2="18.415" y2="6.35" width="0.4064" layer="16"/>
<wire x1="17.145" y1="7.62" x2="14.732" y2="7.62" width="0.4064" layer="16"/>
<wire x1="8.382" y1="10.12" x2="8.382" y2="8.128" width="0.4064" layer="1"/>
<wire x1="8.382" y1="8.128" x2="8.636" y2="7.874" width="0.4064" layer="1"/>
<wire x1="8.636" y1="7.874" x2="8.763" y2="7.747" width="0.4064" layer="1"/>
<wire x1="8.763" y1="7.747" x2="8.89" y2="7.62" width="0.4064" layer="1"/>
<wire x1="8.89" y1="7.62" x2="15.24" y2="7.62" width="0.4064" layer="1"/>
</signal>
<signal name="IO02">
<contactref element="R2" pad="1"/>
<contactref element="RF1" pad="GPIO2"/>
<contactref element="CON4" pad="2"/>
<wire x1="15.875" y1="6.35" x2="15.24" y2="6.35" width="0.4064" layer="16"/>
<wire x1="15.24" y1="6.35" x2="14.605" y2="5.715" width="0.4064" layer="16"/>
<wire x1="11.43" y1="1.905" x2="11.43" y2="1.27" width="0.4064" layer="16"/>
<wire x1="11.43" y1="1.905" x2="11.43" y2="2.54" width="0.4064" layer="16"/>
<wire x1="11.43" y1="2.54" x2="10.668" y2="3.302" width="0.4064" layer="16"/>
<wire x1="10.668" y1="3.302" x2="10.668" y2="5.715" width="0.4064" layer="16"/>
<wire x1="10.668" y1="5.715" x2="10.668" y2="6.77" width="0.4064" layer="16"/>
<wire x1="14.605" y1="5.715" x2="10.668" y2="5.715" width="0.4064" layer="16"/>
</signal>
<signal name="IO16">
<contactref element="RF1" pad="GPIO16"/>
<contactref element="CON5" pad="5"/>
<wire x1="18.415" y1="8.89" x2="19.05" y2="8.89" width="0.4064" layer="16"/>
<wire x1="19.05" y1="8.89" x2="19.685" y2="9.525" width="0.4064" layer="16"/>
<wire x1="19.685" y1="9.525" x2="19.685" y2="13.335" width="0.4064" layer="16"/>
<wire x1="19.685" y1="13.335" x2="19.05" y2="13.97" width="0.4064" layer="16"/>
</signal>
<signal name="IO00">
<contactref element="RF1" pad="GPIO0"/>
<contactref element="R1" pad="1"/>
<contactref element="CON5" pad="2"/>
<contactref element="FLASH" pad="P$1"/>
<wire x1="15.875" y1="8.89" x2="15.748" y2="8.89" width="0.4064" layer="1"/>
<wire x1="15.748" y1="8.89" x2="12.065" y2="8.89" width="0.4064" layer="1"/>
<wire x1="12.065" y1="8.89" x2="11.938" y2="9.017" width="0.4064" layer="1"/>
<wire x1="11.938" y1="9.017" x2="11.938" y2="10.12" width="0.4064" layer="1"/>
<wire x1="8.128" y1="8.47" x2="8.128" y2="8.763" width="0.4064" layer="16"/>
<wire x1="8.128" y1="8.763" x2="8.128" y2="9.906" width="0.4064" layer="16"/>
<wire x1="8.128" y1="9.906" x2="8.509" y2="10.287" width="0.4064" layer="16"/>
<wire x1="8.509" y1="10.287" x2="10.16" y2="10.287" width="0.4064" layer="16"/>
<wire x1="10.16" y1="10.287" x2="11.43" y2="10.287" width="0.4064" layer="16"/>
<wire x1="11.43" y1="10.287" x2="11.938" y2="10.795" width="0.4064" layer="16"/>
<wire x1="11.938" y1="10.795" x2="11.938" y2="11.303" width="0.4064" layer="16"/>
<wire x1="11.938" y1="11.303" x2="11.938" y2="11.557" width="0.4064" layer="16"/>
<wire x1="11.938" y1="12.446" x2="11.938" y2="11.303" width="0.4064" layer="16"/>
<wire x1="11.938" y1="11.303" x2="11.938" y2="13.462" width="0.4064" layer="16"/>
<wire x1="11.938" y1="13.462" x2="11.43" y2="13.97" width="0.4064" layer="16"/>
<via x="10.16" y="10.287" extent="1-16" drill="0.635" shape="octagon"/>
<wire x1="11.938" y1="10.12" x2="11.938" y2="10.414" width="0.4064" layer="1"/>
<wire x1="11.938" y1="10.414" x2="11.811" y2="10.287" width="0.4064" layer="1"/>
<wire x1="11.811" y1="10.287" x2="11.7475" y2="10.2235" width="0.4064" layer="1"/>
<wire x1="11.7475" y1="10.2235" x2="11.684" y2="10.16" width="0.4064" layer="1"/>
<wire x1="11.684" y1="10.16" x2="11.811" y2="10.287" width="0.4064" layer="1"/>
<wire x1="11.811" y1="10.287" x2="10.16" y2="10.287" width="0.4064" layer="1"/>
</signal>
<signal name="N$2">
<contactref element="CON4" pad="1"/>
</signal>
</signals>
<errors>
<approved hash="4,1,4e57131c7b974e6e"/>
<approved hash="4,1,607b78f5122839ad"/>
<approved hash="4,1,54c4a00b600ed0c4"/>
<approved hash="4,1,79131f4db3fffd1c"/>
<approved hash="4,1,1934dffdb1f4311b"/>
<approved hash="4,1,aec2a00a600eb6c4"/>
<approved hash="4,1,8a160f452ff4311f"/>
<approved hash="4,1,ea3f13f52df12118"/>
</errors>
</board>
</drawing>
</eagle>

repository: JustgeekDE/breakout-boards

repo_name: JustgeekDE/breakout-boards

extension: brd