Pen Settings



CSS Base

Vendor Prefixing

Add External Stylesheets/Pens

Any URL's added here will be added as <link>s in order, and before the CSS in the editor. If you link to another Pen, it will include the CSS from that Pen. If the preprocessor matches, it will attempt to combine them before processing.

+ add another resource


Babel includes JSX processing.

Add External Scripts/Pens

Any URL's added here will be added as <script>s in order, and run before the JavaScript in the editor. You can use the URL of any other Pen and it will include the JavaScript from that Pen.

+ add another resource


Add Packages

Search for and use JavaScript packages from npm here. By selecting a package, an import statement will be added to the top of the JavaScript editor for this package.


Save Automatically?

If active, Pens will autosave every 30 seconds after being saved once.

Auto-Updating Preview

If enabled, the preview panel updates automatically as you code. If disabled, use the "Run" button to update.

Format on Save

If enabled, your code will be formatted when you actively save your Pen. Note: your code becomes un-folded during formatting.

Editor Settings

Code Indentation

Want to change your Syntax Highlighting theme, Fonts and more?

Visit your global Editor Settings.


                <form id='fuzz'>
		<legend>Fuzzy Search to GAN Image</legend>
		<div class="w50">
      <input type='text' id='term' placeholder='search, i.e. Quasimondo' />
      <input type="number" id='Pics' value="16" min="8" max="64" />
		<div class="w50">
			<input type="file" id="Template" name="file" accept="image/*" class="w75" />
			<canvas id="canv_template" class="ico w12"></canvas>
			<label class="w12"><input type="checkbox" id="use" />use</label>
    <br />
    <div id='match'></div>

<input type="range" min="0" max="1" value="0" step=".1" id="Bias" />
<label for="Bias" id="labelBias">Bias: 0</label>

<div class='w50' id="convnet">
  ConvNetJS<br />
  <input type="range" min="-4" max="-1" value="-2" step=".05" id="Rate" />
  <label for="Rate" id="labelRate">Rate: </label>

  <canvas id="canv_original"></canvas>
  <canvas id="canv_net"></canvas>

    <div id="report"></div>
    <textarea id="layerdef" rows="18"></textarea>
