kmap
Version:
Karnagh Map Editor
2 lines • 236 kB
JavaScript
/*! For license information please see kmap.min.js.LICENSE.txt */
!function(A,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Kmap=e():A.Kmap=e()}(self,(function(){return(()=>{var A,e,t={731:(A,e,t)=>{"use strict";t.d(e,{default:()=>S});var r=function(A){if(this.options={selector:"*",mouseEvents:["click","dblclick","mousedown","mouseup"],usePolyfillIf:function(){if("Microsoft Internet Explorer"==navigator.appName&&(null!=navigator.userAgent.match(/MSIE ([0-9]{1,}[\.0-9]{0,})/)&&parseFloat(RegExp.$1)<11))return!0;return!1}},A){var e=this;$.each(A,(function(A,t){e.options[A]=t}))}this.options.usePolyfillIf()&&this.register_mouse_events()};r.initialize=function(A){return null==r.singleton&&(r.singleton=new r(A)),r.singleton},r.prototype.register_mouse_events=function(){$(document).on(this.options.mouseEvents.join(" "),this.options.selector,(function(A){if("none"==$(this).css("pointer-events")){var e=$(this).css("display");$(this).css("display","none");var t=document.elementFromPoint(A.clientX,A.clientY);return e?$(this).css("display",e):$(this).css("display",""),A.target=t,$(t).trigger(A),!1}return!0}))};t(153);r.initialize();t(803);var n=function(){};n.go=function(A){(document.attachEvent?"complete"===document.readyState:"loading"!==document.readyState)?A():document.addEventListener("DOMContentLoaded",A)};var i=function(A){for(var e in(A=A||{})!==Object(A)&&(A="{"===A.substr(0,1)?JSON.parse(A):JSON.parse(atob(A))),this.size=4,this.minterms=[],this.dontcare=[],this.labels=["A","B","C","D"],this.genDontCare=!1,this.genDontCareOption=!0,this.generator=!0,this.manual=!1,this.map=!0,this.solution=!0,this.toPNG=!1,this.fixed=!1,this.verbose=!0,this.labelMinterms=!0,this.strict=!0,this.mapHeading=!0,this.resultSel=null,this.success="success",this.expressionSel=null,this.solve=!1,this.solved=!1,this.appTag=null,this.name=null,this.testAPI=null,this.contentType="application/x-www-form-urlencoded; charset=UTF-8",A)if(A.hasOwnProperty(e)){if(!this.hasOwnProperty(e))throw new Error("Invalid option "+e);this[e]=A[e]}},o=function(A,e,t){var r=null;this.open=function(){(r=document.createElement("div")).classList.add("kmap-cl-dlg"),A.element.appendChild(r);var n=document.createElement("div");r.appendChild(n);var i=document.createElement("div");r.appendChild(i);var o=document.createElement("div");i.appendChild(o),o.innerText=e;var s=document.createElement("div");i.appendChild(s),s.innerHTML=t;var a=document.createElement("div");i.appendChild(a);var c=document.createElement("button");a.appendChild(c),c.innerText="Ok",c.addEventListener("click",(function(e){e.preventDefault(),null!==r&&(A.element.removeChild(r),r=null)}))}};function s(A,e){var t="undefined"!=typeof Symbol&&A[Symbol.iterator]||A["@@iterator"];if(!t){if(Array.isArray(A)||(t=function(A,e){if(!A)return;if("string"==typeof A)return a(A,e);var t=Object.prototype.toString.call(A).slice(8,-1);"Object"===t&&A.constructor&&(t=A.constructor.name);if("Map"===t||"Set"===t)return Array.from(A);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return a(A,e)}(A))||e&&A&&"number"==typeof A.length){t&&(A=t);var r=0,n=function(){};return{s:n,n:function(){return r>=A.length?{done:!0}:{done:!1,value:A[r++]}},e:function(A){throw A},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){t=t.call(A)},n:function(){var A=t.next();return o=A.done,A},e:function(A){s=!0,i=A},f:function(){try{o||null==t.return||t.return()}finally{if(s)throw i}}}}function a(A,e){(null==e||e>A.length)&&(e=A.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=A[t];return r}var c=function(A,e){var t,r,n,i=this;this.main=A,this.element=e,this.selected=[];function a(){var A=t.offsetLeft,e=t.offsetTop,i=r.offsetLeft,o=r.offsetTop;n.style.top=e+"px",n.style.left=A+"px",n.style.width=i-A+r.offsetWidth+"px",n.style.height=o-e+r.offsetHeight+"px"}this.get_canvas=function(){return this.canvas},this.destroy=function(){window.removeEventListener("resize",a)};var c=function(e,t){for(var r=document.createElement("td"),n=B(e,t),s="0",a=0;a<A.options.minterms.length;a++)if(n===+A.options.minterms[a]){s="1";break}for(a=0;a<A.options.dontcare.length;a++)if(n===+A.options.dontcare[a]){s="X";break}return A.options.labelMinterms?r.innerHTML='<span class="minterm">m'+n+"</span>"+s:r.innerHTML=s,r.addEventListener("click",(function(e){if(e.preventDefault(),i.main.options.strict&&"0"===s){new o(A,"You can't do that","<p>You are only allowed to select cells that are either true or set to don't care.</p><p>We are grouping minterms that all are true so we can minimize the circuit. So, only true cells can be grouped.</p>").open()}else if(r.classList.contains("kmap-cl-selected")){r.classList.remove("kmap-cl-selected");var t=i.selected.indexOf(n);t>-1&&i.selected.splice(t,1)}else r.classList.add("kmap-cl-selected"),l(n)||(i.selected.push(n),i.selected.sort((function(A,e){return A-e})))})),r},B=function(A,e){return(2==+i.main.options.size?[[0,2],[1,3]]:3==+i.main.options.size?[[0,2,6,4],[1,3,7,5]]:[[0,4,12,8],[1,5,13,9],[3,7,15,11],[2,6,14,10]])[e-1][A-1]},l=function(A){return i.selected.indexOf(A)>-1};this.clear=function(){this.selected=[];var A,e=s(this.element.querySelectorAll("td"));try{for(e.s();!(A=e.n()).done;){A.value.classList.remove("kmap-cl-selected")}}catch(A){e.e(A)}finally{e.f()}},function(){var o=document.createElement("table");o.classList.add("kmap-cl"),e.appendChild(o);var B,l,u,d,h,Q=[],w=s(A.options.labels);try{for(w.s();!(B=w.n()).done;){var p=B.value;Q.push(p.replace(/_([a-zA-Z0-9])*/g,"<sub>$1</sub>"))}}catch(A){w.e(A)}finally{w.f()}if(2==+A.options.size){var f=Q[0],g=Q[1];l=g,u=f,d="<th>"+f+"'</th><th>"+f+"</th>",h=[g+"'",g]}else if(3==+A.options.size){var U=Q[0],C=Q[1],E=Q[2];l=E,u=U+C,d="<th>"+U+"'"+C+"'</th><th>"+U+"'"+C+"</th><th>"+U+C+"</th><th>"+U+C+"'</th>",h=[E+"'",E]}else{var m=Q[0],F=Q[1],H=Q[2],v=Q[3];l=H+v,u=m+F,d="<th>"+m+"'"+F+"'</th><th>"+m+"'"+F+"</th><th>"+m+F+"</th><th>"+m+F+"'</th>",h=[H+"'"+v+"'",H+"'"+v,H+v,H+v+"'"]}var N=document.createElement("tr");N.innerHTML='<th><div class="kmap-cl-left">'+l+'</div><div class="kmap-cl-line"></div><div class="kmap-cl-right">'+u+"</div></th>"+d,o.appendChild(N);for(var K=4==+A.options.size?4:2,b=2==+A.options.size?2:4,T=1;T<=K;T++){(N=document.createElement("tr")).innerHTML="<th>"+h[T-1]+"</th>";for(var I=1;I<=b;I++){var y=c(I,T);N.appendChild(y),1===T&&1===I?t=y:T===K&&I===b&&(r=y)}o.appendChild(N)}(n=document.createElement("canvas")).setAttribute("width","1000"),n.setAttribute("height","1000"),i.canvas=n,e.appendChild(n),setTimeout((function(){a()}),0),window.addEventListener("resize",a)}()},B=function(A,e,t,r){var n=this;if(this.groups=A,this.selected=t,this.color=r,null!==e){for(var i="",o=!0,s=0;s<t.length;s++)o?o=!1:i+=",",8===s&&(i+="<br/>"),i+=t[s];var a=document.createElement("div");a.classList.add("group"),a.innerHTML=i;var c=document.createElement("span");a.appendChild(c);var B=document.createElement("a");c.appendChild(B),e.appendChild(a),B.addEventListener("click",(function(t){t.preventDefault(),e.removeChild(a),A.remove(n)})),a.style.backgroundColor=r}};B.prototype.draw=function(A,e,t,r){var n,i,o,s,a,c=15,B=10;switch(this.groups.main.options.size){case 2:n=2,i=2,o=[0,1,0,1],s=[0,0,1,1],a=4;break;case 3:n=4,i=2,o=[0,1,0,1,0,1,0,1],s=[0,0,1,1,3,3,2,2],a=8;break;case 4:n=4,i=4,o=[0,1,3,2,0,1,3,2,0,1,3,2,0,1,3,2],s=[0,0,0,0,1,1,1,1,3,3,3,3,2,2,2,2],a=16}var l=this.selected.length;if(l!==a){if(1===l){var u=s[this.selected[0]],d=o[this.selected[0]];this.drawGroup(A,u*e/n,d*t/i,e/n,t/i,c+B*r)}else if(2==l){u=s[this.selected[0]],d=o[this.selected[0]];var h=s[this.selected[1]];if(d==(w=o[this.selected[1]])){if(h<u){var Q=u;u=h,h=Q}h-u>1?(this.drawGroup(A,h*e/n,d*t/i,2*e/n,t/i,c+B*r),this.drawGroup(A,(u-1)*e/n,d*t/i,2*e/n,t/i,c+B*r)):this.drawGroup(A,u*e/n,d*t/i,2*e/n,t/i,c+B*r)}else{if(w<d){Q=d;d=w,w=Q}w-d>1?(this.drawGroup(A,u*e/n,w*t/i,e/n,2*t/i,c+B*r),this.drawGroup(A,u*e/n,(d-1)*t/i,e/n,2*t/i,c+B*r)):this.drawGroup(A,u*e/n,d*t/i,e/n,2*t/i,c+B*r)}}else if(4==l){u=s[this.selected[0]],d=o[this.selected[0]],h=s[this.selected[1]];var w=o[this.selected[1]],p=s[this.selected[2]],f=o[this.selected[2]],g=s[this.selected[3]],U=o[this.selected[3]];if(d==w&&w==f&&f==U)this.drawGroup(A,u*e/n,d*t/i,4*e/n,t/i,c+B*r);else if(u==h&&h==p&&p==g)this.drawGroup(A,u*e/n,d*t/i,e/n,4*t/i,c+B*r);else{var C=2*e/n,E=2*t/i;if(0==u&&0==h&&3==p&&3==g)if(0==d&&3==w&&0==f&&3==U)this.drawGroup(A,-1*e/n,-1*t/i,C,E,c+B*r),this.drawGroup(A,-1*e/n,3*t/i,C,E,c+B*r),this.drawGroup(A,3*e/n,-1*t/i,C,E,c+B*r),this.drawGroup(A,3*e/n,3*t/i,C,E,c+B*r);else{if(d>w){Q=d;d=w,w=Q}this.drawGroup(A,-1*e/n,d*t/i,C,E,c+B*r),this.drawGroup(A,3*e/n,d*t/i,C,E,c+B*r)}else if(0==d&&3==w){if(u>p){Q=u;u=p,p=Q}this.drawGroup(A,u*e/n,-1*t/i,C,E,c+B*r),this.drawGroup(A,u*e/n,3*t/i,C,E,c+B*r)}else{if(u>p){Q=u;u=p,p=Q}if(d>w){Q=d;d=w,w=Q}this.drawGroup(A,u*e/n,d*t/i,C,E,c+B*r)}}}else if(8==l){u=s[this.selected[0]],d=o[this.selected[0]],h=s[this.selected[1]],w=o[this.selected[1]],p=s[this.selected[2]],f=o[this.selected[2]],g=s[this.selected[3]],U=o[this.selected[3]];var m=s[this.selected[4]];o[this.selected[4]];if(u==h&&h==p&&p==g){var F=2*e/n,H=4*t/i;0==u&&3==m?(this.drawGroup(A,-1*e/n,0*t/i,F,H,c+B*r),this.drawGroup(A,3*e/n,0*t/i,F,H,c+B*r)):(u>m&&(u=m),this.drawGroup(A,u*e/n,0*t/i,F,H,c+B*r))}else{F=4*e/n,H=2*t/i;w-d>1?(this.drawGroup(A,0*e/n,-1*t/i,F,H,c+B*r),this.drawGroup(A,0*e/n,3*t/i,F,H,c+B*r)):(d>w&&(d=w),this.drawGroup(A,0*e/n,d*t/i,F,H,c+B*r))}}}else this.drawGroup(A,0,0,e,t,c+B*r)},B.prototype.drawGroup=function(A,e,t,r,n,i){var o=e+i,s=t+i,a=r-2*i-1,c=n-2*i-1,B=30;A.lineWidth=7,A.strokeStyle=this.color,A.beginPath(),A.moveTo(o,s+B),A.lineTo(o,s+c-B),A.arcTo(o,s+c,o+B,s+c,B),A.lineTo(o+a-B,s+c),A.arcTo(o+a,s+c,o+a,s+c-B,B),A.lineTo(o+a,s+B),A.arcTo(o+a,s,o+a-B,s,B),A.lineTo(o+B,s),A.arcTo(o,s,o,s+B,B),A.stroke()};var l=function(A,e){var t,r=this,n=this;this.main=A;var i;this.add_group=function(A){var e=new B(this,t,A,this.colors[this.colorN]);this.colorN=(this.colorN+1)%this.colors.length,this.groups.push(e)},this.drawGroups=function(){var e=A.work.map.get_canvas(),t=e.getContext("2d"),r=e.width,n=e.height;t.clearRect(0,0,r,n);for(var i=A.options.size,o=[],s=0;s<Math.pow(2,i);s++)o.push(0);for(s=0;s<this.groups.length;s++){for(var a=this.groups[s],c=1,B=0;B<a.selected.length;B++)o[a.selected[B]]++,o[a.selected[B]]>c&&(c=o[a.selected[B]]);a.draw(t,r,n,c)}},this.clear=function(){t.innerHTML="",this.colorN=0,this.groups=[],this.drawGroups()},this.remove=function(A){for(var e=0;e<this.groups.length;e++)this.groups[e]===A&&this.groups.splice(e,1);this.drawGroups()},i=document.createElement("button"),e.appendChild(i),i.innerText="Cover",(t=document.createElement("div")).classList.add("list"),e.appendChild(t),r.groups=[],r.colorN=0,i.addEventListener("click",(function(e){e.preventDefault();var t=A.work.map.selected;if(A.options.strict){for(var i=Math.pow(2,A.options.size)-1,s=i,a=0;a<t.length;a++){var c=t[a];i&=c,s&=~c}for(var B=i|s,l=0,u=A.options.size,d=0;d<u;d++)1==(1&B)&&l++,B>>=1;var h=!0;switch(t.length){case 1:break;case 2:h=l==u-1;break;case 4:h=l==u-2;break;case 8:h=l==u-3;break;case 16:break;default:return void new o(A,"You can't do that","<p>Grouping must be of some power of two minterms.</p><p>The only groupings possible are 1, 2, 4, 8, or 16, depending on the size of the Karnaugh map.</p>").open()}if(!h)return void new o(A,"You can't do that","<p>Your minterm grouping is invalid.</p><p>Groupings must be such that there are bits in common. This means the groupings must be a rectangle on the Karnaugh map. This can be a 1 by 4 rectangle or a 2 by 2 rectangle for a grouping of 4, for example. Note that the map does <em>wrap around</em> at the edges, so the right side is adjacent to the left side, for example.</p>").open();for(var Q=0;Q<n.groups.length&&h;Q++)if(n.groups[Q].selected.length===t.length){for(var w=!1,p=0;p<n.groups[Q].selected.length;p++)if(n.groups[Q].selected[p]!==t[p]){w=!0;break}if(!w)return h=!1,void new o(A,"You can't do that","<p>This cover already exists.</p>").open()}}r.add_group(t),r.drawGroups(),A.work.map.clear()}))};l.prototype.colors=["#0000FF","#808088","#FF8800","#008080","#BDB76B","#800000","#00FF88","#778899","#FFA500","#9ACD32","#4682B4"];var u=function(A,e){var t,r,n;this.map=null,this.groups=null,this.initialize=function(){if(A.options.mapHeading){var r=document.createElement("h3");e.appendChild(r);var n=document.createElement("input");n.setAttribute("type","checkbox"),n.setAttribute("checked","true"),r.appendChild(n),r.appendChild(document.createTextNode(" Karnaugh Map")),n.addEventListener("change",(function(A){A.preventDefault(),n.checked?t.style.display="table":t.style.display="none"}))}(t=document.createElement("div")).classList.add("kmap-cl-work"),e.appendChild(t),this.div=t,this.render()},this.render=function(){t.innerHTML="",r=document.createElement("div"),t.appendChild(r),n=document.createElement("div"),t.appendChild(n),null!==this.map&&this.map.destroy(),this.map=new c(A,n),this.groups=new l(A,r)},this.initialize()},d=function(A,e){var t,r=this,n=A.options;this.refresh=function(){A.minterms.dontcare.length>0?t.innerHTML=A.minterms.list(!0)+"<br>X="+A.minterms.list_dontcare(!0):t.innerHTML=A.minterms.list(!0)},function(){var i=document.createElement("div");i.classList.add("kmap-cl-generator"),e.appendChild(i);var o=document.createElement("h3");o.innerText=n.fixed?"Minterms":"Minterm Generator",i.appendChild(o);var s=document.createElement("form");i.appendChild(s);var a=document.createElement("p");if(a.innerText="Size: ",i.appendChild(a),n.fixed)a.appendChild(document.createTextNode(n.size+" Minterms: "));else{var c=document.createElement("select");a.appendChild(c);for(var B="",l="",u=2;u<=4;u++)u===+A.options.size?A.options.genDontCare?(B+='<option value="'+u+'">'+u+"</option>",A.options.genDontCareOption&&(l+='<option value="'+u+'d" selected>'+u+" w/don't cares</option>")):(B+='<option value="'+u+'" selected>'+u+"</option>",A.options.genDontCareOption&&(l+='<option value="'+u+'d">'+u+" w/don't cares</option>")):(B+='<option value="'+u+'">'+u+"</option>",A.options.genDontCareOption&&(l+='<option value="'+u+'d">'+u+" <span>w/don't cares</span></option>"));c.innerHTML=B+l,c.addEventListener("change",(function(e){e.preventDefault();var t=c.value,r=parseInt(t);A.options.genDontCare=null!==t.match(/d$/),A.newSize(r)})),a.appendChild(document.createTextNode(" "));var d=document.createElement("button");d.innerText="Generate",a.appendChild(d),a.appendChild(document.createTextNode(" ")),d.addEventListener("click",(function(e){e.preventDefault(),A.generate()}))}t=document.createElement("span"),a.appendChild(t),r.refresh()}()},h=function(){this.size=4,this.minterms=[],this.dontcare=[],this.generate=function(A,e){void 0===A&&(A=.5),void 0===e&&(e=0),this.dontcare=[],this.minterms=[];for(var t=Math.pow(2,this.size),r=0;r<t;r++){var n=Math.random();n<=A?this.minterms.push(r):n>1-e&&this.dontcare.push(r)}},this.generate_bounded=function(A,e,t,r,n,i){void 0===n&&(n=0),void 0===i&&(i=Math.pow(2,this.size));for(var o=0;o<1e3;o++)if(this.generate(A,r),this.minterms.length>=e&&this.minterms.length<=t&&this.dontcare.length>=n&&this.dontcare.length<=i)return},this.set=function(){this.minterms=[];for(var A=0;A<arguments.length;A++)this.minterms.push(arguments[A]);this.minterms.sort((function(A,e){return A-e}))},this.set_from=function(A,e){this.minterms=A.slice(),this.minterms.sort((function(A,e){return A-e})),null!==e?(this.dontcare=e.slice(),this.dontcare.sort((function(A,e){return A-e}))):this.dontcare=[]},this.equal=function(A){var e;if((e=A instanceof Logic.Minterms?A.minterms:A).length!==this.minterms.length)return!1;for(var t=0;t<e.length;t++)if(e[t]!=this.minterms[t])return!1;return!0},this.clear=function(){this.minterms=[]},this.add=function(A){for(var e in this.minterms)if(this.minterms[e]==A)return;this.minterms.push(A),this.minterms.sort((function(A,e){return A-e}))},this.list=function(A){var e=!0,t="",r=!1;for(var n in this.minterms)e?e=!1:t+=", ",!0===A&&!r&&t.length>40&&(r=!0,t+="<br>"),t+="m"+this.minterms[n];return t},this.list_dontcare=function(A){var e=!0,t="",r=!1;for(var n in this.dontcare)e?e=!1:t+=", ",!0===A&&!r&&t.length>40&&(r=!0,t+="<br>"),t+="m"+this.dontcare[n];return t}},Q=function(){var A=this,e=4;function t(){A.minterms.clear();for(var t=0;t<Math.pow(2,e);t++){c(t);var n=!1;for(var i in r){var o=r[i],s=!0;for(var a in o){var B=o[a];s=B.not?s&&!B.term.value:s&&B.term.value}n=n||s}n&&A.minterms.add(t)}}this.minterms=new h,this.labels=["A","B","C","D","E","F","G","H","I","J","K"],this.set_size=function(t){e=t,this.minterms.size=t,function(){s=[];for(var t=0;t<e;t++){var r={literal:A.labels[t],value:!1};s.push(r)}}()},this.as_good_as=function(A){return!(this.num_products()>A.num_products())&&!(this.num_terms()>A.num_terms())};var r=[];function n(A){throw"Expression parsing error ["+o+"]: "+A}this.parse=function(A){!function(A){i=A,o=0}(A),r=[];var s=[];if("0"!==B())if("1"!==B()){for(;;){var c=B();if(null===c)break;if("+"===c)0===s.length&&n("Syntax error"),r.push(s),s=[],l();else{var u=a(c);if(null!==u){for(var d in s)u===s[d].term&&n("Not in correct sum of products form. Terms may only be used once per product.");l(),"'"===B()?(s.push({term:u,not:!0}),l()):s.push({term:u,not:!1})}else n("Unexpected symbol.")}}s.length>0?(r.push(s),s=[]):n("Not in correct sum of products form. Missing terms?"),t()}else{this.minterms.clear();for(var h=0;h<Math.pow(2,e);h++)this.minterms.add(h)}else t()},this.num_products=function(){return r.length},this.num_terms=function(){var A=0;for(var e in r)A+=r[e].length;return A};var i,o,s=[];function a(A){for(var e in s)if(A.toUpperCase()===s[e].literal.toUpperCase())return s[e];return null}function c(A){for(var e=s.length-1;e>=0;e--)s[e].value=1==(1&A),A>>=1}function B(){for(;o<i.length;){var A=i.charAt(o);if(" "!==A){for(var e in s){var t=i.substr(o,s[e].literal.length);if(t===s[e].literal)return t}return A}o++}return null}function l(){var A=B();null!==A&&(o+=A.length)}this.set_size(4)};function w(){this.problem,this.maxProblemSize=100,this.solution,this.log="";var A=this;function e(A){for(var e=new Array,t=new Object,r=0;r<A.length;r++){for(var n=!0,i=A[r],o=r+1;o<A.length&&n;o++){var s=A[o],a=0,c=0;for(var B in i)s[B]in i&&a++,c++;var l=0,u=0;for(var B in s)i[B]in s&&l++,u++;a===u&&(n=!1),c<u&&l===c&&(t[o]=o)}n&&(r in t||e.push(A[r]))}return e}function t(e){for(var t="",r=0;r<e.length;r++){var n=!0;t+="(";for(var i=e[r],o=0;o<i.length;o++){n||(t+=" ∨ ");var s=i[o];for(var a in s)t+="<i>p</i><sub><small>"+s[a]+"</small></sub>";n=!1}t+=")"}A.log.length>0?A.log+="<p>⇔ "+t+"</p>":A.log+="<p>"+t+"</p>"}function r(A){for(var e=0,t=0;t<A.length;t++){e+=A[t].length}return e}this.test=function(){var A,e,t,r=new Array;A=new Array,(e=new Object)[1]=1,A.push(e),(t=new Object)[2]=2,A.push(t),r.push(A),A=new Array,(e=new Object)[3]=3,A.push(e),(t=new Object)[4]=4,A.push(t),r.push(A),A=new Array,(e=new Object)[1]=1,A.push(e),(t=new Object)[3]=3,A.push(t),r.push(A),A=new Array,(e=new Object)[5]=5,A.push(e),(t=new Object)[6]=6,A.push(t),r.push(A),A=new Array,(e=new Object)[2]=2,A.push(e),(t=new Object)[5]=5,A.push(t),r.push(A),A=new Array,(e=new Object)[4]=4,A.push(e),(t=new Object)[6]=6,A.push(t),r.push(A),this.solve(r)},this.solve=function(A){this.problem=A,this.log="",t(A);for(var n=A;n.length>1;){for(var i=new Array,o=1;o<n.length;o+=2){for(var s=n[o-1],a=n[o],c=new Array,B=0;B<s.length;B++)for(var l=0;l<a.length;l++){var u=s[B],d=a[l],h=new Object;for(var Q in u)h[u[Q]]=u[Q];for(var w in d)h[d[w]]=d[w];c.push(h)}i.push(c)}n.length%2==1&&i.push(n[n.length-1]),t(i),n.length=0;for(o=0;o<i.length;o++){var p=e(i[o]);p.length>0&&n.push(p)}var f=r(n);if(f>this.maxProblemSize)return console.log("Error: The cyclic covering problem is too large to be solved with Petrick's method (increase maxProblemSize). Size="+f),!1;t(n)}return this.solution=n,!0}}function p(){this.implicant=-1,this.termString="",this.color=[0,0,0],this.coloredTermString="",this.used=!1,this.neededByVar=new Object}function f(){this.imp=new Object,this.isPrim=!1,this.isOnlyDontCare=!1,this.bitMask=0}function g(){this.group=new Array,this.order=-1}function U(A){this.essentialPrimTerms=new Array,this.order=A,this.remainingVars=new Array,this.remainingPrimTerms=new Array,this.supersededPrimTerms=new Array}function C(A,e,t){var r,n,i,o=Math.floor(6*A),s=6*A-o,a=t*(1-e),c=t*(1-s*e),B=t*(1-(1-s)*e);switch(o%6){case 0:r=t,n=B,i=a;break;case 1:r=c,n=t,i=a;break;case 2:r=a,n=t,i=B;break;case 3:r=a,n=c,i=t;break;case 4:r=B,n=a,i=t;break;case 5:r=t,n=a,i=c}return[Math.floor(255*r),Math.floor(255*n),Math.floor(255*i)]}var E=function(){function A(A){for(var e=0;A>0;)1==(1&A)&&e++,A>>=1;return e}this.noOfVars=-1,this.funcdata=new Array,this.primTerms=new Array,this.implicantGroups=new Array,this.minimalTerm="",this.coloredMinimalTerm="",this.minimalTermPrims=new Array,this.primTermTables=new Array,this.petrickSolver=new w,this.petrickTermPrims=new Array,this.allowDontCare=!1,this.init=function(A){this.noOfVars=A,this.funcdata.length=0,this.primTerms.length=0,this.implicantGroups.length=0,this.minimalTerm="0",this.coloredMinimalTerm="0",this.minimalTermPrims.length=0,this.primTermTables.length=0,this.petrickTermPrims.length=0;for(var e=Math.pow(2,this.noOfVars),t=0;t<e;t++)this.funcdata.push(0)},this.setFuncData=function(A,e){A<0||A>=this.funcdata.length||(this.funcdata[A]=e)},this.activated=function(A){A<0||A>=this.funcdata.length||(this.funcdata[A]+=1,this.allowDontCare?this.funcdata[A]>2&&(this.funcdata[A]=0):this.funcdata[A]>1&&(this.funcdata[A]=0),this.compute())},this.random=function(){for(var A=0;A<this.funcdata.length;A++)this.allowDontCare?this.funcdata[A]=Math.floor(3*Math.random()):this.funcdata[A]=Math.floor(2*Math.random());this.compute()},this.clear=function(){for(var A=0;A<this.funcdata.length;A++)this.funcdata[A]=0;this.compute()},this.compute=function(){this.primTerms.length=0,this.implicantGroups.length=0,this.minimalTerm="0",this.coloredMinimalTerm="0",this.minimalTermPrims.length=0,this.primTermTables.length=0,this.petrickTermPrims.length=0;for(var e=0,t=-1,r=!0;r;){r=!1;var n=new g;if(0===e)for(var i=0;i<this.funcdata.length;i++){if(this.funcdata[i]>0)(d=new f).imp[i]=i,d.isPrim=!0,n.group.push(d),r=!0}else for(i=0;i<t.group.length;i++)for(var o=i+1;o<t.group.length;o++){var s=t.group[i],a=t.group[o];if(s.bitMask===a.bitMask){var c=!1,B=-1;for(var l in s.imp){for(var u in a.imp){1===A(B=(s.imp[l]^a.imp[u])&~s.bitMask)&&(c=!0);break}break}if(c){s.isPrim=!1,a.isPrim=!1;var d=new f;for(var l in d.isPrim=!0,d.bitMask=s.bitMask|B,s.imp)d.imp[l]=parseInt(l);for(var u in a.imp)d.imp[u]=parseInt(u);for(var h=!1,Q=0;Q<n.group.length;Q++){var w=n.group[Q],E=!0;for(var l in d.imp){c=!1;for(var u in w.imp)parseInt(l)===parseInt(u)&&(c=!0);if(!c){E=!1;break}}if(E){h=!0;break}}h||(n.group.push(d),r=!0)}}}r&&this.implicantGroups.push(n),t=n,e++}this.primTerms.length=0,this.minimalTermPrims.length=0;var m=0;for(i=this.implicantGroups.length-1;i>=0;i--){var F=this.implicantGroups[i].group;for(o=0;o<F.length;o++)if(F[o].isPrim){var H=!1,v=F[o].imp;for(var N in v){Q=v[N];1===this.funcdata[Q]&&(H=!0)}if(H){var K=new p;for(var b in K.implicant=F[o],K.implicant.imp){for(var T="",I=1,y=~K.implicant.bitMask,R=0;R<this.noOfVars;R++)(y&I)===I&&(T=(b&I)===I?"<i>x</i><sub><small>"+R+"</small></sub>"+T:"<i>x̄</i><sub><small>"+R+"</small></sub>"+T),I<<=1;T="("+T+")",K.implicant.bitMask===Math.pow(2,this.noOfVars)-1&&(T="1"),K.color=C(m,1,.5),m+=.22,m%=1,K.termString=T;var O="rgb("+K.color[0]+","+K.color[1]+","+K.color[2]+")";K.coloredTermString="<span style='color:"+O+"'>"+T+"</span>";break}this.primTerms.push(K)}else F[o].isOnlyDontCare=!0}}var L=new Object;for(i=0;i<this.funcdata.length;i++)1===this.funcdata[i]&&(L[i]=i);this.primTermTables.length=0;for(var S,D=0,M=this.primTerms.length>0,_=!1;M;){for(var x in M=!1,S=new U(D),L)S.remainingVars.push(L[x]);if(0===D)for(o=0;o<this.primTerms.length;o++)S.remainingPrimTerms.push(this.primTerms[o]);else{var k=this.primTermTables[D-1];for(Q=0;Q<k.remainingPrimTerms.length;Q++)if(!k.remainingPrimTerms[Q].used){var P=!1,z=k.remainingPrimTerms[Q].implicant.imp,V=new Object,X=0;for(var x in L){(R=L[x])in z&&(V[R]=R,X++)}for(var G=0;G<k.remainingPrimTerms.length&&!P;G++)if(!k.remainingPrimTerms[G].used&&Q!==G){var J=k.remainingPrimTerms[G].implicant.imp,W=0;for(var x in V){(R=V[x])in J&&W++}if(X===W){var Y=0;for(var x in L){(R=L[x])in J&&Y++}(Y>X||Q>G)&&(P=!0)}}P?k.supersededPrimTerms.push(k.remainingPrimTerms[Q]):S.remainingPrimTerms.push(k.remainingPrimTerms[Q])}}if(S.remainingPrimTerms.length>0){this.primTermTables.push(S);var j=S.remainingPrimTerms,q=new Object;for(var x in L){i=L[x];var Z=0,$=-1;for(o=0;o<j.length&&Z<2;o++)i in j[o].implicant.imp&&($=o,Z++);if(1===Z&&(j[$].neededByVar[i]=D,!j[$].used))for(var x in this.minimalTermPrims.push(j[$]),j[$].used=!0,S.essentialPrimTerms.push(j[$]),M=!0,L){(sA=L[x])in j[$].implicant.imp&&(q[sA]=sA)}}var AA=new Object;for(var eA in L){var tA=L[eA];AA[tA]=tA,delete L[eA]}var rA=0;for(var x in AA){var nA=AA[x];nA in q||(L[nA]=nA,rA++)}}0===rA?M=!1:M||(_=!0),D++}var iA=!0;if(_){var oA=new Array;for(var x in L){var sA=L[x],aA=new Array;for(Q=0;Q<S.remainingPrimTerms.length;Q++){if(sA in S.remainingPrimTerms[Q].implicant.imp){var cA=new Object;cA[Q]=Q,aA.push(cA)}}oA.push(aA)}if(iA=this.petrickSolver.solve(oA)){var BA=this.petrickSolver.solution[0],lA=-1,uA=1e7,dA=1e7;for(i=0;i<BA.length;i++){Z=0;for(var o in BA[i])Z++;if(Z<=uA){var hA=!0;if(Z===uA){var QA=0;for(var o in BA[i])for(var R in S.remainingPrimTerms[o].implicant.imp)QA++;QA>=dA&&(hA=!1)}if(hA)for(var o in uA=Z,dA=0,BA[lA=i])for(var R in S.remainingPrimTerms[o].implicant.imp)dA++}}var wA=BA[lA];for(var pA in wA){var fA=S.remainingPrimTerms[wA[pA]];this.minimalTermPrims.push(fA),this.petrickTermPrims.push(fA)}}}if(iA){this.minimalTerm="",this.coloredMinimalTerm="";var gA=!0;for(i=0;i<this.minimalTermPrims.length;i++)gA||(this.minimalTerm+=" ∨ ",this.coloredMinimalTerm+=" ∨ "),this.minimalTerm+=this.minimalTermPrims[i].termString,this.coloredMinimalTerm+=this.minimalTermPrims[i].coloredTermString,gA=!1;0===this.minimalTermPrims.length&&(this.minimalTerm="0",this.coloredMinimalTerm="0")}else this.minimalTerm='Error: The cyclic covering problem is too large (increase the "maxProblemSize" parameter)',this.coloredMinimalTerm='Error: The cyclic covering problem is too large (increase the "maxProblemSize" parameter)'}},m=function(){this.qm=new E,this.labels=["A","B","C","D","E","F","G","H","I","J","K"],this.init=function(A){this.qm.init(A),this.clear()},this.clear=function(){var A=Math.pow(2,this.qm.noOfVars);this.qm.allowDontCare=!0;for(var e=0;e<A;e++)this.qm.setFuncData(e,0)},this.set=function(A,e){!0===e?this.qm.setFuncData(A,1):void 0===e?this.qm.setFuncData(A,2):this.qm.setFuncData(A,0)},this.compute=function(){this.qm.compute()},this.num_terms=function(){return this.qm.minimalTermPrims.length},this.expression=function(){var A=this.qm,e="",t=!0;if(0===A.minimalTermPrims.length)return"0";if(1===A.minimalTermPrims.length&&"1"===A.minimalTermPrims[0].termString)return"1";for(var r=0;r<A.minimalTermPrims.length;r++){var n;t?t=!1:e+="+",t=!0;var i=A.minimalTermPrims[r];for(var o in i.implicant.imp)t?(n=o,t=!1):o<n&&(n=o);for(var s=1<<A.noOfVars-1,a=~i.implicant.bitMask,c="",B=A.noOfVars-1;B>=0;B--){var l=A.noOfVars-B-1;(a&s)===s&&(c+=(n&s)===s?this.labels[l]:this.labels[l]+"'"),s>>=1}e+=c}return e}},F=function(){};function H(A,e){var t="undefined"!=typeof Symbol&&A[Symbol.iterator]||A["@@iterator"];if(!t){if(Array.isArray(A)||(t=function(A,e){if(!A)return;if("string"==typeof A)return v(A,e);var t=Object.prototype.toString.call(A).slice(8,-1);"Object"===t&&A.constructor&&(t=A.constructor.name);if("Map"===t||"Set"===t)return Array.from(A);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return v(A,e)}(A))||e&&A&&"number"==typeof A.length){t&&(A=t);var r=0,n=function(){};return{s:n,n:function(){return r>=A.length?{done:!0}:{done:!1,value:A[r++]}},e:function(A){throw A},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){t=t.call(A)},n:function(){var A=t.next();return o=A.done,A},e:function(A){s=!0,i=A},f:function(){try{o||null==t.return||t.return()}finally{if(s)throw i}}}}function v(A,e){(null==e||e>A.length)&&(e=A.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=A[t];return r}F.do=function(A){var e=new XMLHttpRequest;if("GET"===A.method){var t=[];for(var r in A.data)A.data.hasOwnProperty(r)&&t.push(encodeURIComponent(r)+"="+encodeURIComponent(A.data[r]));e.open("GET",A.url+"?"+t.join("&"),!0)}else e.open(A.method,A.url,!0);if(e.onload=function(){if(e.status>=200&&e.status<400)if("json"===A.dataType)try{A.success(JSON.parse(e.responseText))}catch(A){console.log(A),console.log(e.responseText)}else A.success(e.responseText);else A.error(e.xhr,e.statusText,"invalid URL")},e.onerror=function(){A.error(e.xhr,e.statusText,"server not found")},"POST"===A.method)if("application/json"===A.contentType)e.setRequestHeader("Content-Type","application/json"),e.send(JSON.stringify(A.data));else{e.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");var n=[];for(var i in A.data)A.data.hasOwnProperty(i)&&n.push(encodeURIComponent(i)+"="+encodeURIComponent(A.data[i]));e.send(n.join("&"))}else e.send()};var N=function(A){this.api=A};N.prototype.errors=function(){return void 0!==this.api.errors?this.api.errors:null},N.prototype.fetch=function(A){if(void 0===this.api.data)return[];var e=[];return this.api.data.forEach((function(t){t.type===A&&e.push(t)})),e},N.prototype.getData=function(A){if(void 0===this.api.data)return[];var e,t=H(this.api.data);try{for(t.s();!(e=t.n()).done;){var r=e.value;if(r.type===A)return r}}catch(A){t.e(A)}finally{t.f()}return null};t(893);var K=t(78),b=t(46),T=t.n(b);function I(A,e){var t="undefined"!=typeof Symbol&&A[Symbol.iterator]||A["@@iterator"];if(!t){if(Array.isArray(A)||(t=function(A,e){if(!A)return;if("string"==typeof A)return y(A,e);var t=Object.prototype.toString.call(A).slice(8,-1);"Object"===t&&A.constructor&&(t=A.constructor.name);if("Map"===t||"Set"===t)return Array.from(A);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return y(A,e)}(A))||e&&A&&"number"==typeof A.length){t&&(A=t);var r=0,n=function(){};return{s:n,n:function(){return r>=A.length?{done:!0}:{done:!1,value:A[r++]}},e:function(A){throw A},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){t=t.call(A)},n:function(){var A=t.next();return o=A.done,A},e:function(A){s=!0,i=A},f:function(){try{o||null==t.return||t.return()}finally{if(s)throw i}}}}function y(A,e){(null==e||e>A.length)&&(e=A.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=A[t];return r}var R=function(A,e){var t=this;this.main=A;var r=null,n=null,i=null,o=function(){var e=document.createElement("h3");e.innerText="Solution",r.appendChild(e);var i=document.createElement("form");r.appendChild(i);var o=document.createElement("p");i.appendChild(o);var s=document.createElement("label");o.appendChild(s),s.innerText="Enter Expression",s.appendChild(document.createElement("br")),(n=document.createElement("input")).setAttribute("type","text"),n.setAttribute("spellcheck","false"),s.appendChild(n),o=document.createElement("p"),i.appendChild(o);var a=document.createElement("button");a.classList.add("check"),a.innerText="Check",o.appendChild(a),a.addEventListener("click",(function(A){A.preventDefault(),t.check()})),o.appendChild(document.createTextNode(" "));var c=document.createElement("a");if(c.classList.add("clear"),o.appendChild(c),c.addEventListener("click",(function(A){A.preventDefault(),t.clear()})),A.options.solve){var B=document.createElement("button");B.classList.add("kmap-cl-solve"),B.innerHTML="Solve",o.appendChild(B),B.addEventListener("click",(function(A){A.preventDefault(),t.solve()}))}if(A.options.toPNG){var l=document.createElement("button");l.classList.add("kmap-cl-topng"),l.innerHTML="To PNG",o.appendChild(l),l.addEventListener("click",(function(A){A.preventDefault(),t.toPNG()}))}};this.clear=function(){null!==n&&(n.value=""),null!==i&&(i.innerHTML="")},this.check=function(){var e=!0;for(var t in A.options.minterms)e?",":e=!1,A.options.minterms[t];i.innerHTML="";var r=new Q;r.labels=A.options.labels,r.set_size(A.options.size);var o=n.value;if(null!==A.options.expressionSel){var a,c=I(document.querySelectorAll(A.options.expressionSel));try{for(c.s();!(a=c.n()).done;){a.value.value=o.replace(/(<([^>]+)>)/gi,"")}}catch(A){c.e(A)}finally{c.f()}}try{r.parse(o)}catch(A){return void s("<p>Your expression failed to parse and must not be in the correct form.</p><p>"+A+"</p>")}var B=new m;for(var l in B.labels=A.options.labels,B.init(A.options.size),A.options.minterms)B.set(A.options.minterms[l],!0);for(l in A.options.dontcare)B.set(A.options.dontcare[l],void 0);B.compute();var u=new Q;u.labels=A.options.labels,u.set_size(A.options.size),u.parse(B.expression());var d=!0;for(var l in r.minterms.minterms){var h=r.minterms.minterms[l],w=!1;for(var p in A.options.minterms)if(A.options.minterms[p]==h){w=!0;break}for(p in A.options.dontcare)if(A.options.dontcare[p]==h){w=!0;break}if(!w){d=!1;break}}for(l in A.options.minterms){for(var p in h=A.options.minterms[l],w=!1,r.minterms.minterms)if(r.minterms.minterms[p]==h){w=!0;break}if(!w){d=!1;break}}if(d)if(r.as_good_as(u)){if(i.innerHTML="<p>Your expression is correct and minimal.</p>",null!==A.options.resultSel){var f,g=I(document.querySelectorAll(A.options.resultSel));try{for(g.s();!(f=g.n()).done;){f.value.value=A.options.success}}catch(A){g.e(A)}finally{g.f()}}if(null!==A.options.testAPI){var U={minterms:A.options.minterms,dontcares:A.options.dontcares,answer:n.value},C={cmd:"test",result:A.options.success,data:JSON.stringify(U),type:"application/json"};null!==A.options.name&&(C.name=A.options.name),null!==A.options.appTag&&(C.appTag=A.options.appTag),F.do({url:A.options.testAPI,data:C,method:"POST",dataType:"json",contentType:A.options.contentType,success:function(A){new N(A);i.innerHTML="<p>Your expression is correct and minimal.<br><em>Test result successfully sent to server.</em></p>"},error:function(A,e,t){i.innerHTML="<p>Your expression is correct and minimal.<br><em>Unable to communicate with server: "+t+"</em></p>"}})}}else A.options.verbose?s('<p>Your expression is not minimal. A minimal solution for this problem is:</p><p class="small">'+B.expression()+"</p>"):s("<p>Your expression is not minimal.</p>");else{if(A.options.verbose){var E="<p>Your expression is not a valid solution for this set of minterms. The minterms for your expression have been computed as: </p>";r.minterms.minterms.length>0?E+='<p class="center small">'+r.minterms.list()+"</p>":E+='<p class="center small">none</p>'}else E="<p>Your expression is not a valid solution for this set of minterms.</p>";s(E)}},this.solve=function(){var e=this.minimumExpression();null!==i&&(i.innerHTML='<p class="center">'+e.expression()+"</p>"),A.work.map.clear();var t=A.work.groups;t.clear();var r=e.expression().split("+"),n=new Q;n.labels=A.options.labels,n.set_size(A.options.size);for(var o=0;o<r.length;o++){var s=r[o];n.parse(s),t.add_group(n.minterms.minterms)}t.drawGroups()};var s=function(e){if(i.innerHTML=e,null!==A.options.resultSel){var t,r=I(document.querySelectorAll(A.options.resultSel));try{for(r.s();!(t=r.n()).done;){t.value.value="fail"}}catch(A){r.e(A)}finally{r.f()}}};this.minimumExpression=function(){var A=new m;for(var e in A.labels=this.main.options.labels,A.init(this.main.options.size),this.main.options.minterms)A.set(this.main.options.minterms[e],!0);for(e in this.main.options.dontcare)A.set(this.main.options.dontcare[e],void 0);return A.compute(),A},this.toPNG=function(){var e=this;T()(A.element).then((function(t){var r="k"+e.main.options.size;A.minterms.dontcare.length>0&&(r+="x"),r+="-";var n,i=I(A.minterms.minterms);try{for(i.s();!(n=i.n()).done;){var o=n.value;r+=new Number(o).toString(16)}}catch(A){i.e(A)}finally{i.f()}if(A.minterms.dontcare.length>0){r+="-";var s,a=I(A.minterms.dontcare);try{for(a.s();!(s=a.n()).done;){var c=s.value;r+=new Number(c).toString(16)}}catch(A){a.e(A)}finally{a.f()}}r+=".png",t.toBlob((function(A){(0,K.Z)(A,r)}))}))},(A.options.solution||A.options.solved)&&((r=document.createElement("div")).classList.add("kmap-cl-solution"),e.append(r),A.options.solution&&!A.options.solved&&o(),i=document.createElement("div"),r.appendChild(i))},O=function(A,e){var t,r,n,i=A.options.labels;function o(A){var e=A.replace(/m/g,"").split(/[, ]+/g),t=[];return e.forEach((function(A){""!==A&&t.push(parseInt(A))})),t}!function(){var s=document.createElement("div");s.classList.add("kmap-cl-manual"),e.appendChild(s);var a=document.createElement("h3");a.innerHTML="Manual Entry",s.appendChild(a);var c=document.createElement("form");s.appendChild(c);var B=document.createElement("div");c.appendChild(B);var l=document.createElement("p");B.appendChild(l);var u=document.createElement("label");l.appendChild(u),u.innerText="Minterms: ",u.appendChild(document.createElement("br")),(t=document.createElement("input")).setAttribute("type","text"),t.setAttribute("spellcheck","false"),u.appendChild(t),l=document.createElement("p"),B.appendChild(l),u=document.createElement("label"),l.appendChild(u),u.innerText="Don't cares: ",u.appendChild(document.createElement("br")),(r=document.createElement("input")).setAttribute("type","text"),r.setAttribute("spellcheck","false"),u.appendChild(r),l=document.createElement("p"),B.appendChild(l);var d=document.createElement("button");l.appendChild(d),d.innerText="Take";var h=document.createElement("div");c.appendChild(h),l=document.createElement("p"),h.appendChild(l),u=document.createElement("label"),l.appendChild(u),u.innerText="Labels: ",u.appendChild(document.createElement("br")),(n=document.createElement("input")).setAttribute("type","text"),n.setAttribute("spellcheck","false"),u.appendChild(n),n.value=i,d.addEventListener("click",(function(e){e.preventDefault();var i=o(t.value),s=o(r.value),a=n.value.replace(/(<([^>]+)>)/gi,"");A.options.labels=a.split(","),A.set(i,s)}))}()},L=function(A,e){var t=this;this.options=A.options,this.element=e,e.innerHTML="",e.classList.add("kmap-cl"),this.minterms=new h,this.work=null,this.generator=null,this.solution=null,this.manual=null,this.initialize=function(){t.options.generator&&(t.generator=new d(t,e)),t.options.manual&&(t.manual=new O(t,e)),t.options.map&&(t.work=new u(t,e)),t.solution=new R(t,e),0===t.options.minterms.length?t.generate():t.set(t.options.minterms,t.options.dontcare),t.options.solved&&t.solution.solve()},this.generate=function(){if(this.minterms.size=this.options.size,this.options.genDontCare){var A=8;switch(this.options.size){case 2:A=2;break;case 3:A=4}this.minterms.generate_bounded(.5,1,Math.pow(2,this.options.size)-1,.2,1,A),r()}else this.minterms.generate_bounded(.5,1,Math.pow(2,this.options.size)-1),r()},this.set=function(A,e){this.minterms.set_from(A,e),r()};var r=function(){null!==t.solution&&t.solution.clear(),t.options.minterms=t.minterms.minterms.slice(),t.options.dontcare=t.minterms.dontcare.slice(),null!==t.work&&t.work.render(),null!==t.generator&&t.generator.refresh()};this.newSize=function(A){this.options.size=A,this.generate()},this.initialize()},S=function(A,e){var r=this,o=t(306);this.version=o.version,this.options=new i(e);var s=[];this.start=function(){n.go((function(){r.startNow()}))},this.startNow=function(){if(A instanceof Element){var e=new L(r,A);s.push(e)}else for(var t=document.querySelectorAll(A),n=0;n<t.length;n++){var i=t[n],o=new L(r,i);s.push(o)}return 1===s.length?s[0]:null}};n.go((function(){for(var A=document.querySelectorAll("div.kmap-cl-install"),e=0;e<A.length;e++){var t=A[e];t.classList.remove("kmap-cl-install");var r=t.textContent;t.innerHTML="",new S(t,r).startNow(),t.style.display="block"}}))},893:function(){!function(A){"use strict";if(A.URL=A.URL||A.webkitURL,A.Blob&&A.URL)try{return void new Blob}catch(A){}var e=A.BlobBuilder||A.WebKitBlobBuilder||A.MozBlobBuilder||function(A){var e=function(A){return Object.prototype.toString.call(A).match(/^\[object\s(.*)\]$/)[1]},t=function(){this.data=[]},r=function(A,e,t){this.data=A,this.size=A.length,this.type=e,this.encoding=t},n=t.prototype,i=r.prototype,o=A.FileReaderSync,s=function(A){this.code=this[this.name=A]},a="NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR".split(" "),c=a.length,B=A.URL||A.webkitURL||A,l=B.createObjectURL,u=B.revokeObjectURL,d=B,h=A.btoa,Q=A.atob,w=A.ArrayBuffer,p=A.Uint8Array,f=/^[\w-]+:\/*\[?[\w\.:-]+\]?(?::[0-9]+)?/;for(r.fake=i.fake=!0;c--;)s.prototype[a[c]]=c+1;return B.createObjectURL||(d=A.URL=function(A){var e,t=document.createElementNS("http://www.w3.org/1999/xhtml","a");return t.href=A,"origin"in t||("data:"===t.protocol.toLowerCase()?t.origin=null:(e=A.match(f),t.origin=e&&e[1])),t}),d.createObjectURL=function(A){var e,t=A.type;return null===t&&(t="application/octet-stream"),A instanceof r?(e="data:"+t,"base64"===A.encoding?e+";base64,"+A.data:"URI"===A.encoding?e+","+decodeURIComponent(A.data):h?e+";base64,"+h(A.data):e+","+encodeURIComponent(A.data)):l?l.call(B,A):void 0},d.revokeObjectURL=function(A){"data:"!==A.substring(0,5)&&u&&u.call(B,A)},n.append=function(A){var t=this.data;if(p&&(A instanceof w||A instanceof p)){for(var n="",i=new p(A),a=0,c=i.length;a<c;a++)n+=String.fromCharCode(i[a]);t.push(n)}else if("Blob"===e(A)||"File"===e(A)){if(!o)throw new s("NOT_READABLE_ERR");var B=new o;t.push(B.readAsBinaryString(A))}else A instanceof r?"base64"===A.encoding&&Q?t.push(Q(A.data)):"URI"===A.encoding?t.push(decodeURIComponent(A.data)):"raw"===A.encoding&&t.push(A.data):("string"!=typeof A&&(A+=""),t.push(unescape(encodeURIComponent(A))))},n.getBlob=function(A){return arguments.length||(A=null),new r(this.data.join(""),A,"raw")},n.toString=function(){return"[object BlobBuilder]"},i.slice=function(A,e,t){var n=arguments.length;return n<3&&(t=null),new r(this.data.slice(A,n>1?e:this.data.length),t,this.encoding)},i.toString=function(){return"[object Blob]"},i.close=function(){this.size=0,delete this.data},t}(A);A.Blob=function(A,t){var r=t&&t.type||"",n=new e;if(A)for(var i=0,o=A.length;i<o;i++)Uint8Array&&A[i]instanceof Uint8Array?n.append(A[i].buffer):n.append(A[i]);var s=n.getBlob(r);return!s.slice&&s.webkitSlice&&(s.slice=s.webkitSlice),s};var t=Object.getPrototypeOf||function(A){return A.__proto__};A.Blob.prototype=t(new A.Blob)}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content||this)},78:(A,e,t)=>{"use strict";t.d(e,{Z:()=>n}),A=t.hmd(A);var r=r||function(A){if(!(void 0===A||"undefined"!=typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent))){var e=A.document,t=function(){return A.URL||A.webkitURL||A},r=e.createElementNS("http://www.w3.org/1999/xhtml","a"),n="download"in r,i=/constructor/i.test(A.HTMLElement),o=/CriOS\/[\d]+/.test(navigator.userAgent),s=function(e){(A.setImmediate||A.setTimeout)((function(){throw e}),0)},a=function(A){setTimeout((function(){"string"==typeof A?t().revokeObjectURL(A):A.remove()}),4e4)},c=function(A){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(A.type)?new Blob([String.fromCharCode(65279),A],{type:A.type}):A},B=function(e,B,l){l||(e=c(e));var u,d=this,h="application/octet-stream"===e.type,Q=function(){!function(A,e,t){for(var r=(e=[].concat(e)).length;r--;){var n=A["on"+e[r]];if("function"==typeof n)try{n.call(A,t||A)}catch(A){s(A)}}}(d,"writestart progress write writeend".split(" "))};if(d.readyState=d.INIT,n)return u=t().createObjectURL(e),void setTimeout((function(){var A,e;r.href=u,r.download=B,A=r,e=new MouseEvent("click"),A.dispatchEvent(e),Q(),a(u),d.readyState=d.DONE}));!function(){if((o||h&&i)&&A.FileReader){var r=new FileReader;return r.onloadend=function(){var e=o?r.result:r.result.replace(/^data:[^;]*;/,"data:attachment/file;");A.open(e,"_blank")||(A.location.href=e),e=void 0,d.readyState=d.DONE,Q()},r.readAsDataURL(e),void(d.readyState=d.INIT)}(u||(u=t().createObjectURL(e)),h)?A.location.href=u:A.open(u,"_blank")||(A.location.href=u);d.readyState=d.DONE,Q(),a(u)}()},l=B.prototype;return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(A,e,t){return e=e||A.name||"download",t||(A=c(A)),navigator.msSaveOrOpenBlob(A,e)}:(l.abort=function(){},l.readyState=l.INIT=0,l.WRITING=1,l.DONE=2,l.error=l.onwritestart=l.onprogress=l.onwrite=l.onabort=l.onerror=l.onwriteend=null,function(A,e,t){return new B(A,e||A.name||"download",t)})}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||(void 0).content);A.exports?A.exports.saveAs=r:"undefined"!=typeof define&&null!==define&&null!==t.amdO&&define([],(function(){return r}));const n=r},750:(A,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>B});var r=t(582),n=t.n(r),i=t(673),o=t.n(i),s=t(914),a=n()((function(A){return A[1]})),c=o()(s.Z);a.push([A.id,'div.kmap-cl-install{display:none}div.kmap-cl{position:relative;margin:1em auto;max-width:650px}div.kmap-cl h3{border-bottom:1px solid #000;font-size:1.2em;font-family:sans-serif;margin:1em 0 .5em 0;text-align:left !important}div.kmap-cl button{margin:0;padding:.15em 1em;font-size:.9em;min-width:6em}div.kmap-cl td{cursor:pointer}div.kmap-cl-work{position:relative;display:table;margin:0 auto;padding:0;box-sizing:border-box;border:1px solid #000}div.kmap-cl-dlg{position:absolute;background-color:transparent;top:0;left:0;bottom:0;right:0;font-family:"Trebuchet MS","Lucida Grande","Lucida Sans Unicode","Lucida Sans",sans-serif}div.kmap-cl-dlg>div:first-child{position:absolute;background-color:#fff;opacity:.5;top:0;left:0;bottom:0;right:0;z-index:2}div.kmap-cl-dlg>div:nth-child(2){position:relative;top:50%;opacity:1;z-index:10;width:50%;margin:0 auto;transform:perspective(1px) translateY(-50%);border:1px solid #000;background:#fff}div.kmap-cl-dlg>div:nth-child(2)>div:first-child{margin:0;background:green;color:#fff;padding:.25em;font-size:1.1em}div.kmap-cl-dlg>div:nth-child(2)>div:nth-child(2){padding:.5em}div.kmap-cl-dlg>div:nth-child(2)>div:nth-child(3){padding:.5em;text-align:right}div.kmap-cl-dlg>div:nth-child(2)>div:nth-child(3) button{width:8em;padding:.5em 1em}div.kmap-cl-work>div:first-child{position:relative;display:table-cell;padding:1em 0 0 0;vertical-align:top;width:12em;max-width:12em;text-align:center;background:green}div.kmap-cl-work>div:first-child button{width:9em;margin:0;height:2em;padding:0;font-size:.9em}div.kmap-cl-work>div:first-child .list{position:absolute;padding:0;margin:0;overflow-y:auto;top:4em;left:0;right:0;bottom:0}div.kmap-cl-work>div:first-child .list .group{position:relative;display:inline-block;box-sizing:border-box;width:100%;height:3.2em;font-size:.8em;word-wrap:break-word;margin:.25em 0;text-align:left;padding:.25em;color:#fff}div.kmap-cl-work>div:first-child .list .group span{position:absolute;display:block;right:.25em;bottom:.25em}div.kmap-cl-work>div:first-child .list .group a{display:inline-block;width:16px;height:16px;background-image:url('+c+")}div.kmap-cl-work>div:nth-child(2){position:relative;display:table-cell;padding:1em 2em 1em 1em;min-width:25em;background:#fff}div.kmap-cl-work>div:nth-child(2) canvas{background-color:transparent;position:absolute;z-index:10;pointer-events:none}table.kmap-cl{background:none;border-collapse:collapse;box-shadow:none;border:0}table.kmap-cl input{width:3em;text-align:center}table.kmap-cl tr{border:0;vertical-align:middle}table.kmap-cl th,table.kmap-cl td{background:#fff;text-shadow:none;font-weight:normal;color:#000;padding:.25em;vertical-align:middle}table.kmap-cl tr th{border:0;width:4em;height:4em}table.kmap-cl td{position:relative;border:1px solid #000;width:4em;height:4em;vertical-align:middle;text-align:center}table.kmap-cl td span.minterm{position:absolute;top:.15em;left:.25em;font-size:.75em}table.kmap-cl td.kmap-cl-selected{background:#ff0}table.kmap-cl tr:first-child th{color:#000;background:#fff;text-shadow:none;border:0;font-weight:normal;padding:.25em;font-family:Helvetica,Arial,sans-serif;text-decoration:none}table.kmap-cl tr:first-child th:not(:first-child){text-align:center;vertical-align:bottom}table.kmap-cl tr:first-child th:first-child{border:0;position:relative}table.kmap-cl tr:first-child th:first-child .kmap-cl-left{position:absolute;bottom:0;right:1.5em}table.kmap-cl tr:first-child th:first-child .kmap-cl-right{position:absolute;bottom:1.5em;right:0}table.kmap-cl tr:first-child th:first-child .kmap-cl-line{width:4em;height:1px;background-color:transparent;border-bottom:1px solid #000;-webkit-transform:translate(2em) rotate(45deg) translate(-2em);transform:translate(2em) rotate(45deg) translate(-2em);position:absolute;right:0;bottom:0}table.kmap-cl tr:not(:first-child) th{text-align:right}div.kmap-cl-generator{margin:0 auto}div.kmap-cl-generator form{max-width:100%;position:relative}div.kmap-cl-generator p{position:relative;margin:.75em 0;padding-top:.25em;text-align:left}div.kmap-cl-generator p span{padding-left:.5em;font-size:.85em;position:absolute;width:100%;top:50%;transform:translateY(-50%)}div.kmap-cl-solution a{display:inline-block;width:16px;height:16px;background-image:url("+c+")}div.kmap-cl-solution button{width:8em}div.kmap-cl-solution button.kmap-cl-solve{display:inline-block;float:right}div.kmap-cl-solution button.kmap-cl-topng{display:inline-block;f