<div class='w50' id="opencv">
  OpenCV<br />
  <div class='w50'>
    <input type="range" min="0" max="360" value="0" step="45" id="Degs" />

    <label for="Degs" id="labelDegs">Degs: 0</label>
  <div class='w50'>
    <input type="range" min="0.25" max="1" value="1" step=".25" id="Size" />
    <label for="Size" id="labelSize">Size: 1</label>
  <small class="value"></small>
  <canvas id="canv_detect"></canvas>
  <canvas id="matching"></canvas>
  <details open>
    <div id="chroma"></div>
    <canvas id="canv_rematch"></canvas>

    <lh>Frequency Analysis</lh>
    <li> - <a href=''>letters</a> / <a href='//'><strong>bigrams</strong></a> / <a href='//'>trigrams</a></li>
    <li>Word Frequency - <a href='//'><strong>top</strong></a> / <a href=''>collocates</a></li>
    <li><a href='//'>DataMuse</a></li>

    <lh>Machine Learning (<a href=''>GAN</a>, <a href="">BigGAN TF Hub Demo</a>,
      <a href="">NVIDIA style-based GAN</a>, <a href=''>GauGAN</a>)</lh>
    <li><strong>terms</strong> => <a href="//">images</a></li>
    <li><a href='//'>ConvNetJS</a> - <a href='//'>Image Regression</a></li>
    <li><a href='//'>OpenCV</a> - <a href='//'>homography</a> / <a href='//'>segmentation</a></li>
    <li>ConvNetJS - <a href='//'>Classify 2d</a> / <a href='//'>CIFAR-10</a> => <strong>terms</strong></li>

    <caption>sample response for "spiral"</caption>
      <th>term (pos?)</th>
      <td>accumulation, assortment, chunk, hill, hunk, jumble, lump, mass, mountain, ocean, pyramid, quantity, stack, stockpile; bundle, pot, wad; accumulate, assemble, collect, fill, heap, load, stack</td>
      <td>ditch, hole, poverty; disperse, divide, scatter, spend</td>
      <td>Amazon, Wal-Mart, carbon, org, depth</td>
      <td><img src='' alt='standard 2D perspective' title='standard 2D perspective' /></td>
      <td>intimate, particular, secret, special</td>
      <td>common, ordinary, public, unimportant, usual</td>
      <td>profile, program, taste, budget</td>
      <td><a href=""><img src='' alt='standard 2D perspective' title='standard 2D perspective' /></a></td>
      <td>castigate, complain, fume, inveigh, rant, scold, thunder</td>
      <td>be happy, compliment, flatter, praise; failure, loss, whole</td>
      <td>bound, guide, tangent, construct</td>
      <td><img src='' alt='standard 2D perspective' title='standard 2D perspective' /></td>



                * {
  box-sizing: border-box;
  margin: 0;
  padding: 0;

html {
  font-family: sans-serif;
  padding: 1em;

a {
  color: #000080;
  text-decoration: none;

.ui * {
  cursor: pointer;

#canv_net.collapse {
  border-top-color: red;
  border-top-style: dashed;

details {
  padding: 0.5em;
  clear: both;

textarea {
  border: 0.125em solid #efefef;
  width: 100%;
  margin-bottom: .5em;

button {
  vertical-align: top;
  appearance: none;
  border-radius: 0;
  padding: 0.25em;
  border: 0.1em solid #666;

#match {
  white-space: pre;
  font-family: monospace;
  pre:not(#gallery) {
    width: 50%;
    height: 8em;
    overflow-y: scroll;
    float: left;
    margin-bottom: 1em;
  #gallery {
    width: 100%;
    clear: both;
    display: grid;
    grid-gap: 0em;
    grid-template-columns: repeat(8, 1fr);
    header {
      grid-column: 1 / -1;
		.no {
        img {
          opacity: .5;
        .skip {
          color: red;
    .img {
      float: left;
      position: relative;
      display: inline-block;
      break-inside: avoid;

      input[type=checkbox] {
        display: none;
      input[type=checkbox]+label {
        color: red;
      input[type=checkbox]:checked+label {
        color: white;

      .ui {
        color: white;
        text-shadow: 0 0.1em #000;
        position: absolute;
        font-size: 1.5em;
        line-height: 1;
        opacity: .66;

      a {
        bottom: 0.25em;
        right: 0.25em;

      .ui {
        top: 0.25em;
        left: 0.25em;

      img {
        width: 100%;
        display: block;
        border-top: inset 0.125em transparent;
        &#curr {
          border-top-color: red;
          animation: flash 0.25s alternate infinite;
          @keyframes flash {
            to {
              border-top-color: transparent;
      } //img


ol {
  margin: .5em 0;

ol {
  padding-left: 0;
  li {
    margin-left: 1em;

table {
  font-size: 0.75em;
  text-align: left;
  tr:nth-child(odd) {
    background-color: #eee;
  td {
    vertical-align: top;
    padding: 0.25em 0.5em;

canvas {
  width: 50%;
  float: left;
  border-top: inset 0.125em transparent;
  &.curr {
    border-top-color: red;

input[type="range"] {
  width: calc(100% - 1rem);
  +label {
    width: 100%;
    display: block;

input[type=number]::-webkit-outer-spin-button {
  opacity: 1;



                let sz = 320; // size of our drawing area
var cfg = {
  Word: [[],[],[]],
  ci: [],
  Chroma: true,
  Pics: document.getElementById("Pics"),
  Bias: document.getElementById("Bias"),
  Rate: document.getElementById("Rate"),
	Degs: document.getElementById("Degs"),
  Size: document.getElementById("Size"),
	Template: document.getElementById("Template"),

cfg.Template.addEventListener('change', function(e) {
	//user-supplied template (instead of convnet) for mosaic
	let files =;
	if (files.length > 0) {
    let url = URL.createObjectURL(files[0]);
		let canvas = document.getElementById('canv_template');
    let ctx = canvas.getContext('2d');
    let img = new Image();
    img.crossOrigin = 'anonymous';
    img.onload = function() {
      canvas.width = sz;
      canvas.height = sz;
			let current = img;
			//resize as square
			let orient = current.width<current.height ? current.width : current.height;
ctx.drawImage(current, (orient-current.width)*((sz/orient)/2), (orient-current.height)*((sz/orient)/2), current.width*(sz/orient), current.height*(sz/orient));
    img.src = url;
}, false);

document.getElementById("fuzz").addEventListener('submit', function(e) {
}, false);

cfg.Pics.addEventListener('change', function(e) {
}, false);

cfg.Degs.addEventListener('change', transform, false);
cfg.Size.addEventListener('change', transform, false);
function transform(e){
	let id =;
	document.getElementById('label'+id).innerHTML = 
		id + ': ' + cfg[id].value;

document.getElementById("match").addEventListener('click', function(e) {
  if ( != 'a') {"no"); = document.querySelectorAll('.img:not(.no) .ci');
}, false);

function fuzzy(term) {
  let match = document.getElementById('match');
	match.innerHTML = '';
  cfg.Word = [
  cfg.Rate.value = -2;
	cfg.loaded = 0;

  var fuse = new Fuse(frequent, options);
  var set =;
  match.innerHTML = "<pre>Fuzzy/Frequent: " + JSON.stringify(set, null, 2) + "</pre>";

  if (set !== '') {
    //refine Fuse result for DataMuse
    Object.keys(set).some(function(key) {
      if (key < 10) {
  } else {

  var url =
    "//" +
    "?ml=" +
    cfg.Word[1].join("+") +
    "&topics=" +
    cfg.Word[0] +
    "&rel_trg=" +
    (cfg.Word[0].indexOf(" ") > 0 ? cfg.Word[1][0] : cfg.Word[0]) +

  console.log("DataMuse=" + url);

  var xhr = new XMLHttpRequest();'GET', url);
  xhr.onload = function() {
    if (xhr.status === 200) {
      let response = JSON.parse(xhr.response);
      //response = JSON.stringify(response, null, 2);

      match.innerHTML +=
        "<pre>Related/DataMuse: " + JSON.stringify(response, null, 2) + "</pre>";

      //refine DataMuse result for Flickr
      Object.keys(response).some(function(key) {
        if (key < 5) {

      match.innerHTML += '<pre id="gallery"><header>Flickr:</header></pre>';

      //Flickr date limit: now + offset ms (i.e. -1 week)
      function dates(type, offset) {
        var date = new Date(),
          offset = offset || 0;
        date = Math.floor((date.getTime() / 1000)) + (offset / 1000);
        if (type == 'MySQL') {
          date = new Date(date * 1000);
          date = date.getFullYear() + '-' +
            (date.getMonth() + 1) + '-' +
        return date;

      var term = cfg.Word[0] +
        (cfg.Word[2] === '' ? '' : ' OR ' + cfg.Word[2]) +
        (cfg.Word[1][0] === '' ? '' : ', ' + cfg.Word[1][0]) +
        ' AND -undefined';
      console.log('Flickr=' + term);

      url = '//';
      url += '?';
      url += '&api_key=dc4f822291b02be5da8bdc96a3ea7b92';
      url += '&text=' + term; //machine_tags:"*:*=portrait,people,animal,plant,outdoor,sky,sport",//
      url += '&media=photos';
      url += '&content_type=1';
      url += '&sort=relevance';
      url += '&per_page=256';
      url += '&format=json';
      url += '&nojsoncallback=1';
      url += '&max_upload_date=' + dates('UNIX');
      url += '&max_taken_date=' + dates('MySQL');
      //4 years ago (ms)
      url += '&min_upload_date=' + dates('UNIX', -126227704000);
      url += '&min_taken_date=' + dates('MySQL', -126227704000);

      console.log('url', encodeURI(url));

      var xhr2 = new XMLHttpRequest();'GET', encodeURI(url));
      xhr2.onload = function() {
        if (xhr2.status === 200) {
          let data = JSON.parse(xhr2.response);

          console.log('xhr2', data);
          var photo =;

          var lim = [cfg.Pics.value, []]; //limit,owners
          Object.keys(photo).some(function(key) {

            var objIndex = photo[key];

            if (lim[0] > 0) {

              if (lim[1].indexOf(objIndex.owner) == -1) {

                document.getElementById('gallery').innerHTML +=
                  "<div class='img'><img src='//farm" +
                  "" +
                  objIndex.server +
                  "/" +
                  "_" +
                  objIndex.secret +
                  "_n.jpg' class='ci' crossorigin='anonymous' " +
									"onload=this.classList.add('load') " +
									"title='This product uses the Flickr API but is not endorsed or certified by Flickr.' />" +
                  "<div class='ui'>" +
                  "<span class='skip' title='skip'>&#10006;</span>" +
                  "<input id='mask" + + "' type='checkbox' checked /><label for='mask" + + "' title='mask'>◑</label>" +
                  "</div>" +
                  "<a href='//" +
                  objIndex.owner + "/" + +
                  "' title='source' target='_blank'>&#10064;</a>";


              } else {
                console.log('dupe:' + objIndex.owner);

              console.log(key + ', ' + photo.length);
              if (key >= photo.length - 1) {
                document.querySelector('#gallery img').setAttribute('id', 'curr');
                return true;

            } else {
              document.querySelector('#gallery img').setAttribute('id', 'curr');
              return true;


    } else {
      alert('Request failed.  Returned status of ' + xhr.status);

var data, labels;
var layer_defs, net, trainer;

// create neural net
var t = "layer_defs = [];\n\
layer_defs.push({type:'input', out_sx:1, out_sy:1, out_depth:2}); // 2 inputs: x, y \n\
layer_defs.push({type:'fc', num_neurons:20, activation:'relu'});\n\
layer_defs.push({type:'fc', num_neurons:20, activation:'relu'});\n\
layer_defs.push({type:'fc', num_neurons:20, activation:'relu'});\n\
layer_defs.push({type:'fc', num_neurons:20, activation:'relu'});\n\
layer_defs.push({type:'fc', num_neurons:20, activation:'relu'});\n\
layer_defs.push({type:'fc', num_neurons:20, activation:'relu'});\n\
layer_defs.push({type:'fc', num_neurons:20, activation:'relu'});\n\
layer_defs.push({type:'regression', num_neurons:3}); // 3 outputs: r,g,b \n\
net = new convnetjs.Net();\n\
trainer = new convnetjs.SGDTrainer(net, {learning_rate:0.01, momentum:0.9, batch_size:5, l2_decay:0.0});\n\

var batches_per_iteration = 100;
var mod_skip_draw = 10;
var smooth_loss = -1;
var mode_collapse = 0;

function update() {
  // forward prop the data
  var W = nn_canvas.width;
  var H = nn_canvas.height;

  var p =;

  var v = new convnetjs.Vol(1, 1, 2);
  var loss = 0;
  var lossi = 0;
  var N = batches_per_iteration;
  for (var iters = 0; iters < trainer.batch_size; iters++) {
    for (var i = 0; i < N; i++) {
      // sample a coordinate
      var x = convnetjs.randi(0, W);
      var y = convnetjs.randi(0, H);
      var ix = ((W * y) + x) * 4;
      var r = [p[ix] / 255.0, p[ix + 1] / 255.0, p[ix + 2] / 255.0]; // r g b
      v.w[0] = (x - W / 2) / W;
      v.w[1] = (y - H / 2) / H;
      var stats = trainer.train(v, r);
      loss += stats.loss;
      lossi += 1;
  loss /= lossi;

  if (counter === 0) smooth_loss = loss;
  else smooth_loss = 0.99 * smooth_loss + 0.01 * loss;

  var t = '';
  t += 'loss: ' + smooth_loss;
  t += '<br>';
  t += 'iteration: ' + counter;
  t += '<br>';
  t += 'mode collapse: ' + mode_collapse;
  document.getElementById('report').innerHTML = t;

  if (smooth_loss > 0.33) {
    console.warn('mode collapse?');
    smooth_loss = -1;
    counter = 0;

function draw() {
  if (counter % mod_skip_draw !== 0) return;

  // iterate over all pixels in the target array, evaluate them
  // and draw
  var W = nn_canvas.width;
  var H = nn_canvas.height;

  var g = nn_ctx.getImageData(0, 0, W, H);
  var v = new convnetjs.Vol(1, 1, 2);
  for (var x = 0; x < W; x++) {
    v.w[0] = (x - W / 2) / W;
    for (var y = 0; y < H; y++) {
      v.w[1] = (y - H / 2) / H;

      var ix = ((W * y) + x) * 4;
      var r = net.forward(v);[ix + 0] = Math.floor(255 * r.w[0]);[ix + 1] = Math.floor(255 * r.w[1]);[ix + 2] = Math.floor(255 * r.w[2]);[ix + 3] = 255; // alpha...
  nn_ctx.putImageData(g, 0, 0);

function refreshSwatch(el) {

  var title =,
    value = el.value;

  if (title == 'Rate' && trainer.learning_rate) {
    trainer.learning_rate = Math.pow(10, cfg.Rate.value);
    value = trainer.learning_rate;

  document.getElementById('label' + title).textContent = title + ': ' + value;


var ori_canvas, nn_canvas, ori_ctx, nn_ctx, oridata, match_canvas, match_ctx;
var counter = 0;

function reload() {
  counter = 0;
  document.getElementById("layerdef").value = t;

  ori_canvas = document.getElementById('canv_original');
  nn_canvas = document.getElementById('canv_net');
	nn_rematch = document.getElementById('canv_rematch');
  ori_canvas.width = ori_canvas.height = sz;
  nn_canvas.width = nn_canvas.height = sz;
	nn_rematch.width = nn_rematch.height = sz;

  ori_ctx = ori_canvas.getContext("2d");
  nn_ctx = nn_canvas.getContext("2d");
let current = document.getElementById('curr');
let orient = current.width<current.height ? current.width : current.height;
ori_ctx.drawImage(current, (orient-current.width)*((sz/orient)/2), (orient-current.height)*((sz/orient)/2), current.width*(sz/orient), current.height*(sz/orient));
  oridata = ori_ctx.getImageData(0, 0, sz, sz); // grab the data pointer. Our dataset.

  match_canvas = document.getElementById('canv_rematch');
  match_ctx = match_canvas.getContext("2d"); = document.querySelectorAll('.img:not(.no) .ci');
  for (let i = 0; i <; i++) {[i].crossOrigin = 'Anonymous';

  // start the regression!
  setInterval(tick, 2);


function tick() {
  counter += 1;

  if (counter % ( * 2) === 0) {

    for (var i = 0; i <; i++) {
      if ([i].id == 'curr') {[i].id = '';
        if (i < - 1) {
[i + 1].id = 'curr';
        } else {
          cfg.Rate.value -= cfg.Rate.step;

          cfg.Bias.value = (cfg.Bias.value * 10 + cfg.Bias.step * 10) / 10;
[0].id = 'curr';

    let current = document.getElementById('curr');
let orient = current.width<current.height ? current.width : current.height;
ori_ctx.drawImage(current, (orient-current.width)*((sz/orient)/2), (orient-current.height)*((sz/orient)/2), current.width*(sz/orient), current.height*(sz/orient));



  document.querySelectorAll('canvas').forEach(function(el) {
  if (counter % 10 < cfg.Bias.value * 10 && cfg.Chroma) {
    oridata = match_ctx.getImageData(0, 0, sz, sz);
  } else {
    oridata = ori_ctx.getImageData(0, 0, sz, sz);



function OpenCV() {

function grabCut() {
  let src = cv.imread('canv_original');

  if (document.querySelector('#curr+.ui input:checked')) {
    cv.cvtColor(src, src, cv.COLOR_RGBA2RGB, 0);
    let bgdModel = new cv.Mat();
    let fgdModel = new cv.Mat();

    let rsize = new cv.Size(src.rows, src.cols);
    let center = new cv.Point(src.cols / 2, src.rows / 2);
    // 45-deg
    let R = cv.getRotationMatrix2D(center, Math.floor(cfg.Degs.value), 1);
    cv.warpAffine(src, src, R, rsize, cv.INTER_LINEAR, cv.BORDER_CONSTANT, new cv.Scalar());

    //chroma helper rects
    let mask = new cv.Mat.zeros(src.size(), cv.CV_8UC1);
    const srcW = src.size().width,
      srcH = src.size().height,
      D = srcW * 0.1;

    let GC_PR = [new cv.Point(0, 0), new cv.Point(srcW, srcH)];
    cv.rectangle(mask, GC_PR[0], GC_PR[1], new cv.Scalar(cv.GC_PR_FGD), -1, 4, 0);
    cv.rectangle(mask, GC_PR[0], GC_PR[1], new cv.Scalar(cv.GC_PR_BGD), D * 2, 4, 0);
    //corners background?, GC_PR[0], D * 3, new cv.Scalar(cv.GC_PR_BGD), -1, 4, 0);, new cv.Point(srcW, 0), D * 3, new cv.Scalar(cv.GC_PR_BGD), -1, 4, 0);, new cv.Point(0, srcH), D * 3, new cv.Scalar(cv.GC_PR_BGD), -1, 4, 0);, GC_PR[1], D * 3, new cv.Scalar(cv.GC_PR_BGD), -1, 4, 0);

    let rect = new cv.Rect(D, D, srcW, srcH);

    var promise = new Promise(function(resolve, reject) {

      cv.grabCut(src, mask, rect, bgdModel, fgdModel, 1, cv.GC_INIT_WITH_MASK);

      // foreground
      var chroma = [0, 0, 0];
      for (let i = 0; i < src.rows; i++) {
        for (let j = 0; j < src.cols; j++) {
          if (mask.ucharPtr(i, j)[0] === 0 || mask.ucharPtr(i, j)[0] === 2) {
            src.ucharPtr(i, j)[0] = 0;
            src.ucharPtr(i, j)[1] = 255;
            src.ucharPtr(i, j)[2] = 0;

      chroma[2] = chroma[0] / chroma[1];
      cfg.Chroma = chroma[2] < 0.95;
      document.getElementById('chroma').innerHTML = 'chroma: ' + chroma[2];

      // background chroma to transparent
      cv.cvtColor(src, src, cv.COLOR_RGB2RGBA);
      for (let i = 0; i < src.rows; i++) {
        for (let j = 0; j < src.cols; j++) {
          if (src.ucharPtr(i, j)[1] == 255) {
            src.ucharPtr(i, j)[3] = 0;


      resolve('GrabCut success');

    promise.then(function(value) {
      cv.imshow('canv_detect', src);
      // expected output: "GrabCut success"

  } //if mask checked


function matchTemplate() {

  let src = cv.imread('canv_net'),
    templ = cv.imread('canv_detect'), // <=src.size*prc
    acc = cv.imread('canv_rematch'),
    dst = new cv.Mat(),
    mask = new cv.Mat();
		src = cv.imread('canv_template');
  let prc = cfg.Size.value,
    size = src.size();
  let img = {
    w: size.width,
    h: size.height,
    wp: size.width / 4,
    hp: size.height / 4,

  //expand search, reduce drift
  cv.copyMakeBorder(src, src, img.hp, img.hp, img.wp, img.wp, cv.BORDER_REPLICATE);
  cv.copyMakeBorder(acc, acc, img.hp, img.hp, img.wp, img.wp, cv.BORDER_REPLICATE);

  //ideally homography
  cv.matchTemplate(src, templ, dst, cv.TM_CCORR_NORMED, mask);
  let result = cv.minMaxLoc(dst, mask);
  let maxPoint = result.maxLoc;

  //composite zones
  let mskWH = [img.w * prc, img.h * prc];
  cv.resize(templ, templ, new cv.Size(mskWH[0], mskWH[1]));
  let refit = new cv.Rect(maxPoint.x, maxPoint.y, mskWH[0], mskWH[1]);
  let mskRoiTempl = src.roi(refit);
  let mskRoiAccum = acc.roi(refit);

  let color = new cv.Scalar(255, 0, 0, 255);
  cv.rectangle(src, maxPoint, new cv.Point(maxPoint.x + mskWH[0], maxPoint.y + mskWH[1]), color, 1, cv.LINE_4, 0);
  cv.rectangle(src, new cv.Point(img.wp, img.hp), new cv.Point(img.wp + img.w, img.hp + img.h), color, 1, cv.LINE_4, 0);

  //binary mask result
  let alphaTempl = new cv.Mat();
  cv.cvtColor(templ, alphaTempl, cv.COLOR_BGR2GRAY);
  cv.morphologyEx(alphaTempl, alphaTempl, cv.MORPH_CLOSE, cv.Mat.ones(img.wp / 8, img.hp / 8, cv.CV_8U));
  cv.threshold(alphaTempl, alphaTempl, 0, 255, cv.THRESH_BINARY);
  //binary mask accumulator+salient
  let alphaAccum = new cv.Mat();
  cv.cvtColor(mskRoiTempl, alphaAccum, cv.COLOR_BGR2GRAY);
  let minmax = cv.minMaxLoc(alphaAccum);
  var thresh = (255 - minmax.minVal) / 2;
  cv.equalizeHist(alphaAccum, alphaAccum);
  cv.threshold(alphaAccum, alphaAccum, thresh, 255, cv.THRESH_BINARY);
  cv.bitwise_and(alphaAccum, alphaTempl, alphaAccum);
  document.querySelector('#canv_rematch').style.borderColor = 'rgba(' + thresh + ',' + thresh + ',' + thresh + ',255)';

  templ.copyTo(mskRoiTempl, alphaTempl);
  templ.copyTo(mskRoiAccum, alphaAccum);

  //result out
  cv.imshow('matching', src);
  //accumulator out
  acc = acc.roi(new cv.Rect(img.wp, img.hp, img.w, img.h));
  cv.imshow('canv_rematch', acc);


var options = {
  shouldSort: true,
  tokenize: true,
  includeScore: true,
  threshold: 0.3,
  location: 0,
  distance: 45,
  maxPatternLength: 15,
  minMatchCharLength: 2,
  keys: ["word"]

var frequent = ["the", "be", "and", "of", "a", "in", "to", "have", "it", "I", "that", "for", "you", "he", "with", "on", "do", "say", "this", "they", "at", "but", "we", "his", "from", "not", "by", "she", "or", "as", "what", "go", "their", "can", "who", "get", "if", "would", "her", "all", "my", "make", "about", "know", "will", "up", "one", "time", "there", "year", "so", "think", "when", "which", "them", "some", "me", "people", "take", "out", "into", "just", "see", "him", "your", "come", "could", "now", "than", "like", "other", "how", "then", "its", "our", "two", "more", "these", "want", "way", "look", "first", "also", "new", "because", "day", "use", "no", "man", "find", "here", "thing", "give", "many", "well", "only", "those", "tell", "very", "even", "back", "any", "good", "woman", "through", "us", "life", "child", "work", "down", "may", "after", "should", "call", "world", "over", "school", "still", "try", "last", "ask", "need", "too", "feel", "three", "state", "never", "become", "between", "high", "really", "something", "most", "another", "much", "family", "own", "leave", "put", "old", "while", "mean", "keep", "student", "why", "let", "great", "same", "big", "group", "begin", "seem", "country", "help", "talk", "where", "turn", "problem", "every", "start", "hand", "might", "American", "show", "part", "against", "place", "such", "again", "few", "case", "week", "company", "system", "each", "right", "program", "hear", "question", "during", "play", "government", "run", "small", "number", "off", "always", "move", "night", "live", "Mr", "point", "believe", "hold", "today", "bring", "happen", "next", "without", "before", "large", "million", "must", "home", "under", "water", "room", "write", "mother", "area", "national", "money", "story", "young", "fact", "month", "different", "lot", "study", "book", "eye", "job", "word", "though", "business", "issue", "side", "kind", "four", "head", "far", "black", "long", "both", "little", "house", "yes", "since", "provide", "service", "around", "friend", "important", "father", "sit", "away", "until", "power", "hour", "game", "often", "yet", "line", "political", "end", "among", "ever", "stand", "bad", "lose", "however", "member", "pay", "law", "meet", "car", "city", "almost", "include", "continue", "set", "later", "community", "name", "five", "once", "white", "least", "president", "learn", "real", "change", "team", "minute", "best", "several", "idea", "kid", "body", "information", "nothing", "ago", "lead", "social", "understand", "whether", "watch", "together", "follow", "parent", "stop", "face", "anything", "create", "public", "already", "speak", "others", "read", "level", "allow", "add", "office", "spend", "door", "health", "person", "art", "sure", "war", "history", "party", "within", "grow", "result", "open", "morning", "walk", "reason", "low", "win", "research", "girl", "guy", "early", "food", "moment", "himself", "air", "teacher", "force", "offer", "enough", "education", "across", "although", "remember", "foot", "second", "boy", "maybe", "toward", "able", "age", "policy", "everything", "love", "process", "music", "including", "consider", "appear", "actually", "buy", "probably", "human", "wait", "serve", "market", "die", "send", "expect", "sense", "build", "stay", "fall", "oh", "nation", "plan", "cut", "college", "interest", "death", "course", "someone", "experience", "behind", "reach", "local", "kill", "six", "remain", "effect", "yeah", "suggest", "class", "control", "raise", "care", "perhaps", "late", "hard", "field", "else", "pass", "former", "sell", "major", "sometimes", "require", "along", "development", "themselves", "report", "role", "better", "economic", "effort", "decide", "rate", "strong", "possible", "heart", "drug", "leader", "light", "voice", "wife", "whole", "police", "mind", "finally", "pull", "return", "free", "military", "price", "less", "according", "decision", "explain", "son", "hope", "develop", "view", "relationship", "carry", "town", "road", "drive", "arm", "1", "federal", "break", "difference", "thank", "receive", "value", "international", "building", "action", "full", "model", "join", "season", "society", "tax", "director", "position", "player", "agree", "especially", "record", "pick", "wear", "paper", "special", "space", "ground", "form", "support", "event", "official", "whose", "matter", "everyone", "center", "couple", "site", "project", "hit", "base", "activity", "star", "table", "court", "produce", "eat", "teach", "oil", "half", "situation", "easy", "cost", "industry", "figure", "street", "image", "itself", "phone", "either", "data", "cover", "quite", "picture", "clear", "practice", "piece", "land", "recent", "describe", "product", "doctor", "wall", "patient", "worker", "news", "test", "movie", "certain", "north", "personal", "simply", "third", "technology", "catch", "step", "baby", "computer", "type", "attention", "draw", "film", "Republican", "tree", "source", "red", "nearly", "organization", "choose", "cause", "hair", "century", "evidence", "window", "difficult", "listen", "soon", "culture", "billion", "chance", "brother", "energy", "period", "summer", "realize", "hundred", "available", "plant", "likely", "opportunity", "word", "short", "letter", "condition", "choice", "single", "rule", "daughter", "administration", "south", "husband", "Congress", "floor", "campaign", "material", "population", "economy", "medical", "hospital", "church", "close", "thousand", "risk", "current", "fire", "future", "wrong", "involve", "defense", "anyone", "increase", "security", "bank", "myself", "certainly", "west", "sport", "board", "seek", "per", "subject", "officer", "private", "rest", "behavior", "deal", "performance", "fight", "throw", "top", "quickly", "past", "goal", "bed", "order", "author", "fill", "represent", "focus", "foreign", "drop", "blood", "upon", "agency", "push", "nature", "color", "recently", "store", "reduce", "sound", "note", "fine", "near", "movement", "page", "enter", "share", "common", "poor", "natural", "race", "concern", "series", "significant", "similar", "hot", "language", "usually", "response", "dead", "rise", "animal", "factor", "decade", "article", "shoot", "east", "save", "seven", "artist", "scene", "stock", "career", "despite", "central", "eight", "thus", "treatment", "beyond", "happy", "exactly", "protect", "approach", "lie", "size", "dog", "fund", "serious", "occur", "media", "ready", "sign", "thought", "list", "individual", "simple", "quality", "pressure", "accept", "answer", "resource", "identify", "left", "meeting", "dewordine", "prepare", "disease", "whatever", "success", "argue", "cup", "particularly", "amount", "ability", "staff", "recognize", "indicate", "character", "growth", "loss", "degree", "wonder", "attack", "herself", "region", "television", "box", "TV", "training", "pretty", "trade", "election", "everybody", "physical", "lay", "general", "feeling", "standard", "bill", "message", "fail", "outside", "arrive", "analysis", "benefit", "sex", "forward", "lawyer", "present", "section", "environmental", "glass", "skill", "sister", "PM", "professor", "operation", "financial", "crime", "stage", "ok", "compare", "authority", "miss", "design", "sort", "act", "ten", "knowledge", "gun", "station", "blue", "strategy", "clearly", "discuss", "indeed", "truth", "song", "example", "democratic", "check", "environment", "leg", "dark", "various", "rather", "laugh", "guess", "executive", "prove", "hang", "entire", "rock", "forget", "claim", "remove", "manager", "enjoy", "network", "legal", "religious", "cold", "final", "main", "science", "green", "memory", "card", "above", "seat", "cell", "establish", "nice", "trial", "expert", "spring", "firm", "Democrat", "radio", "visit", "management", "avoid", "imagine", "tonight", "huge", "ball", "finish", "yourself", "theory", "impact", "respond", "statement", "maintain", "charge", "popular", "traditional", "onto", "reveal", "direction", "weapon", "employee", "cultural", "contain", "peace", "pain", "apply", "measure", "wide", "shake", "fly", "interview", "manage", "chair", "fish", "particular", "camera", "structure", "politics", "perform", "bit", "weight", "suddenly", "discover", "candidate", "production", "treat", "trip", "evening", "affect", "inside", "conference", "unit", "style", "adult", "worry", "range", "mention", "deep", "edge", "specific", "writer", "trouble", "necessary", "throughout", "challenge", "fear", "shoulder", "institution", "middle", "sea", "dream", "bar", "beautiful", "property", "instead", "improve", "stuff", "detail", "method", "somebody", "magazine", "hotel", "soldier", "reflect", "heavy", "sexual", "bag", "heat", "marriage", "tough", "sing", "surface", "purpose", "exist", "pattern", "whom", "skin", "agent", "owner", "machine", "gas", "ahead", "generation", "commercial", "address", "cancer", "item", "reality", "coach", "Mrs", "yard", "beat", "violence", "total", "tend", "investment", "discussion", "finger", "garden", "notice", "collection", "modern", "task", "partner", "positive", "civil", "kitchen", "consumer", "shot", "budget", "wish", "painting", "scientist", "safe", "agreement", "capital", "mouth", "nor", "victim", "newspaper", "threat", "responsibility", "smile", "attorney", "score", "account", "interesting", "audience", "rich", "dinner", "vote", "western", "relate", "travel", "debate", "prevent", "citizen", "majority", "none", "front", "born", "admit", "senior", "assume", "wind", "key", "professional", "mission", "fast", "alone", "customer", "suffer", "speech", "successful", "option", "participant", "southern", "fresh", "eventually", "forest", "video", "global", "Senate", "reform", "access", "restaurant", "judge", "publish", "relation", "release", "bird", "opinion", "credit", "critical", "corner", "concerned", "recall", "version", "stare", "safety", "effective", "neighborhood", "original", "troop", "income", "directly", "hurt", "species", "immediately", "track", "basic", "strike", "sky", "freedom", "absolutely", "plane", "nobody", "achieve", "object", "attitude", "labor", "refer", "concept", "client", "powerful", "perfect", "nine", "therefore", "conduct", "announce", "conversation", "examine", "touch", "please", "attend", "completely", "variety", "sleep", "involved", "investigation", "nuclear", "researcher", "press", "conflict", "spirit", "replace", "British", "encourage", "argument", "camp", "brain", "feature", "afternoon", "AM", "weekend", "dozen", "possibility", "insurance", "department", "battle", "beginning", "date", "generally", "African", "sorry", "crisis", "complete", "fan", "stick", "define", "easily", "hole", "element", "vision", "status", "normal", "Chinese", "ship", "solution", "stone", "slowly", "scale", "university", "introduce", "driver", "attempt", "park", "spot", "lack", "ice", "boat", "drink", "sun", "distance", "wood", "handle", "truck", "mountain", "survey", "supposed", "tradition", "winter", "village", "Soviet", "refuse", "sales", "roll", "communication", "screen", "gain", "resident", "hide", "gold", "club", "farm", "potential", "European", "presence", "independent", "district", "shape", "reader", "Ms", "contract", "crowd", "Christian", "express", "apartment", "willing", "strength", "previous", "band", "obviously", "horse", "interested", "target", "prison", "ride", "guard", "words", "demand", "reporter", "deliver", "text", "tool", "wild", "vehicle", "observe", "flight", "facility", "understanding", "average", "emerge", "advantage", "quick", "leadership", "earn", "pound", "basis", "bright", "operate", "guest", "sample", "contribute", "tiny", "block", "protection", "settle", "feed", "collect", "additional", "highly", "identity", "title", "mostly", "lesson", "faith", "river", "promote", "living", "count", "unless", "marry", "tomorrow", "technique", "path", "ear", "shop", "folk", "principle", "survive", "lift", "border", "competition", "jump", "gather", "limit", "fit", "cry", "equipment", "worth", "associate", "critic", "warm", "aspect", "insist", "failure", "annual", "French", "Christmas", "comment", "responsible", "affair", "procedure", "regular", "spread", "chairman", "baseball", "soft", "ignore", "egg", "belief", "demonstrate", "anybody", "murder", "gift", "religion", "review", "editor", "engage", "coffee", "document", "speed", "cross", "influence", "anyway", "threaten", "commit", "female", "youth", "wave", "afraid", "quarter", "background", "native", "broad", "wonderful", "deny", "apparently", "slightly", "reaction", "twice", "suit", "perspective", "growing", "blow", "construction", "intelligence", "destroy", "cook", "connection", "burn", "shoe", "grade", "context", "committee", "hey", "mistake", "location", "clothes", "Indian", "quiet", "dress", "promise", "aware", "neighbor", "function", "bone", "active", "extend", "chief", "combine", "wine", "below", "cool", "voter", "learning", "bus", "hell", "dangerous", "remind", "moral", "United", "category", "relatively", "victory", "academic", "Internet", "healthy", "negative", "following", "historical", "medicine", "tour", "depend", "photo", "finding", "grab", "direct", "classroom", "contact", "justice", "participate", "daily", "fair", "pair", "famous", "exercise", "knee", "flower", "tape", "hire", "familiar", "appropriate", "supply", "fully", "actor", "birth", "search", "tie", "democracy", "eastern", "primary", "yesterday", "circle", "device", "progress", "bottom", "island", "exchange", "clean", "studio", "train", "lady", "colleague", "application", "neck", "lean", "damage", "plastic", "tall", "plate", "hate", "otherwise", "writing", "male", "alive", "expression", "football", "intend", "chicken", "army", "abuse", "theater", "shut", "map", "extra", "session", "danger", "welcome", "domestic", "lots", "literature", "rain", "desire", "assessment", "injury", "respect", "northern", "nod", "paint", "fuel", "leaf", "dry", "Russian", "instruction", "pool", "climb", "sweet", "engine", "fourth", "salt", "expand", "importance", "metal", "fat", "ticket", "software", "disappear", "corporate", "strange", "lip", "reading", "urban", "mental", "increasingly", "lunch", "educational", "somewhere", "farmer", "sugar", "planet", "favorite", "explore", "obtain", "enemy", "greatest", "complex", "surround", "athlete", "invite", "repeat", "carefully", "soul", "scientific", "impossible", "panel", "meaning", "mom", "married", "instrument", "predict", "weather", "presidential", "emotional", "commitment", "Supreme", "bear", "pocket", "thin", "temperature", "surprise", "poll", "proposal", "consequence", "breath", "sight", "balance", "adopt", "minority", "straight", "connect", "works", "teaching", "belong", "aid", "advice", "okay", "photograph", "empty", "regional", "trail", "novel", "code", "somehow", "organize", "jury", "breast", "Iraqi", "acknowledge", "theme", "storm", "union", "desk", "thanks", "fruit", "expensive", "yellow", "conclusion", "prime", "shadow", "struggle", "conclude", "analyst", "dance", "regulation", "being", "ring", "largely", "shift", "revenue", "mark", "locate", "county", "appearance", "package", "difficulty", "bridge", "recommend", "obvious", "basically", "e-mail", "generate", "anymore", "propose", "thinking", "possibly", "trend", "visitor", "loan", "currently", "comfortable", "investor", "profit", "angry", "crew", "accident", "meal", "hearing", "traffic", "muscle", "notion", "capture", "prefer", "truly", "earth", "Japanese", "chest", "thick", "cash", "museum", "beauty", "emergency", "unique", "internal", "ethnic", "link", "stress", "content", "select", "root", "nose", "declare", "appreciate", "actual", "bottle", "hardly", "setting", "launch", "file", "sick", "outcome", "ad", "defend", "duty", "sheet", "ought", "ensure", "Catholic", "extremely", "extent", "component", "mix", "long-word", "slow", "contrast", "zone", "wake", "airport", "brown", "shirt", "pilot", "warn", "ultimately", "cat", "contribution", "capacity", "ourselves", "estate", "guide", "circumstance", "snow", "English", "politician", "steal", "pursue", "slip", "percentage", "meat", "funny", "neither", "soil", "surgery", "correct", "Jewish", "blame", "estimate", "due", "basketball", "golf", "investigate", "crazy", "significantly", "chain", "branch", "combination", "frequently", "governor", "relief", "user", "dad", "kick", "manner", "ancient", "silence", "rating", "golden", "motion", "German", "gender", "solve", "fee", "landscape", "used", "bowl", "equal", "forth", "frame", "typical", "except", "conservative", "eliminate", "host", "hall", "trust", "ocean", "row", "producer", "afford", "meanwhile", "regime", "division", "confirm", "fix", "appeal", "mirror", "tooth", "smart", "length", "entirely", "rely", "topic", "complain", "variable", "telephone", "perception", "attract", "confidence", "bedroom", "secret", "debt", "rare", "tank", "nurse", "coverage", "opposition", "aside", "anywhere", "bond", "pleasure", "master", "era", "requirement", "fun", "expectation", "wing", "separate", "somewhat", "pour", "stir", "judgment", "beer", "reference", "tear", "doubt", "grant", "seriously", "minister", "totally", "hero", "industrial", "cloud", "stretch", "winner", "volume", "seed", "surprised", "fashion", "pepper", "busy", "intervention", "copy", "tip", "cheap", "aim", "cite", "welfare", "vegetable", "gray", "dish", "beach", "improvement", "everywhere", "opening", "overall", "divide", "initial", "terrible", "oppose", "contemporary", "route", "multiple", "essential", "league", "criminal", "careful", "core", "upper", "rush", "necessarily", "specifically", "tired", "employ", "holiday", "vast", "resolution", "household", "fewer", "abortion", "apart", "witness", "match", "barely", "sector", "representative", "beneath", "beside", "incident", "limited", "proud", "flow", "faculty", "increased", "waste", "merely", "mass", "emphasize", "experiment", "definitely", "bomb", "enormous", "tone", "liberal", "massive", "engineer", "wheel", "decline", "invest", "cable", "towards", "expose", "rural", "AIDS", "Jew", "narrow", "cream", "secretary", "gate", "solid", "hill", "typically", "noise", "grass", "unfortunately", "hat", "legislation", "succeed", "celebrate", "achievement", "fishing", "accuse", "useful", "reject", "talent", "taste", "characteristic", "milk", "escape", "cast", "sentence", "unusual", "closely", "convince", "height", "physician", "assess", "plenty", "virtually", "addition", "sharp", "creative", "lower", "approve", "explanation", "gay", "campus", "proper", "guilty", "acquire", "compete", "technical", "plus", "immigrant", "weak", "illegal", "hi", "alternative", "interaction", "column", "personality", "signal", "curriculum", "honor", "passenger", "assistance", "forever", "regard", "Israeli", "association", "twenty", "knock", "wrap", "lab", "display", "criticism", "asset", "depression", "spiritual", "musical", "journalist", "prayer", "suspect", "scholar", "warning", "climate", "cheese", "observation", "childhood", "payment", "sir", "permit", "cigarette", "definition", "priority", "bread", "creation", "graduate", "request", "emotion", "scream", "dramatic", "universe", "gap", "excellent", "deeply", "prosecutor", "lucky", "drag", "airline", "library", "agenda", "recover", "factory", "selection", "primarily", "roof", "unable", "expense", "initiative", "diet", "arrest", "funding", "therapy", "wash", "schedule", "sad", "brief", "housing", "post", "purchase", "existing", "steel", "regarding", "shout", "remaining", "visual", "fairly", "chip", "violent", "silent", "suppose", "self", "bike", "tea", "perceive", "comparison", "settlement", "layer", "planning", "description", "slide", "widely", "wedding", "inform", "portion", "territory", "immediate", "opponent", "abandon", "lake", "transform", "tension", "leading", "bother", "consist", "alcohol", "enable", "bend", "saving", "desert", "shall", "error", "cop", "Arab", "double", "sand", "Spanish", "print", "preserve", "passage", "formal", "transition", "existence", "album", "participation", "arrange", "atmosphere", "joint", "reply", "cycle", "opposite", "lock", "deserve", "consistent", "resistance", "discovery", "exposure", "pose", "stream", "sale", "pot", "grand", "mine", "hello", "coalition", "tale", "knife", "resolve", "racial", "phase", "joke", "coat", "Mexican", "symptom", "manufacturer", "philosophy", "potato", "foundation", "quote", "online", "negotiation", "urge", "occasion", "dust", "breathe", "elect", "investigator", "jacket", "glad", "ordinary", "reduction", "rarely", "pack", "suicide", "numerous", "substance", "discipline", "elsewhere", "iron", "practical", "moreover", "passion", "volunteer", "implement", "essentially", "gene", "enforcement", "vs", "sauce", "independence", "marketing", "priest", "amazing", "intense", "advance", "employer", "shock", "inspire", "adjust", "retire", "visible", "kiss", "illness", "cap", "habit", "competitive", "juice", "congressional", "involvement", "dominate", "previously", "whenever", "transfer", "analyze", "attach", "disaster", "parking", "prospect", "boss", "complaint", "championship", "fundamental", "severe", "enhance", "mystery", "impose", "poverty", "entry", "spending", "king", "evaluate", "symbol", "maker", "mood", "accomplish", "emphasis", "illustrate", "boot", "monitor", "Asian", "entertainment", "bean", "evaluation", "creature", "commander", "digital", "arrangement", "concentrate", "usual", "anger", "psychological", "heavily", "peak", "approximately", "increasing", "disorder", "missile", "equally", "vary", "wire", "round", "distribution", "transportation", "holy", "twin", "command", "commission", "interpretation", "breakfast", "strongly", "engineering", "luck", "so-called", "constant", "clinic", "veteran", "smell", "tablespoon", "capable", "nervous", "tourist", "toss", "crucial", "bury", "pray", "tomato", "exception", "butter", "deficit", "bathroom", "objective", "electronic", "ally", "journey", "reputation", "mixture", "surely", "tower", "smoke", "confront", "pure", "glance", "dimension", "toy", "prisoner", "fellow", "smooth", "nearby", "peer", "designer", "personnel", "educator", "relative", "immigration", "belt", "teaspoon", "birthday", "implication", "perfectly", "coast", "supporter", "accompany", "silver", "teenager", "recognition", "retirement", "flag", "recovery", "whisper", "gentleman", "corn", "moon", "inner", "junior", "throat", "salary", "swing", "observer", "publication", "crop", "dig", "permanent", "phenomenon", "anxiety", "unlike", "wet", "literally", "resist", "convention", "embrace", "assist", "exhibition", "construct", "viewer", "pan", "consultant", "administrator", "occasionally", "mayor", "consideration", "CEO", "secure", "pink", "buck", "historic", "poem", "grandmother", "bind", "fifth", "constantly", "enterprise", "favor", "testing", "stomach", "apparent", "weigh", "install", "sensitive", "suggestion", "mail", "recipe", "reasonable", "preparation", "wooden", "elementary", "concert", "aggressive", "intention", "channel", "extreme", "tube", "drawing", "protein", "quit", "absence", "Latin", "rapidly", "jail", "diversity", "honest", "Palestinian", "pace", "employment", "speaker", "impression", "essay", "respondent", "giant", "cake", "historian", "negotiate", "restore", "substantial", "pop", "specialist", "origin", "approval", "quietly", "advise", "conventional", "depth", "wealth", "disability", "shell", "criticize", "effectively", "biological", "onion", "deputy", "flat", "brand", "assure", "mad", "award", "criteria", "dealer", "via", "utility", "precisely", "arise", "armed", "nevertheless", "highway", "clinical", "routine", "wage", "normally", "phrase", "ingredient", "stake", "Muslim", "fiber", "activist", "Islamic", "snap", "terrorism", "refugee", "incorporate", "hip", "ultimate", "switch", "corporation", "valuable", "assumption", "gear", "barrier", "minor", "provision", "killer", "assign", "gang", "developing", "classic", "chemical", "label", "teen", "index", "vacation", "advocate", "draft", "extraordinary", "heaven", "rough", "yell", "pregnant", "distant", "drama", "satellite", "personally", "clock", "chocolate", "Italian", "Canadian", "ceiling", "sweep", "advertising", "universal", "spin", "button", "bell", "rank", "darkness", "clothing", "super", "yield", "fence", "portrait", "survival", "roughly", "lawsuit", "testimony", "bunch", "found", "burden", "react", "chamber", "furniture", "cooperation", "string", "ceremony", "communicate", "cheek", "lost", "profile", "mechanism", "disagree", "penalty", "ie", "resort", "destruction", "unlikely", "tissue", "constitutional", "pant", "stranger", "infection", "cabinet", "broken", "apple", "electric", "proceed", "bet", "literary", "virus", "stupid", "dispute", "fortune", "strategic", "assistant", "overcome", "remarkable", "occupy", "statistics", "shopping", "cousin", "encounter", "wipe", "initially", "blind", "port", "electricity", "genetic", "adviser", "spokesman", "retain", "latter", "incentive", "slave", "translate", "accurate", "whereas", "terror", "expansion", "elite", "Olympic", "dirt", "odd", "rice", "bullet", "tight", "Bible", "chart", "solar", "square", "concentration", "complicated", "gently", "champion", "scenario", "telescope", "reflection", "revolution", "strip", "interpret", "friendly", "tournament", "fiction", "detect", "tremendous", "lifetime", "recommendation", "senator", "hunting", "salad", "guarantee", "innocent", "boundary", "pause", "remote", "satisfaction", "journal", "bench", "lover", "raw", "awareness", "surprising", "withdraw", "deck", "similarly", "newly", "pole", "testify", "mode", "dialogue", "imply", "naturally", "mutual", "founder", "advanced", "pride", "dismiss", "aircraft", "delivery", "mainly", "bake", "freeze", "platform", "finance", "sink", "attractive", "diverse", "relevant", "ideal", "joy", "regularly", "working", "singer", "evolve", "shooting", "partly", "unknown", "offense", "counter", "DNA", "potentially", "thirty", "justify", "protest", "crash", "craft", "treaty", "terrorist", "insight", "possess", "politically", "tap", "extensive", "episode", "swim", "tire", "fault", "loose", "shortly", "originally", "considerable", "prior", "intellectual", "assault", "relax", "stair", "adventure", "external", "proof", "confident", "headquarters", "sudden", "dirty", "violation", "tongue", "license", "shelter", "rub", "controversy", "entrance", "properly", "fade", "defensive", "tragedy", "net", "characterize", "funeral", "profession", "alter", "constitute", "establishment", "squeeze", "imagination", "mask", "convert", "comprehensive", "prominent", "presentation", "regardless", "load", "stable", "introduction", "pretend", "elderly", "representation", "deer", "split", "violate", "partnership", "pollution", "emission", "steady", "vital", "fate", "earnings", "oven", "distinction", "segment", "nowhere", "poet", "mere", "exciting", "variation", "comfort", "radical", "adapt", "Irish", "honey", "correspondent", "pale", "musician", "significance", "vessel", "storage", "flee", "mm-hmm", "leather", "distribute", "evolution", "ill", "tribe", "shelf", "grandfather", "lawn", "buyer", "dining", "wisdom", "council", "vulnerable", "instance", "garlic", "capability", "poetry", "celebrity", "gradually", "stability", "fantasy", "scared", "plot", "framework", "gesture", "depending", "ongoing", "psychology", "counselor", "chapter", "divorce", "owe", "pipe", "athletic", "slight", "math", "shade", "tail", "sustain", "mount", "obligation", "angle", "palm", "differ", "custom", "economist", "fifteen", "soup", "celebration", "efficient", "composition", "satisfy", "pile", "briefly", "carbon", "closer", "consume", "scheme", "crack", "frequency", "tobacco", "survivor", "besides", "psychologist", "wealthy", "galaxy", "given", "ski", "limitation", "trace", "appointment", "preference", "meter", "explosion", "publicly", "incredible", "fighter", "rapid", "admission", "hunter", "educate", "painful", "friendship", "aide", "infant", "calculate", "fifty", "rid", "porch", "tendency", "uniform", "formation", "scholarship", "reservation", "efficiency", "qualify", "mall", "derive", "scandal", "PC", "helpful", "impress", "heel", "resemble", "privacy", "fabric", "contest", "proportion", "guideline", "rifle", "maintenance", "conviction", "trick", "organic", "tent", "examination", "publisher", "strengthen", "proposed", "myth", "sophisticated", "cow", "etc", "standing", "asleep", "tennis", "nerve", "barrel", "bombing", "membership", "ratio", "menu", "controversial", "desperate", "lifestyle", "humor", "loud", "glove", "sufficient", "narrative", "photographer", "helicopter", "modest", "provider", "delay", "agricultural", "explode", "stroke", "scope", "punishment", "handful", "badly", "horizon", "curious", "downtown", "girlfriend", "prompt", "cholesterol", "absorb", "adjustment", "taxpayer", "eager", "principal", "detailed", "motivation", "assignment", "restriction", "laboratory", "workshop", "differently", "auto", "romantic", "cotton", "motor", "sue", "flavor", "overlook", "float", "undergo", "sequence", "demonstration", "jet", "orange", "consumption", "assert", "blade", "temporary", "medication", "cabin", "bite", "edition", "valley", "yours", "pitch", "pine", "brilliant", "versus", "manufacturing", "absolute", "chef", "discrimination", "offensive", "boom", "register", "appoint", "heritage", "God", "dominant", "successfully", "shit", "lemon", "hungry", "wander", "submit", "economics", "naked", "anticipate", "nut", "legacy", "extension", "shrug", "battery", "arrival", "legitimate", "orientation", "inflation", "cope", "flame", "cluster", "wound", "dependent", "shower", "institutional", "depict", "operating", "flesh", "garage", "operator", "instructor", "collapse", "borrow", "furthermore", "comedy", "mortgage", "sanction", "civilian", "twelve", "weekly", "habitat", "grain", "brush", "consciousness", "devote", "measurement", "province", "ease", "seize", "ethics", "nomination", "permission", "wise", "actress", "summit", "acid", "odds", "gifted", "frustration", "medium", "physically", "distinguish", "shore", "repeatedly", "lung", "running", "distinct", "artistic", "discourse", "basket", "ah", "fighting", "impressive", "competitor", "ugly", "worried", "portray", "powder", "ghost", "persuade", "moderate", "subsequent", "continued", "cookie", "carrier", "cooking", "frequent", "ban", "awful", "admire", "pet", "miracle", "exceed", "rhythm", "widespread", "killing", "lovely", "sin", "charity", "script", "tactic", "identification", "transformation", "everyday", "headline", "venture", "invasion", "nonetheless", "adequate", "piano", "grocery", "intensity", "exhibit", "blanket", "margin", "quarterback", "mouse", "rope", "concrete", "prescription", "African-American", "chase", "brick", "recruit", "patch", "consensus", "horror", "recording", "changing", "painter", "colonial", "pie", "sake", "gaze", "courage", "pregnancy", "swear", "defeat", "clue", "reinforce", "confusion", "slice", "occupation", "dear", "coal", "sacred", "formula", "cognitive", "collective", "exact", "uncle", "captain", "sigh", "attribute", "dare", "homeless", "gallery", "soccer", "defendant", "tunnel", "fitness", "lap", "grave", "toe", "container", "virtue", "abroad", "architect", "dramatically", "makeup", "inquiry", "rose", "surprisingly", "highlight", "decrease", "indication", "rail", "anniversary", "couch", "alliance", "hypothesis", "boyfriend", "compose", "mess", "legend", "regulate", "adolescent", "shine", "norm", "upset", "remark", "resign", "reward", "gentle", "related", "organ", "lightly", "concerning", "invent", "laughter", "northwest", "counseling", "receiver", "ritual", "insect", "interrupt", "salmon", "trading", "magic", "superior", "combat", "stem", "surgeon", "acceptable", "physics", "rape", "counsel", "jeans", "hunt", "continuous", "log", "echo", "pill", "excited", "sculpture", "compound", "integrate", "flour", "bitter", "bare", "slope", "rent", "presidency", "serving", "subtle", "greatly", "bishop", "drinking", "acceptance", "pump", "candy", "evil", "pleased", "medal", "beg", "sponsor", "ethical", "secondary", "slam", "export", "experimental", "melt", "midnight", "curve", "integrity", "entitle", "evident", "logic", "essence", "exclude", "harsh", "closet", "suburban", "greet", "interior", "corridor", "retail", "pitcher", "march", "snake", "excuse", "weakness", "pig", "classical", "estimated", "T-shirt", "unemployment", "civilization", "fold", "reverse", "missing", "correlation", "humanity", "flash", "developer", "reliable", "excitement", "beef", "Islam", "Roman", "architecture", "occasional", "administrative", "elbow", "deadly", "Hispanic", "allegation", "confuse", "airplane", "monthly", "duck", "dose", "Korean", "plead", "initiate", "lecture", "van", "sixth", "bay", "mainstream", "suburb", "sandwich", "trunk", "rumor", "implementation", "swallow", "motivate", "render", "longtime", "trap", "restrict", "cloth", "seemingly", "legislative", "effectiveness", "enforce", "lens", "inspector", "lend", "plain", "fraud", "companion", "contend", "nail", "array", "strict", "assemble", "frankly", "rat", "burst", "hallway", "cave", "inevitable", "southwest", "monster", "unexpected", "obstacle", "facilitate", "rip", "herb", "overwhelming", "integration", "crystal", "recession", "written", "motive", "flood", "pen", "ownership", "nightmare", "inspection", "supervisor", "consult", "arena", "diagnosis", "possession", "forgive", "consistently", "basement", "drift", "drain", "prosecution", "maximum", "announcement", "warrior", "prediction", "bacteria", "questionnaire", "mud", "infrastructure", "hurry", "privilege", "temple", "outdoor", "suck", "and/or", "broadcast", "re", "leap", "random", "wrist", "curtain", "pond", "domain", "guilt", "cattle", "walking", "playoff", "minimum", "fiscal", "skirt", "dump", "hence", "database", "uncomfortable", "execute", "limb", "ideology", "tune", "continuing", "harm", "railroad", "endure", "radiation", "horn", "chronic", "peaceful", "innovation", "strain", "guitar", "replacement", "behave", "administer", "simultaneously", "dancer", "amendment", "pad", "transmission", "await", "retired", "trigger", "spill", "grateful", "grace", "virtual", "colony", "adoption", "indigenous", "closed", "convict", "towel", "modify", "particle", "prize", "landing", "boost", "bat", "alarm", "festival", "grip", "weird", "undermine", "freshman", "sweat", "outer", "drunk", "separation", "traditionally", "govern", "southeast", "intelligent", "wherever", "ballot", "rhetoric", "convinced", "driving", "vitamin", "enthusiasm", "accommodate", "praise", "injure", "wilderness", "endless", "mandate", "respectively", "uncertainty", "chaos", "mechanical", "canvas", "forty", "lobby", "profound", "format", "trait", "currency", "turkey", "reserve", "beam", "astronomer", "corruption", "contractor", "apologize", "doctrine", "genuine", "thumb", "unity", "compromise", "horrible", "behavioral", "exclusive", "scatter", "commonly", "convey", "twist", "complexity", "fork", "disk", "relieve", "suspicion", "residence", "shame", "meaningful", "sidewalk", "Olympics", "technological", "signature", "pleasant", "wow", "suspend", "rebel", "frozen", "spouse", "fluid", "pension", "resume", "theoretical", "sodium", "promotion", "delicate", "forehead", "rebuild", "bounce", "electrical", "hook", "detective", "traveler", "click", "compensation", "exit", "attraction", "dedicate", "altogether", "pickup", "carve", "needle", "belly", "scare", "portfolio", "shuttle", "invisible", "timing", "engagement", "ankle", "transaction", "rescue", "counterpart", "historically", "firmly", "mild", "rider", "doll", "noon", "amid", "identical", "precise", "anxious", "structural", "residential", "diagnose", "carbohydrate", "liberty", "poster", "theology", "nonprofit", "crawl", "oxygen", "handsome", "sum", "provided", "businessman", "promising", "conscious", "dewordination", "donor", "hers", "pastor", "jazz", "opera", "acquisition", "pit", "hug", "wildlife", "punish", "equity", "doorway", "departure", "elevator", "teenage", "guidance", "happiness", "statue", "pursuit", "repair", "decent", "gym", "oral", "clerk", "envelope", "reporting", "destination", "fist", "endorse", "exploration", "generous", "bath", "thereby", "indicator", "sunlight", "feedback", "spectrum", "purple", "laser", "bold", "reluctant", "starting", "expertise", "practically", "eating", "hint", "sharply", "parade", "realm", "cancel", "blend", "therapist", "peel", "pizza", "recipient", "hesitate", "flip", "accounting", "bias", "huh", "metaphor", "candle", "judicial", "entity", "suffering", "full-time", "lamp", "garbage", "servant", "regulatory", "diplomatic", "elegant", "reception", "vanish", "automatically", "chin", "necessity", "confess", "racism", "starter", "banking", "casual", "gravity", "enroll", "diminish", "prevention", "minimize", "chop", "performer", "intent", "isolate", "inventory", "productive", "assembly", "civic", "silk", "magnitude", "steep", "hostage", "collector", "popularity", "alien", "dynamic", "scary", "equation", "angel", "offering", "rage", "photography", "toilet", "disappointed", "precious", "prohibit", "realistic", "hidden", "tender", "gathering", "outstanding", "stumble", "lonely", "automobile", "artificial", "dawn", "abstract", "descend", "silly", "tide", "shared", "hopefully", "readily", "cooperate", "revolutionary", "romance", "hardware", "pillow", "kit", "continent", "seal", "circuit", "ruling", "shortage", "annually", "lately", "scan", "fool", "deadline", "rear", "processing", "ranch", "coastal", "undertake", "softly", "burning", "verbal", "tribal", "ridiculous", "automatic", "diamond", "credibility", "import", "sexually", "divine", "sentiment", "cart", "oversee", "elder", "pro", "inspiration", "Dutch", "quantity", "trailer", "mate", "o'clock", "Greek", "genius", "monument", "bid", "quest", "sacrifice", "invitation", "accuracy", "juror", "officially", "broker", "treasure", "loyalty", "talented", "gasoline", "stiff", "output", "nominee", "extended", "diabetes", "slap", "toxic", "alleged", "jaw", "grief", "mysterious", "rocket", "donate", "inmate", "tackle", "dynamics", "bow", "ours", "dignity", "carpet", "parental", "bubble", "buddy", "barn", "sword", "seventh", "glory", "tightly", "protective", "tuck", "drum", "faint", "queen", "dilemma", "input", "specialize", "northeast", "shallow", "liability", "sail", "merchant", "stadium", "improved", "bloody", "associated", "withdrawal", "refrigerator", "nest", "thoroughly", "lane", "ancestor", "condemn", "steam", "accent", "optimistic", "unite", "cage", "equip", "shrimp", "homeland", "rack", "costume", "wolf", "courtroom", "statute", "cartoon", "productivity", "grin", "symbolic", "bug", "bless", "aunt", "agriculture", "hostile", "conceive", "combined", "instantly", "bankruptcy", "vaccine", "bonus", "collaboration", "mixed", "opposed", "orbit", "grasp", "patience", "spite", "tropical", "voting", "patrol", "willingness", "revelation", "calm", "jewelry", "Cuban", "haul", "concede", "wagon", "afterward", "spectacular", "ruin", "sheer", "immune", "reliability", "ass", "alongside", "bush", "exotic", "fascinating", "clip", "thigh", "bull", "drawer", "sheep", "discourage", "coordinator", "ideological", "runner", "secular", "intimate", "empire", "cab", "exam", "documentary", "neutral", "biology", "flexible", "progressive", "web", "conspiracy", "casualty", "republic", "execution", "terrific", "whale", "functional", "instinct", "teammate", "aluminum", "whoever", "ministry", "verdict", "instruct", "skull", "self-esteem", "cooperative", "manipulate", "bee", "practitioner", "loop", "edit", "whip", "puzzle", "mushroom", "subsidy", "boil", "tragic", "mathematics", "mechanic", "jar", "earthquake", "pork", "creativity", "safely", "underlying", "dessert", "sympathy", "fisherman", "incredibly", "isolation", "sock", "eleven", "sexy", "entrepreneur", "syndrome", "bureau", "workplace", "ambition", "touchdown", "utilize", "breeze", "costly", "ambitious", "Christianity", "presumably", "influential", "translation", "uncertain", "dissolve", "statistical", "gut", "metropolitan", "rolling", "aesthetic", "spell", "insert", "booth", "helmet", "waist", "expected", "lion", "accomplishment", "royal", "panic", "crush", "actively", "cliff", "minimal", "cord", "fortunately", "cocaine", "illusion", "anonymous", "tolerate", "appreciation", "commissioner", "flexibility", "instructional", "scramble", "casino", "tumor", "decorate", "pulse", "equivalent", "fixed", "experienced", "donation", "diary", "sibling", "irony", "spoon", "midst", "alley", "interact", "soap", "cute", "rival", "short-word", "punch", "pin", "hockey", "passing", "persist", "supplier", "known", "momentum", "purse", "shed", "liquid", "icon", "elephant", "consequently", "legislature", "franchise", "correctly", "hay", "foster", "bicycle", "encouraging", "cheat", "heal", "fever", "filter", "rabbit", "coin", "exploit", "accessible", "organism", "sensation", "partially", "upstairs", "dried", "conservation", "shove", "backyard", "charter", "stove", "consent", "comprise", "reminder", "alike", "placement", "dough", "grandchild", "dam", "reportedly", "well-known", "surrounding", "ecological", "outfit", "unprecedented", "columnist", "workout", "preliminary", "patent", "shy", "trash", "disabled", "gross", "damn", "hormone", "texture", "pencil", "frontier", "spray", "disclose", "custody", "banker", "beast", "interfere", "oak", "eighth", "notebook", "outline", "attendance", "speculation", "uncover", "behalf", "innovative", "shark", "mill", "installation", "stimulate", "tag", "vertical", "swimming", "fleet", "catalog", "outsider", "desperately", "stance", "compel", "sensitivity", "someday", "instant", "debut", "proclaim", "worldwide", "hike", "required", "confrontation", "colorful", "constitution", "trainer", "Thanksgiving", "scent", "stack", "eyebrow", "sack", "cease", "inherit", "tray", "pioneer", "organizational", "textbook", "uh", "nasty", "shrink", "emerging", "dot", "wheat", "fierce", "envision", "rational", "kingdom", "aisle", "weaken", "protocol", "exclusively", "vocal", "marketplace", "openly", "unfair", "terrain", "deploy", "risky", "pasta", "genre", "distract", "merit", "planner", "depressed", "chunk", "closest", "discount", "ladder", "jungle", "migration", "breathing", "invade", "hurricane", "retailer", "classify", "coup", "ambassador", "density", "supportive", "curiosity", "skip", "aggression", "stimulus", "journalism", "robot", "dip", "likewise", "informal", "Persian", "feather", "sphere", "tighten", "boast", "pat", "perceived", "sole", "publicity", "unfold", "well-being", "validity", "ecosystem", "strictly", "partial", "collar", "weed", "compliance", "streak", "supposedly", "added", "builder", "glimpse", "premise", "specialty", "deem", "artifact", "sneak", "monkey", "mentor", "two-thirds", "listener", "lightning", "legally", "sleeve", "disappointment", "disturb", "rib", "excessive", "high-tech", "debris", "rod", "logical", "ash", "socially", "parish", "slavery", "blank", "commodity", "cure", "mineral", "hunger", "dying", "developmental", "faster", "spare", "halfway", "equality", "cemetery", "harassment", "deliberately", "fame", "regret", "striking", "likelihood", "carrot", "atop", "toll", "rim", "embarrassed", "fucking", "cling", "isolated", "blink", "suspicious", "wheelchair", "squad", "eligible", "processor", "plunge", "demographic", "chill", "refuge", "steer", "legislator", "rally", "programming", "cheer", "outlet", "intact", "vendor", "thrive", "peanut", "chew", "elaborate", "conception", "auction", "steak", "comply", "triumph", "shareholder", "comparable", "transport", "conscience", "calculation", "considerably", "interval", "scratch", "awake", "jurisdiction", "inevitably", "feminist", "constraint", "emotionally", "expedition", "allegedly", "similarity", "butt", "lid", "dumb", "bulk", "sprinkle", "mortality", "philosophical", "conversion", "patron", "municipal", "liver", "harmony", "solely", "tolerance", "goat", "blessing", "banana", "palace", "formerly", "peasant", "neat", "grandparent", "lawmaker", "supermarket", "cruise", "mobile", "calendar", "widow", "deposit", "beard", "brake", "screening", "impulse", "forbid", "fur", "brutal", "predator", "poke", "opt", "voluntary", "valid", "forum", "dancing", "happily", "soar", "removal", "autonomy", "enact", "thread", "landmark", "unhappy", "offender", "coming", "privately", "fraction", "distinctive", "tourism", "threshold", "routinely", "suite", "regulator", "straw", "theological", "exhaust", "globe", "fragile", "objection", "chemistry", "old-fashioned", "crowded", "blast", "prevail", "overnight", "denial", "rental", "fantastic", "fragment", "screw", "warmth", "undergraduate", "headache", "policeman", "projection", "suitable", "graduation", "drill", "cruel", "mansion", "grape", "authorize", "cottage", "driveway", "charm", "sexuality", "loyal", "clay", "balloon", "invention", "ego", "fare", "homework", "disc", "sofa", "availability", "radar", "frown", "regain", "sweater", "rehabilitation", "rubber", "retreat", "molecule", "freely", "favorable", "steadily", "integrated", "ha", "youngster", "premium", "accountability", "overwhelm", "one-third", "contemplate", "update", "spark", "ironically", "fatigue", "speculate", "marker", "preach", "bucket", "blond", "confession", "provoke", "marble", "substantially", "defender", "explicit", "disturbing", "surveillance", "magnetic", "technician", "mutter", "devastating", "depart", "arrow", "trauma", "neighboring", "soak", "ribbon", "meantime", "transmit", "harvest", "consecutive", "coordinate", "spy", "slot", "riot", "nutrient", "citizenship", "severely", "sovereignty", "ridge", "brave", "lighting", "specify", "contributor", "frustrate", "articulate", "importantly", "transit", "dense", "seminar", "electronics", "sunny", "shorts", "swell", "accusation", "soften", "straighten", "terribly", "cue", "bride", "biography", "hazard", "compelling", "seldom", "tile", "economically", "honestly", "troubled", "twentieth", "balanced", "foreigner", "convenience", "delight", "weave", "timber", "till", "accurately", "plea", "bulb", "flying", "sustainable", "devil", "bolt", "cargo", "spine", "seller", "skilled", "managing", "marine", "dock", "organized", "fog", "diplomat", "boring", "sometime", "summary", "missionary", "epidemic", "fatal", "trim", "warehouse", "accelerate", "butterfly", "bronze", "drown", "inherent", "nationwide", "spit", "kneel", "vacuum", "selected", "dictate", "stereotype", "sensor", "laundry", "manual", "pistol", "naval", "plaintiff", "middle-class", "apology"];
frequent = toObject(frequent);

function toObject(arr) {
  var ao = [];
  for (var i = 0; i < arr.length; ++i)
    ao[i] = {
      "word": arr[i]
  return ao;