diff --git a/index.html b/index.html index 5d755bb..c7ec656 100644 --- a/index.html +++ b/index.html @@ -2,4 +2,4 @@

You're using an outdated browser. Please upgrade your browser to improve your experience and security.

-
\ No newline at end of file +
\ No newline at end of file diff --git a/static/js/main.9a635e99.js b/static/js/main.6283b909.js similarity index 64% rename from static/js/main.9a635e99.js rename to static/js/main.6283b909.js index a735de4..6081741 100644 --- a/static/js/main.9a635e99.js +++ b/static/js/main.6283b909.js @@ -1,2 +1,2 @@ -!function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var n={};return e.m=t,e.c=n,e.p="/sudoku/",e(0)}(function(t){for(var e in t)if(Object.prototype.hasOwnProperty.call(t,e))switch(typeof t[e]){case"function":break;case"object":t[e]=function(e){var n=e.slice(1),r=t[e[0]];return function(t,e,o){r.apply(this,[t,e,o].concat(n))}}(t[e]);break;default:t[e]=t[t[e]]}return t}([function(t,e,n){n(13),t.exports=n(9)},function(t,e,n){!function(){"use strict";function e(){}function n(t,n){var r,o,i,a,u=N;for(a=arguments.length;a-- >2;)I.push(arguments[a]);for(n&&null!=n.children&&(I.length||I.push(n.children),delete n.children);I.length;)if((o=I.pop())&&void 0!==o.pop)for(a=o.length;a--;)I.push(o[a]);else"boolean"==typeof o&&(o=null),(i="function"!=typeof t)&&(null==o?o="":"number"==typeof o?o=String(o):"string"!=typeof o&&(i=!1)),i&&r?u[u.length-1]+=o:u===N?u=[o]:u.push(o),r=i;var s=new e;return s.nodeName=t,s.children=u,s.attributes=null==n?void 0:n,s.key=null==n?void 0:n.key,void 0!==U.vnode&&U.vnode(s),s}function r(t,e){for(var n in e)t[n]=e[n];return t}function o(t,e){return n(t.nodeName,r(r({},t.attributes),e),arguments.length>2?[].slice.call(arguments,2):t.children)}function i(t){!t.__d&&(t.__d=!0)&&1==z.push(t)&&(U.debounceRendering||R)(a)}function a(){var t,e=z;for(z=[];t=e.pop();)t.__d&&E(t)}function u(t,e,n){return"string"==typeof e||"number"==typeof e?void 0!==t.splitText:"string"==typeof e.nodeName?!t._componentConstructor&&s(t,e.nodeName):n||t._componentConstructor===e.nodeName}function s(t,e){return t.__n===e||t.nodeName.toLowerCase()===e.toLowerCase()}function l(t){var e=r({},t.attributes);e.children=t.children;var n=t.nodeName.defaultProps;if(void 0!==n)for(var o in n)void 0===e[o]&&(e[o]=n[o]);return e}function c(t,e){var n=e?document.createElementNS("http://www.w3.org/2000/svg",t):document.createElement(t);return n.__n=t,n}function f(t){var e=t.parentNode;e&&e.removeChild(t)}function p(t,e,n,r,o){if("className"===e&&(e="class"),"key"===e);else if("ref"===e)n&&n(null),r&&r(t);else if("class"!==e||o)if("style"===e){if(r&&"string"!=typeof r&&"string"!=typeof n||(t.style.cssText=r||""),r&&"object"==typeof r){if("string"!=typeof n)for(var i in n)i in r||(t.style[i]="");for(var i in r)t.style[i]="number"==typeof r[i]&&!1===D.test(i)?r[i]+"px":r[i]}}else if("dangerouslySetInnerHTML"===e)r&&(t.innerHTML=r.__html||"");else if("o"==e[0]&&"n"==e[1]){var a=e!==(e=e.replace(/Capture$/,""));e=e.toLowerCase().substring(2),r?n||t.addEventListener(e,h,a):t.removeEventListener(e,h,a),(t.__l||(t.__l={}))[e]=r}else if("list"!==e&&"type"!==e&&!o&&e in t)d(t,e,null==r?"":r),null!=r&&!1!==r||t.removeAttribute(e);else{var u=o&&e!==(e=e.replace(/^xlink\:?/,""));null==r||!1===r?u?t.removeAttributeNS("http://www.w3.org/1999/xlink",e.toLowerCase()):t.removeAttribute(e):"function"!=typeof r&&(u?t.setAttributeNS("http://www.w3.org/1999/xlink",e.toLowerCase(),r):t.setAttribute(e,r))}else t.className=r||""}function d(t,e,n){try{t[e]=n}catch(r){}}function h(t){return this.__l[t.type](U.event&&U.event(t)||t)}function _(){for(var t;t=L.pop();)U.afterMount&&U.afterMount(t),t.componentDidMount&&t.componentDidMount()}function y(t,e,n,r,o,i){A++||(M=null!=o&&void 0!==o.ownerSVGElement,B=null!=t&&!("__preactattr_"in t));var a=v(t,e,n,r,i);return o&&a.parentNode!==o&&o.appendChild(a),--A||(B=!1,i||_()),a}function v(t,e,n,r,o){var i=t,a=M;if(null!=e&&"boolean"!=typeof e||(e=""),"string"==typeof e||"number"==typeof e)return t&&void 0!==t.splitText&&t.parentNode&&(!t._component||o)?t.nodeValue!=e&&(t.nodeValue=e):(i=document.createTextNode(e),t&&(t.parentNode&&t.parentNode.replaceChild(i,t),b(t,!0))),i.__preactattr_=!0,i;var u=e.nodeName;if("function"==typeof u)return C(t,e,n,r);if(M="svg"===u||"foreignObject"!==u&&M,u=String(u),(!t||!s(t,u))&&(i=c(u,M),t)){for(;t.firstChild;)i.appendChild(t.firstChild);t.parentNode&&t.parentNode.replaceChild(i,t),b(t,!0)}var l=i.firstChild,f=i.__preactattr_,p=e.children;if(null==f){f=i.__preactattr_={};for(var d=i.attributes,h=d.length;h--;)f[d[h].name]=d[h].value}return!B&&p&&1===p.length&&"string"==typeof p[0]&&null!=l&&void 0!==l.splitText&&null==l.nextSibling?l.nodeValue!=p[0]&&(l.nodeValue=p[0]):(p&&p.length||null!=l)&&m(i,p,n,r,B||null!=f.dangerouslySetInnerHTML),g(i,e.attributes,f),M=a,i}function m(t,e,n,r,o){var i,a,s,l,c,p=t.childNodes,d=[],h={},_=0,y=0,m=p.length,w=0,g=e?e.length:0;if(0!==m)for(var x=0;xc){for(var e=0,n=u.length-l;e0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e?t:t.slice(),r=n.length-1;r>0;r--){var o=Math.floor(Math.random()*(r+1)),i=n[r];n[r]=n[o],n[o]=i}return n},i=function(){return o(r.SUDOKU_DIGITS)},a=function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=n.length-1;r>-1;r--)for(var o=n[r].length-1;o>-1;o--){var i=e[o];if(i===n[r][o])return!1;var a=6;t<3?a=0:t<6&&(a=3);var u=6;o<3?u=0:o<6&&(u=3);for(var s=[],l=0;l<3;l++)n[a+l]instanceof Array&&(s=s.concat(n[a+l].slice(u,u+3)));if(s.indexOf(i)!==-1)return!1}return!0},u=function t(){for(var e=[i()],n=0,o=1;o<8;o++)for(;;){var u=i();if(a(o,u,e)){e[o]=u,n=0;break}if(n++,n>2e5)return t()}for(var s=e.reduce(function(t,e,n){return e.forEach(function(e,r){t[r]=t[r]||[],t[r][n]=e}),t},[]),l=[],c=r.SUDOKU_LARGEST_DIGIT;c>0;c--)for(var f=s.length-1;f>-1;f--)if(s[f].indexOf(c)===-1){l[f]=c;break}return e.push(l),e},s=function(t){var e=u(),n=e.map(function(e){return e.slice().map(function(e){return Math.random()>t?e:null})});return{puzzle:n,solution:e}};e.default=s},function(t,e,n){"use strict";var r=n(1),o=function(){n(3);var t=n(6);(0,r.render)((0,r.h)(t,null),document.getElementById("root"))};window.requirejs(["https://cdn.polyfill.io/v2/polyfill.min.js?features=es5&flags=gated"],o,o)},function(t,e){},10,function(t,e){"use strict";function n(t){if(null===t||void 0===t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function r(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(e).map(function(t){return e[t]});if("0123456789"!==r.join(""))return!1;var o={};return"abcdefghijklmnopqrst".split("").forEach(function(t){o[t]=t}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},o)).join("")}catch(i){return!1}}var o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;t.exports=r()?Object.assign:function(t,e){for(var r,a,u=n(t),s=1;s-1?e:t}function f(t,e){e=e||{};var n=e.body;if(f.prototype.isPrototypeOf(t)){if(t.bodyUsed)throw new TypeError("Already read");this.url=t.url,this.credentials=t.credentials,e.headers||(this.headers=new o(t.headers)),this.method=t.method,this.mode=t.mode,n||(n=t._bodyInit,t.bodyUsed=!0)}else this.url=t;if(this.credentials=e.credentials||this.credentials||"omit",!e.headers&&this.headers||(this.headers=new o(e.headers)),this.method=c(e.method||this.method||"GET"),this.mode=e.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&n)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(n)}function p(t){var e=new FormData;return t.trim().split("&").forEach(function(t){if(t){var n=t.split("="),r=n.shift().replace(/\+/g," "),o=n.join("=").replace(/\+/g," ");e.append(decodeURIComponent(r),decodeURIComponent(o))}}),e}function d(t){var e=new o,n=(t.getAllResponseHeaders()||"").trim().split("\n");return n.forEach(function(t){var n=t.trim().split(":"),r=n.shift().trim(),o=n.join(":").trim();e.append(r,o)}),e}function h(t,e){e||(e={}),this.type="default",this.status=e.status,this.ok=this.status>=200&&this.status<300,this.statusText=e.statusText,this.headers=e.headers instanceof o?e.headers:new o(e.headers),this.url=e.url||"",this._initBody(t)}if(!t.fetch){var _={searchParams:"URLSearchParams"in t,iterable:"Symbol"in t&&"iterator"in Symbol,blob:"FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch(t){return!1}}(),formData:"FormData"in t,arrayBuffer:"ArrayBuffer"in t};o.prototype.append=function(t,r){t=e(t),r=n(r);var o=this.map[t];o||(o=[],this.map[t]=o),o.push(r)},o.prototype.delete=function(t){delete this.map[e(t)]},o.prototype.get=function(t){var n=this.map[e(t)];return n?n[0]:null},o.prototype.getAll=function(t){return this.map[e(t)]||[]},o.prototype.has=function(t){return this.map.hasOwnProperty(e(t))},o.prototype.set=function(t,r){this.map[e(t)]=[n(r)]},o.prototype.forEach=function(t,e){Object.getOwnPropertyNames(this.map).forEach(function(n){this.map[n].forEach(function(r){t.call(e,r,n,this)},this)},this)},o.prototype.keys=function(){var t=[];return this.forEach(function(e,n){t.push(n)}),r(t)},o.prototype.values=function(){var t=[];return this.forEach(function(e){t.push(e)}),r(t)},o.prototype.entries=function(){var t=[];return this.forEach(function(e,n){t.push([n,e])}),r(t)},_.iterable&&(o.prototype[Symbol.iterator]=o.prototype.entries);var y=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];f.prototype.clone=function(){return new f(this)},l.call(f.prototype),l.call(h.prototype),h.prototype.clone=function(){return new h(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new o(this.headers),url:this.url})},h.error=function(){var t=new h(null,{status:0,statusText:""});return t.type="error",t};var v=[301,302,303,307,308];h.redirect=function(t,e){if(v.indexOf(e)===-1)throw new RangeError("Invalid status code");return new h(null,{status:e,headers:{location:t}})},t.Headers=o,t.Request=f,t.Response=h,t.fetch=function(t,e){return new Promise(function(n,r){function o(){return"responseURL"in a?a.responseURL:/^X-Request-URL:/m.test(a.getAllResponseHeaders())?a.getResponseHeader("X-Request-URL"):void 0}var i;i=f.prototype.isPrototypeOf(t)&&!e?t:new f(t,e);var a=new XMLHttpRequest;a.onload=function(){var t={status:a.status,statusText:a.statusText,headers:d(a),url:o()},e="response"in a?a.response:a.responseText;n(new h(e,t))},a.onerror=function(){r(new TypeError("Network request failed"))},a.ontimeout=function(){r(new TypeError("Network request failed"))},a.open(i.method,i.url,!0),"include"===i.credentials&&(a.withCredentials=!0),"responseType"in a&&_.blob&&(a.responseType="blob"),i.headers.forEach(function(t,e){a.setRequestHeader(e,t)}),a.send("undefined"==typeof i._bodyInit?null:i._bodyInit)})},t.fetch.polyfill=!0}}("undefined"!=typeof self?self:this)}])); -//# sourceMappingURL=main.9a635e99.js.map \ No newline at end of file +!function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var n={};return e.m=t,e.c=n,e.p="/sudoku/",e(0)}(function(t){for(var e in t)if(Object.prototype.hasOwnProperty.call(t,e))switch(typeof t[e]){case"function":break;case"object":t[e]=function(e){var n=e.slice(1),r=t[e[0]];return function(t,e,o){r.apply(this,[t,e,o].concat(n))}}(t[e]);break;default:t[e]=t[t[e]]}return t}([function(t,e,n){n(13),t.exports=n(9)},function(t,e,n){!function(){"use strict";function e(){}function n(t,n){var r,o,i,a,u=N;for(a=arguments.length;a-- >2;)I.push(arguments[a]);for(n&&null!=n.children&&(I.length||I.push(n.children),delete n.children);I.length;)if((o=I.pop())&&void 0!==o.pop)for(a=o.length;a--;)I.push(o[a]);else"boolean"==typeof o&&(o=null),(i="function"!=typeof t)&&(null==o?o="":"number"==typeof o?o=String(o):"string"!=typeof o&&(i=!1)),i&&r?u[u.length-1]+=o:u===N?u=[o]:u.push(o),r=i;var s=new e;return s.nodeName=t,s.children=u,s.attributes=null==n?void 0:n,s.key=null==n?void 0:n.key,void 0!==U.vnode&&U.vnode(s),s}function r(t,e){for(var n in e)t[n]=e[n];return t}function o(t,e){return n(t.nodeName,r(r({},t.attributes),e),arguments.length>2?[].slice.call(arguments,2):t.children)}function i(t){!t.__d&&(t.__d=!0)&&1==z.push(t)&&(U.debounceRendering||R)(a)}function a(){var t,e=z;for(z=[];t=e.pop();)t.__d&&E(t)}function u(t,e,n){return"string"==typeof e||"number"==typeof e?void 0!==t.splitText:"string"==typeof e.nodeName?!t._componentConstructor&&s(t,e.nodeName):n||t._componentConstructor===e.nodeName}function s(t,e){return t.__n===e||t.nodeName.toLowerCase()===e.toLowerCase()}function l(t){var e=r({},t.attributes);e.children=t.children;var n=t.nodeName.defaultProps;if(void 0!==n)for(var o in n)void 0===e[o]&&(e[o]=n[o]);return e}function c(t,e){var n=e?document.createElementNS("http://www.w3.org/2000/svg",t):document.createElement(t);return n.__n=t,n}function f(t){var e=t.parentNode;e&&e.removeChild(t)}function p(t,e,n,r,o){if("className"===e&&(e="class"),"key"===e);else if("ref"===e)n&&n(null),r&&r(t);else if("class"!==e||o)if("style"===e){if(r&&"string"!=typeof r&&"string"!=typeof n||(t.style.cssText=r||""),r&&"object"==typeof r){if("string"!=typeof n)for(var i in n)i in r||(t.style[i]="");for(var i in r)t.style[i]="number"==typeof r[i]&&!1===D.test(i)?r[i]+"px":r[i]}}else if("dangerouslySetInnerHTML"===e)r&&(t.innerHTML=r.__html||"");else if("o"==e[0]&&"n"==e[1]){var a=e!==(e=e.replace(/Capture$/,""));e=e.toLowerCase().substring(2),r?n||t.addEventListener(e,h,a):t.removeEventListener(e,h,a),(t.__l||(t.__l={}))[e]=r}else if("list"!==e&&"type"!==e&&!o&&e in t)d(t,e,null==r?"":r),null!=r&&!1!==r||t.removeAttribute(e);else{var u=o&&e!==(e=e.replace(/^xlink\:?/,""));null==r||!1===r?u?t.removeAttributeNS("http://www.w3.org/1999/xlink",e.toLowerCase()):t.removeAttribute(e):"function"!=typeof r&&(u?t.setAttributeNS("http://www.w3.org/1999/xlink",e.toLowerCase(),r):t.setAttribute(e,r))}else t.className=r||""}function d(t,e,n){try{t[e]=n}catch(r){}}function h(t){return this.__l[t.type](U.event&&U.event(t)||t)}function _(){for(var t;t=L.pop();)U.afterMount&&U.afterMount(t),t.componentDidMount&&t.componentDidMount()}function y(t,e,n,r,o,i){A++||(M=null!=o&&void 0!==o.ownerSVGElement,B=null!=t&&!("__preactattr_"in t));var a=v(t,e,n,r,i);return o&&a.parentNode!==o&&o.appendChild(a),--A||(B=!1,i||_()),a}function v(t,e,n,r,o){var i=t,a=M;if(null!=e&&"boolean"!=typeof e||(e=""),"string"==typeof e||"number"==typeof e)return t&&void 0!==t.splitText&&t.parentNode&&(!t._component||o)?t.nodeValue!=e&&(t.nodeValue=e):(i=document.createTextNode(e),t&&(t.parentNode&&t.parentNode.replaceChild(i,t),b(t,!0))),i.__preactattr_=!0,i;var u=e.nodeName;if("function"==typeof u)return C(t,e,n,r);if(M="svg"===u||"foreignObject"!==u&&M,u=String(u),(!t||!s(t,u))&&(i=c(u,M),t)){for(;t.firstChild;)i.appendChild(t.firstChild);t.parentNode&&t.parentNode.replaceChild(i,t),b(t,!0)}var l=i.firstChild,f=i.__preactattr_,p=e.children;if(null==f){f=i.__preactattr_={};for(var d=i.attributes,h=d.length;h--;)f[d[h].name]=d[h].value}return!B&&p&&1===p.length&&"string"==typeof p[0]&&null!=l&&void 0!==l.splitText&&null==l.nextSibling?l.nodeValue!=p[0]&&(l.nodeValue=p[0]):(p&&p.length||null!=l)&&m(i,p,n,r,B||null!=f.dangerouslySetInnerHTML),g(i,e.attributes,f),M=a,i}function m(t,e,n,r,o){var i,a,s,l,c,p=t.childNodes,d=[],h={},_=0,y=0,m=p.length,w=0,g=e?e.length:0;if(0!==m)for(var x=0;xc){for(var e=0,n=u.length-l;e0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e?t:t.slice(),r=n.length-1;r>0;r--){var o=Math.floor(Math.random()*(r+1)),i=n[r];n[r]=n[o],n[o]=i}return n},i=function(){return o(r.SUDOKU_DIGITS)},a=function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=n.length-1;r>-1;r--)for(var o=n[r].length-1;o>-1;o--){var i=e[o];if(i===n[r][o])return!1;var a=6;t<3?a=0:t<6&&(a=3);var u=6;o<3?u=0:o<6&&(u=3);for(var s=[],l=0;l<3;l++)n[a+l]instanceof Array&&(s=s.concat(n[a+l].slice(u,u+3)));if(s.indexOf(i)!==-1)return!1}return!0},u=function t(){for(var e=[i()],n=0,o=1;o<8;o++)for(;;){var u=i();if(a(o,u,e)){e[o]=u,n=0;break}if(n++,n>2e5)return t()}for(var s=e.reduce(function(t,e,n){return e.forEach(function(e,r){t[r]=t[r]||[],t[r][n]=e}),t},[]),l=[],c=r.SUDOKU_LARGEST_DIGIT;c>0;c--)for(var f=s.length-1;f>-1;f--)if(s[f].indexOf(c)===-1){l[f]=c;break}return e.push(l),e},s=function(t){var e=u(),n=e.map(function(e){return e.slice().map(function(e){return Math.random()>t?e:null})});return{puzzle:n,solution:e}};e.default=s},function(t,e,n){"use strict";var r=n(1),o=function(){n(3);var t=n(6);(0,r.render)((0,r.h)(t,null),document.getElementById("root"))};window.requirejs(o,o)},function(t,e){},10,function(t,e){"use strict";function n(t){if(null===t||void 0===t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function r(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(e).map(function(t){return e[t]});if("0123456789"!==r.join(""))return!1;var o={};return"abcdefghijklmnopqrst".split("").forEach(function(t){o[t]=t}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},o)).join("")}catch(i){return!1}}var o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;t.exports=r()?Object.assign:function(t,e){for(var r,a,u=n(t),s=1;s-1?e:t}function f(t,e){e=e||{};var n=e.body;if(f.prototype.isPrototypeOf(t)){if(t.bodyUsed)throw new TypeError("Already read");this.url=t.url,this.credentials=t.credentials,e.headers||(this.headers=new o(t.headers)),this.method=t.method,this.mode=t.mode,n||(n=t._bodyInit,t.bodyUsed=!0)}else this.url=t;if(this.credentials=e.credentials||this.credentials||"omit",!e.headers&&this.headers||(this.headers=new o(e.headers)),this.method=c(e.method||this.method||"GET"),this.mode=e.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&n)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(n)}function p(t){var e=new FormData;return t.trim().split("&").forEach(function(t){if(t){var n=t.split("="),r=n.shift().replace(/\+/g," "),o=n.join("=").replace(/\+/g," ");e.append(decodeURIComponent(r),decodeURIComponent(o))}}),e}function d(t){var e=new o,n=(t.getAllResponseHeaders()||"").trim().split("\n");return n.forEach(function(t){var n=t.trim().split(":"),r=n.shift().trim(),o=n.join(":").trim();e.append(r,o)}),e}function h(t,e){e||(e={}),this.type="default",this.status=e.status,this.ok=this.status>=200&&this.status<300,this.statusText=e.statusText,this.headers=e.headers instanceof o?e.headers:new o(e.headers),this.url=e.url||"",this._initBody(t)}if(!t.fetch){var _={searchParams:"URLSearchParams"in t,iterable:"Symbol"in t&&"iterator"in Symbol,blob:"FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch(t){return!1}}(),formData:"FormData"in t,arrayBuffer:"ArrayBuffer"in t};o.prototype.append=function(t,r){t=e(t),r=n(r);var o=this.map[t];o||(o=[],this.map[t]=o),o.push(r)},o.prototype.delete=function(t){delete this.map[e(t)]},o.prototype.get=function(t){var n=this.map[e(t)];return n?n[0]:null},o.prototype.getAll=function(t){return this.map[e(t)]||[]},o.prototype.has=function(t){return this.map.hasOwnProperty(e(t))},o.prototype.set=function(t,r){this.map[e(t)]=[n(r)]},o.prototype.forEach=function(t,e){Object.getOwnPropertyNames(this.map).forEach(function(n){this.map[n].forEach(function(r){t.call(e,r,n,this)},this)},this)},o.prototype.keys=function(){var t=[];return this.forEach(function(e,n){t.push(n)}),r(t)},o.prototype.values=function(){var t=[];return this.forEach(function(e){t.push(e)}),r(t)},o.prototype.entries=function(){var t=[];return this.forEach(function(e,n){t.push([n,e])}),r(t)},_.iterable&&(o.prototype[Symbol.iterator]=o.prototype.entries);var y=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];f.prototype.clone=function(){return new f(this)},l.call(f.prototype),l.call(h.prototype),h.prototype.clone=function(){return new h(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new o(this.headers),url:this.url})},h.error=function(){var t=new h(null,{status:0,statusText:""});return t.type="error",t};var v=[301,302,303,307,308];h.redirect=function(t,e){if(v.indexOf(e)===-1)throw new RangeError("Invalid status code");return new h(null,{status:e,headers:{location:t}})},t.Headers=o,t.Request=f,t.Response=h,t.fetch=function(t,e){return new Promise(function(n,r){function o(){return"responseURL"in a?a.responseURL:/^X-Request-URL:/m.test(a.getAllResponseHeaders())?a.getResponseHeader("X-Request-URL"):void 0}var i;i=f.prototype.isPrototypeOf(t)&&!e?t:new f(t,e);var a=new XMLHttpRequest;a.onload=function(){var t={status:a.status,statusText:a.statusText,headers:d(a),url:o()},e="response"in a?a.response:a.responseText;n(new h(e,t))},a.onerror=function(){r(new TypeError("Network request failed"))},a.ontimeout=function(){r(new TypeError("Network request failed"))},a.open(i.method,i.url,!0),"include"===i.credentials&&(a.withCredentials=!0),"responseType"in a&&_.blob&&(a.responseType="blob"),i.headers.forEach(function(t,e){a.setRequestHeader(e,t)}),a.send("undefined"==typeof i._bodyInit?null:i._bodyInit)})},t.fetch.polyfill=!0}}("undefined"!=typeof self?self:this)}])); +//# sourceMappingURL=main.6283b909.js.map \ No newline at end of file diff --git a/static/js/main.6283b909.js.map b/static/js/main.6283b909.js.map new file mode 100644 index 0000000..94174da --- /dev/null +++ b/static/js/main.6283b909.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///static/js/main.6283b909.js","webpack:///webpack/bootstrap 6336c2d4112f92739f61","webpack:///./~/preact/dist/preact.js","webpack:///./src/helpers/constants.js","webpack:///./src/helpers/ga.js","webpack:///./~/promise/lib/core.js","webpack:///./~/asap/browser-raw.js","webpack:///./src/Game/index.js","webpack:///./src/Sudoku/index.js","webpack:///./src/helpers/sudoku.js","webpack:///./src/index.js","webpack:///./~/object-assign/index.js","webpack:///./~/preact-scripts/config/polyfills.js","webpack:///./~/promise/lib/es6-extensions.js","webpack:///./~/promise/lib/rejection-tracking.js","webpack:///./~/whatwg-fetch/fetch.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","i","Object","prototype","hasOwnProperty","_m","args","slice","fn","a","b","apply","this","concat","VNode","h","nodeName","attributes","lastSimple","child","simple","children","EMPTY_CHILDREN","arguments","length","stack","push","pop","String","key","options","vnode","extend","obj","props","cloneElement","enqueueRender","component","__d","items","debounceRendering","defer","rerender","list","renderComponent","isSameNodeType","node","hydrating","splitText","_componentConstructor","isNamedNode","__n","toLowerCase","getNodeProps","defaultProps","createNode","isSvg","document","createElementNS","createElement","removeNode","parentNode","removeChild","setAccessor","name","old","value","style","cssText","IS_NON_DIMENSIONAL","test","innerHTML","__html","useCapture","replace","substring","addEventListener","eventProxy","removeEventListener","__l","setProperty","removeAttribute","ns","removeAttributeNS","setAttributeNS","setAttribute","className","e","type","event","flushMounts","mounts","afterMount","componentDidMount","diff","dom","context","mountAll","parent","componentRoot","diffLevel","isSvgMode","ownerSVGElement","ret","idiff","appendChild","out","prevSvgMode","_component","nodeValue","createTextNode","replaceChild","recollectNodeTree","__preactattr_","vnodeName","buildComponentFromVNode","firstChild","fc","vchildren","nextSibling","innerDiffNode","dangerouslySetInnerHTML","diffAttributes","isHydrating","j","f","vchild","originalChildren","childNodes","keyed","keyedLen","min","len","childrenLen","vlen","_child","__k","trim","insertBefore","unmountOnly","unmountComponent","ref","removeChildren","lastChild","next","previousSibling","attrs","collectComponent","constructor","components","createComponent","Ctor","inst","render","Component","doRender","__b","splice","state","setComponentProps","opts","__x","__r","base","componentWillMount","componentWillReceiveProps","__c","__p","syncComponentUpdates","isChild","rendered","cbase","previousProps","previousState","__s","previousContext","isUpdate","nextBase","initialBase","initialChildComponent","skip","shouldComponentUpdate","componentWillUpdate","getChildContext","toUnmount","childComponent","childProps","__u","baseParent","componentRef","t","unshift","componentDidUpdate","afterUpdate","__h","originalComponent","oldDom","isDirectOwner","isOwner","beforeUnmount","componentWillUnmount","inner","merge","Promise","resolve","then","bind","setTimeout","setState","callback","s","forceUpdate","preact","defineProperty","SUDOKU_DIGITS","SUDOKU_LARGEST_DIGIT","Math","max","GA_DIFFICULTY_MULTIPLIER","_window","window","ga","requirejs","url","location","hostname","title","page","trackEvent","_len","Array","_key","noop","getThen","ex","LAST_ERROR","IS_ERROR","tryCallOne","tryCallTwo","TypeError","_45","_81","_65","_54","doResolve","safeThen","self","onFulfilled","onRejected","reject","res","handle","Handler","deferred","_10","handleResolved","asap","cb","promise","newValue","finale","_97","done","reason","_61","global","rawAsap","task","queue","requestFlush","flushing","flush","index","currentIndex","capacity","scan","newLength","makeRequestCallFromMutationObserver","toggle","observer","BrowserMutationObserver","observe","characterData","data","makeRequestCallFromTimer","handleTimer","clearTimeout","timeoutHandle","clearInterval","intervalHandle","setInterval","scope","MutationObserver","WebKitMutationObserver","_interopRequireDefault","__esModule","default","_classCallCheck","instance","Constructor","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","create","enumerable","writable","configurable","setPrototypeOf","__proto__","_createClass","defineProperties","target","descriptor","protoProps","staticProps","_preact","_Sudoku","_Sudoku2","_ref","role","Game","_Component","getPrototypeOf","_constants","_sudoku","_sudoku2","_ga","_ref8","_ref9","_ref10","_ref11","Sudoku","_temp","_this","_ret","attempt","difficulty","puzzle","solution","solutionJSON","handleCellChange","_ref2","_target$dataset","dataset","x","y","readOnly","map","row","parseInt","handleCellKeyDown","_ref3","_target$dataset2","input","tbody","querySelector","select","checkSolution","_this$state","console","log","JSON","stringify","round","alert","clearPuzzle","_ref4","newPuzzle","_ref5","undefined","_createSudoku","changeDifficulty","_ref6","Number","_ref7","_this2","_state","element","rows","digit","data-x","data-y","formnovalidate","maxlength","onClick","handleCellClick","onChange","onKeyDown","pattern","readonly","Boolean","shuffleArray","array","shouldMutate","arr","floor","random","temp","generateRow","isRowUsable","output","rowIndex","columnIndex","rowValue","rowStart","columnStart","section","indexOf","generateSolution","loopCount","columnValues","reduce","result","forEach","columnValue","lastRow","number","createSudoku","bootstrap","getElementById","toObject","val","shouldUseNative","assign","test1","getOwnPropertyNames","test2","fromCharCode","order2","n","join","test3","split","letter","keys","propIsEnumerable","propertyIsEnumerable","source","from","symbols","to","getOwnPropertySymbols","enable","valuePromise","TRUE","FALSE","NULL","UNDEFINED","ZERO","EMPTYSTRING","all","remaining","race","values","disable","enabled","onUnhandled","allRejections","matchWhitelist","rejections","error","whitelist","DEFAULT_WHITELIST","displayId","logged","logError","onHandled","warn","_72","timeout","err","errStr","line","some","cls","RangeError","normalizeName","normalizeValue","iteratorFor","iterator","shift","support","iterable","Symbol","Headers","headers","append","consumed","body","bodyUsed","fileReaderReady","reader","onload","onerror","readBlobAsArrayBuffer","blob","FileReader","readAsArrayBuffer","readBlobAsText","readAsText","Body","_initBody","_bodyInit","_bodyText","Blob","isPrototypeOf","_bodyBlob","formData","FormData","_bodyFormData","searchParams","URLSearchParams","toString","arrayBuffer","ArrayBuffer","Error","get","set","rejected","text","decode","json","parse","normalizeMethod","method","upcased","toUpperCase","methods","Request","credentials","mode","referrer","form","bytes","decodeURIComponent","xhr","head","pairs","getAllResponseHeaders","header","Response","bodyInit","status","ok","statusText","fetch","getAll","has","thisArg","entries","clone","response","redirectStatuses","redirect","init","responseURL","getResponseHeader","request","XMLHttpRequest","responseText","ontimeout","open","withCredentials","responseType","setRequestHeader","send","polyfill"],"mappings":"CAAS,SAAUA,GCInB,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAE,OAGA,IAAAC,GAAAF,EAAAD,IACAE,WACAE,GAAAJ,EACAK,QAAA,EAUA,OANAP,GAAAE,GAAAM,KAAAH,EAAAD,QAAAC,IAAAD,QAAAH,GAGAI,EAAAE,QAAA,EAGAF,EAAAD,QAvBA,GAAAD,KAqCA,OATAF,GAAAQ,EAAAT,EAGAC,EAAAS,EAAAP,EAGAF,EAAAU,EAAA,WAGAV,EAAA,IDIW,SAASD,GAEnB,IAAI,GAAIY,KAAKZ,GACZ,GAAGa,OAAOC,UAAUC,eAAeP,KAAKR,EAASY,GAChD,aAAcZ,GAAQY,IACtB,IAAK,WAAY,KACjB,KAAK,SAEJZ,EAAQY,GAAM,SAASI,GACtB,GAAIC,GAAOD,EAAGE,MAAM,GAAIC,EAAKnB,EAAQgB,EAAG,GACxC,OAAO,UAAUI,EAAEC,EAAEX,GACpBS,EAAGG,MAAMC,MAAOH,EAAEC,EAAEX,GAAGc,OAAOP,MAE9BjB,EAAQY,GACV,MACD,SAECZ,EAAQY,GAAKZ,EAAQA,EAAQY,IAKhC,MAAOZ,KAGF,SAASK,EAAQD,EAASH,GAE/BA,EAAoB,IACpBI,EAAOD,QAAUH,EAAoB,IAKhC,SAASI,EAAQD,EAASH,IE3EhC,WACA,YACA,SAAAwB,MACA,QAAAC,GAAAC,EAAAC,GACA,GAAAC,GAAAC,EAAAC,EAAAnB,EAAAoB,EAAAC,CACA,KAAArB,EAAAsB,UAAAC,OAAkCvB,KAAA,GAASwB,EAAAC,KAAAH,UAAAtB,GAK3C,KAJAgB,GAAA,MAAAA,EAAAI,WACAI,EAAAD,QAAAC,EAAAC,KAAAT,EAAAI,gBACAJ,GAAAI,UAEAI,EAAAD,QAAA,IAAAL,EAAAM,EAAAE,QAAA,SAAAR,EAAAQ,IAAA,IAAA1B,EAAAkB,EAAAK,OAAsGvB,KAAKwB,EAAAC,KAAAP,EAAAlB,QAC3G,iBAAAkB,OAAA,OACAC,EAAA,kBAAAJ,MAAA,MAAAG,IAAA,GAAsF,gBAAAA,KAAAS,OAAAT,GAA0D,gBAAAA,KAAAC,GAAA,IAChJA,GAAAF,EAAAG,IAAAG,OAAA,IAAAL,EAA6EE,IAAAC,EAAAD,GAAAF,GAA4DE,EAAAK,KAAAP,GACzID,EAAAE,CAEA,IAAApB,GAAA,GAAAc,EAMA,OALAd,GAAAgB,WACAhB,EAAAqB,WACArB,EAAAiB,WAAA,MAAAA,EAAA,OAAAA,EACAjB,EAAA6B,IAAA,MAAAZ,EAAA,OAAAA,EAAAY,IACA,SAAAC,EAAAC,OAAAD,EAAAC,MAAA/B,GACAA,EAEA,QAAAgC,GAAAC,EAAAC,GACA,OAAAjC,KAAAiC,GAAAD,EAAAhC,GAAAiC,EAAAjC,EACA,OAAAgC,GAEA,QAAAE,GAAAJ,EAAAG,GACA,MAAAnB,GAAAgB,EAAAf,SAAAgB,OAAiDD,EAAAd,YAAAiB,GAAAX,UAAAC,OAAA,KAAAjB,MAAAV,KAAA0B,UAAA,GAAAQ,EAAAV,UAEjD,QAAAe,GAAAC,IACAA,EAAAC,MAAAD,EAAAC,KAAA,OAAAC,EAAAb,KAAAW,KAAAP,EAAAU,mBAAAC,GAAAC,GAEA,QAAAA,KACA,GAAA1C,GAAA2C,EAAAJ,CAEA,KADAA,KACAvC,EAAA2C,EAAAhB,OAAA3B,EAAAsC,KAAAM,EAAA5C,GAEA,QAAA6C,GAAAC,EAAAf,EAAAgB,GACA,sBAAAhB,IAAA,gBAAAA,GAAA,SAAAe,EAAAE,UACA,gBAAAjB,GAAAf,UAAA8B,EAAAG,uBAAAC,EAAAJ,EAAAf,EAAAf,UAAuH+B,GAAAD,EAAAG,wBAAAlB,EAAAf,SAEvH,QAAAkC,GAAAJ,EAAA9B,GACA,MAAA8B,GAAAK,MAAAnC,GAAA8B,EAAA9B,SAAAoC,gBAAApC,EAAAoC,cAEA,QAAAC,GAAAtB,GACA,GAAAG,GAAAF,KAA6BD,EAAAd,WAC7BiB,GAAAb,SAAAU,EAAAV,QACA,IAAAiC,GAAAvB,EAAAf,SAAAsC,YACA,aAAAA,EAAA,OAAArD,KAAAqD,GAAA,SAAApB,EAAAjC,KAAAiC,EAAAjC,GAAAqD,EAAArD,GACA,OAAAiC,GAEA,QAAAqB,GAAAvC,EAAAwC,GACA,GAAAV,GAAAU,EAAAC,SAAAC,gBAAA,6BAAA1C,GAAAyC,SAAAE,cAAA3C,EAEA,OADA8B,GAAAK,IAAAnC,EACA8B,EAEA,QAAAc,GAAAd,GACA,GAAAe,GAAAf,EAAAe,UACAA,MAAAC,YAAAhB,GAEA,QAAAiB,GAAAjB,EAAAkB,EAAAC,EAAAC,EAAAV,GAEA,GADA,cAAAQ,MAAA,SACA,QAAAA,OAA6B,YAAAA,EAC7BC,KAAA,MACAC,KAAApB,OACS,cAAAkB,GAAAR,EAAmE,aAAAQ,GAE5E,GADAE,GAAA,gBAAAA,IAAA,gBAAAD,KAAAnB,EAAAqB,MAAAC,QAAAF,GAAA,IACAA,GAAA,gBAAAA,GAAA,CACA,mBAAAD,GAAA,OAAAhE,KAAAgE,GAAAhE,IAAAiE,KAAApB,EAAAqB,MAAAlE,GAAA,GACA,QAAAA,KAAAiE,GAAApB,EAAAqB,MAAAlE,GAAA,gBAAAiE,GAAAjE,KAAA,IAAAoE,EAAAC,KAAArE,GAAAiE,EAAAjE,GAAA,KAAAiE,EAAAjE,QAES,gCAAA+D,EACTE,IAAApB,EAAAyB,UAAAL,EAAAM,QAAA,QACS,SAAAR,EAAA,SAAAA,EAAA,IACT,GAAAS,GAAAT,SAAAU,QAAA,eACAV,KAAAZ,cAAAuB,UAAA,GACAT,EACAD,GAAAnB,EAAA8B,iBAAAZ,EAAAa,EAAAJ,GACa3B,EAAAgC,oBAAAd,EAAAa,EAAAJ,IACb3B,EAAAiC,MAAAjC,EAAAiC,SAAuCf,GAAAE,MAC9B,aAAAF,GAAA,SAAAA,IAAAR,GAAAQ,IAAAlB,GACTkC,EAAAlC,EAAAkB,EAAA,MAAAE,EAAA,GAAAA,GACA,MAAAA,IAAA,IAAAA,GAAApB,EAAAmC,gBAAAjB,OACS,CACT,GAAAkB,GAAA1B,GAAAQ,SAAAU,QAAA,gBACA,OAAAR,IAAA,IAAAA,EAAAgB,EAAApC,EAAAqC,kBAAA,+BAAAnB,EAAAZ,eAAkIN,EAAAmC,gBAAAjB,GAAiC,kBAAAE,KAAAgB,EAAApC,EAAAsC,eAAA,+BAAApB,EAAAZ,cAAAc,GAA6HpB,EAAAuC,aAAArB,EAAAE,QApBvRpB,GAAAwC,UAAApB,GAAA,GAuBT,QAAAc,GAAAlC,EAAAkB,EAAAE,GACA,IACApB,EAAAkB,GAAAE,EACS,MAAAqB,KAET,QAAAV,GAAAU,GACA,MAAA3E,MAAAmE,IAAAQ,EAAAC,MAAA1D,EAAA2D,OAAA3D,EAAA2D,MAAAF,OAEA,QAAAG,KAEA,IADA,GAAA3F,GACAA,EAAA4F,EAAAhE,OACAG,EAAA8D,YAAA9D,EAAA8D,WAAA7F,GACAA,EAAA8F,mBAAA9F,EAAA8F,oBAGA,QAAAC,GAAAC,EAAAhE,EAAAiE,EAAAC,EAAAC,EAAAC,GACAC,MACAC,EAAA,MAAAH,GAAA,SAAAA,EAAAI,gBACAvD,EAAA,MAAAgD,KAAA,iBAAAA,IAEA,IAAAQ,GAAAC,EAAAT,EAAAhE,EAAAiE,EAAAC,EAAAE,EAMA,OALAD,IAAAK,EAAA1C,aAAAqC,KAAAO,YAAAF,KACAH,IACArD,GAAA,EACAoD,GAAAT,KAEAa,EAEA,QAAAC,GAAAT,EAAAhE,EAAAiE,EAAAC,EAAAE,GACA,GAAAO,GAAAX,EAAAY,EAAAN,CAEA,IADA,MAAAtE,GAAA,iBAAAA,OAAA,IACA,gBAAAA,IAAA,gBAAAA,GAWA,MAVAgE,IAAA,SAAAA,EAAA/C,WAAA+C,EAAAlC,cAAAkC,EAAAa,YAAAT,GACAJ,EAAAc,WAAA9E,IAAAgE,EAAAc,UAAA9E,IAEA2E,EAAAjD,SAAAqD,eAAA/E,GACAgE,IACAA,EAAAlC,YAAAkC,EAAAlC,WAAAkD,aAAAL,EAAAX,GACAiB,EAAAjB,GAAA,KAGAW,EAAAO,eAAA,EACAP,CAEA,IAAAQ,GAAAnF,EAAAf,QACA,sBAAAkG,GAAA,MAAAC,GAAApB,EAAAhE,EAAAiE,EAAAC,EAGA,IAFAI,EAAA,QAAAa,GAAA,kBAAAA,GAAAb,EACAa,EAAAtF,OAAAsF,KACAnB,IAAA7C,EAAA6C,EAAAmB,MACAR,EAAAnD,EAAA2D,EAAAb,GACAN,GAAA,CACA,KAAAA,EAAAqB,YAAAV,EAAAD,YAAAV,EAAAqB,WACArB,GAAAlC,YAAAkC,EAAAlC,WAAAkD,aAAAL,EAAAX,GACAiB,EAAAjB,GAAA,GAGA,GAAAsB,GAAAX,EAAAU,WAAAlF,EAAAwE,EAAAO,cAAAK,EAAAvF,EAAAV,QACA,UAAAa,EAAA,CACAA,EAAAwE,EAAAO,gBACA,QAAAxG,GAAAiG,EAAAzF,WAAAhB,EAAAQ,EAAAe,OAAsDvB,KAAKiC,EAAAzB,EAAAR,GAAA+D,MAAAvD,EAAAR,GAAAiE,MAO3D,OALAnB,GAAAuE,GAAA,IAAAA,EAAA9F,QAAA,gBAAA8F,GAAA,UAAAD,GAAA,SAAAA,EAAArE,WAAA,MAAAqE,EAAAE,YACAF,EAAAR,WAAAS,EAAA,KAAAD,EAAAR,UAAAS,EAAA,KACSA,KAAA9F,QAAA,MAAA6F,IAAAG,EAAAd,EAAAY,EAAAtB,EAAAC,EAAAlD,GAAA,MAAAb,EAAAuF,yBACTC,EAAAhB,EAAA3E,EAAAd,WAAAiB,GACAmE,EAAAM,EACAD,EAEA,QAAAc,GAAAzB,EAAAuB,EAAAtB,EAAAC,EAAA0B,GACA,GAAAC,GAAA7H,EAAA8H,EAAAC,EAAA3G,EAAA4G,EAAAhC,EAAAiC,WAAA3G,KAAA4G,KAAgGC,EAAA,EAAAC,EAAA,EAAAC,EAAAL,EAAAvG,OAAA6G,EAAA,EAAAC,EAAAhB,IAAA9F,OAAA,CAChG,QAAA4G,EAAA,OAAAnI,GAAA,EAAsCA,EAAAmI,EAASnI,IAAA,CAC/C,GAAAsI,GAAAR,EAAA9H,GAAAiC,EAAAqG,EAAAtB,cAAApF,EAAAyG,GAAApG,EAAAqG,EAAA3B,WAAA2B,EAAA3B,WAAA4B,IAAAtG,EAAAL,IAAA,IACA,OAAAA,GACAqG,IACAD,EAAApG,GAAA0G,IACarG,IAAA,SAAAqG,EAAAvF,WAAA2E,GAAAY,EAAA1B,UAAA4B,OAAAd,MAAAtG,EAAAgH,KAAAE,GAEb,OAAAD,EAAA,OAAArI,GAAA,EAAuCA,EAAAqI,EAAUrI,IAAA,CACjD6H,EAAAR,EAAArH,GACAkB,EAAA,IACA,IAAAU,GAAAiG,EAAAjG,GACA,UAAAA,EACAqG,GAAA,SAAAD,EAAApG,KACAV,EAAA8G,EAAApG,GACAoG,EAAApG,GAAA,OACAqG,SAEa,KAAA/G,GAAAgH,EAAAE,EAAA,IAAAT,EAAAO,EAAoDP,EAAAS,EAAiBT,IAAA,YAAAvG,EAAAuG,IAAA/E,EAAA9C,EAAAsB,EAAAuG,GAAAE,EAAAH,GAAA,CAClFxG,EAAApB,EACAsB,EAAAuG,GAAA,OACAA,IAAAS,EAAA,GAAAA,IACAT,IAAAO,MACA,OAEAhH,EAAAqF,EAAArF,EAAA2G,EAAA9B,EAAAC,GACA4B,EAAAE,EAAA9H,GACAkB,OAAA4E,GAAA5E,IAAA0G,IAAA,MAAAA,EAAA9B,EAAAU,YAAAtF,GAA6FA,IAAA0G,EAAAN,YAAA3D,EAAAiE,GAAiD9B,EAAA2C,aAAAvH,EAAA0G,IAE9I,GAAAK,EAAA,OAAAjI,KAAAgI,GAAA,SAAAA,EAAAhI,IAAA+G,EAAAiB,EAAAhI,IAAA,EACA,MAAAkI,GAAAE,GAAA,UAAAlH,EAAAE,EAAAgH,OAAArB,EAAA7F,GAAA,GAEA,QAAA6F,GAAAlE,EAAA6F,GACA,GAAAtG,GAAAS,EAAA8D,UACAvE,GAAAuG,EAAAvG,IACA,MAAAS,EAAAmE,eAAAnE,EAAAmE,cAAA4B,KAAA/F,EAAAmE,cAAA4B,IAAA,OACA,IAAAF,GAAA,MAAA7F,EAAAmE,eAAArD,EAAAd,GACAgG,EAAAhG,IAGA,QAAAgG,GAAAhG,GAEA,IADAA,IAAAiG,UACAjG,GAAA,CACA,GAAAkG,GAAAlG,EAAAmG,eACAjC,GAAAlE,GAAA,GACAA,EAAAkG,GAGA,QAAAtB,GAAA3B,EAAAmD,EAAAjF,GACA,GAAAD,EACA,KAAAA,IAAAC,GAAAiF,GAAA,MAAAA,EAAAlF,IAAA,MAAAC,EAAAD,IAAAD,EAAAgC,EAAA/B,EAAAC,EAAAD,GAAAC,EAAAD,GAAA,OAAAqC,EACA,KAAArC,IAAAkF,GAAA,aAAAlF,GAAA,cAAAA,OAAAC,IAAAiF,EAAAlF,MAAA,UAAAA,GAAA,YAAAA,EAAA+B,EAAA/B,GAAAC,EAAAD,KAAAD,EAAAgC,EAAA/B,EAAAC,EAAAD,GAAAC,EAAAD,GAAAkF,EAAAlF,GAAAqC,GAEA,QAAA8C,GAAA9G,GACA,GAAA2B,GAAA3B,EAAA+G,YAAApF,MACAqF,EAAArF,KAAAqF,EAAArF,QAAAtC,KAAAW,GAEA,QAAAiH,GAAAC,EAAArH,EAAA8D,GACA,GAAAwD,GAAA7G,EAAA0G,EAAAE,EAAAvF,KASA,IARAuF,EAAApJ,WAAAoJ,EAAApJ,UAAAsJ,QACAD,EAAA,GAAAD,GAAArH,EAAA8D,GACA0D,EAAA7J,KAAA2J,EAAAtH,EAAA8D,KAEAwD,EAAA,GAAAE,GAAAxH,EAAA8D,GACAwD,EAAAJ,YAAAG,EACAC,EAAAC,OAAAE,GAEAhH,EAAA,OAAA1C,GAAA0C,EAAAnB,OAA2CvB,KAAK,GAAA0C,EAAA1C,GAAAmJ,cAAAG,EAAA,CAChDC,EAAAI,IAAAjH,EAAA1C,GAAA2J,IACAjH,EAAAkH,OAAA5J,EAAA,EACA,OAEA,MAAAuJ,GAEA,QAAAG,GAAAzH,EAAA4H,EAAA9D,GACA,MAAApF,MAAAwI,YAAAlH,EAAA8D,GAEA,QAAA+D,GAAA1H,EAAAH,EAAA8H,EAAAhE,EAAAC,GACA5D,EAAA4H,MACA5H,EAAA4H,KAAA,GACA5H,EAAA6H,IAAAhI,EAAA2G,YAAA3G,GAAA2G,KACAxG,EAAAmG,IAAAtG,EAAAL,YAAAK,GAAAL,KACAQ,EAAA8H,MAAAlE,EACA5D,EAAA+H,oBAAA/H,EAAA+H,qBACa/H,EAAAgI,2BAAAhI,EAAAgI,0BAAAnI,EAAA8D,GACbA,OAAA3D,EAAA2D,UACA3D,EAAAiI,MAAAjI,EAAAiI,IAAAjI,EAAA2D,SACA3D,EAAA2D,WAEA3D,EAAAkI,MAAAlI,EAAAkI,IAAAlI,EAAAH,OACAG,EAAAH,QACAG,EAAA4H,KAAA,EACA,IAAAD,IAAA,IAAAA,IAAA,IAAAlI,EAAA0I,sBAAAnI,EAAA8H,KAA8I/H,EAAAC,GAA9IO,EAAAP,EAAA,EAAA4D,IACA5D,EAAA6H,KAAA7H,EAAA6H,IAAA7H,IAGA,QAAAO,GAAAP,EAAA2H,EAAA/D,EAAAwE,GACA,IAAApI,EAAA4H,IAAA,CACA,GAAAS,GAAAlB,EAAAmB,EAAAzI,EAAAG,EAAAH,MAAA4H,EAAAzH,EAAAyH,MAAA9D,EAAA3D,EAAA2D,QAAA4E,EAAAvI,EAAAkI,KAAArI,EAAA2I,EAAAxI,EAAAyI,KAAAhB,EAAAiB,EAAA1I,EAAAiI,KAAAtE,EAAAgF,EAAA3I,EAAA8H,KAAAc,EAAA5I,EAAAuH,IAAAsB,EAAAF,GAAAC,EAAAE,EAAA9I,EAAAuE,WAAAwE,GAAA,CAYA,IAXAJ,IACA3I,EAAAH,MAAA0I,EACAvI,EAAAyH,MAAAe,EACAxI,EAAA2D,QAAA+E,EACA,IAAAf,GAAA3H,EAAAgJ,wBAAA,IAAAhJ,EAAAgJ,sBAAAnJ,EAAA4H,EAAA9D,GAAAoF,GAAA,EAA8I/I,EAAAiJ,qBAAAjJ,EAAAiJ,oBAAApJ,EAAA4H,EAAA9D,GAC9I3D,EAAAH,QACAG,EAAAyH,QACAzH,EAAA2D,WAEA3D,EAAAkI,IAAAlI,EAAAyI,IAAAzI,EAAAiI,IAAAjI,EAAAuH,IAAA,KACAvH,EAAAC,KAAA,GACA8I,EAAA,CACAV,EAAArI,EAAAoH,OAAAvH,EAAA4H,EAAA9D,GACA3D,EAAAkJ,kBAAAvF,EAAAhE,OAAyEgE,GAAA3D,EAAAkJ,mBACzE,IAAAC,GAAArB,EAAAsB,EAAAf,KAAA1J,QACA,sBAAAyK,GAAA,CACA,GAAAC,GAAArI,EAAAqH,EACAlB,GAAA2B,EACA3B,KAAAJ,cAAAqC,GAAAC,EAAA7J,KAAA2H,EAAAhB,IAAAuB,EAAAP,EAAAkC,EAAA,EAAA1F,GAAA,IACAwF,EAAAhC,EACAnH,EAAAuE,WAAA4C,EAAAF,EAAAmC,EAAAC,EAAA1F,GACAwD,EAAAI,IAAAJ,EAAAI,KAAAqB,EACAzB,EAAAmC,IAAAtJ,EACA0H,EAAAP,EAAAkC,EAAA,EAAA1F,GAAA,GACApD,EAAA4G,EAAA,EAAAvD,GAAA,IAEAkE,EAAAX,EAAAW,SAEAQ,GAAAO,EACAM,EAAAL,EACAK,IAAAb,EAAAtI,EAAAuE,WAAA,OACAsE,GAAA,IAAAlB,KACAW,MAAA/D,WAAA,MACAuD,EAAArE,EAAA6E,EAAAD,EAAA1E,EAAAC,IAAA+E,EAAAE,KAAArH,YAAA,GAGA,IAAAqH,GAAAf,IAAAe,GAAA1B,IAAA2B,EAAA,CACA,GAAAS,GAAAV,EAAArH,UACA+H,IAAAzB,IAAAyB,IACAA,EAAA7E,aAAAoD,EAAAe,GACAM,IACAN,EAAAtE,WAAA,KACAI,EAAAkE,GAAA,KAMA,GAFAM,GAAA5C,EAAA4C,GACAnJ,EAAA8H,OACAA,IAAAM,EAAA,CAEA,IADA,GAAAoB,GAAAxJ,EAAAyJ,EAAAzJ,EACAyJ,IAAAH,MAAAE,EAAAC,GAAA3B,MACAA,GAAAvD,WAAAiF,EACA1B,EAAAlH,sBAAA4I,EAAAzC,aAOA,IAJA4B,GAAA/E,EAAAN,EAAAoG,QAAA1J,GAAiE+I,IACjE/I,EAAA2J,oBAAA3J,EAAA2J,mBAAApB,EAAAC,EAAAE,GACAjJ,EAAAmK,aAAAnK,EAAAmK,YAAA5J,IAEA,MAAAA,EAAA6J,IAAA,KAAA7J,EAAA6J,IAAA1K,QAAAa,EAAA6J,IAAAvK,MAAA9B,KAAAwC,EACA+D,IAAAqE,GAAA/E,KAGA,QAAAyB,GAAApB,EAAAhE,EAAAiE,EAAAC,GAEA,IADA,GAAAlG,GAAAgG,KAAAa,WAAAuF,EAAApM,EAAAqM,EAAArG,EAAAsG,EAAAtM,GAAAgG,EAAA9C,wBAAAlB,EAAAf,SAAAsL,EAAAD,EAAAnK,EAAAmB,EAAAtB,GACAhC,IAAAuM,IAAAvM,IAAA4L,MAAAW,EAAAvM,EAAAqJ,cAAArH,EAAAf,QAqBA,OApBAjB,IAAAuM,KAAArG,GAAAlG,EAAA6G,aACAmD,EAAAhK,EAAAmC,EAAA,EAAA8D,EAAAC,GACAF,EAAAhG,EAAAoK,OAEAgC,IAAAE,IACAzD,EAAAuD,GACApG,EAAAqG,EAAA,MAEArM,EAAAuJ,EAAAvH,EAAAf,SAAAkB,EAAA8D,GACAD,IAAAhG,EAAA6J,MACA7J,EAAA6J,IAAA7D,EACAqG,EAAA,MAEArC,EAAAhK,EAAAmC,EAAA,EAAA8D,EAAAC,GACAF,EAAAhG,EAAAoK,KACAiC,GAAArG,IAAAqG,IACAA,EAAAxF,WAAA,KACAI,EAAAoF,GAAA,KAGArG,EAEA,QAAA6C,GAAAvG,GACAP,EAAAyK,eAAAzK,EAAAyK,cAAAlK,EACA,IAAA8H,GAAA9H,EAAA8H,IACA9H,GAAA4H,KAAA,EACA5H,EAAAmK,sBAAAnK,EAAAmK,uBACAnK,EAAA8H,KAAA,IACA,IAAAsC,GAAApK,EAAAuE,UACA6F,GAAA7D,EAAA6D,GAA2CtC,IAC3CA,EAAAlD,eAAAkD,EAAAlD,cAAA4B,KAAAsB,EAAAlD,cAAA4B,IAAA,MACAxG,EAAAuH,IAAAO,EACAvG,EAAAuG,GACAhB,EAAA9G,GACAyG,EAAAqB,IAEA9H,EAAA6H,KAAA7H,EAAA6H,IAAA,MAEA,QAAAR,GAAAxH,EAAA8D,GACApF,KAAA0B,KAAA,EACA1B,KAAAoF,UACApF,KAAAsB,QACAtB,KAAAkJ,MAAAlJ,KAAAkJ,UAEA,QAAAL,GAAA1H,EAAAmE,EAAAwG,GACA,MAAA5G,GAAA4G,EAAA3K,MAAoC,EAAAmE,GAAA,GAEpC,GAAApE,MACAL,KACAH,KACAmB,EAAA,kBAAAkK,iBAAAC,UAAAC,KAAAC,KAAAH,QAAAC,WAAAG,WACA1I,EAAA,yDACA9B,KACAoD,KACAS,EAAA,EACAC,GAAA,EACAtD,GAAA,EACAsG,IACArH,GAAA0H,EAAAvJ,WACA6M,SAAA,SAAAlD,EAAAmD,GACA,GAAAC,GAAAtM,KAAAkJ,KACAlJ,MAAAkK,MAAAlK,KAAAkK,IAAA9I,KAA+CkL,IAC/ClL,EAAAkL,EAAA,kBAAApD,KAAAoD,EAAAtM,KAAAsB,OAAA4H,GACAmD,IAAArM,KAAAsL,IAAAtL,KAAAsL,SAAAxK,KAAAuL,GACA7K,EAAAxB,OAEAuM,YAAA,SAAAF,GACAA,IAAArM,KAAAsL,IAAAtL,KAAAsL,SAAAxK,KAAAuL,GACArK,EAAAhC,KAAA,IAEA6I,OAAA,cAEA,IAAA2D,IACArM,IACA4C,cAAA5C,EACAoB,eACAuH,YACAD,SACA/G,WACAZ,UAEApC,GAAAD,QAAA2N,MFmFM,SAAS1N,EAAQD,GAEtB,YAEAS,QAAOmN,eAAe5N,EAAS,cAC7ByE,OAAO,GG7eH,IAAMoJ,oBAAiB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAEzCC,wBAAuBC,KAAKC,IAAI9M,SAAU2M,GAI1CI,2BAA2B,KHmflC,SAAShO,EAAQD,EAASH,GAE/B,YAEAY,QAAOmN,eAAe5N,EAAS,cAC7ByE,OAAO,GAET,IAAIyJ,GIhgBqBC,OAAlBC,EJigBEF,EIjgBFE,GAAIC,EJkgBKH,EIlgBLG,SAEZD,GAAG,SAAU,gBAAiB,OAG9B,IAAIE,GAAM,+CAGc,eAAtBC,SAASC,WAETF,EAAMA,EAAIrJ,QAAQ,eAAgB,sBAClCmJ,EAAG,MAAO,cAAe,OAG3BA,EAAG,OACDK,MAAO,SACPC,KAAM,aAERN,EAAG,OAAQ,YAEXC,GAAWC,GAWEK,cAAa,WAAa,OAAAC,GAAA9M,UAAAC,OAATlB,EAASgO,MAAAD,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAATjO,EAASiO,GAAAhN,UAAAgN,EACrCX,QAAOC,GAAGlN,MAAM,MAAO,OAAQ,SAA/BE,OAA2CP,MJygBvC,SAASZ,EAAQD,EAASH,GKziBhC,YAIA,SAAAkP,MAqBA,QAAAC,GAAAxM,GACA,IACA,MAAAA,GAAA4K,KACG,MAAA6B,GAEH,MADAC,GAAAD,EACAE,GAIA,QAAAC,GAAArO,EAAAC,GACA,IACA,MAAAD,GAAAC,GACG,MAAAiO,GAEH,MADAC,GAAAD,EACAE,GAGA,QAAAE,GAAAtO,EAAAC,EAAAC,GACA,IACAF,EAAAC,EAAAC,GACG,MAAAgO,GAEH,MADAC,GAAAD,EACAE,GAMA,QAAAjC,GAAAnM,GACA,mBAAAI,MACA,SAAAmO,WAAA,uCAEA,sBAAAvO,GACA,SAAAuO,WAAA,iBAEAnO,MAAAoO,IAAA,EACApO,KAAAqO,IAAA,EACArO,KAAAsO,IAAA,KACAtO,KAAAuO,IAAA,KACA3O,IAAAgO,GACAY,EAAA5O,EAAAI,MAeA,QAAAyO,GAAAC,EAAAC,EAAAC,GACA,UAAAF,GAAAlG,YAAA,SAAAwD,EAAA6C,GACA,GAAAC,GAAA,GAAA/C,GAAA6B,EACAkB,GAAA7C,KAAAD,EAAA6C,GACAE,EAAAL,EAAA,GAAAM,GAAAL,EAAAC,EAAAE,MAGA,QAAAC,GAAAL,EAAAO,GACA,SAAAP,EAAAL,KACAK,IAAAJ,GAKA,OAHAvC,GAAAmD,KACAnD,EAAAmD,IAAAR,GAEA,IAAAA,EAAAL,IACA,IAAAK,EAAAN,KACAM,EAAAN,IAAA,OACAM,EAAAH,IAAAU,IAGA,IAAAP,EAAAN,KACAM,EAAAN,IAAA,OACAM,EAAAH,KAAAG,EAAAH,IAAAU,SAGAP,GAAAH,IAAAzN,KAAAmO,OAGAE,GAAAT,EAAAO,GAGA,QAAAE,GAAAT,EAAAO,GACAG,EAAA,WACA,GAAAC,GAAA,IAAAX,EAAAL,IAAAY,EAAAN,YAAAM,EAAAL,UACA,WAAAS,EAMA,YALA,IAAAX,EAAAL,IACArC,EAAAiD,EAAAK,QAAAZ,EAAAJ,KAEAO,EAAAI,EAAAK,QAAAZ,EAAAJ,KAIA,IAAA3I,GAAAsI,EAAAoB,EAAAX,EAAAJ,IACA3I,KAAAqI,EACAa,EAAAI,EAAAK,QAAAvB,GAEA/B,EAAAiD,EAAAK,QAAA3J,KAIA,QAAAqG,GAAA0C,EAAAa,GAEA,GAAAA,IAAAb,EACA,MAAAG,GACAH,EACA,GAAAP,WAAA,6CAGA,IACAoB,IACA,gBAAAA,IAAA,kBAAAA,IACA,CACA,GAAAtD,GAAA4B,EAAA0B,EACA,IAAAtD,IAAA+B,EACA,MAAAa,GAAAH,EAAAX,EAEA,IACA9B,IAAAyC,EAAAzC,MACAsD,YAAAxD,GAKA,MAHA2C,GAAAL,IAAA,EACAK,EAAAJ,IAAAiB,MACAC,GAAAd,EAEK,sBAAAzC,GAEL,WADAuC,GAAAvC,EAAAC,KAAAqD,GAAAb,GAIAA,EAAAL,IAAA,EACAK,EAAAJ,IAAAiB,EACAC,EAAAd,GAGA,QAAAG,GAAAH,EAAAa,GACAb,EAAAL,IAAA,EACAK,EAAAJ,IAAAiB,EACAxD,EAAA0D,KACA1D,EAAA0D,IAAAf,EAAAa,GAEAC,EAAAd,GAEA,QAAAc,GAAAd,GAKA,GAJA,IAAAA,EAAAN,MACAW,EAAAL,IAAAH,KACAG,EAAAH,IAAA,MAEA,IAAAG,EAAAN,IAAA,CACA,OAAA/O,GAAA,EAAmBA,EAAAqP,EAAAH,IAAA3N,OAAqBvB,IACxC0P,EAAAL,IAAAH,IAAAlP,GAEAqP,GAAAH,IAAA,MAIA,QAAAS,GAAAL,EAAAC,EAAAU,GACAtP,KAAA2O,YAAA,kBAAAA,KAAA,KACA3O,KAAA4O,WAAA,kBAAAA,KAAA,KACA5O,KAAAsP,UASA,QAAAd,GAAA5O,EAAA0P,GACA,GAAAI,IAAA,EACAZ,EAAAZ,EAAAtO,EAAA,SAAA0D,GACAoM,IACAA,GAAA,EACA1D,EAAAsD,EAAAhM,KACG,SAAAqM,GACHD,IACAA,GAAA,EACAb,EAAAS,EAAAK,KAEAD,IAAAZ,IAAAd,IACA0B,GAAA,EACAb,EAAAS,EAAAvB,IAhNA,GAAAqB,GAAA1Q,EAAA,GAqBAqP,EAAA,KACAC,IA2BAlP,GAAAD,QAAAkN,EAgBAA,EAAAmD,IAAA,KACAnD,EAAA0D,IAAA,KACA1D,EAAA6D,IAAAhC,EAEA7B,EAAAxM,UAAA0M,KAAA,SAAA0C,EAAAC,GACA,GAAA5O,KAAAwI,cAAAuD,EACA,MAAA0C,GAAAzO,KAAA2O,EAAAC,EAEA,IAAAE,GAAA,GAAA/C,GAAA6B,EAEA,OADAmB,GAAA/O,KAAA,GAAAgP,GAAAL,EAAAC,EAAAE,IACAA,ILurBM,SAAShQ,EAAQD,IMpwBvB,SAAAgR,GAAA,YAaA,SAAAC,GAAAC,GACAC,EAAApP,SACAqP,IACAC,GAAA,GAGAF,IAAApP,QAAAmP,EA0BA,QAAAI,KACA,KAAAC,EAAAJ,EAAApP,QAAA,CACA,GAAAyP,GAAAD,CAUA,IAPAA,GAAA,EACAJ,EAAAK,GAAApR,OAMAmR,EAAAE,EAAA,CAGA,OAAAC,GAAA,EAAAC,EAAAR,EAAApP,OAAAwP,EAAgEG,EAAAC,EAAkBD,IAClFP,EAAAO,GAAAP,EAAAO,EAAAH,EAEAJ,GAAApP,QAAAwP,EACAA,EAAA,GAGAJ,EAAApP,OAAA,EACAwP,EAAA,EACAF,GAAA,EAsEA,QAAAO,GAAApE,GACA,GAAAqE,GAAA,EACAC,EAAA,GAAAC,GAAAvE,GACAnK,EAAAW,SAAAqD,eAAA,GAEA,OADAyK,GAAAE,QAAA3O,GAA4B4O,eAAA,IAC5B,WACAJ,KACAxO,EAAA6O,KAAAL,GA4CA,QAAAM,GAAA3E,GACA,kBAWA,QAAA4E,KAGAC,aAAAC,GACAC,cAAAC,GACAhF,IAXA,GAAA8E,GAAAhF,WAAA8E,EAAA,GAIAI,EAAAC,YAAAL,EAAA,KA5LAnS,EAAAD,QAAAiR,CAUA,IAOAG,GAPAD,KAGAE,GAAA,EAQAE,EAAA,EAIAE,EAAA,KA6CAiB,EAAA,mBAAA1B,KAAAnB,KACAkC,EAAAW,EAAAC,kBAAAD,EAAAE,sBAcAxB,GADA,kBAAAW,GACAH,EAAAN,GA8BAa,EAAAb,GAQAL,EAAAG,eAgFAH,EAAAkB,6BN+wB8B/R,KAAKJ,EAAU,WAAa,MAAOmB,WAI3D,SAASlB,EAAQD,EAASH,GAE/B,YAYA,SAASgT,GAAuBrQ,GAAO,MAAOA,IAAOA,EAAIsQ,WAAatQ,GAAQuQ,QAASvQ,GAEvF,QAASwQ,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI5D,WAAU,qCAEhH,QAAS6D,GAA2BtD,EAAMzP,GAAQ,IAAKyP,EAAQ,KAAM,IAAIuD,gBAAe,4DAAgE,QAAOhT,GAAyB,gBAATA,IAAqC,kBAATA,GAA8ByP,EAAPzP,EAElO,QAASiT,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIjE,WAAU,iEAAoEiE,GAAeD,GAAS5S,UAAYD,OAAO+S,OAAOD,GAAcA,EAAW7S,WAAaiJ,aAAelF,MAAO6O,EAAUG,YAAY,EAAOC,UAAU,EAAMC,cAAc,KAAeJ,IAAY9S,OAAOmT,eAAiBnT,OAAOmT,eAAeN,EAAUC,GAAcD,EAASO,UAAYN,GAhBje,GAAIO,GAAe,WAAc,QAASC,GAAiBC,EAAQvR,GAAS,IAAK,GAAIjC,GAAI,EAAGA,EAAIiC,EAAMV,OAAQvB,IAAK,CAAE,GAAIyT,GAAaxR,EAAMjC,EAAIyT,GAAWR,WAAaQ,EAAWR,aAAc,EAAOQ,EAAWN,cAAe,EAAU,SAAWM,KAAYA,EAAWP,UAAW,GAAMjT,OAAOmN,eAAeoG,EAAQC,EAAW7R,IAAK6R,IAAiB,MAAO,UAAUf,EAAagB,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBb,EAAYxS,UAAWwT,GAAiBC,GAAaJ,EAAiBb,EAAaiB,GAAqBjB,MO9+BjiBkB,EAAAvU,EAAA,GACAwU,EAAAxU,EAAA,GPm/BKyU,EAAWzB,EAAuBwB,EOl/BvCxU,GAAA,GP8/BC,IAAI0U,IOz/BC,EAAAH,EAAA9S,GAAA,QAAMuE,UAAU,SAAS2O,KAAK,SAC5B,EAAAJ,EAAA9S,GAAA,MAAIuE,UAAU,uBAAd,WACA,EAAAuO,EAAA9S,GAAAgT,EAAAvB,QAAA,OALF0B,EPugCM,SAAUC,GAGnB,QAASD,KAGP,MAFAzB,GAAgB7R,KAAMsT,GAEftB,EAA2BhS,MAAOsT,EAAKZ,WAAapT,OAAOkU,eAAeF,IAAOvT,MAAMC,KAAMW,YAUtG,MAfAuR,GAAUoB,EAAMC,GAQhBZ,EAAaW,IACXrS,IAAK,SACLqC,MAAO,WOhhCR,MAAA8P,OPqhCME,GACPL,EAAQnK,UO7gCXhK,GAAOD,QAAUyU,GPmhCX,SAASxU,EAAQD,EAASH,GAE/B,YAoBA,SAASgT,GAAuBrQ,GAAO,MAAOA,IAAOA,EAAIsQ,WAAatQ,GAAQuQ,QAASvQ,GAEvF,QAASwQ,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAI5D,WAAU,qCAEhH,QAAS6D,GAA2BtD,EAAMzP,GAAQ,IAAKyP,EAAQ,KAAM,IAAIuD,gBAAe,4DAAgE,QAAOhT,GAAyB,gBAATA,IAAqC,kBAATA,GAA8ByP,EAAPzP,EAElO,QAASiT,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIjE,WAAU,iEAAoEiE,GAAeD,GAAS5S,UAAYD,OAAO+S,OAAOD,GAAcA,EAAW7S,WAAaiJ,aAAelF,MAAO6O,EAAUG,YAAY,EAAOC,UAAU,EAAMC,cAAc,KAAeJ,IAAY9S,OAAOmT,eAAiBnT,OAAOmT,eAAeN,EAAUC,GAAcD,EAASO,UAAYN,GAxBje9S,OAAOmN,eAAe5N,EAAS,cAC7ByE,OAAO,GAGT,IAAIqP,GAAe,WAAc,QAASC,GAAiBC,EAAQvR,GAAS,IAAK,GAAIjC,GAAI,EAAGA,EAAIiC,EAAMV,OAAQvB,IAAK,CAAE,GAAIyT,GAAaxR,EAAMjC,EAAIyT,GAAWR,WAAaQ,EAAWR,aAAc,EAAOQ,EAAWN,cAAe,EAAU,SAAWM,KAAYA,EAAWP,UAAW,GAAMjT,OAAOmN,eAAeoG,EAAQC,EAAW7R,IAAK6R,IAAiB,MAAO,UAAUf,EAAagB,EAAYC,GAAiJ,MAA9HD,IAAYH,EAAiBb,EAAYxS,UAAWwT,GAAiBC,GAAaJ,EAAiBb,EAAaiB,GAAqBjB,MQ1iCjiBkB,EAAAvU,EAAA,GACA+U,EAAA/U,EAAA,GACAgV,EAAAhV,EAAA,GRgjCKiV,EAAWjC,EAAuBgC,GQ/iCvCE,EAAAlV,EAAA,EACAA,GAAA,GR4jCC,IAAImV,IQp5BG,EAAAZ,EAAA9S,GAAA,WRs5BH2T,GQn5BG,EAAAb,EAAA9S,GAAA,WRq5BH4T,GQp5BG,EAAAd,EAAA9S,GAAA,WRs5BH6T,GQp5BK,EAAAf,EAAA9S,GAAA,6BA5KW8T,ERskCP,SAAUV,GAGrB,QAASU,KACP,GAAIb,GAEAc,EAAOC,EAAOC,CAElBvC,GAAgB7R,KAAMiU,EAEtB,KAAK,GAAIxG,GAAO9M,UAAUC,OAAQlB,EAAOgO,MAAMD,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC3EjO,EAAKiO,GAAQhN,UAAUgN,EAGzB,OAAeuG,GAASC,EAAQnC,EAA2BhS,MAAOoT,EAAOa,EAAOvB,WAAapT,OAAOkU,eAAeS,IAAShV,KAAKc,MAAMqT,GAAOpT,MAAMC,OAAOP,KAAiByU,EQnlC/KjL,OACEmL,WACAC,WAAY,GACZC,UACAC,YACAC,aAAc,IRolCVN,EQ/jCNO,iBAAmB,SAAAC,GAAgB,GAAb9B,GAAa8B,EAAb9B,OAAa+B,EACI/B,EAA7BgC,QAAWC,EADcF,EACdE,EAAGC,EADWH,EACXG,EAAKzR,EAAUuP,EAAVvP,OACtBuP,EAAOmC,UAAY1R,GACtB6Q,EAAK/H,SAAS,SAAAlD,GACZ,GAAMmL,GAAUnL,EAAMmL,QAAQY,IAAI,SAAAC,GAAA,MAAOA,GAAIvV,SAE7C,OADA0U,GAAQU,GAAGD,GAAKK,SAAS7R,EAAO,KAAO,MAC9B+Q,cRykCTF,EQ/jCNiB,kBAAoB,SAAAC,GAAqB,GAAlBpU,GAAkBoU,EAAlBpU,IAAK4R,EAAawC,EAAbxC,OAAayC,EAExBzC,EAAOgC,QAAhBC,EAFiCQ,EAEjCR,EAAGC,EAF8BO,EAE9BP,CAMT,QAHAD,EAAIK,SAASL,EAAG,IAChBC,EAAII,SAASJ,EAAG,IAER9T,GACN,IAAK,UACH8T,GAAK,CACL,MACF,KAAK,YACHA,GAAK,CACL,MACF,KAAK,YACHD,GAAK,CACL,MACF,KAAK,aACHA,GAAK,CACL,MACF,SACE,OAGJ,GAAMS,GAAQpB,EAAKqB,MAAMC,cAAX,YAAqCX,EAArC,cAAoDC,EAApD,KACVQ,IAAOpJ,WAAW,iBAAMoJ,GAAMG,YRwkC9BvB,EQlkCNwB,cAAgB,WAAM,GAAAC,GAC0BzB,EAAKjL,MAA3CmL,EADYuB,EACZvB,QAASC,EADGsB,EACHtB,WAAYG,EADTmB,EACSnB,YAC7BoB,SAAQC,IAAIC,KAAKC,UAAU3B,GAAUI,GACjCsB,KAAKC,UAAU3B,KAAaI,IAC9B,EAAAb,EAAApG,YACE,SACA,QACA,SACAZ,KAAKqJ,MAAM3B,+BAEb4B,MAAM,cAEN,EAAAtC,EAAApG,YACE,SACA,QACA,WACAZ,KAAKqJ,MAAM3B,+BAEb4B,MAAM,iBR8jCJ/B,EQvjCNgC,YAAc,YACZ,EAAAvC,EAAApG,YAAW,SAAU,SACrB2G,EAAK/H,SAAS,SAAAgK,GAAA,GAAG7B,GAAH6B,EAAG7B,MAAH,QACZF,QAASE,EAAOU,IAAI,SAAAC,GAAA,MAAOA,GAAIvV,cR8jC7BwU,EQvjCNkC,UAAY,WACVlC,EAAK/H,SAAS,SAAAkK,GAAoB,GAAjBhC,GAAiBgC,EAAjBhC,YACf,EAAAV,EAAApG,YACE,SACA,MACA+I,OACA3J,KAAKqJ,MAAM3B,8BALmB,IAAAkC,IAOH,EAAA7C,EAAA/B,SAAa0C,GAAlCC,EAPwBiC,EAOxBjC,OAAQC,EAPgBgC,EAOhBhC,QAChB,QACEH,QAASE,EAAOU,IAAI,SAAAC,GAAA,MAAOA,GAAIvV,UAC/B4U,SACAC,WACAC,aAAcsB,KAAKC,UAAUxB,OR6jC7BL,EQrjCNsC,iBAAmB,SAAAC,GAAgB,GAAb7D,GAAa6D,EAAb7D,MACpBsB,GAAK/H,SAAS,kBACZkI,WAAYqC,OAAO9D,EAAOvP,WR+8BpB8Q,EA4GJF,EAAQlC,EAA2BmC,EAAOC,GA4I/C,MArQAlC,GAAU+B,EAAQV,GA4HlBZ,EAAasB,IACXhT,IAAK,oBACLqC,MAAO,WQ3rCRtD,KAAKqW,eRssCJpV,IAAK,kBACLqC,MAAO,SAAyBsT,GQ/rCP,GAAV/D,GAAU+D,EAAV/D,MAChBA,GAAO6C,YRsuCNzU,IAAK,SACLqC,MAAO,WQjnCD,GAAAuT,GAAA7W,KAAA8W,EACiC9W,KAAKkJ,MAArCmL,EADDyC,EACCzC,QAASC,EADVwC,EACUxC,WAAYC,EADtBuC,EACsBvC,MAC7B,QACE,EAAAtB,EAAA9S,GAAA,YACE,EAAA8S,EAAA9S,GAAA,cACE,EAAA8S,EAAA9S,GAAA,SAAO8H,IAAK,SAAA8O,GAAA,MAAYF,GAAKrB,MAAQuB,IAClC1C,EAAQY,IAAI,SAAC+B,EAAMjC,GAAP,OACX,EAAA9B,EAAA9S,GAAA,UACG6W,EAAK/B,IAAI,SAACgC,EAAOnC,GAAR,OACR,EAAA7B,EAAA9S,GAAA,WACE,EAAA8S,EAAA9S,GAAA,SACE+W,SAAQpC,EACRqC,SAAQpC,EACRqC,gBAAA,EACAC,UAAU,IACVC,QAAST,EAAKU,gBACdC,SAAUX,EAAKnC,iBACf+C,UAAWZ,EAAKzB,kBAChBsC,QAAQ,QACRC,SAAUC,QAAQrD,EAAOQ,GAAGD,IAC5BlQ,KAAK,OACLtB,MAAO2T,YAlBvBpD,GA2BE,EAAAZ,EAAA9S,GAAA,UAAQmX,QAAStX,KAAK2V,eAAtB,kBA3BF,KA4BE,EAAA1C,EAAA9S,GAAA,UAAQmX,QAAStX,KAAKmW,aAAtB,gBA5BFrC,EAAAC,GA+BE,EAAAd,EAAA9S,GAAA,aAAA6T,GAEE,EAAAf,EAAA9S,GAAA,SACEyE,KAAK,SACL2C,IAAK,EACLsF,IAAK,EACLvJ,MAAOgR,EACPkD,SAAUxX,KAAKyW,oBAtCrB,KAyCE,EAAAxD,EAAA9S,GAAA,UAAQmX,QAAStX,KAAKqW,WAAtB,mBRupCEpC,GACPhB,EAAQnK,UAEVjK,GAAQ+S,QQ/0CYqC,GRm1Cf,SAASnV,EAAQD,EAASH,GAE/B,YAEAY,QAAOmN,eAAe5N,EAAS,cAC7ByE,OAAO,GS91CV,IAAAmQ,GAAA/U,EAAA,GASMmZ,EAAe,WAEnB,IAAK,GAFeC,GAAqCnX,UAAAC,OAAA,GAAA2V,SAAA5V,UAAA,GAAAA,UAAA,MAAzBoX,EAAyBpX,UAAAC,OAAA,GAAA2V,SAAA5V,UAAA,IAAAA,UAAA,GACnDqX,EAAMD,EAAeD,EAAQA,EAAMnY,QAChCN,EAAI2Y,EAAIpX,OAAS,EAAGvB,EAAI,EAAGA,IAAK,CACvC,GAAM2H,GAAI4F,KAAKqL,MAAMrL,KAAKsL,UAAY7Y,EAAI,IACpC8Y,EAAOH,EAAI3Y,EACjB2Y,GAAI3Y,GAAK2Y,EAAIhR,GACbgR,EAAIhR,GAAKmR,EAEX,MAAOH,IAQHI,EAAc,iBAAMP,qBAUpBQ,EAAc,SAACjI,GAEnB,IAFoD,GAA1B8E,GAA0BvU,UAAAC,OAAA,GAAA2V,SAAA5V,UAAA,GAAAA,UAAA,MAAhB2X,EAAgB3X,UAAAC,OAAA,GAAA2V,SAAA5V,UAAA,GAAAA,UAAA,MAChD4X,EAAWD,EAAO1X,OAAS,EACxB2X,KAAeA,IAEpB,IADA,GAAIC,GAAcF,EAAOC,GAAU3X,OAAS,EACrC4X,KAAkBA,IAAe,CAEtC,GAAMC,GAAWvD,EAAIsD,EACrB,IAAIC,IAAaH,EAAOC,GAAUC,GAAc,OAAO,CAEvD,IAAIE,GAAW,CACXtI,GAAQ,EACVsI,EAAW,EACFtI,EAAQ,IACjBsI,EAAW,EAGb,IAAIC,GAAc,CACdH,GAAc,EAChBG,EAAc,EACLH,EAAc,IACvBG,EAAc,EAIhB,KAAK,GADDC,MACKvZ,EAAI,EAAGA,EAAI,EAAGA,IACjBiZ,EAAOI,EAAWrZ,YAAcqO,SAClCkL,EAAUA,EAAQ3Y,OAChBqY,EAAOI,EAAWrZ,GAAGM,MAAMgZ,EAAaA,EAAc,IAM5D,IAAIC,EAAQC,QAAQJ,QAAkB,OAAO,EAGjD,OAAO,GAQHK,EAAmB,QAAnBA,KAMJ,IAAK,GAJCR,IAAUF,KAGZW,EAAY,EACP3I,EAAQ,EAAGA,EAAQ,EAAGA,IAC7B,OAAa,CACX,GAAM8E,GAAMkD,GACZ,IAAIC,EAAYjI,EAAO8E,EAAKoD,GAAS,CACnCA,EAAOlI,GAAS8E,EAChB6D,EAAY,CACZ,OAIF,GAFAA,IAEIA,EAAY,IAAK,MAAOD,KAehC,IAAK,GAVCE,GAAeV,EAAOW,OAAO,SAACC,EAAQhE,EAAKqD,GAK/C,MAJArD,GAAIiE,QAAQ,SAACC,EAAaZ,GACxBU,EAAOV,GAAeU,EAAOV,OAC7BU,EAAOV,GAAaD,GAAYa,IAE3BF,OAIHG,KACGC,yBAA+BA,EAAS,EAAGA,IAClD,IAAK,GAAIja,GAAI2Z,EAAapY,OAAS,EAAGvB,KAAQA,IAC5C,GAAI2Z,EAAa3Z,GAAGwZ,QAAQS,QAAgB,CAC1CD,EAAQha,GAAKia,CACb,OAMN,MAFAhB,GAAOxX,KAAKuY,GAELf,GAUHiB,EAAe,SAAAjF,GACnB,GAAME,GAAWsE,IACXvE,EAASC,EAASS,IAAI,SAAAC,GAAA,MAC1BA,GAAIvV,QAAQsV,IAAI,SAAA3R,GAAA,MAAUsJ,MAAKsL,SAAW5D,EAAahR,EAAQ,QAEjE,QAASiR,SAAQC,YT42ClB3V,GAAQ+S,QSz2CM2H,GT62CT,SAASza,EAAQD,EAASH,GAE/B,YUz/CD,IAAAuU,GAAAvU,EAAA,GAKM8a,EAAY,WAEhB9a,EAAQ,EAGR,IAAM4U,GAAO5U,EAAQ,IACrB,EAAAuU,EAAApK,SAAO,EAAAoK,EAAA9S,GAACmT,EAAD,MAAUzQ,SAAS4W,eAAe,SASzCzM,QAAOE,UACLsM,EACAA,IV+/CE,SAAS1a,EAAQD,KAMvB,GAEM,SAASC,EAAQD,GW7hDvB,YAKA,SAAA6a,GAAAC,GACA,UAAAA,GAAApD,SAAAoD,EACA,SAAAxL,WAAA,wDAGA,OAAA7O,QAAAqa,GAGA,QAAAC,KACA,IACA,IAAAta,OAAAua,OACA,QAMA,IAAAC,GAAA,GAAA9Y,QAAA,MAEA,IADA8Y,EAAA,QACA,MAAAxa,OAAAya,oBAAAD,GAAA,GACA,QAKA,QADAE,MACA3a,EAAA,EAAiBA,EAAA,GAAQA,IACzB2a,EAAA,IAAAhZ,OAAAiZ,aAAA5a,KAEA,IAAA6a,GAAA5a,OAAAya,oBAAAC,GAAA/E,IAAA,SAAAkF,GACA,MAAAH,GAAAG,IAEA,mBAAAD,EAAAE,KAAA,IACA,QAIA,IAAAC,KAIA,OAHA,uBAAAC,MAAA,IAAAnB,QAAA,SAAAoB,GACAF,EAAAE,OAGA,yBADAjb,OAAAkb,KAAAlb,OAAAua,UAAkCQ,IAAAD,KAAA,IAMhC,MAAAzV,GAEF,UAnDA,GAAAnF,GAAAF,OAAAC,UAAAC,eACAib,EAAAnb,OAAAC,UAAAmb,oBAsDA5b,GAAAD,QAAA+a,IAAAta,OAAAua,OAAA,SAAAhH,EAAA8H,GAKA,OAJAC,GAEAC,EADAC,EAAApB,EAAA7G,GAGAvG,EAAA,EAAgBA,EAAA3L,UAAAC,OAAsB0L,IAAA,CACtCsO,EAAAtb,OAAAqB,UAAA2L,GAEA,QAAArL,KAAA2Z,GACApb,EAAAP,KAAA2b,EAAA3Z,KACA6Z,EAAA7Z,GAAA2Z,EAAA3Z,GAIA,IAAA3B,OAAAyb,sBAAA,CACAF,EAAAvb,OAAAyb,sBAAAH,EACA,QAAAvb,GAAA,EAAkBA,EAAAwb,EAAAja,OAAoBvB,IACtCob,EAAAxb,KAAA2b,EAAAC,EAAAxb,MACAyb,EAAAD,EAAAxb,IAAAub,EAAAC,EAAAxb,MAMA,MAAAyb,KXqiDM,SAAShc,EAAQD,EAASH,GYtnDhC,mBAAAqN,WAIArN,EAAA,IAAAsc,SACAhO,OAAAjB,QAAArN,EAAA,KAIAA,EAAA,IAIAY,OAAAua,OAAAnb,EAAA,KZ6nDM,SAASI,EAAQD,EAASH,Ga1oDhC,YAiBA,SAAAuc,GAAA3X,GACA,GAAAlE,GAAA,GAAA2M,KAAA6D,IAGA,OAFAxQ,GAAAiP,IAAA,EACAjP,EAAAkP,IAAAhL,EACAlE,EAjBA,GAAA2M,GAAArN,EAAA,EAEAI,GAAAD,QAAAkN,CAIA,IAAAmP,GAAAD,GAAA,GACAE,EAAAF,GAAA,GACAG,EAAAH,EAAA,MACAI,EAAAJ,EAAA1E,QACA+E,EAAAL,EAAA,GACAM,EAAAN,EAAA,GAQAlP,GAAAC,QAAA,SAAA1I,GACA,GAAAA,YAAAyI,GAAA,MAAAzI,EAEA,WAAAA,EAAA,MAAA8X,EACA,IAAA7E,SAAAjT,EAAA,MAAA+X,EACA,IAAA/X,KAAA,QAAA4X,EACA,IAAA5X,KAAA,QAAA6X,EACA,QAAA7X,EAAA,MAAAgY,EACA,SAAAhY,EAAA,MAAAiY,EAEA,oBAAAjY,IAAA,kBAAAA,GACA,IACA,GAAA2I,GAAA3I,EAAA2I,IACA,sBAAAA,GACA,UAAAF,GAAAE,EAAAC,KAAA5I,IAEK,MAAAwK,GACL,UAAA/B,GAAA,SAAAC,EAAA6C,GACAA,EAAAf,KAIA,MAAAmN,GAAA3X,IAGAyI,EAAAyP,IAAA,SAAAxD,GACA,GAAAtY,GAAAgO,MAAAnO,UAAAI,MAAAV,KAAA+Y,EAEA,WAAAjM,GAAA,SAAAC,EAAA6C,GAGA,QAAAC,GAAAzP,EAAAsa,GACA,GAAAA,IAAA,gBAAAA,IAAA,kBAAAA,IAAA,CACA,GAAAA,YAAA5N,IAAA4N,EAAA1N,OAAAF,EAAAxM,UAAA0M,KAAA,CACA,SAAA0N,EAAAtL,KACAsL,IAAArL,GAEA,YAAAqL,EAAAtL,IAAAS,EAAAzP,EAAAsa,EAAArL,MACA,IAAAqL,EAAAtL,KAAAQ,EAAA8K,EAAArL,SACAqL,GAAA1N,KAAA,SAAA0N,GACA7K,EAAAzP,EAAAsa,IACW9K,IAGX,GAAA5C,GAAA0N,EAAA1N,IACA,sBAAAA,GAAA,CACA,GAAA7M,GAAA,GAAA2M,GAAAE,EAAAC,KAAAyN,GAIA,YAHAva,GAAA6M,KAAA,SAAA0N,GACA7K,EAAAzP,EAAAsa,IACa9K,IAKbnP,EAAAL,GAAAsa,EACA,MAAA8B,GACAzP,EAAAtM,GA3BA,OAAAA,EAAAkB,OAAA,MAAAoL,MA8BA,QA7BAyP,GAAA/b,EAAAkB,OA6BAvB,EAAA,EAAmBA,EAAAK,EAAAkB,OAAiBvB,IACpCyP,EAAAzP,EAAAK,EAAAL,OAKA0M,EAAA8C,OAAA,SAAAvL,GACA,UAAAyI,GAAA,SAAAC,EAAA6C,GACAA,EAAAvL,MAIAyI,EAAA2P,KAAA,SAAAC,GACA,UAAA5P,GAAA,SAAAC,EAAA6C,GACA8M,EAAAxC,QAAA,SAAA7V,GACAyI,EAAAC,QAAA1I,GAAA2I,KAAAD,EAAA6C,QAOA9C,EAAAxM,UAAA,eAAAqP,GACA,MAAA5O,MAAAiM,KAAA,KAAA2C,KbkpDM,SAAS9P,EAAQD,EAASH,Gc3vDhC,YAYA,SAAAkd,KACAC,GAAA,EACA9P,EAAAmD,IAAA,KACAnD,EAAA0D,IAAA,KAIA,QAAAuL,GAAA9Z,GAwCA,QAAA4a,GAAA/c,IAEAmC,EAAA6a,eACAC,EACAC,EAAAld,GAAAmd,MACAhb,EAAAib,WAAAC,MAGAH,EAAAld,GAAAsd,cACAnb,EAAA4a,aACAG,EAAAld,GAAAud,QAAA,EACApb,EAAA4a,YACAG,EAAAld,GAAAsd,UACAJ,EAAAld,GAAAmd,SAGAD,EAAAld,GAAAud,QAAA,EACAC,EACAN,EAAAld,GAAAsd,UACAJ,EAAAld,GAAAmd,SAKA,QAAAM,GAAAzd,GACAkd,EAAAld,GAAAud,SACApb,EAAAsb,UACAtb,EAAAsb,UAAAP,EAAAld,GAAAsd,UAAAJ,EAAAld,GAAAmd,OACOD,EAAAld,GAAA+c,cACPjG,QAAA4G,KACA,kCAAAR,EAAAld,GAAAsd,UAAA,MAEAxG,QAAA4G,KACA,gHACAR,EAAAld,GAAAsd,UAAA,OAzEAnb,QACA2a,GAAAD,IACAC,GAAA,CACA,IAAA9c,GAAA,EACAsd,EAAA,EACAJ,IACAlQ,GAAAmD,IAAA,SAAAI,GAEA,IAAAA,EAAAjB,KACA4N,EAAA3M,EAAAoN,OAEAT,EAAA3M,EAAAoN,KAAAJ,OACAE,EAAAlN,EAAAoN,KAEAxL,aAAA+K,EAAA3M,EAAAoN,KAAAC,eAEAV,GAAA3M,EAAAoN,OAGA3Q,EAAA0D,IAAA,SAAAH,EAAAsN,GACA,IAAAtN,EAAAlB,MACAkB,EAAAoN,IAAA3d,IACAkd,EAAA3M,EAAAoN,MACAL,UAAA,KACAH,MAAAU,EACAD,QAAAxQ,WACA2P,EAAA5P,KAAA,KAAAoD,EAAAoN,KAKAV,EAAAY,EAAAR,GACA,IACA,KAEAE,QAAA,KA6CA,QAAAC,GAAAxd,EAAAmd,GACArG,QAAA4G,KAAA,6CAAA1d,EAAA,KACA,IAAA8d,IAAAX,MAAArb,OAAAqb,IAAA,EACAW,GAAAvC,MAAA,MAAAnB,QAAA,SAAA2D,GACAjH,QAAA4G,KAAA,KAAAK,KAIA,QAAAd,GAAAE,EAAAna,GACA,MAAAA,GAAAgb,KAAA,SAAAC,GACA,MAAAd,aAAAc,KA5GA,GAAAjR,GAAArN,EAAA,GAEA0d,GACAnK,eACA9D,UACA8O,YAGApB,GAAA,CACAhd,GAAA+c,UAOA/c,EAAAmc,Ud+1DM,SAASlc,EAAQD,Iej3DvB,SAAA6P,GACA,YAqBA,SAAAwO,GAAA9Z,GAIA,GAHA,gBAAAA,KACAA,EAAApC,OAAAoC,IAEA,6BAAAM,KAAAN,GACA,SAAA+K,WAAA,yCAEA,OAAA/K,GAAAZ,cAGA,QAAA2a,GAAA7Z,GAIA,MAHA,gBAAAA,KACAA,EAAAtC,OAAAsC,IAEAA,EAIA,QAAA8Z,GAAAzb,GACA,GAAA0b,IACAjV,KAAA,WACA,GAAA9E,GAAA3B,EAAA2b,OACA,QAAgB5N,KAAA6G,SAAAjT,YAUhB,OANAia,GAAAC,WACAH,EAAAI,OAAAJ,UAAA,WACA,MAAAA,KAIAA,EAGA,QAAAK,GAAAC,GACA3d,KAAAiV,OAEA0I,YAAAD,GACAC,EAAAxE,QAAA,SAAA7V,EAAAF,GACApD,KAAA4d,OAAAxa,EAAAE,IACOtD,MAEF2d,GACLre,OAAAya,oBAAA4D,GAAAxE,QAAA,SAAA/V,GACApD,KAAA4d,OAAAxa,EAAAua,EAAAva,KACOpD,MAkEP,QAAA6d,GAAAC,GACA,MAAAA,GAAAC,SACAhS,QAAA8C,OAAA,GAAAV,WAAA,sBAEA2P,EAAAC,UAAA,GAGA,QAAAC,GAAAC,GACA,UAAAlS,SAAA,SAAAC,EAAA6C,GACAoP,EAAAC,OAAA,WACAlS,EAAAiS,EAAA/E,SAEA+E,EAAAE,QAAA,WACAtP,EAAAoP,EAAA/B,UAKA,QAAAkC,GAAAC,GACA,GAAAJ,GAAA,GAAAK,WAEA,OADAL,GAAAM,kBAAAF,GACAL,EAAAC,GAGA,QAAAO,GAAAH,GACA,GAAAJ,GAAA,GAAAK,WAEA,OADAL,GAAAQ,WAAAJ,GACAL,EAAAC,GAGA,QAAAS,KAoFA,MAnFA1e,MAAA+d,UAAA,EAEA/d,KAAA2e,UAAA,SAAAb,GAEA,GADA9d,KAAA4e,UAAAd,EACA,gBAAAA,GACA9d,KAAA6e,UAAAf,MACO,IAAAP,EAAAc,MAAAS,KAAAvf,UAAAwf,cAAAjB,GACP9d,KAAAgf,UAAAlB,MACO,IAAAP,EAAA0B,UAAAC,SAAA3f,UAAAwf,cAAAjB,GACP9d,KAAAmf,cAAArB,MACO,IAAAP,EAAA6B,cAAAC,gBAAA9f,UAAAwf,cAAAjB,GACP9d,KAAA6e,UAAAf,EAAAwB,eACO,IAAAxB,GAEA,IAAAP,EAAAgC,cAAAC,YAAAjgB,UAAAwf,cAAAjB,GAIP,SAAA2B,OAAA,iCALAzf,MAAA6e,UAAA,EAQA7e,MAAA2d,QAAA+B,IAAA,kBACA,gBAAA5B,GACA9d,KAAA2d,QAAAgC,IAAA,2CACS3f,KAAAgf,WAAAhf,KAAAgf,UAAApa,KACT5E,KAAA2d,QAAAgC,IAAA,eAAA3f,KAAAgf,UAAApa,MACS2Y,EAAA6B,cAAAC,gBAAA9f,UAAAwf,cAAAjB,IACT9d,KAAA2d,QAAAgC,IAAA,oEAKApC,EAAAc,MACAre,KAAAqe,KAAA,WACA,GAAAuB,GAAA/B,EAAA7d,KACA,IAAA4f,EACA,MAAAA,EAGA,IAAA5f,KAAAgf,UACA,MAAAjT,SAAAC,QAAAhM,KAAAgf,UACS,IAAAhf,KAAAmf,cACT,SAAAM,OAAA,uCAEA,OAAA1T,SAAAC,QAAA,GAAA8S,OAAA9e,KAAA6e,cAIA7e,KAAAuf,YAAA,WACA,MAAAvf,MAAAqe,OAAApS,KAAAmS,IAGApe,KAAA6f,KAAA,WACA,GAAAD,GAAA/B,EAAA7d,KACA,IAAA4f,EACA,MAAAA,EAGA,IAAA5f,KAAAgf,UACA,MAAAR,GAAAxe,KAAAgf,UACS,IAAAhf,KAAAmf,cACT,SAAAM,OAAA,uCAEA,OAAA1T,SAAAC,QAAAhM,KAAA6e,aAIA7e,KAAA6f,KAAA,WACA,GAAAD,GAAA/B,EAAA7d,KACA,OAAA4f,KAAA7T,QAAAC,QAAAhM,KAAA6e,YAIAtB,EAAA0B,WACAjf,KAAAif,SAAA,WACA,MAAAjf,MAAA6f,OAAA5T,KAAA6T,KAIA9f,KAAA+f,KAAA,WACA,MAAA/f,MAAA6f,OAAA5T,KAAA8J,KAAAiK,QAGAhgB,KAMA,QAAAigB,GAAAC,GACA,GAAAC,GAAAD,EAAAE,aACA,OAAAC,GAAAxH,QAAAsH,QAAAD,EAGA,QAAAI,GAAA/K,EAAArU,GACAA,OACA,IAAA4c,GAAA5c,EAAA4c,IACA,IAAAwC,EAAA/gB,UAAAwf,cAAAxJ,GAAA,CACA,GAAAA,EAAAwI,SACA,SAAA5P,WAAA,eAEAnO,MAAAmN,IAAAoI,EAAApI,IACAnN,KAAAugB,YAAAhL,EAAAgL,YACArf,EAAAyc,UACA3d,KAAA2d,QAAA,GAAAD,GAAAnI,EAAAoI,UAEA3d,KAAAkgB,OAAA3K,EAAA2K,OACAlgB,KAAAwgB,KAAAjL,EAAAiL,KACA1C,IACAA,EAAAvI,EAAAqJ,UACArJ,EAAAwI,UAAA,OAGA/d,MAAAmN,IAAAoI,CAWA,IARAvV,KAAAugB,YAAArf,EAAAqf,aAAAvgB,KAAAugB,aAAA,QACArf,EAAAyc,SAAA3d,KAAA2d,UACA3d,KAAA2d,QAAA,GAAAD,GAAAxc,EAAAyc,UAEA3d,KAAAkgB,OAAAD,EAAA/e,EAAAgf,QAAAlgB,KAAAkgB,QAAA,OACAlgB,KAAAwgB,KAAAtf,EAAAsf,MAAAxgB,KAAAwgB,MAAA,KACAxgB,KAAAygB,SAAA,MAEA,QAAAzgB,KAAAkgB,QAAA,SAAAlgB,KAAAkgB,SAAApC,EACA,SAAA3P,WAAA,4CAEAnO,MAAA2e,UAAAb,GAOA,QAAAgC,GAAAhC,GACA,GAAA4C,GAAA,GAAAxB,SASA,OARApB,GAAAjW,OAAAyS,MAAA,KAAAnB,QAAA,SAAAwH,GACA,GAAAA,EAAA,CACA,GAAArG,GAAAqG,EAAArG,MAAA,KACAlX,EAAAkX,EAAAgD,QAAAxZ,QAAA,WACAR,EAAAgX,EAAAF,KAAA,KAAAtW,QAAA,UACA4c,GAAA9C,OAAAgD,mBAAAxd,GAAAwd,mBAAAtd,OAGAod,EAGA,QAAA/C,GAAAkD,GACA,GAAAC,GAAA,GAAApD,GACAqD,GAAAF,EAAAG,yBAAA,IAAAnZ,OAAAyS,MAAA,KAOA,OANAyG,GAAA5H,QAAA,SAAA8H,GACA,GAAA3G,GAAA2G,EAAApZ,OAAAyS,MAAA,KACArZ,EAAAqZ,EAAAgD,QAAAzV,OACAvE,EAAAgX,EAAAF,KAAA,KAAAvS,MACAiZ,GAAAlD,OAAA3c,EAAAqC,KAEAwd,EAKA,QAAAI,GAAAC,EAAAjgB,GACAA,IACAA,MAGAlB,KAAA4E,KAAA,UACA5E,KAAAohB,OAAAlgB,EAAAkgB,OACAphB,KAAAqhB,GAAArhB,KAAAohB,QAAA,KAAAphB,KAAAohB,OAAA,IACAphB,KAAAshB,WAAApgB,EAAAogB,WACAthB,KAAA2d,QAAAzc,EAAAyc,kBAAAD,GAAAxc,EAAAyc,QAAA,GAAAD,GAAAxc,EAAAyc,SACA3d,KAAAmN,IAAAjM,EAAAiM,KAAA,GACAnN,KAAA2e,UAAAwC,GA9UA,IAAAzS,EAAA6S,MAAA,CAIA,GAAAhE,IACA6B,aAAA,mBAAA1Q,GACA8O,SAAA,UAAA9O,IAAA,YAAA+O,QACAY,KAAA,cAAA3P,IAAA,QAAAA,IAAA,WACA,IAEA,MADA,IAAAoQ,OACA,EACO,MAAAna,GACP,aAGAsa,SAAA,YAAAvQ,GACA6Q,YAAA,eAAA7Q,GAqDAgP,GAAAne,UAAAqe,OAAA,SAAAxa,EAAAE,GACAF,EAAA8Z,EAAA9Z,GACAE,EAAA6Z,EAAA7Z,EACA,IAAAvB,GAAA/B,KAAAiV,IAAA7R,EACArB,KACAA,KACA/B,KAAAiV,IAAA7R,GAAArB,GAEAA,EAAAjB,KAAAwC,IAGAoa,EAAAne,UAAA,gBAAA6D,SACApD,MAAAiV,IAAAiI,EAAA9Z,KAGAsa,EAAAne,UAAAmgB,IAAA,SAAAtc,GACA,GAAAuY,GAAA3b,KAAAiV,IAAAiI,EAAA9Z,GACA,OAAAuY,KAAA,SAGA+B,EAAAne,UAAAiiB,OAAA,SAAApe,GACA,MAAApD,MAAAiV,IAAAiI,EAAA9Z,SAGAsa,EAAAne,UAAAkiB,IAAA,SAAAre,GACA,MAAApD,MAAAiV,IAAAzV,eAAA0d,EAAA9Z,KAGAsa,EAAAne,UAAAogB,IAAA,SAAAvc,EAAAE,GACAtD,KAAAiV,IAAAiI,EAAA9Z,KAAA+Z,EAAA7Z,KAGAoa,EAAAne,UAAA4Z,QAAA,SAAA9M,EAAAqV,GACApiB,OAAAya,oBAAA/Z,KAAAiV,KAAAkE,QAAA,SAAA/V,GACApD,KAAAiV,IAAA7R,GAAA+V,QAAA,SAAA7V,GACA+I,EAAApN,KAAAyiB,EAAApe,EAAAF,EAAApD,OACOA,OACFA,OAGL0d,EAAAne,UAAAib,KAAA,WACA,GAAA7Y,KAEA,OADA3B,MAAAmZ,QAAA,SAAA7V,EAAAF,GAAwCzB,EAAAb,KAAAsC,KACxCga,EAAAzb,IAGA+b,EAAAne,UAAAoc,OAAA,WACA,GAAAha,KAEA,OADA3B,MAAAmZ,QAAA,SAAA7V,GAAkC3B,EAAAb,KAAAwC,KAClC8Z,EAAAzb,IAGA+b,EAAAne,UAAAoiB,QAAA,WACA,GAAAhgB,KAEA,OADA3B,MAAAmZ,QAAA,SAAA7V,EAAAF,GAAwCzB,EAAAb,MAAAsC,EAAAE,MACxC8Z,EAAAzb,IAGA4b,EAAAC,WACAE,EAAAne,UAAAke,OAAAJ,UAAAK,EAAAne,UAAAoiB,QAyHA,IAAAtB,IAAA,6CA2CAC,GAAA/gB,UAAAqiB,MAAA,WACA,UAAAtB,GAAAtgB,OA4BA0e,EAAAzf,KAAAqhB,EAAA/gB,WAgBAmf,EAAAzf,KAAAiiB,EAAA3hB,WAEA2hB,EAAA3hB,UAAAqiB,MAAA,WACA,UAAAV,GAAAlhB,KAAA4e,WACAwC,OAAAphB,KAAAohB,OACAE,WAAAthB,KAAAshB,WACA3D,QAAA,GAAAD,GAAA1d,KAAA2d,SACAxQ,IAAAnN,KAAAmN,OAIA+T,EAAAhF,MAAA,WACA,GAAA2F,GAAA,GAAAX,GAAA,MAAuCE,OAAA,EAAAE,WAAA,IAEvC,OADAO,GAAAjd,KAAA,QACAid,EAGA,IAAAC,IAAA,oBAEAZ,GAAAa,SAAA,SAAA5U,EAAAiU,GACA,GAAAU,EAAAjJ,QAAAuI,QACA,SAAAnE,YAAA,sBAGA,WAAAiE,GAAA,MAA+BE,SAAAzD,SAA0BvQ,SAAAD,MAGzDuB,EAAAgP,UACAhP,EAAA4R,UACA5R,EAAAwS,WAEAxS,EAAA6S,MAAA,SAAAhM,EAAAyM,GACA,UAAAjW,SAAA,SAAAC,EAAA6C,GAUA,QAAAoT,KACA,qBAAApB,GACAA,EAAAoB,YAIA,mBAAAve,KAAAmd,EAAAG,yBACAH,EAAAqB,kBAAA,iBADA,OAfA,GAAAC,EAEAA,GADA7B,EAAA/gB,UAAAwf,cAAAxJ,KAAAyM,EACAzM,EAEA,GAAA+K,GAAA/K,EAAAyM,EAGA,IAAAnB,GAAA,GAAAuB,eAeAvB,GAAA3C,OAAA,WACA,GAAAhd,IACAkgB,OAAAP,EAAAO,OACAE,WAAAT,EAAAS,WACA3D,UAAAkD,GACA1T,IAAA8U,KAEAnE,EAAA,YAAA+C,KAAAgB,SAAAhB,EAAAwB,YACArW,GAAA,GAAAkV,GAAApD,EAAA5c,KAGA2f,EAAA1C,QAAA,WACAtP,EAAA,GAAAV,WAAA,4BAGA0S,EAAAyB,UAAA,WACAzT,EAAA,GAAAV,WAAA,4BAGA0S,EAAA0B,KAAAJ,EAAAjC,OAAAiC,EAAAhV,KAAA,GAEA,YAAAgV,EAAA5B,cACAM,EAAA2B,iBAAA,GAGA,gBAAA3B,IAAAtD,EAAAc,OACAwC,EAAA4B,aAAA,QAGAN,EAAAxE,QAAAxE,QAAA,SAAA7V,EAAAF,GACAyd,EAAA6B,iBAAAtf,EAAAE,KAGAud,EAAA8B,KAAA,mBAAAR,GAAAvD,UAAA,KAAAuD,EAAAvD,cAGAlQ,EAAA6S,MAAAqB,UAAA,IACC,mBAAAlU,WAAA1O","file":"static/js/main.6283b909.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/sudoku/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ((function(modules) {\n\t// Check all modules for deduplicated modules\n\tfor(var i in modules) {\n\t\tif(Object.prototype.hasOwnProperty.call(modules, i)) {\n\t\t\tswitch(typeof modules[i]) {\n\t\t\tcase \"function\": break;\n\t\t\tcase \"object\":\n\t\t\t\t// Module can be created from a template\n\t\t\t\tmodules[i] = (function(_m) {\n\t\t\t\t\tvar args = _m.slice(1), fn = modules[_m[0]];\n\t\t\t\t\treturn function (a,b,c) {\n\t\t\t\t\t\tfn.apply(this, [a,b,c].concat(args));\n\t\t\t\t\t};\n\t\t\t\t}(modules[i]));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t// Module is a copy of another module\n\t\t\t\tmodules[i] = modules[modules[i]];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn modules;\n}([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(13);\n\tmodule.exports = __webpack_require__(9);\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t!function() {\n\t 'use strict';\n\t function VNode() {}\n\t function h(nodeName, attributes) {\n\t var lastSimple, child, simple, i, children = EMPTY_CHILDREN;\n\t for (i = arguments.length; i-- > 2; ) stack.push(arguments[i]);\n\t if (attributes && null != attributes.children) {\n\t if (!stack.length) stack.push(attributes.children);\n\t delete attributes.children;\n\t }\n\t while (stack.length) if ((child = stack.pop()) && void 0 !== child.pop) for (i = child.length; i--; ) stack.push(child[i]); else {\n\t if ('boolean' == typeof child) child = null;\n\t if (simple = 'function' != typeof nodeName) if (null == child) child = ''; else if ('number' == typeof child) child = String(child); else if ('string' != typeof child) simple = !1;\n\t if (simple && lastSimple) children[children.length - 1] += child; else if (children === EMPTY_CHILDREN) children = [ child ]; else children.push(child);\n\t lastSimple = simple;\n\t }\n\t var p = new VNode();\n\t p.nodeName = nodeName;\n\t p.children = children;\n\t p.attributes = null == attributes ? void 0 : attributes;\n\t p.key = null == attributes ? void 0 : attributes.key;\n\t if (void 0 !== options.vnode) options.vnode(p);\n\t return p;\n\t }\n\t function extend(obj, props) {\n\t for (var i in props) obj[i] = props[i];\n\t return obj;\n\t }\n\t function cloneElement(vnode, props) {\n\t return h(vnode.nodeName, extend(extend({}, vnode.attributes), props), arguments.length > 2 ? [].slice.call(arguments, 2) : vnode.children);\n\t }\n\t function enqueueRender(component) {\n\t if (!component.__d && (component.__d = !0) && 1 == items.push(component)) (options.debounceRendering || defer)(rerender);\n\t }\n\t function rerender() {\n\t var p, list = items;\n\t items = [];\n\t while (p = list.pop()) if (p.__d) renderComponent(p);\n\t }\n\t function isSameNodeType(node, vnode, hydrating) {\n\t if ('string' == typeof vnode || 'number' == typeof vnode) return void 0 !== node.splitText;\n\t if ('string' == typeof vnode.nodeName) return !node._componentConstructor && isNamedNode(node, vnode.nodeName); else return hydrating || node._componentConstructor === vnode.nodeName;\n\t }\n\t function isNamedNode(node, nodeName) {\n\t return node.__n === nodeName || node.nodeName.toLowerCase() === nodeName.toLowerCase();\n\t }\n\t function getNodeProps(vnode) {\n\t var props = extend({}, vnode.attributes);\n\t props.children = vnode.children;\n\t var defaultProps = vnode.nodeName.defaultProps;\n\t if (void 0 !== defaultProps) for (var i in defaultProps) if (void 0 === props[i]) props[i] = defaultProps[i];\n\t return props;\n\t }\n\t function createNode(nodeName, isSvg) {\n\t var node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);\n\t node.__n = nodeName;\n\t return node;\n\t }\n\t function removeNode(node) {\n\t var parentNode = node.parentNode;\n\t if (parentNode) parentNode.removeChild(node);\n\t }\n\t function setAccessor(node, name, old, value, isSvg) {\n\t if ('className' === name) name = 'class';\n\t if ('key' === name) ; else if ('ref' === name) {\n\t if (old) old(null);\n\t if (value) value(node);\n\t } else if ('class' === name && !isSvg) node.className = value || ''; else if ('style' === name) {\n\t if (!value || 'string' == typeof value || 'string' == typeof old) node.style.cssText = value || '';\n\t if (value && 'object' == typeof value) {\n\t if ('string' != typeof old) for (var i in old) if (!(i in value)) node.style[i] = '';\n\t for (var i in value) node.style[i] = 'number' == typeof value[i] && !1 === IS_NON_DIMENSIONAL.test(i) ? value[i] + 'px' : value[i];\n\t }\n\t } else if ('dangerouslySetInnerHTML' === name) {\n\t if (value) node.innerHTML = value.__html || '';\n\t } else if ('o' == name[0] && 'n' == name[1]) {\n\t var useCapture = name !== (name = name.replace(/Capture$/, ''));\n\t name = name.toLowerCase().substring(2);\n\t if (value) {\n\t if (!old) node.addEventListener(name, eventProxy, useCapture);\n\t } else node.removeEventListener(name, eventProxy, useCapture);\n\t (node.__l || (node.__l = {}))[name] = value;\n\t } else if ('list' !== name && 'type' !== name && !isSvg && name in node) {\n\t setProperty(node, name, null == value ? '' : value);\n\t if (null == value || !1 === value) node.removeAttribute(name);\n\t } else {\n\t var ns = isSvg && name !== (name = name.replace(/^xlink\\:?/, ''));\n\t if (null == value || !1 === value) if (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase()); else node.removeAttribute(name); else if ('function' != typeof value) if (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value); else node.setAttribute(name, value);\n\t }\n\t }\n\t function setProperty(node, name, value) {\n\t try {\n\t node[name] = value;\n\t } catch (e) {}\n\t }\n\t function eventProxy(e) {\n\t return this.__l[e.type](options.event && options.event(e) || e);\n\t }\n\t function flushMounts() {\n\t var c;\n\t while (c = mounts.pop()) {\n\t if (options.afterMount) options.afterMount(c);\n\t if (c.componentDidMount) c.componentDidMount();\n\t }\n\t }\n\t function diff(dom, vnode, context, mountAll, parent, componentRoot) {\n\t if (!diffLevel++) {\n\t isSvgMode = null != parent && void 0 !== parent.ownerSVGElement;\n\t hydrating = null != dom && !('__preactattr_' in dom);\n\t }\n\t var ret = idiff(dom, vnode, context, mountAll, componentRoot);\n\t if (parent && ret.parentNode !== parent) parent.appendChild(ret);\n\t if (!--diffLevel) {\n\t hydrating = !1;\n\t if (!componentRoot) flushMounts();\n\t }\n\t return ret;\n\t }\n\t function idiff(dom, vnode, context, mountAll, componentRoot) {\n\t var out = dom, prevSvgMode = isSvgMode;\n\t if (null == vnode || 'boolean' == typeof vnode) vnode = '';\n\t if ('string' == typeof vnode || 'number' == typeof vnode) {\n\t if (dom && void 0 !== dom.splitText && dom.parentNode && (!dom._component || componentRoot)) {\n\t if (dom.nodeValue != vnode) dom.nodeValue = vnode;\n\t } else {\n\t out = document.createTextNode(vnode);\n\t if (dom) {\n\t if (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\t recollectNodeTree(dom, !0);\n\t }\n\t }\n\t out.__preactattr_ = !0;\n\t return out;\n\t }\n\t var vnodeName = vnode.nodeName;\n\t if ('function' == typeof vnodeName) return buildComponentFromVNode(dom, vnode, context, mountAll);\n\t isSvgMode = 'svg' === vnodeName ? !0 : 'foreignObject' === vnodeName ? !1 : isSvgMode;\n\t vnodeName = String(vnodeName);\n\t if (!dom || !isNamedNode(dom, vnodeName)) {\n\t out = createNode(vnodeName, isSvgMode);\n\t if (dom) {\n\t while (dom.firstChild) out.appendChild(dom.firstChild);\n\t if (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\t recollectNodeTree(dom, !0);\n\t }\n\t }\n\t var fc = out.firstChild, props = out.__preactattr_, vchildren = vnode.children;\n\t if (null == props) {\n\t props = out.__preactattr_ = {};\n\t for (var a = out.attributes, i = a.length; i--; ) props[a[i].name] = a[i].value;\n\t }\n\t if (!hydrating && vchildren && 1 === vchildren.length && 'string' == typeof vchildren[0] && null != fc && void 0 !== fc.splitText && null == fc.nextSibling) {\n\t if (fc.nodeValue != vchildren[0]) fc.nodeValue = vchildren[0];\n\t } else if (vchildren && vchildren.length || null != fc) innerDiffNode(out, vchildren, context, mountAll, hydrating || null != props.dangerouslySetInnerHTML);\n\t diffAttributes(out, vnode.attributes, props);\n\t isSvgMode = prevSvgMode;\n\t return out;\n\t }\n\t function innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {\n\t var j, c, f, vchild, child, originalChildren = dom.childNodes, children = [], keyed = {}, keyedLen = 0, min = 0, len = originalChildren.length, childrenLen = 0, vlen = vchildren ? vchildren.length : 0;\n\t if (0 !== len) for (var i = 0; i < len; i++) {\n\t var _child = originalChildren[i], props = _child.__preactattr_, key = vlen && props ? _child._component ? _child._component.__k : props.key : null;\n\t if (null != key) {\n\t keyedLen++;\n\t keyed[key] = _child;\n\t } else if (props || (void 0 !== _child.splitText ? isHydrating ? _child.nodeValue.trim() : !0 : isHydrating)) children[childrenLen++] = _child;\n\t }\n\t if (0 !== vlen) for (var i = 0; i < vlen; i++) {\n\t vchild = vchildren[i];\n\t child = null;\n\t var key = vchild.key;\n\t if (null != key) {\n\t if (keyedLen && void 0 !== keyed[key]) {\n\t child = keyed[key];\n\t keyed[key] = void 0;\n\t keyedLen--;\n\t }\n\t } else if (!child && min < childrenLen) for (j = min; j < childrenLen; j++) if (void 0 !== children[j] && isSameNodeType(c = children[j], vchild, isHydrating)) {\n\t child = c;\n\t children[j] = void 0;\n\t if (j === childrenLen - 1) childrenLen--;\n\t if (j === min) min++;\n\t break;\n\t }\n\t child = idiff(child, vchild, context, mountAll);\n\t f = originalChildren[i];\n\t if (child && child !== dom && child !== f) if (null == f) dom.appendChild(child); else if (child === f.nextSibling) removeNode(f); else dom.insertBefore(child, f);\n\t }\n\t if (keyedLen) for (var i in keyed) if (void 0 !== keyed[i]) recollectNodeTree(keyed[i], !1);\n\t while (min <= childrenLen) if (void 0 !== (child = children[childrenLen--])) recollectNodeTree(child, !1);\n\t }\n\t function recollectNodeTree(node, unmountOnly) {\n\t var component = node._component;\n\t if (component) unmountComponent(component); else {\n\t if (null != node.__preactattr_ && node.__preactattr_.ref) node.__preactattr_.ref(null);\n\t if (!1 === unmountOnly || null == node.__preactattr_) removeNode(node);\n\t removeChildren(node);\n\t }\n\t }\n\t function removeChildren(node) {\n\t node = node.lastChild;\n\t while (node) {\n\t var next = node.previousSibling;\n\t recollectNodeTree(node, !0);\n\t node = next;\n\t }\n\t }\n\t function diffAttributes(dom, attrs, old) {\n\t var name;\n\t for (name in old) if ((!attrs || null == attrs[name]) && null != old[name]) setAccessor(dom, name, old[name], old[name] = void 0, isSvgMode);\n\t for (name in attrs) if (!('children' === name || 'innerHTML' === name || name in old && attrs[name] === ('value' === name || 'checked' === name ? dom[name] : old[name]))) setAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);\n\t }\n\t function collectComponent(component) {\n\t var name = component.constructor.name;\n\t (components[name] || (components[name] = [])).push(component);\n\t }\n\t function createComponent(Ctor, props, context) {\n\t var inst, list = components[Ctor.name];\n\t if (Ctor.prototype && Ctor.prototype.render) {\n\t inst = new Ctor(props, context);\n\t Component.call(inst, props, context);\n\t } else {\n\t inst = new Component(props, context);\n\t inst.constructor = Ctor;\n\t inst.render = doRender;\n\t }\n\t if (list) for (var i = list.length; i--; ) if (list[i].constructor === Ctor) {\n\t inst.__b = list[i].__b;\n\t list.splice(i, 1);\n\t break;\n\t }\n\t return inst;\n\t }\n\t function doRender(props, state, context) {\n\t return this.constructor(props, context);\n\t }\n\t function setComponentProps(component, props, opts, context, mountAll) {\n\t if (!component.__x) {\n\t component.__x = !0;\n\t if (component.__r = props.ref) delete props.ref;\n\t if (component.__k = props.key) delete props.key;\n\t if (!component.base || mountAll) {\n\t if (component.componentWillMount) component.componentWillMount();\n\t } else if (component.componentWillReceiveProps) component.componentWillReceiveProps(props, context);\n\t if (context && context !== component.context) {\n\t if (!component.__c) component.__c = component.context;\n\t component.context = context;\n\t }\n\t if (!component.__p) component.__p = component.props;\n\t component.props = props;\n\t component.__x = !1;\n\t if (0 !== opts) if (1 === opts || !1 !== options.syncComponentUpdates || !component.base) renderComponent(component, 1, mountAll); else enqueueRender(component);\n\t if (component.__r) component.__r(component);\n\t }\n\t }\n\t function renderComponent(component, opts, mountAll, isChild) {\n\t if (!component.__x) {\n\t var rendered, inst, cbase, props = component.props, state = component.state, context = component.context, previousProps = component.__p || props, previousState = component.__s || state, previousContext = component.__c || context, isUpdate = component.base, nextBase = component.__b, initialBase = isUpdate || nextBase, initialChildComponent = component._component, skip = !1;\n\t if (isUpdate) {\n\t component.props = previousProps;\n\t component.state = previousState;\n\t component.context = previousContext;\n\t if (2 !== opts && component.shouldComponentUpdate && !1 === component.shouldComponentUpdate(props, state, context)) skip = !0; else if (component.componentWillUpdate) component.componentWillUpdate(props, state, context);\n\t component.props = props;\n\t component.state = state;\n\t component.context = context;\n\t }\n\t component.__p = component.__s = component.__c = component.__b = null;\n\t component.__d = !1;\n\t if (!skip) {\n\t rendered = component.render(props, state, context);\n\t if (component.getChildContext) context = extend(extend({}, context), component.getChildContext());\n\t var toUnmount, base, childComponent = rendered && rendered.nodeName;\n\t if ('function' == typeof childComponent) {\n\t var childProps = getNodeProps(rendered);\n\t inst = initialChildComponent;\n\t if (inst && inst.constructor === childComponent && childProps.key == inst.__k) setComponentProps(inst, childProps, 1, context, !1); else {\n\t toUnmount = inst;\n\t component._component = inst = createComponent(childComponent, childProps, context);\n\t inst.__b = inst.__b || nextBase;\n\t inst.__u = component;\n\t setComponentProps(inst, childProps, 0, context, !1);\n\t renderComponent(inst, 1, mountAll, !0);\n\t }\n\t base = inst.base;\n\t } else {\n\t cbase = initialBase;\n\t toUnmount = initialChildComponent;\n\t if (toUnmount) cbase = component._component = null;\n\t if (initialBase || 1 === opts) {\n\t if (cbase) cbase._component = null;\n\t base = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, !0);\n\t }\n\t }\n\t if (initialBase && base !== initialBase && inst !== initialChildComponent) {\n\t var baseParent = initialBase.parentNode;\n\t if (baseParent && base !== baseParent) {\n\t baseParent.replaceChild(base, initialBase);\n\t if (!toUnmount) {\n\t initialBase._component = null;\n\t recollectNodeTree(initialBase, !1);\n\t }\n\t }\n\t }\n\t if (toUnmount) unmountComponent(toUnmount);\n\t component.base = base;\n\t if (base && !isChild) {\n\t var componentRef = component, t = component;\n\t while (t = t.__u) (componentRef = t).base = base;\n\t base._component = componentRef;\n\t base._componentConstructor = componentRef.constructor;\n\t }\n\t }\n\t if (!isUpdate || mountAll) mounts.unshift(component); else if (!skip) {\n\t if (component.componentDidUpdate) component.componentDidUpdate(previousProps, previousState, previousContext);\n\t if (options.afterUpdate) options.afterUpdate(component);\n\t }\n\t if (null != component.__h) while (component.__h.length) component.__h.pop().call(component);\n\t if (!diffLevel && !isChild) flushMounts();\n\t }\n\t }\n\t function buildComponentFromVNode(dom, vnode, context, mountAll) {\n\t var c = dom && dom._component, originalComponent = c, oldDom = dom, isDirectOwner = c && dom._componentConstructor === vnode.nodeName, isOwner = isDirectOwner, props = getNodeProps(vnode);\n\t while (c && !isOwner && (c = c.__u)) isOwner = c.constructor === vnode.nodeName;\n\t if (c && isOwner && (!mountAll || c._component)) {\n\t setComponentProps(c, props, 3, context, mountAll);\n\t dom = c.base;\n\t } else {\n\t if (originalComponent && !isDirectOwner) {\n\t unmountComponent(originalComponent);\n\t dom = oldDom = null;\n\t }\n\t c = createComponent(vnode.nodeName, props, context);\n\t if (dom && !c.__b) {\n\t c.__b = dom;\n\t oldDom = null;\n\t }\n\t setComponentProps(c, props, 1, context, mountAll);\n\t dom = c.base;\n\t if (oldDom && dom !== oldDom) {\n\t oldDom._component = null;\n\t recollectNodeTree(oldDom, !1);\n\t }\n\t }\n\t return dom;\n\t }\n\t function unmountComponent(component) {\n\t if (options.beforeUnmount) options.beforeUnmount(component);\n\t var base = component.base;\n\t component.__x = !0;\n\t if (component.componentWillUnmount) component.componentWillUnmount();\n\t component.base = null;\n\t var inner = component._component;\n\t if (inner) unmountComponent(inner); else if (base) {\n\t if (base.__preactattr_ && base.__preactattr_.ref) base.__preactattr_.ref(null);\n\t component.__b = base;\n\t removeNode(base);\n\t collectComponent(component);\n\t removeChildren(base);\n\t }\n\t if (component.__r) component.__r(null);\n\t }\n\t function Component(props, context) {\n\t this.__d = !0;\n\t this.context = context;\n\t this.props = props;\n\t this.state = this.state || {};\n\t }\n\t function render(vnode, parent, merge) {\n\t return diff(merge, vnode, {}, !1, parent, !1);\n\t }\n\t var options = {};\n\t var stack = [];\n\t var EMPTY_CHILDREN = [];\n\t var defer = 'function' == typeof Promise ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;\n\t var IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n\t var items = [];\n\t var mounts = [];\n\t var diffLevel = 0;\n\t var isSvgMode = !1;\n\t var hydrating = !1;\n\t var components = {};\n\t extend(Component.prototype, {\n\t setState: function(state, callback) {\n\t var s = this.state;\n\t if (!this.__s) this.__s = extend({}, s);\n\t extend(s, 'function' == typeof state ? state(s, this.props) : state);\n\t if (callback) (this.__h = this.__h || []).push(callback);\n\t enqueueRender(this);\n\t },\n\t forceUpdate: function(callback) {\n\t if (callback) (this.__h = this.__h || []).push(callback);\n\t renderComponent(this, 2);\n\t },\n\t render: function() {}\n\t });\n\t var preact = {\n\t h: h,\n\t createElement: h,\n\t cloneElement: cloneElement,\n\t Component: Component,\n\t render: render,\n\t rerender: rerender,\n\t options: options\n\t };\n\t if (true) module.exports = preact; else self.preact = preact;\n\t}();\n\t//# sourceMappingURL=preact.js.map\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar SUDOKU_DIGITS = exports.SUDOKU_DIGITS = [1, 2, 3, 4, 5, 6, 7, 8, 9];\n\t\n\tvar SUDOKU_LARGEST_DIGIT = exports.SUDOKU_LARGEST_DIGIT = Math.max.apply({}, SUDOKU_DIGITS);\n\t\n\t// ga event value must be an integer\n\t// so a difficulty of .5 will be tracked as 500\n\tvar GA_DIFFICULTY_MULTIPLIER = exports.GA_DIFFICULTY_MULTIPLIER = 1e3;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar _window = window,\n\t ga = _window.ga,\n\t requirejs = _window.requirejs;\n\t\n\t\n\tga('create', 'UA-59233605-5', 'auto');\n\t\n\t// https://developers.google.com/analytics/devguides/collection/analyticsjs/debugging\n\tvar url = 'https://www.google-analytics.com/analytics.js';\n\tif ((\"production\") === 'development' || location.hostname === 'localhost') {\n\t url = url.replace('analytics.js', 'analytics_debug.js');\n\t ga('set', 'sendHitTask', null);\n\t}\n\t\n\tga('set', {\n\t title: 'Sudoku',\n\t page: '/sudoku/'\n\t});\n\tga('send', 'pageview');\n\t\n\trequirejs([url]);\n\t\n\t/**\n\t * Tracks event with analytics.\n\t * https://developers.google.com/analytics/devguides/collection/analyticsjs/events\n\t *\n\t * @param {String} eventCategory\n\t * @param {String} eventAction\n\t * @param {String} [eventLabel]\n\t * @param {Number} [eventValue]\n\t */\n\tvar trackEvent = exports.trackEvent = function trackEvent() {\n\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\t\n\t window.ga.apply(null, ['send', 'event'].concat(args));\n\t};\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar asap = __webpack_require__(5);\n\t\n\tfunction noop() {}\n\t\n\t// States:\n\t//\n\t// 0 - pending\n\t// 1 - fulfilled with _value\n\t// 2 - rejected with _value\n\t// 3 - adopted the state of another promise, _value\n\t//\n\t// once the state is no longer pending (0) it is immutable\n\t\n\t// All `_` prefixed properties will be reduced to `_{random number}`\n\t// at build time to obfuscate them and discourage their use.\n\t// We don't use symbols or Object.defineProperty to fully hide them\n\t// because the performance isn't good enough.\n\t\n\t\n\t// to avoid using try/catch inside critical functions, we\n\t// extract them to here.\n\tvar LAST_ERROR = null;\n\tvar IS_ERROR = {};\n\tfunction getThen(obj) {\n\t try {\n\t return obj.then;\n\t } catch (ex) {\n\t LAST_ERROR = ex;\n\t return IS_ERROR;\n\t }\n\t}\n\t\n\tfunction tryCallOne(fn, a) {\n\t try {\n\t return fn(a);\n\t } catch (ex) {\n\t LAST_ERROR = ex;\n\t return IS_ERROR;\n\t }\n\t}\n\tfunction tryCallTwo(fn, a, b) {\n\t try {\n\t fn(a, b);\n\t } catch (ex) {\n\t LAST_ERROR = ex;\n\t return IS_ERROR;\n\t }\n\t}\n\t\n\tmodule.exports = Promise;\n\t\n\tfunction Promise(fn) {\n\t if (typeof this !== 'object') {\n\t throw new TypeError('Promises must be constructed via new');\n\t }\n\t if (typeof fn !== 'function') {\n\t throw new TypeError('not a function');\n\t }\n\t this._45 = 0;\n\t this._81 = 0;\n\t this._65 = null;\n\t this._54 = null;\n\t if (fn === noop) return;\n\t doResolve(fn, this);\n\t}\n\tPromise._10 = null;\n\tPromise._97 = null;\n\tPromise._61 = noop;\n\t\n\tPromise.prototype.then = function(onFulfilled, onRejected) {\n\t if (this.constructor !== Promise) {\n\t return safeThen(this, onFulfilled, onRejected);\n\t }\n\t var res = new Promise(noop);\n\t handle(this, new Handler(onFulfilled, onRejected, res));\n\t return res;\n\t};\n\t\n\tfunction safeThen(self, onFulfilled, onRejected) {\n\t return new self.constructor(function (resolve, reject) {\n\t var res = new Promise(noop);\n\t res.then(resolve, reject);\n\t handle(self, new Handler(onFulfilled, onRejected, res));\n\t });\n\t};\n\tfunction handle(self, deferred) {\n\t while (self._81 === 3) {\n\t self = self._65;\n\t }\n\t if (Promise._10) {\n\t Promise._10(self);\n\t }\n\t if (self._81 === 0) {\n\t if (self._45 === 0) {\n\t self._45 = 1;\n\t self._54 = deferred;\n\t return;\n\t }\n\t if (self._45 === 1) {\n\t self._45 = 2;\n\t self._54 = [self._54, deferred];\n\t return;\n\t }\n\t self._54.push(deferred);\n\t return;\n\t }\n\t handleResolved(self, deferred);\n\t}\n\t\n\tfunction handleResolved(self, deferred) {\n\t asap(function() {\n\t var cb = self._81 === 1 ? deferred.onFulfilled : deferred.onRejected;\n\t if (cb === null) {\n\t if (self._81 === 1) {\n\t resolve(deferred.promise, self._65);\n\t } else {\n\t reject(deferred.promise, self._65);\n\t }\n\t return;\n\t }\n\t var ret = tryCallOne(cb, self._65);\n\t if (ret === IS_ERROR) {\n\t reject(deferred.promise, LAST_ERROR);\n\t } else {\n\t resolve(deferred.promise, ret);\n\t }\n\t });\n\t}\n\tfunction resolve(self, newValue) {\n\t // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n\t if (newValue === self) {\n\t return reject(\n\t self,\n\t new TypeError('A promise cannot be resolved with itself.')\n\t );\n\t }\n\t if (\n\t newValue &&\n\t (typeof newValue === 'object' || typeof newValue === 'function')\n\t ) {\n\t var then = getThen(newValue);\n\t if (then === IS_ERROR) {\n\t return reject(self, LAST_ERROR);\n\t }\n\t if (\n\t then === self.then &&\n\t newValue instanceof Promise\n\t ) {\n\t self._81 = 3;\n\t self._65 = newValue;\n\t finale(self);\n\t return;\n\t } else if (typeof then === 'function') {\n\t doResolve(then.bind(newValue), self);\n\t return;\n\t }\n\t }\n\t self._81 = 1;\n\t self._65 = newValue;\n\t finale(self);\n\t}\n\t\n\tfunction reject(self, newValue) {\n\t self._81 = 2;\n\t self._65 = newValue;\n\t if (Promise._97) {\n\t Promise._97(self, newValue);\n\t }\n\t finale(self);\n\t}\n\tfunction finale(self) {\n\t if (self._45 === 1) {\n\t handle(self, self._54);\n\t self._54 = null;\n\t }\n\t if (self._45 === 2) {\n\t for (var i = 0; i < self._54.length; i++) {\n\t handle(self, self._54[i]);\n\t }\n\t self._54 = null;\n\t }\n\t}\n\t\n\tfunction Handler(onFulfilled, onRejected, promise){\n\t this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n\t this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n\t this.promise = promise;\n\t}\n\t\n\t/**\n\t * Take a potentially misbehaving resolver function and make sure\n\t * onFulfilled and onRejected are only called once.\n\t *\n\t * Makes no guarantees about asynchrony.\n\t */\n\tfunction doResolve(fn, promise) {\n\t var done = false;\n\t var res = tryCallTwo(fn, function (value) {\n\t if (done) return;\n\t done = true;\n\t resolve(promise, value);\n\t }, function (reason) {\n\t if (done) return;\n\t done = true;\n\t reject(promise, reason);\n\t })\n\t if (!done && res === IS_ERROR) {\n\t done = true;\n\t reject(promise, LAST_ERROR);\n\t }\n\t}\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {\"use strict\";\n\t\n\t// Use the fastest means possible to execute a task in its own turn, with\n\t// priority over other events including IO, animation, reflow, and redraw\n\t// events in browsers.\n\t//\n\t// An exception thrown by a task will permanently interrupt the processing of\n\t// subsequent tasks. The higher level `asap` function ensures that if an\n\t// exception is thrown by a task, that the task queue will continue flushing as\n\t// soon as possible, but if you use `rawAsap` directly, you are responsible to\n\t// either ensure that no exceptions are thrown from your task, or to manually\n\t// call `rawAsap.requestFlush` if an exception is thrown.\n\tmodule.exports = rawAsap;\n\tfunction rawAsap(task) {\n\t if (!queue.length) {\n\t requestFlush();\n\t flushing = true;\n\t }\n\t // Equivalent to push, but avoids a function call.\n\t queue[queue.length] = task;\n\t}\n\t\n\tvar queue = [];\n\t// Once a flush has been requested, no further calls to `requestFlush` are\n\t// necessary until the next `flush` completes.\n\tvar flushing = false;\n\t// `requestFlush` is an implementation-specific method that attempts to kick\n\t// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n\t// the event queue before yielding to the browser's own event loop.\n\tvar requestFlush;\n\t// The position of the next task to execute in the task queue. This is\n\t// preserved between calls to `flush` so that it can be resumed if\n\t// a task throws an exception.\n\tvar index = 0;\n\t// If a task schedules additional tasks recursively, the task queue can grow\n\t// unbounded. To prevent memory exhaustion, the task queue will periodically\n\t// truncate already-completed tasks.\n\tvar capacity = 1024;\n\t\n\t// The flush function processes all tasks that have been scheduled with\n\t// `rawAsap` unless and until one of those tasks throws an exception.\n\t// If a task throws an exception, `flush` ensures that its state will remain\n\t// consistent and will resume where it left off when called again.\n\t// However, `flush` does not make any arrangements to be called again if an\n\t// exception is thrown.\n\tfunction flush() {\n\t while (index < queue.length) {\n\t var currentIndex = index;\n\t // Advance the index before calling the task. This ensures that we will\n\t // begin flushing on the next task the task throws an error.\n\t index = index + 1;\n\t queue[currentIndex].call();\n\t // Prevent leaking memory for long chains of recursive calls to `asap`.\n\t // If we call `asap` within tasks scheduled by `asap`, the queue will\n\t // grow, but to avoid an O(n) walk for every task we execute, we don't\n\t // shift tasks off the queue after they have been executed.\n\t // Instead, we periodically shift 1024 tasks off the queue.\n\t if (index > capacity) {\n\t // Manually shift all values starting at the index back to the\n\t // beginning of the queue.\n\t for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n\t queue[scan] = queue[scan + index];\n\t }\n\t queue.length -= index;\n\t index = 0;\n\t }\n\t }\n\t queue.length = 0;\n\t index = 0;\n\t flushing = false;\n\t}\n\t\n\t// `requestFlush` is implemented using a strategy based on data collected from\n\t// every available SauceLabs Selenium web driver worker at time of writing.\n\t// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\t\n\t// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n\t// have WebKitMutationObserver but not un-prefixed MutationObserver.\n\t// Must use `global` or `self` instead of `window` to work in both frames and web\n\t// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\t\n\t/* globals self */\n\tvar scope = typeof global !== \"undefined\" ? global : self;\n\tvar BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver;\n\t\n\t// MutationObservers are desirable because they have high priority and work\n\t// reliably everywhere they are implemented.\n\t// They are implemented in all modern browsers.\n\t//\n\t// - Android 4-4.3\n\t// - Chrome 26-34\n\t// - Firefox 14-29\n\t// - Internet Explorer 11\n\t// - iPad Safari 6-7.1\n\t// - iPhone Safari 7-7.1\n\t// - Safari 6-7\n\tif (typeof BrowserMutationObserver === \"function\") {\n\t requestFlush = makeRequestCallFromMutationObserver(flush);\n\t\n\t// MessageChannels are desirable because they give direct access to the HTML\n\t// task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n\t// 11-12, and in web workers in many engines.\n\t// Although message channels yield to any queued rendering and IO tasks, they\n\t// would be better than imposing the 4ms delay of timers.\n\t// However, they do not work reliably in Internet Explorer or Safari.\n\t\n\t// Internet Explorer 10 is the only browser that has setImmediate but does\n\t// not have MutationObservers.\n\t// Although setImmediate yields to the browser's renderer, it would be\n\t// preferrable to falling back to setTimeout since it does not have\n\t// the minimum 4ms penalty.\n\t// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n\t// Desktop to a lesser extent) that renders both setImmediate and\n\t// MessageChannel useless for the purposes of ASAP.\n\t// https://github.com/kriskowal/q/issues/396\n\t\n\t// Timers are implemented universally.\n\t// We fall back to timers in workers in most engines, and in foreground\n\t// contexts in the following browsers.\n\t// However, note that even this simple case requires nuances to operate in a\n\t// broad spectrum of browsers.\n\t//\n\t// - Firefox 3-13\n\t// - Internet Explorer 6-9\n\t// - iPad Safari 4.3\n\t// - Lynx 2.8.7\n\t} else {\n\t requestFlush = makeRequestCallFromTimer(flush);\n\t}\n\t\n\t// `requestFlush` requests that the high priority event queue be flushed as\n\t// soon as possible.\n\t// This is useful to prevent an error thrown in a task from stalling the event\n\t// queue if the exception handled by Node.js’s\n\t// `process.on(\"uncaughtException\")` or by a domain.\n\trawAsap.requestFlush = requestFlush;\n\t\n\t// To request a high priority event, we induce a mutation observer by toggling\n\t// the text of a text node between \"1\" and \"-1\".\n\tfunction makeRequestCallFromMutationObserver(callback) {\n\t var toggle = 1;\n\t var observer = new BrowserMutationObserver(callback);\n\t var node = document.createTextNode(\"\");\n\t observer.observe(node, {characterData: true});\n\t return function requestCall() {\n\t toggle = -toggle;\n\t node.data = toggle;\n\t };\n\t}\n\t\n\t// The message channel technique was discovered by Malte Ubl and was the\n\t// original foundation for this library.\n\t// http://www.nonblocking.io/2011/06/windownexttick.html\n\t\n\t// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n\t// page's first load. Thankfully, this version of Safari supports\n\t// MutationObservers, so we don't need to fall back in that case.\n\t\n\t// function makeRequestCallFromMessageChannel(callback) {\n\t// var channel = new MessageChannel();\n\t// channel.port1.onmessage = callback;\n\t// return function requestCall() {\n\t// channel.port2.postMessage(0);\n\t// };\n\t// }\n\t\n\t// For reasons explained above, we are also unable to use `setImmediate`\n\t// under any circumstances.\n\t// Even if we were, there is another bug in Internet Explorer 10.\n\t// It is not sufficient to assign `setImmediate` to `requestFlush` because\n\t// `setImmediate` must be called *by name* and therefore must be wrapped in a\n\t// closure.\n\t// Never forget.\n\t\n\t// function makeRequestCallFromSetImmediate(callback) {\n\t// return function requestCall() {\n\t// setImmediate(callback);\n\t// };\n\t// }\n\t\n\t// Safari 6.0 has a problem where timers will get lost while the user is\n\t// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n\t// mutation observers, so that implementation is used instead.\n\t// However, if we ever elect to use timers in Safari, the prevalent work-around\n\t// is to add a scroll event listener that calls for a flush.\n\t\n\t// `setTimeout` does not call the passed callback if the delay is less than\n\t// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n\t// even then.\n\t\n\tfunction makeRequestCallFromTimer(callback) {\n\t return function requestCall() {\n\t // We dispatch a timeout with a specified delay of 0 for engines that\n\t // can reliably accommodate that request. This will usually be snapped\n\t // to a 4 milisecond delay, but once we're flushing, there's no delay\n\t // between events.\n\t var timeoutHandle = setTimeout(handleTimer, 0);\n\t // However, since this timer gets frequently dropped in Firefox\n\t // workers, we enlist an interval handle that will try to fire\n\t // an event 20 times per second until it succeeds.\n\t var intervalHandle = setInterval(handleTimer, 50);\n\t\n\t function handleTimer() {\n\t // Whichever timer succeeds will cancel both timers and\n\t // execute the callback.\n\t clearTimeout(timeoutHandle);\n\t clearInterval(intervalHandle);\n\t callback();\n\t }\n\t };\n\t}\n\t\n\t// This is for `asap.js` only.\n\t// Its name will be periodically randomized to break any code that depends on\n\t// its existence.\n\trawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer;\n\t\n\t// ASAP was originally a nextTick shim included in Q. This was factored out\n\t// into this ASAP package. It was later adapted to RSVP which made further\n\t// amendments. These decisions, particularly to marginalize MessageChannel and\n\t// to capture the MutationObserver implementation in a closure, were integrated\n\t// back into ASAP proper.\n\t// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _preact = __webpack_require__(1);\n\t\n\tvar _Sudoku = __webpack_require__(7);\n\t\n\tvar _Sudoku2 = _interopRequireDefault(_Sudoku);\n\t\n\t__webpack_require__(10);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _ref = (0, _preact.h)(\n\t 'main',\n\t { className: 'center', role: 'main' },\n\t (0, _preact.h)(\n\t 'h1',\n\t { className: 'heading text-center' },\n\t 'Sudoku'\n\t ),\n\t (0, _preact.h)(_Sudoku2.default, null)\n\t);\n\t\n\tvar Game = function (_Component) {\n\t _inherits(Game, _Component);\n\t\n\t function Game() {\n\t _classCallCheck(this, Game);\n\t\n\t return _possibleConstructorReturn(this, (Game.__proto__ || Object.getPrototypeOf(Game)).apply(this, arguments));\n\t }\n\t\n\t _createClass(Game, [{\n\t key: 'render',\n\t value: function render() {\n\t return _ref;\n\t }\n\t }]);\n\t\n\t return Game;\n\t}(_preact.Component);\n\t\n\tmodule.exports = Game;\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _preact = __webpack_require__(1);\n\t\n\tvar _constants = __webpack_require__(2);\n\t\n\tvar _sudoku = __webpack_require__(8);\n\t\n\tvar _sudoku2 = _interopRequireDefault(_sudoku);\n\t\n\tvar _ga = __webpack_require__(3);\n\t\n\t__webpack_require__(11);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _ref8 = (0, _preact.h)('br', null);\n\t\n\tvar _ref9 = (0, _preact.h)('br', null);\n\t\n\tvar _ref10 = (0, _preact.h)('br', null);\n\t\n\tvar _ref11 = (0, _preact.h)(\n\t 'small',\n\t null,\n\t 'Difficulty: '\n\t);\n\t\n\tvar Sudoku = function (_Component) {\n\t _inherits(Sudoku, _Component);\n\t\n\t function Sudoku() {\n\t var _ref;\n\t\n\t var _temp, _this, _ret;\n\t\n\t _classCallCheck(this, Sudoku);\n\t\n\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\t\n\t return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Sudoku.__proto__ || Object.getPrototypeOf(Sudoku)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n\t attempt: [],\n\t difficulty: 0.5,\n\t puzzle: [],\n\t solution: [],\n\t solutionJSON: ''\n\t }, _this.handleCellChange = function (_ref2) {\n\t var target = _ref2.target;\n\t var _target$dataset = target.dataset,\n\t x = _target$dataset.x,\n\t y = _target$dataset.y,\n\t value = target.value;\n\t\n\t if (!target.readOnly && value) {\n\t _this.setState(function (state) {\n\t var attempt = state.attempt.map(function (row) {\n\t return row.slice();\n\t });\n\t attempt[y][x] = parseInt(value, 10) || null;\n\t return { attempt: attempt };\n\t });\n\t }\n\t }, _this.handleCellKeyDown = function (_ref3) {\n\t var key = _ref3.key,\n\t target = _ref3.target;\n\t\n\t // Get x, y dataset from target element.\n\t var _target$dataset2 = target.dataset,\n\t x = _target$dataset2.x,\n\t y = _target$dataset2.y;\n\t\n\t // Convert x and y to integers.\n\t\n\t x = parseInt(x, 10);\n\t y = parseInt(y, 10);\n\t\n\t switch (key) {\n\t case 'ArrowUp':\n\t y -= 1;\n\t break;\n\t case 'ArrowDown':\n\t y += 1;\n\t break;\n\t case 'ArrowLeft':\n\t x -= 1;\n\t break;\n\t case 'ArrowRight':\n\t x += 1;\n\t break;\n\t default:\n\t return;\n\t }\n\t\n\t var input = _this.tbody.querySelector('[data-x=\"' + x + '\"][data-y=\"' + y + '\"]');\n\t if (input) setTimeout(function () {\n\t return input.select();\n\t });\n\t }, _this.checkSolution = function () {\n\t var _this$state = _this.state,\n\t attempt = _this$state.attempt,\n\t difficulty = _this$state.difficulty,\n\t solutionJSON = _this$state.solutionJSON;\n\t\n\t console.log(JSON.stringify(attempt), solutionJSON);\n\t if (JSON.stringify(attempt) === solutionJSON) {\n\t (0, _ga.trackEvent)('puzzle', 'check', 'solved', Math.round(difficulty * _constants.GA_DIFFICULTY_MULTIPLIER));\n\t alert('Solved!');\n\t } else {\n\t (0, _ga.trackEvent)('puzzle', 'check', 'unsolved', Math.round(difficulty * _constants.GA_DIFFICULTY_MULTIPLIER));\n\t alert('Not solved.');\n\t }\n\t }, _this.clearPuzzle = function () {\n\t (0, _ga.trackEvent)('puzzle', 'clear');\n\t _this.setState(function (_ref4) {\n\t var puzzle = _ref4.puzzle;\n\t return {\n\t attempt: puzzle.map(function (row) {\n\t return row.slice();\n\t })\n\t };\n\t });\n\t }, _this.newPuzzle = function () {\n\t _this.setState(function (_ref5) {\n\t var difficulty = _ref5.difficulty;\n\t\n\t (0, _ga.trackEvent)('puzzle', 'new', undefined, Math.round(difficulty * _constants.GA_DIFFICULTY_MULTIPLIER));\n\t\n\t var _createSudoku = (0, _sudoku2.default)(difficulty),\n\t puzzle = _createSudoku.puzzle,\n\t solution = _createSudoku.solution;\n\t\n\t return {\n\t attempt: puzzle.map(function (row) {\n\t return row.slice();\n\t }),\n\t puzzle: puzzle,\n\t solution: solution,\n\t solutionJSON: JSON.stringify(solution)\n\t };\n\t });\n\t }, _this.changeDifficulty = function (_ref6) {\n\t var target = _ref6.target;\n\t\n\t _this.setState(function () {\n\t return {\n\t difficulty: Number(target.value)\n\t };\n\t });\n\t }, _temp), _possibleConstructorReturn(_this, _ret);\n\t }\n\t\n\t _createClass(Sudoku, [{\n\t key: 'componentDidMount',\n\t value: function componentDidMount() {\n\t this.newPuzzle();\n\t }\n\t\n\t /**\n\t * Focuses puzzle cell when clicked.\n\t *\n\t * @param {SyntheticEvent}\n\t */\n\t\n\t }, {\n\t key: 'handleCellClick',\n\t value: function handleCellClick(_ref7) {\n\t var target = _ref7.target;\n\t\n\t target.select();\n\t }\n\t\n\t /**\n\t * Records user input.\n\t *\n\t * @param {SyntheticEvent}\n\t */\n\t\n\t\n\t /**\n\t * Navigates puzzle.\n\t *\n\t * @param {SyntheticEvent}\n\t */\n\t\n\t\n\t /**\n\t * Checks if puzzle is solved.\n\t */\n\t\n\t\n\t /**\n\t * Clears puzzle attempt.\n\t */\n\t\n\t\n\t /**\n\t * Generates a new puzzle.\n\t */\n\t\n\t\n\t /**\n\t * Changes puzzle difficulty.\n\t */\n\t\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var _state = this.state,\n\t attempt = _state.attempt,\n\t difficulty = _state.difficulty,\n\t puzzle = _state.puzzle;\n\t\n\t return (0, _preact.h)(\n\t 'div',\n\t null,\n\t (0, _preact.h)(\n\t 'table',\n\t null,\n\t (0, _preact.h)(\n\t 'tbody',\n\t { ref: function ref(element) {\n\t return _this2.tbody = element;\n\t } },\n\t attempt.map(function (rows, y) {\n\t return (0, _preact.h)(\n\t 'tr',\n\t null,\n\t rows.map(function (digit, x) {\n\t return (0, _preact.h)(\n\t 'td',\n\t null,\n\t (0, _preact.h)('input', {\n\t 'data-x': x,\n\t 'data-y': y,\n\t formnovalidate: true,\n\t maxlength: '1',\n\t onClick: _this2.handleCellClick,\n\t onChange: _this2.handleCellChange,\n\t onKeyDown: _this2.handleCellKeyDown,\n\t pattern: '[0-9]',\n\t readonly: Boolean(puzzle[y][x]),\n\t type: 'text',\n\t value: digit\n\t })\n\t );\n\t })\n\t );\n\t })\n\t )\n\t ),\n\t _ref8,\n\t (0, _preact.h)(\n\t 'button',\n\t { onClick: this.checkSolution },\n\t 'Check Solution'\n\t ),\n\t '\\xA0',\n\t (0, _preact.h)(\n\t 'button',\n\t { onClick: this.clearPuzzle },\n\t 'Clear Puzzle'\n\t ),\n\t _ref9,\n\t _ref10,\n\t (0, _preact.h)(\n\t 'label',\n\t null,\n\t _ref11,\n\t (0, _preact.h)('input', {\n\t type: 'number',\n\t min: 0,\n\t max: 1,\n\t value: difficulty,\n\t onChange: this.changeDifficulty\n\t })\n\t ),\n\t '\\xA0',\n\t (0, _preact.h)(\n\t 'button',\n\t { onClick: this.newPuzzle },\n\t 'New Puzzle'\n\t )\n\t );\n\t }\n\t }]);\n\t\n\t return Sudoku;\n\t}(_preact.Component);\n\t\n\texports.default = Sudoku;\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _constants = __webpack_require__(2);\n\t\n\t/**\n\t * Shuffles an array.\n\t *\n\t * @param {Array} array\n\t * @param {Boolean} [shouldMutate=false]\n\t * @return {Array}\n\t */\n\tvar shuffleArray = function shuffleArray() {\n\t var array = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\t var shouldMutate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t\n\t var arr = shouldMutate ? array : array.slice();\n\t for (var i = arr.length - 1; i > 0; i--) {\n\t var j = Math.floor(Math.random() * (i + 1));\n\t var temp = arr[i];\n\t arr[i] = arr[j];\n\t arr[j] = temp;\n\t }\n\t return arr;\n\t};\n\t\n\t/**\n\t * Randomly generates a Sudoku row.\n\t *\n\t * @return {Array} - Shuffled numbers between 1 and 9 inclusive.\n\t */\n\tvar generateRow = function generateRow() {\n\t return shuffleArray(_constants.SUDOKU_DIGITS);\n\t};\n\t\n\t/**\n\t * Given output, checks if row is usable in Sudoku solution.\n\t *\n\t * @param {Number} index\n\t * @param {Array} row\n\t * @param {Array} output\n\t * @return {Boolean}\n\t */\n\tvar isRowUsable = function isRowUsable(index) {\n\t var row = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\t var output = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\t\n\t var rowIndex = output.length - 1;\n\t for (; rowIndex > -1; rowIndex--) {\n\t var columnIndex = output[rowIndex].length - 1;\n\t for (; columnIndex > -1; columnIndex--) {\n\t // check if row value exists in output column\n\t var rowValue = row[columnIndex];\n\t if (rowValue === output[rowIndex][columnIndex]) return false;\n\t\n\t var rowStart = 6;\n\t if (index < 3) {\n\t rowStart = 0;\n\t } else if (index < 6) {\n\t rowStart = 3;\n\t }\n\t\n\t var columnStart = 6;\n\t if (columnIndex < 3) {\n\t columnStart = 0;\n\t } else if (columnIndex < 6) {\n\t columnStart = 3;\n\t }\n\t\n\t var section = [];\n\t for (var i = 0; i < 3; i++) {\n\t if (output[rowStart + i] instanceof Array) {\n\t section = section.concat(output[rowStart + i].slice(columnStart, columnStart + 3));\n\t }\n\t }\n\t\n\t // check if row value exists in output 3x3 section\n\t if (section.indexOf(rowValue) !== -1) return false;\n\t }\n\t }\n\t return true;\n\t};\n\t\n\t/**\n\t * Generates a Sudoku solution.\n\t *\n\t * @return {Array}\n\t */\n\tvar generateSolution = function generateSolution() {\n\t // seed 1st row\n\t var output = [generateRow()];\n\t\n\t // generate rows 2 to 8\n\t var loopCount = 0;\n\t for (var index = 1; index < 8; index++) {\n\t while (true) {\n\t var row = generateRow();\n\t if (isRowUsable(index, row, output)) {\n\t output[index] = row;\n\t loopCount = 0;\n\t break;\n\t }\n\t loopCount++;\n\t // break and try again if stuck in infinite loop\n\t if (loopCount > 2e5) return generateSolution();\n\t }\n\t }\n\t\n\t // invert the output\n\t var columnValues = output.reduce(function (result, row, rowIndex) {\n\t row.forEach(function (columnValue, columnIndex) {\n\t result[columnIndex] = result[columnIndex] || [];\n\t result[columnIndex][rowIndex] = columnValue;\n\t });\n\t return result;\n\t }, []);\n\t\n\t // get 9th row\n\t var lastRow = [];\n\t for (var number = _constants.SUDOKU_LARGEST_DIGIT; number > 0; number--) {\n\t for (var i = columnValues.length - 1; i > -1; i--) {\n\t if (columnValues[i].indexOf(number) === -1) {\n\t lastRow[i] = number;\n\t break;\n\t }\n\t }\n\t }\n\t output.push(lastRow);\n\t\n\t return output;\n\t};\n\t\n\t/**\n\t * Creates Sudoku solution and puzzle.\n\t *\n\t * @param {Number} difficulty - A number between 0 and 1.\n\t * Lower means easier, higher means harder.\n\t * @return {Object}\n\t */\n\tvar createSudoku = function createSudoku(difficulty) {\n\t var solution = generateSolution();\n\t var puzzle = solution.map(function (row) {\n\t return row.slice().map(function (value) {\n\t return Math.random() > difficulty ? value : null;\n\t });\n\t });\n\t return { puzzle: puzzle, solution: solution };\n\t};\n\t\n\texports.default = createSudoku;\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _preact = __webpack_require__(1);\n\t\n\t/**\n\t * Initializes app.\n\t */\n\tvar bootstrap = function bootstrap() {\n\t // initialize google analytics\n\t __webpack_require__(3);\n\t\n\t // render game\n\t var Game = __webpack_require__(6);\n\t (0, _preact.render)((0, _preact.h)(Game, null), document.getElementById('root'));\n\t};\n\t\n\t/**\n\t * Try to load polyfill before app.\n\t */\n\tif (false) {\n\t bootstrap();\n\t} else {\n\t window.requirejs(bootstrap, bootstrap // http://requirejs.org/docs/api.html#errbacks\n\t );\n\t}\n\n/***/ },\n/* 10 */\n/***/ function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ },\n/* 11 */\n10,\n/* 12 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t/* eslint-disable no-unused-vars */\n\tvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\tvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\t\n\tfunction toObject(val) {\n\t\tif (val === null || val === undefined) {\n\t\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t\t}\n\t\n\t\treturn Object(val);\n\t}\n\t\n\tfunction shouldUseNative() {\n\t\ttry {\n\t\t\tif (!Object.assign) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\t// Detect buggy property enumeration order in older V8 versions.\n\t\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\t\tvar test1 = new String('abc'); // eslint-disable-line\n\t\t\ttest1[5] = 'de';\n\t\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\t\tvar test2 = {};\n\t\t\tfor (var i = 0; i < 10; i++) {\n\t\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t\t}\n\t\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\t\treturn test2[n];\n\t\t\t});\n\t\t\tif (order2.join('') !== '0123456789') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\t\tvar test3 = {};\n\t\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\t\ttest3[letter] = letter;\n\t\t\t});\n\t\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\t\tvar from;\n\t\tvar to = toObject(target);\n\t\tvar symbols;\n\t\n\t\tfor (var s = 1; s < arguments.length; s++) {\n\t\t\tfrom = Object(arguments[s]);\n\t\n\t\t\tfor (var key in from) {\n\t\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\t\tto[key] = from[key];\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif (Object.getOwnPropertySymbols) {\n\t\t\t\tsymbols = Object.getOwnPropertySymbols(from);\n\t\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn to;\n\t};\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tif (typeof Promise === 'undefined') {\n\t // Rejection tracking prevents a common issue where React gets into an\n\t // inconsistent state due to an error, but it gets swallowed by a Promise,\n\t // and the user has no idea what causes React's erratic future behavior.\n\t __webpack_require__(15).enable();\n\t window.Promise = __webpack_require__(14);\n\t}\n\t\n\t// fetch() polyfill for making API calls.\n\t__webpack_require__(16);\n\t\n\t// Object.assign() is commonly used with React.\n\t// It will use the native implementation if it's present and isn't buggy.\n\tObject.assign = __webpack_require__(12);\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\t//This file contains the ES6 extensions to the core Promises/A+ API\n\t\n\tvar Promise = __webpack_require__(4);\n\t\n\tmodule.exports = Promise;\n\t\n\t/* Static Functions */\n\t\n\tvar TRUE = valuePromise(true);\n\tvar FALSE = valuePromise(false);\n\tvar NULL = valuePromise(null);\n\tvar UNDEFINED = valuePromise(undefined);\n\tvar ZERO = valuePromise(0);\n\tvar EMPTYSTRING = valuePromise('');\n\t\n\tfunction valuePromise(value) {\n\t var p = new Promise(Promise._61);\n\t p._81 = 1;\n\t p._65 = value;\n\t return p;\n\t}\n\tPromise.resolve = function (value) {\n\t if (value instanceof Promise) return value;\n\t\n\t if (value === null) return NULL;\n\t if (value === undefined) return UNDEFINED;\n\t if (value === true) return TRUE;\n\t if (value === false) return FALSE;\n\t if (value === 0) return ZERO;\n\t if (value === '') return EMPTYSTRING;\n\t\n\t if (typeof value === 'object' || typeof value === 'function') {\n\t try {\n\t var then = value.then;\n\t if (typeof then === 'function') {\n\t return new Promise(then.bind(value));\n\t }\n\t } catch (ex) {\n\t return new Promise(function (resolve, reject) {\n\t reject(ex);\n\t });\n\t }\n\t }\n\t return valuePromise(value);\n\t};\n\t\n\tPromise.all = function (arr) {\n\t var args = Array.prototype.slice.call(arr);\n\t\n\t return new Promise(function (resolve, reject) {\n\t if (args.length === 0) return resolve([]);\n\t var remaining = args.length;\n\t function res(i, val) {\n\t if (val && (typeof val === 'object' || typeof val === 'function')) {\n\t if (val instanceof Promise && val.then === Promise.prototype.then) {\n\t while (val._81 === 3) {\n\t val = val._65;\n\t }\n\t if (val._81 === 1) return res(i, val._65);\n\t if (val._81 === 2) reject(val._65);\n\t val.then(function (val) {\n\t res(i, val);\n\t }, reject);\n\t return;\n\t } else {\n\t var then = val.then;\n\t if (typeof then === 'function') {\n\t var p = new Promise(then.bind(val));\n\t p.then(function (val) {\n\t res(i, val);\n\t }, reject);\n\t return;\n\t }\n\t }\n\t }\n\t args[i] = val;\n\t if (--remaining === 0) {\n\t resolve(args);\n\t }\n\t }\n\t for (var i = 0; i < args.length; i++) {\n\t res(i, args[i]);\n\t }\n\t });\n\t};\n\t\n\tPromise.reject = function (value) {\n\t return new Promise(function (resolve, reject) {\n\t reject(value);\n\t });\n\t};\n\t\n\tPromise.race = function (values) {\n\t return new Promise(function (resolve, reject) {\n\t values.forEach(function(value){\n\t Promise.resolve(value).then(resolve, reject);\n\t });\n\t });\n\t};\n\t\n\t/* Prototype Methods */\n\t\n\tPromise.prototype['catch'] = function (onRejected) {\n\t return this.then(null, onRejected);\n\t};\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar Promise = __webpack_require__(4);\n\t\n\tvar DEFAULT_WHITELIST = [\n\t ReferenceError,\n\t TypeError,\n\t RangeError\n\t];\n\t\n\tvar enabled = false;\n\texports.disable = disable;\n\tfunction disable() {\n\t enabled = false;\n\t Promise._10 = null;\n\t Promise._97 = null;\n\t}\n\t\n\texports.enable = enable;\n\tfunction enable(options) {\n\t options = options || {};\n\t if (enabled) disable();\n\t enabled = true;\n\t var id = 0;\n\t var displayId = 0;\n\t var rejections = {};\n\t Promise._10 = function (promise) {\n\t if (\n\t promise._81 === 2 && // IS REJECTED\n\t rejections[promise._72]\n\t ) {\n\t if (rejections[promise._72].logged) {\n\t onHandled(promise._72);\n\t } else {\n\t clearTimeout(rejections[promise._72].timeout);\n\t }\n\t delete rejections[promise._72];\n\t }\n\t };\n\t Promise._97 = function (promise, err) {\n\t if (promise._45 === 0) { // not yet handled\n\t promise._72 = id++;\n\t rejections[promise._72] = {\n\t displayId: null,\n\t error: err,\n\t timeout: setTimeout(\n\t onUnhandled.bind(null, promise._72),\n\t // For reference errors and type errors, this almost always\n\t // means the programmer made a mistake, so log them after just\n\t // 100ms\n\t // otherwise, wait 2 seconds to see if they get handled\n\t matchWhitelist(err, DEFAULT_WHITELIST)\n\t ? 100\n\t : 2000\n\t ),\n\t logged: false\n\t };\n\t }\n\t };\n\t function onUnhandled(id) {\n\t if (\n\t options.allRejections ||\n\t matchWhitelist(\n\t rejections[id].error,\n\t options.whitelist || DEFAULT_WHITELIST\n\t )\n\t ) {\n\t rejections[id].displayId = displayId++;\n\t if (options.onUnhandled) {\n\t rejections[id].logged = true;\n\t options.onUnhandled(\n\t rejections[id].displayId,\n\t rejections[id].error\n\t );\n\t } else {\n\t rejections[id].logged = true;\n\t logError(\n\t rejections[id].displayId,\n\t rejections[id].error\n\t );\n\t }\n\t }\n\t }\n\t function onHandled(id) {\n\t if (rejections[id].logged) {\n\t if (options.onHandled) {\n\t options.onHandled(rejections[id].displayId, rejections[id].error);\n\t } else if (!rejections[id].onUnhandled) {\n\t console.warn(\n\t 'Promise Rejection Handled (id: ' + rejections[id].displayId + '):'\n\t );\n\t console.warn(\n\t ' This means you can ignore any previous messages of the form \"Possible Unhandled Promise Rejection\" with id ' +\n\t rejections[id].displayId + '.'\n\t );\n\t }\n\t }\n\t }\n\t}\n\t\n\tfunction logError(id, error) {\n\t console.warn('Possible Unhandled Promise Rejection (id: ' + id + '):');\n\t var errStr = (error && (error.stack || error)) + '';\n\t errStr.split('\\n').forEach(function (line) {\n\t console.warn(' ' + line);\n\t });\n\t}\n\t\n\tfunction matchWhitelist(error, list) {\n\t return list.some(function (cls) {\n\t return error instanceof cls;\n\t });\n\t}\n\n/***/ },\n/* 16 */\n/***/ function(module, exports) {\n\n\t(function(self) {\n\t 'use strict';\n\t\n\t if (self.fetch) {\n\t return\n\t }\n\t\n\t var support = {\n\t searchParams: 'URLSearchParams' in self,\n\t iterable: 'Symbol' in self && 'iterator' in Symbol,\n\t blob: 'FileReader' in self && 'Blob' in self && (function() {\n\t try {\n\t new Blob()\n\t return true\n\t } catch(e) {\n\t return false\n\t }\n\t })(),\n\t formData: 'FormData' in self,\n\t arrayBuffer: 'ArrayBuffer' in self\n\t }\n\t\n\t function normalizeName(name) {\n\t if (typeof name !== 'string') {\n\t name = String(name)\n\t }\n\t if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n\t throw new TypeError('Invalid character in header field name')\n\t }\n\t return name.toLowerCase()\n\t }\n\t\n\t function normalizeValue(value) {\n\t if (typeof value !== 'string') {\n\t value = String(value)\n\t }\n\t return value\n\t }\n\t\n\t // Build a destructive iterator for the value list\n\t function iteratorFor(items) {\n\t var iterator = {\n\t next: function() {\n\t var value = items.shift()\n\t return {done: value === undefined, value: value}\n\t }\n\t }\n\t\n\t if (support.iterable) {\n\t iterator[Symbol.iterator] = function() {\n\t return iterator\n\t }\n\t }\n\t\n\t return iterator\n\t }\n\t\n\t function Headers(headers) {\n\t this.map = {}\n\t\n\t if (headers instanceof Headers) {\n\t headers.forEach(function(value, name) {\n\t this.append(name, value)\n\t }, this)\n\t\n\t } else if (headers) {\n\t Object.getOwnPropertyNames(headers).forEach(function(name) {\n\t this.append(name, headers[name])\n\t }, this)\n\t }\n\t }\n\t\n\t Headers.prototype.append = function(name, value) {\n\t name = normalizeName(name)\n\t value = normalizeValue(value)\n\t var list = this.map[name]\n\t if (!list) {\n\t list = []\n\t this.map[name] = list\n\t }\n\t list.push(value)\n\t }\n\t\n\t Headers.prototype['delete'] = function(name) {\n\t delete this.map[normalizeName(name)]\n\t }\n\t\n\t Headers.prototype.get = function(name) {\n\t var values = this.map[normalizeName(name)]\n\t return values ? values[0] : null\n\t }\n\t\n\t Headers.prototype.getAll = function(name) {\n\t return this.map[normalizeName(name)] || []\n\t }\n\t\n\t Headers.prototype.has = function(name) {\n\t return this.map.hasOwnProperty(normalizeName(name))\n\t }\n\t\n\t Headers.prototype.set = function(name, value) {\n\t this.map[normalizeName(name)] = [normalizeValue(value)]\n\t }\n\t\n\t Headers.prototype.forEach = function(callback, thisArg) {\n\t Object.getOwnPropertyNames(this.map).forEach(function(name) {\n\t this.map[name].forEach(function(value) {\n\t callback.call(thisArg, value, name, this)\n\t }, this)\n\t }, this)\n\t }\n\t\n\t Headers.prototype.keys = function() {\n\t var items = []\n\t this.forEach(function(value, name) { items.push(name) })\n\t return iteratorFor(items)\n\t }\n\t\n\t Headers.prototype.values = function() {\n\t var items = []\n\t this.forEach(function(value) { items.push(value) })\n\t return iteratorFor(items)\n\t }\n\t\n\t Headers.prototype.entries = function() {\n\t var items = []\n\t this.forEach(function(value, name) { items.push([name, value]) })\n\t return iteratorFor(items)\n\t }\n\t\n\t if (support.iterable) {\n\t Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n\t }\n\t\n\t function consumed(body) {\n\t if (body.bodyUsed) {\n\t return Promise.reject(new TypeError('Already read'))\n\t }\n\t body.bodyUsed = true\n\t }\n\t\n\t function fileReaderReady(reader) {\n\t return new Promise(function(resolve, reject) {\n\t reader.onload = function() {\n\t resolve(reader.result)\n\t }\n\t reader.onerror = function() {\n\t reject(reader.error)\n\t }\n\t })\n\t }\n\t\n\t function readBlobAsArrayBuffer(blob) {\n\t var reader = new FileReader()\n\t reader.readAsArrayBuffer(blob)\n\t return fileReaderReady(reader)\n\t }\n\t\n\t function readBlobAsText(blob) {\n\t var reader = new FileReader()\n\t reader.readAsText(blob)\n\t return fileReaderReady(reader)\n\t }\n\t\n\t function Body() {\n\t this.bodyUsed = false\n\t\n\t this._initBody = function(body) {\n\t this._bodyInit = body\n\t if (typeof body === 'string') {\n\t this._bodyText = body\n\t } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n\t this._bodyBlob = body\n\t } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n\t this._bodyFormData = body\n\t } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n\t this._bodyText = body.toString()\n\t } else if (!body) {\n\t this._bodyText = ''\n\t } else if (support.arrayBuffer && ArrayBuffer.prototype.isPrototypeOf(body)) {\n\t // Only support ArrayBuffers for POST method.\n\t // Receiving ArrayBuffers happens via Blobs, instead.\n\t } else {\n\t throw new Error('unsupported BodyInit type')\n\t }\n\t\n\t if (!this.headers.get('content-type')) {\n\t if (typeof body === 'string') {\n\t this.headers.set('content-type', 'text/plain;charset=UTF-8')\n\t } else if (this._bodyBlob && this._bodyBlob.type) {\n\t this.headers.set('content-type', this._bodyBlob.type)\n\t } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n\t this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n\t }\n\t }\n\t }\n\t\n\t if (support.blob) {\n\t this.blob = function() {\n\t var rejected = consumed(this)\n\t if (rejected) {\n\t return rejected\n\t }\n\t\n\t if (this._bodyBlob) {\n\t return Promise.resolve(this._bodyBlob)\n\t } else if (this._bodyFormData) {\n\t throw new Error('could not read FormData body as blob')\n\t } else {\n\t return Promise.resolve(new Blob([this._bodyText]))\n\t }\n\t }\n\t\n\t this.arrayBuffer = function() {\n\t return this.blob().then(readBlobAsArrayBuffer)\n\t }\n\t\n\t this.text = function() {\n\t var rejected = consumed(this)\n\t if (rejected) {\n\t return rejected\n\t }\n\t\n\t if (this._bodyBlob) {\n\t return readBlobAsText(this._bodyBlob)\n\t } else if (this._bodyFormData) {\n\t throw new Error('could not read FormData body as text')\n\t } else {\n\t return Promise.resolve(this._bodyText)\n\t }\n\t }\n\t } else {\n\t this.text = function() {\n\t var rejected = consumed(this)\n\t return rejected ? rejected : Promise.resolve(this._bodyText)\n\t }\n\t }\n\t\n\t if (support.formData) {\n\t this.formData = function() {\n\t return this.text().then(decode)\n\t }\n\t }\n\t\n\t this.json = function() {\n\t return this.text().then(JSON.parse)\n\t }\n\t\n\t return this\n\t }\n\t\n\t // HTTP methods whose capitalization should be normalized\n\t var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\t\n\t function normalizeMethod(method) {\n\t var upcased = method.toUpperCase()\n\t return (methods.indexOf(upcased) > -1) ? upcased : method\n\t }\n\t\n\t function Request(input, options) {\n\t options = options || {}\n\t var body = options.body\n\t if (Request.prototype.isPrototypeOf(input)) {\n\t if (input.bodyUsed) {\n\t throw new TypeError('Already read')\n\t }\n\t this.url = input.url\n\t this.credentials = input.credentials\n\t if (!options.headers) {\n\t this.headers = new Headers(input.headers)\n\t }\n\t this.method = input.method\n\t this.mode = input.mode\n\t if (!body) {\n\t body = input._bodyInit\n\t input.bodyUsed = true\n\t }\n\t } else {\n\t this.url = input\n\t }\n\t\n\t this.credentials = options.credentials || this.credentials || 'omit'\n\t if (options.headers || !this.headers) {\n\t this.headers = new Headers(options.headers)\n\t }\n\t this.method = normalizeMethod(options.method || this.method || 'GET')\n\t this.mode = options.mode || this.mode || null\n\t this.referrer = null\n\t\n\t if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n\t throw new TypeError('Body not allowed for GET or HEAD requests')\n\t }\n\t this._initBody(body)\n\t }\n\t\n\t Request.prototype.clone = function() {\n\t return new Request(this)\n\t }\n\t\n\t function decode(body) {\n\t var form = new FormData()\n\t body.trim().split('&').forEach(function(bytes) {\n\t if (bytes) {\n\t var split = bytes.split('=')\n\t var name = split.shift().replace(/\\+/g, ' ')\n\t var value = split.join('=').replace(/\\+/g, ' ')\n\t form.append(decodeURIComponent(name), decodeURIComponent(value))\n\t }\n\t })\n\t return form\n\t }\n\t\n\t function headers(xhr) {\n\t var head = new Headers()\n\t var pairs = (xhr.getAllResponseHeaders() || '').trim().split('\\n')\n\t pairs.forEach(function(header) {\n\t var split = header.trim().split(':')\n\t var key = split.shift().trim()\n\t var value = split.join(':').trim()\n\t head.append(key, value)\n\t })\n\t return head\n\t }\n\t\n\t Body.call(Request.prototype)\n\t\n\t function Response(bodyInit, options) {\n\t if (!options) {\n\t options = {}\n\t }\n\t\n\t this.type = 'default'\n\t this.status = options.status\n\t this.ok = this.status >= 200 && this.status < 300\n\t this.statusText = options.statusText\n\t this.headers = options.headers instanceof Headers ? options.headers : new Headers(options.headers)\n\t this.url = options.url || ''\n\t this._initBody(bodyInit)\n\t }\n\t\n\t Body.call(Response.prototype)\n\t\n\t Response.prototype.clone = function() {\n\t return new Response(this._bodyInit, {\n\t status: this.status,\n\t statusText: this.statusText,\n\t headers: new Headers(this.headers),\n\t url: this.url\n\t })\n\t }\n\t\n\t Response.error = function() {\n\t var response = new Response(null, {status: 0, statusText: ''})\n\t response.type = 'error'\n\t return response\n\t }\n\t\n\t var redirectStatuses = [301, 302, 303, 307, 308]\n\t\n\t Response.redirect = function(url, status) {\n\t if (redirectStatuses.indexOf(status) === -1) {\n\t throw new RangeError('Invalid status code')\n\t }\n\t\n\t return new Response(null, {status: status, headers: {location: url}})\n\t }\n\t\n\t self.Headers = Headers\n\t self.Request = Request\n\t self.Response = Response\n\t\n\t self.fetch = function(input, init) {\n\t return new Promise(function(resolve, reject) {\n\t var request\n\t if (Request.prototype.isPrototypeOf(input) && !init) {\n\t request = input\n\t } else {\n\t request = new Request(input, init)\n\t }\n\t\n\t var xhr = new XMLHttpRequest()\n\t\n\t function responseURL() {\n\t if ('responseURL' in xhr) {\n\t return xhr.responseURL\n\t }\n\t\n\t // Avoid security warnings on getResponseHeader when not allowed by CORS\n\t if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {\n\t return xhr.getResponseHeader('X-Request-URL')\n\t }\n\t\n\t return\n\t }\n\t\n\t xhr.onload = function() {\n\t var options = {\n\t status: xhr.status,\n\t statusText: xhr.statusText,\n\t headers: headers(xhr),\n\t url: responseURL()\n\t }\n\t var body = 'response' in xhr ? xhr.response : xhr.responseText\n\t resolve(new Response(body, options))\n\t }\n\t\n\t xhr.onerror = function() {\n\t reject(new TypeError('Network request failed'))\n\t }\n\t\n\t xhr.ontimeout = function() {\n\t reject(new TypeError('Network request failed'))\n\t }\n\t\n\t xhr.open(request.method, request.url, true)\n\t\n\t if (request.credentials === 'include') {\n\t xhr.withCredentials = true\n\t }\n\t\n\t if ('responseType' in xhr && support.blob) {\n\t xhr.responseType = 'blob'\n\t }\n\t\n\t request.headers.forEach(function(value, name) {\n\t xhr.setRequestHeader(name, value)\n\t })\n\t\n\t xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n\t })\n\t }\n\t self.fetch.polyfill = true\n\t})(typeof self !== 'undefined' ? self : this);\n\n\n/***/ }\n/******/ ])));\n\n\n/** WEBPACK FOOTER **\n ** static/js/main.6283b909.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/sudoku/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 6336c2d4112f92739f61\n **/","!function() {\n 'use strict';\n function VNode() {}\n function h(nodeName, attributes) {\n var lastSimple, child, simple, i, children = EMPTY_CHILDREN;\n for (i = arguments.length; i-- > 2; ) stack.push(arguments[i]);\n if (attributes && null != attributes.children) {\n if (!stack.length) stack.push(attributes.children);\n delete attributes.children;\n }\n while (stack.length) if ((child = stack.pop()) && void 0 !== child.pop) for (i = child.length; i--; ) stack.push(child[i]); else {\n if ('boolean' == typeof child) child = null;\n if (simple = 'function' != typeof nodeName) if (null == child) child = ''; else if ('number' == typeof child) child = String(child); else if ('string' != typeof child) simple = !1;\n if (simple && lastSimple) children[children.length - 1] += child; else if (children === EMPTY_CHILDREN) children = [ child ]; else children.push(child);\n lastSimple = simple;\n }\n var p = new VNode();\n p.nodeName = nodeName;\n p.children = children;\n p.attributes = null == attributes ? void 0 : attributes;\n p.key = null == attributes ? void 0 : attributes.key;\n if (void 0 !== options.vnode) options.vnode(p);\n return p;\n }\n function extend(obj, props) {\n for (var i in props) obj[i] = props[i];\n return obj;\n }\n function cloneElement(vnode, props) {\n return h(vnode.nodeName, extend(extend({}, vnode.attributes), props), arguments.length > 2 ? [].slice.call(arguments, 2) : vnode.children);\n }\n function enqueueRender(component) {\n if (!component.__d && (component.__d = !0) && 1 == items.push(component)) (options.debounceRendering || defer)(rerender);\n }\n function rerender() {\n var p, list = items;\n items = [];\n while (p = list.pop()) if (p.__d) renderComponent(p);\n }\n function isSameNodeType(node, vnode, hydrating) {\n if ('string' == typeof vnode || 'number' == typeof vnode) return void 0 !== node.splitText;\n if ('string' == typeof vnode.nodeName) return !node._componentConstructor && isNamedNode(node, vnode.nodeName); else return hydrating || node._componentConstructor === vnode.nodeName;\n }\n function isNamedNode(node, nodeName) {\n return node.__n === nodeName || node.nodeName.toLowerCase() === nodeName.toLowerCase();\n }\n function getNodeProps(vnode) {\n var props = extend({}, vnode.attributes);\n props.children = vnode.children;\n var defaultProps = vnode.nodeName.defaultProps;\n if (void 0 !== defaultProps) for (var i in defaultProps) if (void 0 === props[i]) props[i] = defaultProps[i];\n return props;\n }\n function createNode(nodeName, isSvg) {\n var node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);\n node.__n = nodeName;\n return node;\n }\n function removeNode(node) {\n var parentNode = node.parentNode;\n if (parentNode) parentNode.removeChild(node);\n }\n function setAccessor(node, name, old, value, isSvg) {\n if ('className' === name) name = 'class';\n if ('key' === name) ; else if ('ref' === name) {\n if (old) old(null);\n if (value) value(node);\n } else if ('class' === name && !isSvg) node.className = value || ''; else if ('style' === name) {\n if (!value || 'string' == typeof value || 'string' == typeof old) node.style.cssText = value || '';\n if (value && 'object' == typeof value) {\n if ('string' != typeof old) for (var i in old) if (!(i in value)) node.style[i] = '';\n for (var i in value) node.style[i] = 'number' == typeof value[i] && !1 === IS_NON_DIMENSIONAL.test(i) ? value[i] + 'px' : value[i];\n }\n } else if ('dangerouslySetInnerHTML' === name) {\n if (value) node.innerHTML = value.__html || '';\n } else if ('o' == name[0] && 'n' == name[1]) {\n var useCapture = name !== (name = name.replace(/Capture$/, ''));\n name = name.toLowerCase().substring(2);\n if (value) {\n if (!old) node.addEventListener(name, eventProxy, useCapture);\n } else node.removeEventListener(name, eventProxy, useCapture);\n (node.__l || (node.__l = {}))[name] = value;\n } else if ('list' !== name && 'type' !== name && !isSvg && name in node) {\n setProperty(node, name, null == value ? '' : value);\n if (null == value || !1 === value) node.removeAttribute(name);\n } else {\n var ns = isSvg && name !== (name = name.replace(/^xlink\\:?/, ''));\n if (null == value || !1 === value) if (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase()); else node.removeAttribute(name); else if ('function' != typeof value) if (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value); else node.setAttribute(name, value);\n }\n }\n function setProperty(node, name, value) {\n try {\n node[name] = value;\n } catch (e) {}\n }\n function eventProxy(e) {\n return this.__l[e.type](options.event && options.event(e) || e);\n }\n function flushMounts() {\n var c;\n while (c = mounts.pop()) {\n if (options.afterMount) options.afterMount(c);\n if (c.componentDidMount) c.componentDidMount();\n }\n }\n function diff(dom, vnode, context, mountAll, parent, componentRoot) {\n if (!diffLevel++) {\n isSvgMode = null != parent && void 0 !== parent.ownerSVGElement;\n hydrating = null != dom && !('__preactattr_' in dom);\n }\n var ret = idiff(dom, vnode, context, mountAll, componentRoot);\n if (parent && ret.parentNode !== parent) parent.appendChild(ret);\n if (!--diffLevel) {\n hydrating = !1;\n if (!componentRoot) flushMounts();\n }\n return ret;\n }\n function idiff(dom, vnode, context, mountAll, componentRoot) {\n var out = dom, prevSvgMode = isSvgMode;\n if (null == vnode || 'boolean' == typeof vnode) vnode = '';\n if ('string' == typeof vnode || 'number' == typeof vnode) {\n if (dom && void 0 !== dom.splitText && dom.parentNode && (!dom._component || componentRoot)) {\n if (dom.nodeValue != vnode) dom.nodeValue = vnode;\n } else {\n out = document.createTextNode(vnode);\n if (dom) {\n if (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n recollectNodeTree(dom, !0);\n }\n }\n out.__preactattr_ = !0;\n return out;\n }\n var vnodeName = vnode.nodeName;\n if ('function' == typeof vnodeName) return buildComponentFromVNode(dom, vnode, context, mountAll);\n isSvgMode = 'svg' === vnodeName ? !0 : 'foreignObject' === vnodeName ? !1 : isSvgMode;\n vnodeName = String(vnodeName);\n if (!dom || !isNamedNode(dom, vnodeName)) {\n out = createNode(vnodeName, isSvgMode);\n if (dom) {\n while (dom.firstChild) out.appendChild(dom.firstChild);\n if (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n recollectNodeTree(dom, !0);\n }\n }\n var fc = out.firstChild, props = out.__preactattr_, vchildren = vnode.children;\n if (null == props) {\n props = out.__preactattr_ = {};\n for (var a = out.attributes, i = a.length; i--; ) props[a[i].name] = a[i].value;\n }\n if (!hydrating && vchildren && 1 === vchildren.length && 'string' == typeof vchildren[0] && null != fc && void 0 !== fc.splitText && null == fc.nextSibling) {\n if (fc.nodeValue != vchildren[0]) fc.nodeValue = vchildren[0];\n } else if (vchildren && vchildren.length || null != fc) innerDiffNode(out, vchildren, context, mountAll, hydrating || null != props.dangerouslySetInnerHTML);\n diffAttributes(out, vnode.attributes, props);\n isSvgMode = prevSvgMode;\n return out;\n }\n function innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {\n var j, c, f, vchild, child, originalChildren = dom.childNodes, children = [], keyed = {}, keyedLen = 0, min = 0, len = originalChildren.length, childrenLen = 0, vlen = vchildren ? vchildren.length : 0;\n if (0 !== len) for (var i = 0; i < len; i++) {\n var _child = originalChildren[i], props = _child.__preactattr_, key = vlen && props ? _child._component ? _child._component.__k : props.key : null;\n if (null != key) {\n keyedLen++;\n keyed[key] = _child;\n } else if (props || (void 0 !== _child.splitText ? isHydrating ? _child.nodeValue.trim() : !0 : isHydrating)) children[childrenLen++] = _child;\n }\n if (0 !== vlen) for (var i = 0; i < vlen; i++) {\n vchild = vchildren[i];\n child = null;\n var key = vchild.key;\n if (null != key) {\n if (keyedLen && void 0 !== keyed[key]) {\n child = keyed[key];\n keyed[key] = void 0;\n keyedLen--;\n }\n } else if (!child && min < childrenLen) for (j = min; j < childrenLen; j++) if (void 0 !== children[j] && isSameNodeType(c = children[j], vchild, isHydrating)) {\n child = c;\n children[j] = void 0;\n if (j === childrenLen - 1) childrenLen--;\n if (j === min) min++;\n break;\n }\n child = idiff(child, vchild, context, mountAll);\n f = originalChildren[i];\n if (child && child !== dom && child !== f) if (null == f) dom.appendChild(child); else if (child === f.nextSibling) removeNode(f); else dom.insertBefore(child, f);\n }\n if (keyedLen) for (var i in keyed) if (void 0 !== keyed[i]) recollectNodeTree(keyed[i], !1);\n while (min <= childrenLen) if (void 0 !== (child = children[childrenLen--])) recollectNodeTree(child, !1);\n }\n function recollectNodeTree(node, unmountOnly) {\n var component = node._component;\n if (component) unmountComponent(component); else {\n if (null != node.__preactattr_ && node.__preactattr_.ref) node.__preactattr_.ref(null);\n if (!1 === unmountOnly || null == node.__preactattr_) removeNode(node);\n removeChildren(node);\n }\n }\n function removeChildren(node) {\n node = node.lastChild;\n while (node) {\n var next = node.previousSibling;\n recollectNodeTree(node, !0);\n node = next;\n }\n }\n function diffAttributes(dom, attrs, old) {\n var name;\n for (name in old) if ((!attrs || null == attrs[name]) && null != old[name]) setAccessor(dom, name, old[name], old[name] = void 0, isSvgMode);\n for (name in attrs) if (!('children' === name || 'innerHTML' === name || name in old && attrs[name] === ('value' === name || 'checked' === name ? dom[name] : old[name]))) setAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);\n }\n function collectComponent(component) {\n var name = component.constructor.name;\n (components[name] || (components[name] = [])).push(component);\n }\n function createComponent(Ctor, props, context) {\n var inst, list = components[Ctor.name];\n if (Ctor.prototype && Ctor.prototype.render) {\n inst = new Ctor(props, context);\n Component.call(inst, props, context);\n } else {\n inst = new Component(props, context);\n inst.constructor = Ctor;\n inst.render = doRender;\n }\n if (list) for (var i = list.length; i--; ) if (list[i].constructor === Ctor) {\n inst.__b = list[i].__b;\n list.splice(i, 1);\n break;\n }\n return inst;\n }\n function doRender(props, state, context) {\n return this.constructor(props, context);\n }\n function setComponentProps(component, props, opts, context, mountAll) {\n if (!component.__x) {\n component.__x = !0;\n if (component.__r = props.ref) delete props.ref;\n if (component.__k = props.key) delete props.key;\n if (!component.base || mountAll) {\n if (component.componentWillMount) component.componentWillMount();\n } else if (component.componentWillReceiveProps) component.componentWillReceiveProps(props, context);\n if (context && context !== component.context) {\n if (!component.__c) component.__c = component.context;\n component.context = context;\n }\n if (!component.__p) component.__p = component.props;\n component.props = props;\n component.__x = !1;\n if (0 !== opts) if (1 === opts || !1 !== options.syncComponentUpdates || !component.base) renderComponent(component, 1, mountAll); else enqueueRender(component);\n if (component.__r) component.__r(component);\n }\n }\n function renderComponent(component, opts, mountAll, isChild) {\n if (!component.__x) {\n var rendered, inst, cbase, props = component.props, state = component.state, context = component.context, previousProps = component.__p || props, previousState = component.__s || state, previousContext = component.__c || context, isUpdate = component.base, nextBase = component.__b, initialBase = isUpdate || nextBase, initialChildComponent = component._component, skip = !1;\n if (isUpdate) {\n component.props = previousProps;\n component.state = previousState;\n component.context = previousContext;\n if (2 !== opts && component.shouldComponentUpdate && !1 === component.shouldComponentUpdate(props, state, context)) skip = !0; else if (component.componentWillUpdate) component.componentWillUpdate(props, state, context);\n component.props = props;\n component.state = state;\n component.context = context;\n }\n component.__p = component.__s = component.__c = component.__b = null;\n component.__d = !1;\n if (!skip) {\n rendered = component.render(props, state, context);\n if (component.getChildContext) context = extend(extend({}, context), component.getChildContext());\n var toUnmount, base, childComponent = rendered && rendered.nodeName;\n if ('function' == typeof childComponent) {\n var childProps = getNodeProps(rendered);\n inst = initialChildComponent;\n if (inst && inst.constructor === childComponent && childProps.key == inst.__k) setComponentProps(inst, childProps, 1, context, !1); else {\n toUnmount = inst;\n component._component = inst = createComponent(childComponent, childProps, context);\n inst.__b = inst.__b || nextBase;\n inst.__u = component;\n setComponentProps(inst, childProps, 0, context, !1);\n renderComponent(inst, 1, mountAll, !0);\n }\n base = inst.base;\n } else {\n cbase = initialBase;\n toUnmount = initialChildComponent;\n if (toUnmount) cbase = component._component = null;\n if (initialBase || 1 === opts) {\n if (cbase) cbase._component = null;\n base = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, !0);\n }\n }\n if (initialBase && base !== initialBase && inst !== initialChildComponent) {\n var baseParent = initialBase.parentNode;\n if (baseParent && base !== baseParent) {\n baseParent.replaceChild(base, initialBase);\n if (!toUnmount) {\n initialBase._component = null;\n recollectNodeTree(initialBase, !1);\n }\n }\n }\n if (toUnmount) unmountComponent(toUnmount);\n component.base = base;\n if (base && !isChild) {\n var componentRef = component, t = component;\n while (t = t.__u) (componentRef = t).base = base;\n base._component = componentRef;\n base._componentConstructor = componentRef.constructor;\n }\n }\n if (!isUpdate || mountAll) mounts.unshift(component); else if (!skip) {\n if (component.componentDidUpdate) component.componentDidUpdate(previousProps, previousState, previousContext);\n if (options.afterUpdate) options.afterUpdate(component);\n }\n if (null != component.__h) while (component.__h.length) component.__h.pop().call(component);\n if (!diffLevel && !isChild) flushMounts();\n }\n }\n function buildComponentFromVNode(dom, vnode, context, mountAll) {\n var c = dom && dom._component, originalComponent = c, oldDom = dom, isDirectOwner = c && dom._componentConstructor === vnode.nodeName, isOwner = isDirectOwner, props = getNodeProps(vnode);\n while (c && !isOwner && (c = c.__u)) isOwner = c.constructor === vnode.nodeName;\n if (c && isOwner && (!mountAll || c._component)) {\n setComponentProps(c, props, 3, context, mountAll);\n dom = c.base;\n } else {\n if (originalComponent && !isDirectOwner) {\n unmountComponent(originalComponent);\n dom = oldDom = null;\n }\n c = createComponent(vnode.nodeName, props, context);\n if (dom && !c.__b) {\n c.__b = dom;\n oldDom = null;\n }\n setComponentProps(c, props, 1, context, mountAll);\n dom = c.base;\n if (oldDom && dom !== oldDom) {\n oldDom._component = null;\n recollectNodeTree(oldDom, !1);\n }\n }\n return dom;\n }\n function unmountComponent(component) {\n if (options.beforeUnmount) options.beforeUnmount(component);\n var base = component.base;\n component.__x = !0;\n if (component.componentWillUnmount) component.componentWillUnmount();\n component.base = null;\n var inner = component._component;\n if (inner) unmountComponent(inner); else if (base) {\n if (base.__preactattr_ && base.__preactattr_.ref) base.__preactattr_.ref(null);\n component.__b = base;\n removeNode(base);\n collectComponent(component);\n removeChildren(base);\n }\n if (component.__r) component.__r(null);\n }\n function Component(props, context) {\n this.__d = !0;\n this.context = context;\n this.props = props;\n this.state = this.state || {};\n }\n function render(vnode, parent, merge) {\n return diff(merge, vnode, {}, !1, parent, !1);\n }\n var options = {};\n var stack = [];\n var EMPTY_CHILDREN = [];\n var defer = 'function' == typeof Promise ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;\n var IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n var items = [];\n var mounts = [];\n var diffLevel = 0;\n var isSvgMode = !1;\n var hydrating = !1;\n var components = {};\n extend(Component.prototype, {\n setState: function(state, callback) {\n var s = this.state;\n if (!this.__s) this.__s = extend({}, s);\n extend(s, 'function' == typeof state ? state(s, this.props) : state);\n if (callback) (this.__h = this.__h || []).push(callback);\n enqueueRender(this);\n },\n forceUpdate: function(callback) {\n if (callback) (this.__h = this.__h || []).push(callback);\n renderComponent(this, 2);\n },\n render: function() {}\n });\n var preact = {\n h: h,\n createElement: h,\n cloneElement: cloneElement,\n Component: Component,\n render: render,\n rerender: rerender,\n options: options\n };\n if ('undefined' != typeof module) module.exports = preact; else self.preact = preact;\n}();\n//# sourceMappingURL=preact.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/preact/dist/preact.js\n ** module id = 1\n ** module chunks = 0\n **/","export const SUDOKU_DIGITS = [1, 2, 3, 4, 5, 6, 7, 8, 9];\n\nexport const SUDOKU_LARGEST_DIGIT = Math.max.apply({}, SUDOKU_DIGITS);\n\n// ga event value must be an integer\n// so a difficulty of .5 will be tracked as 500\nexport const GA_DIFFICULTY_MULTIPLIER = 1e3;\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/helpers/constants.js\n **/","const { ga, requirejs } = window;\n\nga('create', 'UA-59233605-5', 'auto');\n\n// https://developers.google.com/analytics/devguides/collection/analyticsjs/debugging\nlet url = 'https://www.google-analytics.com/analytics.js';\nif (\n process.env.NODE_ENV === 'development' ||\n location.hostname === 'localhost'\n) {\n url = url.replace('analytics.js', 'analytics_debug.js');\n ga('set', 'sendHitTask', null);\n}\n\nga('set', {\n title: 'Sudoku',\n page: '/sudoku/',\n});\nga('send', 'pageview');\n\nrequirejs([url]);\n\n/**\n * Tracks event with analytics.\n * https://developers.google.com/analytics/devguides/collection/analyticsjs/events\n *\n * @param {String} eventCategory\n * @param {String} eventAction\n * @param {String} [eventLabel]\n * @param {Number} [eventValue]\n */\nexport const trackEvent = (...args) => {\n window.ga.apply(null, ['send', 'event', ...args]);\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/helpers/ga.js\n **/","'use strict';\n\nvar asap = require('asap/raw');\n\nfunction noop() {}\n\n// States:\n//\n// 0 - pending\n// 1 - fulfilled with _value\n// 2 - rejected with _value\n// 3 - adopted the state of another promise, _value\n//\n// once the state is no longer pending (0) it is immutable\n\n// All `_` prefixed properties will be reduced to `_{random number}`\n// at build time to obfuscate them and discourage their use.\n// We don't use symbols or Object.defineProperty to fully hide them\n// because the performance isn't good enough.\n\n\n// to avoid using try/catch inside critical functions, we\n// extract them to here.\nvar LAST_ERROR = null;\nvar IS_ERROR = {};\nfunction getThen(obj) {\n try {\n return obj.then;\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nfunction tryCallOne(fn, a) {\n try {\n return fn(a);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\nfunction tryCallTwo(fn, a, b) {\n try {\n fn(a, b);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nmodule.exports = Promise;\n\nfunction Promise(fn) {\n if (typeof this !== 'object') {\n throw new TypeError('Promises must be constructed via new');\n }\n if (typeof fn !== 'function') {\n throw new TypeError('not a function');\n }\n this._45 = 0;\n this._81 = 0;\n this._65 = null;\n this._54 = null;\n if (fn === noop) return;\n doResolve(fn, this);\n}\nPromise._10 = null;\nPromise._97 = null;\nPromise._61 = noop;\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n if (this.constructor !== Promise) {\n return safeThen(this, onFulfilled, onRejected);\n }\n var res = new Promise(noop);\n handle(this, new Handler(onFulfilled, onRejected, res));\n return res;\n};\n\nfunction safeThen(self, onFulfilled, onRejected) {\n return new self.constructor(function (resolve, reject) {\n var res = new Promise(noop);\n res.then(resolve, reject);\n handle(self, new Handler(onFulfilled, onRejected, res));\n });\n};\nfunction handle(self, deferred) {\n while (self._81 === 3) {\n self = self._65;\n }\n if (Promise._10) {\n Promise._10(self);\n }\n if (self._81 === 0) {\n if (self._45 === 0) {\n self._45 = 1;\n self._54 = deferred;\n return;\n }\n if (self._45 === 1) {\n self._45 = 2;\n self._54 = [self._54, deferred];\n return;\n }\n self._54.push(deferred);\n return;\n }\n handleResolved(self, deferred);\n}\n\nfunction handleResolved(self, deferred) {\n asap(function() {\n var cb = self._81 === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n if (self._81 === 1) {\n resolve(deferred.promise, self._65);\n } else {\n reject(deferred.promise, self._65);\n }\n return;\n }\n var ret = tryCallOne(cb, self._65);\n if (ret === IS_ERROR) {\n reject(deferred.promise, LAST_ERROR);\n } else {\n resolve(deferred.promise, ret);\n }\n });\n}\nfunction resolve(self, newValue) {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) {\n return reject(\n self,\n new TypeError('A promise cannot be resolved with itself.')\n );\n }\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = getThen(newValue);\n if (then === IS_ERROR) {\n return reject(self, LAST_ERROR);\n }\n if (\n then === self.then &&\n newValue instanceof Promise\n ) {\n self._81 = 3;\n self._65 = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(then.bind(newValue), self);\n return;\n }\n }\n self._81 = 1;\n self._65 = newValue;\n finale(self);\n}\n\nfunction reject(self, newValue) {\n self._81 = 2;\n self._65 = newValue;\n if (Promise._97) {\n Promise._97(self, newValue);\n }\n finale(self);\n}\nfunction finale(self) {\n if (self._45 === 1) {\n handle(self, self._54);\n self._54 = null;\n }\n if (self._45 === 2) {\n for (var i = 0; i < self._54.length; i++) {\n handle(self, self._54[i]);\n }\n self._54 = null;\n }\n}\n\nfunction Handler(onFulfilled, onRejected, promise){\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, promise) {\n var done = false;\n var res = tryCallTwo(fn, function (value) {\n if (done) return;\n done = true;\n resolve(promise, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject(promise, reason);\n })\n if (!done && res === IS_ERROR) {\n done = true;\n reject(promise, LAST_ERROR);\n }\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/promise/lib/core.js\n ** module id = 4\n ** module chunks = 0\n **/","\"use strict\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including IO, animation, reflow, and redraw\n// events in browsers.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nmodule.exports = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Equivalent to push, but avoids a function call.\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// `requestFlush` is an implementation-specific method that attempts to kick\n// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n// the event queue before yielding to the browser's own event loop.\nvar requestFlush;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory exhaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index < queue.length) {\n var currentIndex = index;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index = index + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n queue.length -= index;\n index = 0;\n }\n }\n queue.length = 0;\n index = 0;\n flushing = false;\n}\n\n// `requestFlush` is implemented using a strategy based on data collected from\n// every available SauceLabs Selenium web driver worker at time of writing.\n// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\n// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nvar scope = typeof global !== \"undefined\" ? global : self;\nvar BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver;\n\n// MutationObservers are desirable because they have high priority and work\n// reliably everywhere they are implemented.\n// They are implemented in all modern browsers.\n//\n// - Android 4-4.3\n// - Chrome 26-34\n// - Firefox 14-29\n// - Internet Explorer 11\n// - iPad Safari 6-7.1\n// - iPhone Safari 7-7.1\n// - Safari 6-7\nif (typeof BrowserMutationObserver === \"function\") {\n requestFlush = makeRequestCallFromMutationObserver(flush);\n\n// MessageChannels are desirable because they give direct access to the HTML\n// task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n// 11-12, and in web workers in many engines.\n// Although message channels yield to any queued rendering and IO tasks, they\n// would be better than imposing the 4ms delay of timers.\n// However, they do not work reliably in Internet Explorer or Safari.\n\n// Internet Explorer 10 is the only browser that has setImmediate but does\n// not have MutationObservers.\n// Although setImmediate yields to the browser's renderer, it would be\n// preferrable to falling back to setTimeout since it does not have\n// the minimum 4ms penalty.\n// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n// Desktop to a lesser extent) that renders both setImmediate and\n// MessageChannel useless for the purposes of ASAP.\n// https://github.com/kriskowal/q/issues/396\n\n// Timers are implemented universally.\n// We fall back to timers in workers in most engines, and in foreground\n// contexts in the following browsers.\n// However, note that even this simple case requires nuances to operate in a\n// broad spectrum of browsers.\n//\n// - Firefox 3-13\n// - Internet Explorer 6-9\n// - iPad Safari 4.3\n// - Lynx 2.8.7\n} else {\n requestFlush = makeRequestCallFromTimer(flush);\n}\n\n// `requestFlush` requests that the high priority event queue be flushed as\n// soon as possible.\n// This is useful to prevent an error thrown in a task from stalling the event\n// queue if the exception handled by Node.js’s\n// `process.on(\"uncaughtException\")` or by a domain.\nrawAsap.requestFlush = requestFlush;\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nfunction makeRequestCallFromMutationObserver(callback) {\n var toggle = 1;\n var observer = new BrowserMutationObserver(callback);\n var node = document.createTextNode(\"\");\n observer.observe(node, {characterData: true});\n return function requestCall() {\n toggle = -toggle;\n node.data = toggle;\n };\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\nfunction makeRequestCallFromTimer(callback) {\n return function requestCall() {\n // We dispatch a timeout with a specified delay of 0 for engines that\n // can reliably accommodate that request. This will usually be snapped\n // to a 4 milisecond delay, but once we're flushing, there's no delay\n // between events.\n var timeoutHandle = setTimeout(handleTimer, 0);\n // However, since this timer gets frequently dropped in Firefox\n // workers, we enlist an interval handle that will try to fire\n // an event 20 times per second until it succeeds.\n var intervalHandle = setInterval(handleTimer, 50);\n\n function handleTimer() {\n // Whichever timer succeeds will cancel both timers and\n // execute the callback.\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n callback();\n }\n };\n}\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// its existence.\nrawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer;\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/asap/browser-raw.js\n ** module id = 5\n ** module chunks = 0\n **/","import { h, Component } from 'preact';\nimport Sudoku from '../Sudoku';\nimport './styles.css';\n\nclass Game extends Component {\n render() {\n return (\n
\n

Sudoku

\n \n
\n );\n }\n}\n\nmodule.exports = Game;\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/Game/index.js\n **/","import { h, Component } from 'preact';\nimport { GA_DIFFICULTY_MULTIPLIER } from '../helpers/constants';\nimport createSudoku from '../helpers/sudoku';\nimport { trackEvent } from '../helpers/ga';\nimport './styles.css';\n\nexport default class Sudoku extends Component {\n state = {\n attempt: [],\n difficulty: 0.5,\n puzzle: [],\n solution: [],\n solutionJSON: '',\n };\n\n componentDidMount() {\n this.newPuzzle();\n }\n\n /**\n * Focuses puzzle cell when clicked.\n *\n * @param {SyntheticEvent}\n */\n handleCellClick({ target }) {\n target.select();\n }\n\n /**\n * Records user input.\n *\n * @param {SyntheticEvent}\n */\n handleCellChange = ({ target }) => {\n const { dataset: { x, y }, value } = target;\n if (!target.readOnly && value) {\n this.setState(state => {\n const attempt = state.attempt.map(row => row.slice());\n attempt[y][x] = parseInt(value, 10) || null;\n return { attempt };\n });\n }\n };\n\n /**\n * Navigates puzzle.\n *\n * @param {SyntheticEvent}\n */\n handleCellKeyDown = ({ key, target }) => {\n // Get x, y dataset from target element.\n let { x, y } = target.dataset;\n\n // Convert x and y to integers.\n x = parseInt(x, 10);\n y = parseInt(y, 10);\n\n switch (key) {\n case 'ArrowUp':\n y -= 1;\n break;\n case 'ArrowDown':\n y += 1;\n break;\n case 'ArrowLeft':\n x -= 1;\n break;\n case 'ArrowRight':\n x += 1;\n break;\n default:\n return;\n }\n\n const input = this.tbody.querySelector(`[data-x=\"${x}\"][data-y=\"${y}\"]`);\n if (input) setTimeout(() => input.select());\n };\n\n /**\n * Checks if puzzle is solved.\n */\n checkSolution = () => {\n const { attempt, difficulty, solutionJSON } = this.state;\n console.log(JSON.stringify(attempt), solutionJSON);\n if (JSON.stringify(attempt) === solutionJSON) {\n trackEvent(\n 'puzzle',\n 'check',\n 'solved',\n Math.round(difficulty * GA_DIFFICULTY_MULTIPLIER)\n );\n alert('Solved!');\n } else {\n trackEvent(\n 'puzzle',\n 'check',\n 'unsolved',\n Math.round(difficulty * GA_DIFFICULTY_MULTIPLIER)\n );\n alert('Not solved.');\n }\n };\n\n /**\n * Clears puzzle attempt.\n */\n clearPuzzle = () => {\n trackEvent('puzzle', 'clear');\n this.setState(({ puzzle }) => ({\n attempt: puzzle.map(row => row.slice()),\n }));\n };\n\n /**\n * Generates a new puzzle.\n */\n newPuzzle = () => {\n this.setState(({ difficulty }) => {\n trackEvent(\n 'puzzle',\n 'new',\n undefined,\n Math.round(difficulty * GA_DIFFICULTY_MULTIPLIER)\n );\n const { puzzle, solution } = createSudoku(difficulty);\n return {\n attempt: puzzle.map(row => row.slice()),\n puzzle,\n solution,\n solutionJSON: JSON.stringify(solution),\n };\n });\n };\n\n /**\n * Changes puzzle difficulty.\n */\n changeDifficulty = ({ target }) => {\n this.setState(() => ({\n difficulty: Number(target.value),\n }));\n };\n\n render() {\n const { attempt, difficulty, puzzle } = this.state;\n return (\n
\n \n (this.tbody = element)}>\n {attempt.map((rows, y) => (\n \n {rows.map((digit, x) => (\n \n ))}\n \n ))}\n \n
\n \n
\n
\n  \n \n
\n
\n  \n \n
\n );\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/Sudoku/index.js\n **/","import { SUDOKU_DIGITS, SUDOKU_LARGEST_DIGIT } from './constants';\n\n/**\n * Shuffles an array.\n *\n * @param {Array} array\n * @param {Boolean} [shouldMutate=false]\n * @return {Array}\n */\nconst shuffleArray = (array = [], shouldMutate = false) => {\n const arr = shouldMutate ? array : array.slice();\n for (let i = arr.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const temp = arr[i];\n arr[i] = arr[j];\n arr[j] = temp;\n }\n return arr;\n};\n\n/**\n * Randomly generates a Sudoku row.\n *\n * @return {Array} - Shuffled numbers between 1 and 9 inclusive.\n */\nconst generateRow = () => shuffleArray(SUDOKU_DIGITS);\n\n/**\n * Given output, checks if row is usable in Sudoku solution.\n *\n * @param {Number} index\n * @param {Array} row\n * @param {Array} output\n * @return {Boolean}\n */\nconst isRowUsable = (index, row = [], output = []) => {\n let rowIndex = output.length - 1;\n for (; rowIndex > -1; rowIndex--) {\n let columnIndex = output[rowIndex].length - 1;\n for (; columnIndex > -1; columnIndex--) {\n // check if row value exists in output column\n const rowValue = row[columnIndex];\n if (rowValue === output[rowIndex][columnIndex]) return false;\n\n let rowStart = 6;\n if (index < 3) {\n rowStart = 0;\n } else if (index < 6) {\n rowStart = 3;\n }\n\n let columnStart = 6;\n if (columnIndex < 3) {\n columnStart = 0;\n } else if (columnIndex < 6) {\n columnStart = 3;\n }\n\n let section = [];\n for (let i = 0; i < 3; i++) {\n if (output[rowStart + i] instanceof Array) {\n section = section.concat(\n output[rowStart + i].slice(columnStart, columnStart + 3)\n );\n }\n }\n\n // check if row value exists in output 3x3 section\n if (section.indexOf(rowValue) !== -1) return false;\n }\n }\n return true;\n};\n\n/**\n * Generates a Sudoku solution.\n *\n * @return {Array}\n */\nconst generateSolution = () => {\n // seed 1st row\n const output = [generateRow()];\n\n // generate rows 2 to 8\n let loopCount = 0;\n for (let index = 1; index < 8; index++) {\n while (true) {\n const row = generateRow();\n if (isRowUsable(index, row, output)) {\n output[index] = row;\n loopCount = 0;\n break;\n }\n loopCount++;\n // break and try again if stuck in infinite loop\n if (loopCount > 2e5) return generateSolution();\n }\n }\n\n // invert the output\n const columnValues = output.reduce((result, row, rowIndex) => {\n row.forEach((columnValue, columnIndex) => {\n result[columnIndex] = result[columnIndex] || [];\n result[columnIndex][rowIndex] = columnValue;\n });\n return result;\n }, []);\n\n // get 9th row\n const lastRow = [];\n for (let number = SUDOKU_LARGEST_DIGIT; number > 0; number--) {\n for (let i = columnValues.length - 1; i > -1; i--) {\n if (columnValues[i].indexOf(number) === -1) {\n lastRow[i] = number;\n break;\n }\n }\n }\n output.push(lastRow);\n\n return output;\n};\n\n/**\n * Creates Sudoku solution and puzzle.\n *\n * @param {Number} difficulty - A number between 0 and 1.\n * Lower means easier, higher means harder.\n * @return {Object}\n */\nconst createSudoku = difficulty => {\n const solution = generateSolution();\n const puzzle = solution.map(row =>\n row.slice().map(value => (Math.random() > difficulty ? value : null))\n );\n return { puzzle, solution };\n};\n\nexport default createSudoku;\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/helpers/sudoku.js\n **/","import { h, render } from 'preact';\n\n/**\n * Initializes app.\n */\nconst bootstrap = () => {\n // initialize google analytics\n require('./helpers/ga');\n\n // render game\n const Game = require('./Game');\n render(, document.getElementById('root'));\n};\n\n/**\n * Try to load polyfill before app.\n */\nif (process.env.NODE_ENV === 'development') {\n bootstrap();\n} else {\n window.requirejs(\n bootstrap,\n bootstrap // http://requirejs.org/docs/api.html#errbacks\n );\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/index.js\n **/","'use strict';\n/* eslint-disable no-unused-vars */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (e) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (Object.getOwnPropertySymbols) {\n\t\t\tsymbols = Object.getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/object-assign/index.js\n ** module id = 12\n ** module chunks = 0\n **/","if (typeof Promise === 'undefined') {\n // Rejection tracking prevents a common issue where React gets into an\n // inconsistent state due to an error, but it gets swallowed by a Promise,\n // and the user has no idea what causes React's erratic future behavior.\n require('promise/lib/rejection-tracking').enable();\n window.Promise = require('promise/lib/es6-extensions.js');\n}\n\n// fetch() polyfill for making API calls.\nrequire('whatwg-fetch');\n\n// Object.assign() is commonly used with React.\n// It will use the native implementation if it's present and isn't buggy.\nObject.assign = require('object-assign');\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/preact-scripts/config/polyfills.js\n ** module id = 13\n ** module chunks = 0\n **/","'use strict';\n\n//This file contains the ES6 extensions to the core Promises/A+ API\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nvar TRUE = valuePromise(true);\nvar FALSE = valuePromise(false);\nvar NULL = valuePromise(null);\nvar UNDEFINED = valuePromise(undefined);\nvar ZERO = valuePromise(0);\nvar EMPTYSTRING = valuePromise('');\n\nfunction valuePromise(value) {\n var p = new Promise(Promise._61);\n p._81 = 1;\n p._65 = value;\n return p;\n}\nPromise.resolve = function (value) {\n if (value instanceof Promise) return value;\n\n if (value === null) return NULL;\n if (value === undefined) return UNDEFINED;\n if (value === true) return TRUE;\n if (value === false) return FALSE;\n if (value === 0) return ZERO;\n if (value === '') return EMPTYSTRING;\n\n if (typeof value === 'object' || typeof value === 'function') {\n try {\n var then = value.then;\n if (typeof then === 'function') {\n return new Promise(then.bind(value));\n }\n } catch (ex) {\n return new Promise(function (resolve, reject) {\n reject(ex);\n });\n }\n }\n return valuePromise(value);\n};\n\nPromise.all = function (arr) {\n var args = Array.prototype.slice.call(arr);\n\n return new Promise(function (resolve, reject) {\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n if (val instanceof Promise && val.then === Promise.prototype.then) {\n while (val._81 === 3) {\n val = val._65;\n }\n if (val._81 === 1) return res(i, val._65);\n if (val._81 === 2) reject(val._65);\n val.then(function (val) {\n res(i, val);\n }, reject);\n return;\n } else {\n var then = val.then;\n if (typeof then === 'function') {\n var p = new Promise(then.bind(val));\n p.then(function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.reject = function (value) {\n return new Promise(function (resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function (values) {\n return new Promise(function (resolve, reject) {\n values.forEach(function(value){\n Promise.resolve(value).then(resolve, reject);\n });\n });\n};\n\n/* Prototype Methods */\n\nPromise.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/promise/lib/es6-extensions.js\n ** module id = 14\n ** module chunks = 0\n **/","'use strict';\n\nvar Promise = require('./core');\n\nvar DEFAULT_WHITELIST = [\n ReferenceError,\n TypeError,\n RangeError\n];\n\nvar enabled = false;\nexports.disable = disable;\nfunction disable() {\n enabled = false;\n Promise._10 = null;\n Promise._97 = null;\n}\n\nexports.enable = enable;\nfunction enable(options) {\n options = options || {};\n if (enabled) disable();\n enabled = true;\n var id = 0;\n var displayId = 0;\n var rejections = {};\n Promise._10 = function (promise) {\n if (\n promise._81 === 2 && // IS REJECTED\n rejections[promise._72]\n ) {\n if (rejections[promise._72].logged) {\n onHandled(promise._72);\n } else {\n clearTimeout(rejections[promise._72].timeout);\n }\n delete rejections[promise._72];\n }\n };\n Promise._97 = function (promise, err) {\n if (promise._45 === 0) { // not yet handled\n promise._72 = id++;\n rejections[promise._72] = {\n displayId: null,\n error: err,\n timeout: setTimeout(\n onUnhandled.bind(null, promise._72),\n // For reference errors and type errors, this almost always\n // means the programmer made a mistake, so log them after just\n // 100ms\n // otherwise, wait 2 seconds to see if they get handled\n matchWhitelist(err, DEFAULT_WHITELIST)\n ? 100\n : 2000\n ),\n logged: false\n };\n }\n };\n function onUnhandled(id) {\n if (\n options.allRejections ||\n matchWhitelist(\n rejections[id].error,\n options.whitelist || DEFAULT_WHITELIST\n )\n ) {\n rejections[id].displayId = displayId++;\n if (options.onUnhandled) {\n rejections[id].logged = true;\n options.onUnhandled(\n rejections[id].displayId,\n rejections[id].error\n );\n } else {\n rejections[id].logged = true;\n logError(\n rejections[id].displayId,\n rejections[id].error\n );\n }\n }\n }\n function onHandled(id) {\n if (rejections[id].logged) {\n if (options.onHandled) {\n options.onHandled(rejections[id].displayId, rejections[id].error);\n } else if (!rejections[id].onUnhandled) {\n console.warn(\n 'Promise Rejection Handled (id: ' + rejections[id].displayId + '):'\n );\n console.warn(\n ' This means you can ignore any previous messages of the form \"Possible Unhandled Promise Rejection\" with id ' +\n rejections[id].displayId + '.'\n );\n }\n }\n }\n}\n\nfunction logError(id, error) {\n console.warn('Possible Unhandled Promise Rejection (id: ' + id + '):');\n var errStr = (error && (error.stack || error)) + '';\n errStr.split('\\n').forEach(function (line) {\n console.warn(' ' + line);\n });\n}\n\nfunction matchWhitelist(error, list) {\n return list.some(function (cls) {\n return error instanceof cls;\n });\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/promise/lib/rejection-tracking.js\n ** module id = 15\n ** module chunks = 0\n **/","(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var list = this.map[name]\n if (!list) {\n list = []\n this.map[name] = list\n }\n list.push(value)\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n var values = this.map[normalizeName(name)]\n return values ? values[0] : null\n }\n\n Headers.prototype.getAll = function(name) {\n return this.map[normalizeName(name)] || []\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = [normalizeValue(value)]\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n Object.getOwnPropertyNames(this.map).forEach(function(name) {\n this.map[name].forEach(function(value) {\n callback.call(thisArg, value, name, this)\n }, this)\n }, this)\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n reader.readAsArrayBuffer(blob)\n return fileReaderReady(reader)\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n reader.readAsText(blob)\n return fileReaderReady(reader)\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (!body) {\n this._bodyText = ''\n } else if (support.arrayBuffer && ArrayBuffer.prototype.isPrototypeOf(body)) {\n // Only support ArrayBuffers for POST method.\n // Receiving ArrayBuffers happens via Blobs, instead.\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n } else {\n this.text = function() {\n var rejected = consumed(this)\n return rejected ? rejected : Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n if (Request.prototype.isPrototypeOf(input)) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = input\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this)\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function headers(xhr) {\n var head = new Headers()\n var pairs = (xhr.getAllResponseHeaders() || '').trim().split('\\n')\n pairs.forEach(function(header) {\n var split = header.trim().split(':')\n var key = split.shift().trim()\n var value = split.join(':').trim()\n head.append(key, value)\n })\n return head\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = options.statusText\n this.headers = options.headers instanceof Headers ? options.headers : new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request\n if (Request.prototype.isPrototypeOf(input) && !init) {\n request = input\n } else {\n request = new Request(input, init)\n }\n\n var xhr = new XMLHttpRequest()\n\n function responseURL() {\n if ('responseURL' in xhr) {\n return xhr.responseURL\n }\n\n // Avoid security warnings on getResponseHeader when not allowed by CORS\n if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {\n return xhr.getResponseHeader('X-Request-URL')\n }\n\n return\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: headers(xhr),\n url: responseURL()\n }\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/whatwg-fetch/fetch.js\n ** module id = 16\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/main.9a635e99.js.map b/static/js/main.9a635e99.js.map deleted file mode 100644 index 14e6f13..0000000 --- a/static/js/main.9a635e99.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///static/js/main.9a635e99.js","webpack:///webpack/bootstrap b7431c8fba199fa0f4cf","webpack:///./~/preact/dist/preact.js","webpack:///./src/helpers/constants.js","webpack:///./src/helpers/ga.js","webpack:///./~/promise/lib/core.js","webpack:///./~/asap/browser-raw.js","webpack:///./src/Game/index.js","webpack:///./src/Sudoku/index.js","webpack:///./src/helpers/sudoku.js","webpack:///./src/index.js","webpack:///./~/object-assign/index.js","webpack:///./~/preact-scripts/config/polyfills.js","webpack:///./~/promise/lib/es6-extensions.js","webpack:///./~/promise/lib/rejection-tracking.js","webpack:///./~/whatwg-fetch/fetch.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","i","Object","prototype","hasOwnProperty","_m","args","slice","fn","a","b","apply","this","concat","VNode","h","nodeName","attributes","lastSimple","child","simple","children","EMPTY_CHILDREN","arguments","length","stack","push","pop","String","key","options","vnode","extend","obj","props","cloneElement","enqueueRender","component","__d","items","debounceRendering","defer","rerender","list","renderComponent","isSameNodeType","node","hydrating","splitText","_componentConstructor","isNamedNode","__n","toLowerCase","getNodeProps","defaultProps","createNode","isSvg","document","createElementNS","createElement","removeNode","parentNode","removeChild","setAccessor","name","old","value","style","cssText","IS_NON_DIMENSIONAL","test","innerHTML","__html","useCapture","replace","substring","addEventListener","eventProxy","removeEventListener","__l","setProperty","removeAttribute","ns","removeAttributeNS","setAttributeNS","setAttribute","className","e","type","event","flushMounts","mounts","afterMount","componentDidMount","diff","dom","context","mountAll","parent","componentRoot","diffLevel","isSvgMode","ownerSVGElement","ret","idiff","appendChild","out","prevSvgMode","_component","nodeValue","createTextNode","replaceChild","recollectNodeTree","__preactattr_","vnodeName","buildComponentFromVNode","firstChild","fc","vchildren","nextSibling","innerDiffNode","dangerouslySetInnerHTML","diffAttributes","isHydrating","j","f","vchild","originalChildren","childNodes","keyed","keyedLen","min","len","childrenLen","vlen","_child","__k","trim","insertBefore","unmountOnly","unmountComponent","ref","removeChildren","lastChild","next","previousSibling","attrs","collectComponent","constructor","components","createComponent","Ctor","inst","render","Component","doRender","__b","splice","state","setComponentProps","opts","__x","__r","base","componentWillMount","componentWillReceiveProps","__c","__p","syncComponentUpdates","isChild","rendered","cbase","previousProps","previousState","__s","previousContext","isUpdate","nextBase","initialBase","initialChildComponent","skip","shouldComponentUpdate","componentWillUpdate","getChildContext","toUnmount","childComponent","childProps","__u","baseParent","componentRef","t","unshift","componentDidUpdate","afterUpdate","__h","originalComponent","oldDom","isDirectOwner","isOwner","beforeUnmount","componentWillUnmount","inner","merge","Promise","resolve","then","bind","setTimeout","setState","callback","s","forceUpdate","preact","defineProperty","SUDOKU_DIGITS","SUDOKU_LARGEST_DIGIT","Math","max","GA_DIFFICULTY_MULTIPLIER","_window","window","ga","requirejs","url","location","hostname","title","page","trackEvent","_len","Array","_key","noop","getThen","ex","LAST_ERROR","IS_ERROR","tryCallOne","tryCallTwo","TypeError","_45","_81","_65","_54","doResolve","safeThen","self","onFulfilled","onRejected","reject","res","handle","Handler","deferred","_10","handleResolved","asap","cb","promise","newValue","finale","_97","done","reason","_61","global","rawAsap","task","queue","requestFlush","flushing","flush","index","currentIndex","capacity","scan","newLength","makeRequestCallFromMutationObserver","toggle","observer","BrowserMutationObserver","observe","characterData","data","makeRequestCallFromTimer","handleTimer","clearTimeout","timeoutHandle","clearInterval","intervalHandle","setInterval","scope","MutationObserver","WebKitMutationObserver","_interopRequireDefault","__esModule","default","_classCallCheck","instance","Constructor","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","create","enumerable","writable","configurable","setPrototypeOf","__proto__","_createClass","defineProperties","target","descriptor","protoProps","staticProps","_preact","_Sudoku","_Sudoku2","_ref","role","Game","_Component","getPrototypeOf","_constants","_sudoku","_sudoku2","_ga","_ref8","_ref9","_ref10","_ref11","Sudoku","_temp","_this","_ret","attempt","difficulty","puzzle","solution","solutionJSON","handleCellChange","_ref2","_target$dataset","dataset","x","y","readOnly","map","row","parseInt","handleCellKeyDown","_ref3","_target$dataset2","input","tbody","querySelector","select","checkSolution","_this$state","console","log","JSON","stringify","round","alert","clearPuzzle","_ref4","newPuzzle","_ref5","undefined","_createSudoku","changeDifficulty","_ref6","Number","_ref7","_this2","_state","element","rows","digit","data-x","data-y","formnovalidate","maxlength","onClick","handleCellClick","onChange","onKeyDown","pattern","readonly","Boolean","shuffleArray","array","shouldMutate","arr","floor","random","temp","generateRow","isRowUsable","output","rowIndex","columnIndex","rowValue","rowStart","columnStart","section","indexOf","generateSolution","loopCount","columnValues","reduce","result","forEach","columnValue","lastRow","number","createSudoku","bootstrap","getElementById","toObject","val","shouldUseNative","assign","test1","getOwnPropertyNames","test2","fromCharCode","order2","n","join","test3","split","letter","keys","propIsEnumerable","propertyIsEnumerable","source","from","symbols","to","getOwnPropertySymbols","enable","valuePromise","TRUE","FALSE","NULL","UNDEFINED","ZERO","EMPTYSTRING","all","remaining","race","values","disable","enabled","onUnhandled","allRejections","matchWhitelist","rejections","error","whitelist","DEFAULT_WHITELIST","displayId","logged","logError","onHandled","warn","_72","timeout","err","errStr","line","some","cls","RangeError","normalizeName","normalizeValue","iteratorFor","iterator","shift","support","iterable","Symbol","Headers","headers","append","consumed","body","bodyUsed","fileReaderReady","reader","onload","onerror","readBlobAsArrayBuffer","blob","FileReader","readAsArrayBuffer","readBlobAsText","readAsText","Body","_initBody","_bodyInit","_bodyText","Blob","isPrototypeOf","_bodyBlob","formData","FormData","_bodyFormData","searchParams","URLSearchParams","toString","arrayBuffer","ArrayBuffer","Error","get","set","rejected","text","decode","json","parse","normalizeMethod","method","upcased","toUpperCase","methods","Request","credentials","mode","referrer","form","bytes","decodeURIComponent","xhr","head","pairs","getAllResponseHeaders","header","Response","bodyInit","status","ok","statusText","fetch","getAll","has","thisArg","entries","clone","response","redirectStatuses","redirect","init","responseURL","getResponseHeader","request","XMLHttpRequest","responseText","ontimeout","open","withCredentials","responseType","setRequestHeader","send","polyfill"],"mappings":"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","file":"static/js/main.9a635e99.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/sudoku/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ((function(modules) {\n\t// Check all modules for deduplicated modules\n\tfor(var i in modules) {\n\t\tif(Object.prototype.hasOwnProperty.call(modules, i)) {\n\t\t\tswitch(typeof modules[i]) {\n\t\t\tcase \"function\": break;\n\t\t\tcase \"object\":\n\t\t\t\t// Module can be created from a template\n\t\t\t\tmodules[i] = (function(_m) {\n\t\t\t\t\tvar args = _m.slice(1), fn = modules[_m[0]];\n\t\t\t\t\treturn function (a,b,c) {\n\t\t\t\t\t\tfn.apply(this, [a,b,c].concat(args));\n\t\t\t\t\t};\n\t\t\t\t}(modules[i]));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t// Module is a copy of another module\n\t\t\t\tmodules[i] = modules[modules[i]];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn modules;\n}([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(13);\n\tmodule.exports = __webpack_require__(9);\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t!function() {\n\t 'use strict';\n\t function VNode() {}\n\t function h(nodeName, attributes) {\n\t var lastSimple, child, simple, i, children = EMPTY_CHILDREN;\n\t for (i = arguments.length; i-- > 2; ) stack.push(arguments[i]);\n\t if (attributes && null != attributes.children) {\n\t if (!stack.length) stack.push(attributes.children);\n\t delete attributes.children;\n\t }\n\t while (stack.length) if ((child = stack.pop()) && void 0 !== child.pop) for (i = child.length; i--; ) stack.push(child[i]); else {\n\t if ('boolean' == typeof child) child = null;\n\t if (simple = 'function' != typeof nodeName) if (null == child) child = ''; else if ('number' == typeof child) child = String(child); else if ('string' != typeof child) simple = !1;\n\t if (simple && lastSimple) children[children.length - 1] += child; else if (children === EMPTY_CHILDREN) children = [ child ]; else children.push(child);\n\t lastSimple = simple;\n\t }\n\t var p = new VNode();\n\t p.nodeName = nodeName;\n\t p.children = children;\n\t p.attributes = null == attributes ? void 0 : attributes;\n\t p.key = null == attributes ? void 0 : attributes.key;\n\t if (void 0 !== options.vnode) options.vnode(p);\n\t return p;\n\t }\n\t function extend(obj, props) {\n\t for (var i in props) obj[i] = props[i];\n\t return obj;\n\t }\n\t function cloneElement(vnode, props) {\n\t return h(vnode.nodeName, extend(extend({}, vnode.attributes), props), arguments.length > 2 ? [].slice.call(arguments, 2) : vnode.children);\n\t }\n\t function enqueueRender(component) {\n\t if (!component.__d && (component.__d = !0) && 1 == items.push(component)) (options.debounceRendering || defer)(rerender);\n\t }\n\t function rerender() {\n\t var p, list = items;\n\t items = [];\n\t while (p = list.pop()) if (p.__d) renderComponent(p);\n\t }\n\t function isSameNodeType(node, vnode, hydrating) {\n\t if ('string' == typeof vnode || 'number' == typeof vnode) return void 0 !== node.splitText;\n\t if ('string' == typeof vnode.nodeName) return !node._componentConstructor && isNamedNode(node, vnode.nodeName); else return hydrating || node._componentConstructor === vnode.nodeName;\n\t }\n\t function isNamedNode(node, nodeName) {\n\t return node.__n === nodeName || node.nodeName.toLowerCase() === nodeName.toLowerCase();\n\t }\n\t function getNodeProps(vnode) {\n\t var props = extend({}, vnode.attributes);\n\t props.children = vnode.children;\n\t var defaultProps = vnode.nodeName.defaultProps;\n\t if (void 0 !== defaultProps) for (var i in defaultProps) if (void 0 === props[i]) props[i] = defaultProps[i];\n\t return props;\n\t }\n\t function createNode(nodeName, isSvg) {\n\t var node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);\n\t node.__n = nodeName;\n\t return node;\n\t }\n\t function removeNode(node) {\n\t var parentNode = node.parentNode;\n\t if (parentNode) parentNode.removeChild(node);\n\t }\n\t function setAccessor(node, name, old, value, isSvg) {\n\t if ('className' === name) name = 'class';\n\t if ('key' === name) ; else if ('ref' === name) {\n\t if (old) old(null);\n\t if (value) value(node);\n\t } else if ('class' === name && !isSvg) node.className = value || ''; else if ('style' === name) {\n\t if (!value || 'string' == typeof value || 'string' == typeof old) node.style.cssText = value || '';\n\t if (value && 'object' == typeof value) {\n\t if ('string' != typeof old) for (var i in old) if (!(i in value)) node.style[i] = '';\n\t for (var i in value) node.style[i] = 'number' == typeof value[i] && !1 === IS_NON_DIMENSIONAL.test(i) ? value[i] + 'px' : value[i];\n\t }\n\t } else if ('dangerouslySetInnerHTML' === name) {\n\t if (value) node.innerHTML = value.__html || '';\n\t } else if ('o' == name[0] && 'n' == name[1]) {\n\t var useCapture = name !== (name = name.replace(/Capture$/, ''));\n\t name = name.toLowerCase().substring(2);\n\t if (value) {\n\t if (!old) node.addEventListener(name, eventProxy, useCapture);\n\t } else node.removeEventListener(name, eventProxy, useCapture);\n\t (node.__l || (node.__l = {}))[name] = value;\n\t } else if ('list' !== name && 'type' !== name && !isSvg && name in node) {\n\t setProperty(node, name, null == value ? '' : value);\n\t if (null == value || !1 === value) node.removeAttribute(name);\n\t } else {\n\t var ns = isSvg && name !== (name = name.replace(/^xlink\\:?/, ''));\n\t if (null == value || !1 === value) if (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase()); else node.removeAttribute(name); else if ('function' != typeof value) if (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value); else node.setAttribute(name, value);\n\t }\n\t }\n\t function setProperty(node, name, value) {\n\t try {\n\t node[name] = value;\n\t } catch (e) {}\n\t }\n\t function eventProxy(e) {\n\t return this.__l[e.type](options.event && options.event(e) || e);\n\t }\n\t function flushMounts() {\n\t var c;\n\t while (c = mounts.pop()) {\n\t if (options.afterMount) options.afterMount(c);\n\t if (c.componentDidMount) c.componentDidMount();\n\t }\n\t }\n\t function diff(dom, vnode, context, mountAll, parent, componentRoot) {\n\t if (!diffLevel++) {\n\t isSvgMode = null != parent && void 0 !== parent.ownerSVGElement;\n\t hydrating = null != dom && !('__preactattr_' in dom);\n\t }\n\t var ret = idiff(dom, vnode, context, mountAll, componentRoot);\n\t if (parent && ret.parentNode !== parent) parent.appendChild(ret);\n\t if (!--diffLevel) {\n\t hydrating = !1;\n\t if (!componentRoot) flushMounts();\n\t }\n\t return ret;\n\t }\n\t function idiff(dom, vnode, context, mountAll, componentRoot) {\n\t var out = dom, prevSvgMode = isSvgMode;\n\t if (null == vnode || 'boolean' == typeof vnode) vnode = '';\n\t if ('string' == typeof vnode || 'number' == typeof vnode) {\n\t if (dom && void 0 !== dom.splitText && dom.parentNode && (!dom._component || componentRoot)) {\n\t if (dom.nodeValue != vnode) dom.nodeValue = vnode;\n\t } else {\n\t out = document.createTextNode(vnode);\n\t if (dom) {\n\t if (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\t recollectNodeTree(dom, !0);\n\t }\n\t }\n\t out.__preactattr_ = !0;\n\t return out;\n\t }\n\t var vnodeName = vnode.nodeName;\n\t if ('function' == typeof vnodeName) return buildComponentFromVNode(dom, vnode, context, mountAll);\n\t isSvgMode = 'svg' === vnodeName ? !0 : 'foreignObject' === vnodeName ? !1 : isSvgMode;\n\t vnodeName = String(vnodeName);\n\t if (!dom || !isNamedNode(dom, vnodeName)) {\n\t out = createNode(vnodeName, isSvgMode);\n\t if (dom) {\n\t while (dom.firstChild) out.appendChild(dom.firstChild);\n\t if (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\t recollectNodeTree(dom, !0);\n\t }\n\t }\n\t var fc = out.firstChild, props = out.__preactattr_, vchildren = vnode.children;\n\t if (null == props) {\n\t props = out.__preactattr_ = {};\n\t for (var a = out.attributes, i = a.length; i--; ) props[a[i].name] = a[i].value;\n\t }\n\t if (!hydrating && vchildren && 1 === vchildren.length && 'string' == typeof vchildren[0] && null != fc && void 0 !== fc.splitText && null == fc.nextSibling) {\n\t if (fc.nodeValue != vchildren[0]) fc.nodeValue = vchildren[0];\n\t } else if (vchildren && vchildren.length || null != fc) innerDiffNode(out, vchildren, context, mountAll, hydrating || null != props.dangerouslySetInnerHTML);\n\t diffAttributes(out, vnode.attributes, props);\n\t isSvgMode = prevSvgMode;\n\t return out;\n\t }\n\t function innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {\n\t var j, c, f, vchild, child, originalChildren = dom.childNodes, children = [], keyed = {}, keyedLen = 0, min = 0, len = originalChildren.length, childrenLen = 0, vlen = vchildren ? vchildren.length : 0;\n\t if (0 !== len) for (var i = 0; i < len; i++) {\n\t var _child = originalChildren[i], props = _child.__preactattr_, key = vlen && props ? _child._component ? _child._component.__k : props.key : null;\n\t if (null != key) {\n\t keyedLen++;\n\t keyed[key] = _child;\n\t } else if (props || (void 0 !== _child.splitText ? isHydrating ? _child.nodeValue.trim() : !0 : isHydrating)) children[childrenLen++] = _child;\n\t }\n\t if (0 !== vlen) for (var i = 0; i < vlen; i++) {\n\t vchild = vchildren[i];\n\t child = null;\n\t var key = vchild.key;\n\t if (null != key) {\n\t if (keyedLen && void 0 !== keyed[key]) {\n\t child = keyed[key];\n\t keyed[key] = void 0;\n\t keyedLen--;\n\t }\n\t } else if (!child && min < childrenLen) for (j = min; j < childrenLen; j++) if (void 0 !== children[j] && isSameNodeType(c = children[j], vchild, isHydrating)) {\n\t child = c;\n\t children[j] = void 0;\n\t if (j === childrenLen - 1) childrenLen--;\n\t if (j === min) min++;\n\t break;\n\t }\n\t child = idiff(child, vchild, context, mountAll);\n\t f = originalChildren[i];\n\t if (child && child !== dom && child !== f) if (null == f) dom.appendChild(child); else if (child === f.nextSibling) removeNode(f); else dom.insertBefore(child, f);\n\t }\n\t if (keyedLen) for (var i in keyed) if (void 0 !== keyed[i]) recollectNodeTree(keyed[i], !1);\n\t while (min <= childrenLen) if (void 0 !== (child = children[childrenLen--])) recollectNodeTree(child, !1);\n\t }\n\t function recollectNodeTree(node, unmountOnly) {\n\t var component = node._component;\n\t if (component) unmountComponent(component); else {\n\t if (null != node.__preactattr_ && node.__preactattr_.ref) node.__preactattr_.ref(null);\n\t if (!1 === unmountOnly || null == node.__preactattr_) removeNode(node);\n\t removeChildren(node);\n\t }\n\t }\n\t function removeChildren(node) {\n\t node = node.lastChild;\n\t while (node) {\n\t var next = node.previousSibling;\n\t recollectNodeTree(node, !0);\n\t node = next;\n\t }\n\t }\n\t function diffAttributes(dom, attrs, old) {\n\t var name;\n\t for (name in old) if ((!attrs || null == attrs[name]) && null != old[name]) setAccessor(dom, name, old[name], old[name] = void 0, isSvgMode);\n\t for (name in attrs) if (!('children' === name || 'innerHTML' === name || name in old && attrs[name] === ('value' === name || 'checked' === name ? dom[name] : old[name]))) setAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);\n\t }\n\t function collectComponent(component) {\n\t var name = component.constructor.name;\n\t (components[name] || (components[name] = [])).push(component);\n\t }\n\t function createComponent(Ctor, props, context) {\n\t var inst, list = components[Ctor.name];\n\t if (Ctor.prototype && Ctor.prototype.render) {\n\t inst = new Ctor(props, context);\n\t Component.call(inst, props, context);\n\t } else {\n\t inst = new Component(props, context);\n\t inst.constructor = Ctor;\n\t inst.render = doRender;\n\t }\n\t if (list) for (var i = list.length; i--; ) if (list[i].constructor === Ctor) {\n\t inst.__b = list[i].__b;\n\t list.splice(i, 1);\n\t break;\n\t }\n\t return inst;\n\t }\n\t function doRender(props, state, context) {\n\t return this.constructor(props, context);\n\t }\n\t function setComponentProps(component, props, opts, context, mountAll) {\n\t if (!component.__x) {\n\t component.__x = !0;\n\t if (component.__r = props.ref) delete props.ref;\n\t if (component.__k = props.key) delete props.key;\n\t if (!component.base || mountAll) {\n\t if (component.componentWillMount) component.componentWillMount();\n\t } else if (component.componentWillReceiveProps) component.componentWillReceiveProps(props, context);\n\t if (context && context !== component.context) {\n\t if (!component.__c) component.__c = component.context;\n\t component.context = context;\n\t }\n\t if (!component.__p) component.__p = component.props;\n\t component.props = props;\n\t component.__x = !1;\n\t if (0 !== opts) if (1 === opts || !1 !== options.syncComponentUpdates || !component.base) renderComponent(component, 1, mountAll); else enqueueRender(component);\n\t if (component.__r) component.__r(component);\n\t }\n\t }\n\t function renderComponent(component, opts, mountAll, isChild) {\n\t if (!component.__x) {\n\t var rendered, inst, cbase, props = component.props, state = component.state, context = component.context, previousProps = component.__p || props, previousState = component.__s || state, previousContext = component.__c || context, isUpdate = component.base, nextBase = component.__b, initialBase = isUpdate || nextBase, initialChildComponent = component._component, skip = !1;\n\t if (isUpdate) {\n\t component.props = previousProps;\n\t component.state = previousState;\n\t component.context = previousContext;\n\t if (2 !== opts && component.shouldComponentUpdate && !1 === component.shouldComponentUpdate(props, state, context)) skip = !0; else if (component.componentWillUpdate) component.componentWillUpdate(props, state, context);\n\t component.props = props;\n\t component.state = state;\n\t component.context = context;\n\t }\n\t component.__p = component.__s = component.__c = component.__b = null;\n\t component.__d = !1;\n\t if (!skip) {\n\t rendered = component.render(props, state, context);\n\t if (component.getChildContext) context = extend(extend({}, context), component.getChildContext());\n\t var toUnmount, base, childComponent = rendered && rendered.nodeName;\n\t if ('function' == typeof childComponent) {\n\t var childProps = getNodeProps(rendered);\n\t inst = initialChildComponent;\n\t if (inst && inst.constructor === childComponent && childProps.key == inst.__k) setComponentProps(inst, childProps, 1, context, !1); else {\n\t toUnmount = inst;\n\t component._component = inst = createComponent(childComponent, childProps, context);\n\t inst.__b = inst.__b || nextBase;\n\t inst.__u = component;\n\t setComponentProps(inst, childProps, 0, context, !1);\n\t renderComponent(inst, 1, mountAll, !0);\n\t }\n\t base = inst.base;\n\t } else {\n\t cbase = initialBase;\n\t toUnmount = initialChildComponent;\n\t if (toUnmount) cbase = component._component = null;\n\t if (initialBase || 1 === opts) {\n\t if (cbase) cbase._component = null;\n\t base = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, !0);\n\t }\n\t }\n\t if (initialBase && base !== initialBase && inst !== initialChildComponent) {\n\t var baseParent = initialBase.parentNode;\n\t if (baseParent && base !== baseParent) {\n\t baseParent.replaceChild(base, initialBase);\n\t if (!toUnmount) {\n\t initialBase._component = null;\n\t recollectNodeTree(initialBase, !1);\n\t }\n\t }\n\t }\n\t if (toUnmount) unmountComponent(toUnmount);\n\t component.base = base;\n\t if (base && !isChild) {\n\t var componentRef = component, t = component;\n\t while (t = t.__u) (componentRef = t).base = base;\n\t base._component = componentRef;\n\t base._componentConstructor = componentRef.constructor;\n\t }\n\t }\n\t if (!isUpdate || mountAll) mounts.unshift(component); else if (!skip) {\n\t if (component.componentDidUpdate) component.componentDidUpdate(previousProps, previousState, previousContext);\n\t if (options.afterUpdate) options.afterUpdate(component);\n\t }\n\t if (null != component.__h) while (component.__h.length) component.__h.pop().call(component);\n\t if (!diffLevel && !isChild) flushMounts();\n\t }\n\t }\n\t function buildComponentFromVNode(dom, vnode, context, mountAll) {\n\t var c = dom && dom._component, originalComponent = c, oldDom = dom, isDirectOwner = c && dom._componentConstructor === vnode.nodeName, isOwner = isDirectOwner, props = getNodeProps(vnode);\n\t while (c && !isOwner && (c = c.__u)) isOwner = c.constructor === vnode.nodeName;\n\t if (c && isOwner && (!mountAll || c._component)) {\n\t setComponentProps(c, props, 3, context, mountAll);\n\t dom = c.base;\n\t } else {\n\t if (originalComponent && !isDirectOwner) {\n\t unmountComponent(originalComponent);\n\t dom = oldDom = null;\n\t }\n\t c = createComponent(vnode.nodeName, props, context);\n\t if (dom && !c.__b) {\n\t c.__b = dom;\n\t oldDom = null;\n\t }\n\t setComponentProps(c, props, 1, context, mountAll);\n\t dom = c.base;\n\t if (oldDom && dom !== oldDom) {\n\t oldDom._component = null;\n\t recollectNodeTree(oldDom, !1);\n\t }\n\t }\n\t return dom;\n\t }\n\t function unmountComponent(component) {\n\t if (options.beforeUnmount) options.beforeUnmount(component);\n\t var base = component.base;\n\t component.__x = !0;\n\t if (component.componentWillUnmount) component.componentWillUnmount();\n\t component.base = null;\n\t var inner = component._component;\n\t if (inner) unmountComponent(inner); else if (base) {\n\t if (base.__preactattr_ && base.__preactattr_.ref) base.__preactattr_.ref(null);\n\t component.__b = base;\n\t removeNode(base);\n\t collectComponent(component);\n\t removeChildren(base);\n\t }\n\t if (component.__r) component.__r(null);\n\t }\n\t function Component(props, context) {\n\t this.__d = !0;\n\t this.context = context;\n\t this.props = props;\n\t this.state = this.state || {};\n\t }\n\t function render(vnode, parent, merge) {\n\t return diff(merge, vnode, {}, !1, parent, !1);\n\t }\n\t var options = {};\n\t var stack = [];\n\t var EMPTY_CHILDREN = [];\n\t var defer = 'function' == typeof Promise ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;\n\t var IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n\t var items = [];\n\t var mounts = [];\n\t var diffLevel = 0;\n\t var isSvgMode = !1;\n\t var hydrating = !1;\n\t var components = {};\n\t extend(Component.prototype, {\n\t setState: function(state, callback) {\n\t var s = this.state;\n\t if (!this.__s) this.__s = extend({}, s);\n\t extend(s, 'function' == typeof state ? state(s, this.props) : state);\n\t if (callback) (this.__h = this.__h || []).push(callback);\n\t enqueueRender(this);\n\t },\n\t forceUpdate: function(callback) {\n\t if (callback) (this.__h = this.__h || []).push(callback);\n\t renderComponent(this, 2);\n\t },\n\t render: function() {}\n\t });\n\t var preact = {\n\t h: h,\n\t createElement: h,\n\t cloneElement: cloneElement,\n\t Component: Component,\n\t render: render,\n\t rerender: rerender,\n\t options: options\n\t };\n\t if (true) module.exports = preact; else self.preact = preact;\n\t}();\n\t//# sourceMappingURL=preact.js.map\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar SUDOKU_DIGITS = exports.SUDOKU_DIGITS = [1, 2, 3, 4, 5, 6, 7, 8, 9];\n\t\n\tvar SUDOKU_LARGEST_DIGIT = exports.SUDOKU_LARGEST_DIGIT = Math.max.apply({}, SUDOKU_DIGITS);\n\t\n\t// ga event value must be an integer\n\t// so a difficulty of .5 will be tracked as 500\n\tvar GA_DIFFICULTY_MULTIPLIER = exports.GA_DIFFICULTY_MULTIPLIER = 1e3;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar _window = window,\n\t ga = _window.ga,\n\t requirejs = _window.requirejs;\n\t\n\t\n\tga('create', 'UA-59233605-5', 'auto');\n\t\n\t// https://developers.google.com/analytics/devguides/collection/analyticsjs/debugging\n\tvar url = 'https://www.google-analytics.com/analytics.js';\n\tif ((\"production\") === 'development' || location.hostname === 'localhost') {\n\t url = url.replace('analytics.js', 'analytics_debug.js');\n\t ga('set', 'sendHitTask', null);\n\t}\n\t\n\tga('set', {\n\t title: 'Sudoku',\n\t page: '/sudoku/'\n\t});\n\tga('send', 'pageview');\n\t\n\trequirejs([url]);\n\t\n\t/**\n\t * Tracks event with analytics.\n\t * https://developers.google.com/analytics/devguides/collection/analyticsjs/events\n\t *\n\t * @param {String} eventCategory\n\t * @param {String} eventAction\n\t * @param {String} [eventLabel]\n\t * @param {Number} [eventValue]\n\t */\n\tvar trackEvent = exports.trackEvent = function trackEvent() {\n\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\t\n\t window.ga.apply(null, ['send', 'event'].concat(args));\n\t};\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar asap = __webpack_require__(5);\n\t\n\tfunction noop() {}\n\t\n\t// States:\n\t//\n\t// 0 - pending\n\t// 1 - fulfilled with _value\n\t// 2 - rejected with _value\n\t// 3 - adopted the state of another promise, _value\n\t//\n\t// once the state is no longer pending (0) it is immutable\n\t\n\t// All `_` prefixed properties will be reduced to `_{random number}`\n\t// at build time to obfuscate them and discourage their use.\n\t// We don't use symbols or Object.defineProperty to fully hide them\n\t// because the performance isn't good enough.\n\t\n\t\n\t// to avoid using try/catch inside critical functions, we\n\t// extract them to here.\n\tvar LAST_ERROR = null;\n\tvar IS_ERROR = {};\n\tfunction getThen(obj) {\n\t try {\n\t return obj.then;\n\t } catch (ex) {\n\t LAST_ERROR = ex;\n\t return IS_ERROR;\n\t }\n\t}\n\t\n\tfunction tryCallOne(fn, a) {\n\t try {\n\t return fn(a);\n\t } catch (ex) {\n\t LAST_ERROR = ex;\n\t return IS_ERROR;\n\t }\n\t}\n\tfunction tryCallTwo(fn, a, b) {\n\t try {\n\t fn(a, b);\n\t } catch (ex) {\n\t LAST_ERROR = ex;\n\t return IS_ERROR;\n\t }\n\t}\n\t\n\tmodule.exports = Promise;\n\t\n\tfunction Promise(fn) {\n\t if (typeof this !== 'object') {\n\t throw new TypeError('Promises must be constructed via new');\n\t }\n\t if (typeof fn !== 'function') {\n\t throw new TypeError('not a function');\n\t }\n\t this._45 = 0;\n\t this._81 = 0;\n\t this._65 = null;\n\t this._54 = null;\n\t if (fn === noop) return;\n\t doResolve(fn, this);\n\t}\n\tPromise._10 = null;\n\tPromise._97 = null;\n\tPromise._61 = noop;\n\t\n\tPromise.prototype.then = function(onFulfilled, onRejected) {\n\t if (this.constructor !== Promise) {\n\t return safeThen(this, onFulfilled, onRejected);\n\t }\n\t var res = new Promise(noop);\n\t handle(this, new Handler(onFulfilled, onRejected, res));\n\t return res;\n\t};\n\t\n\tfunction safeThen(self, onFulfilled, onRejected) {\n\t return new self.constructor(function (resolve, reject) {\n\t var res = new Promise(noop);\n\t res.then(resolve, reject);\n\t handle(self, new Handler(onFulfilled, onRejected, res));\n\t });\n\t};\n\tfunction handle(self, deferred) {\n\t while (self._81 === 3) {\n\t self = self._65;\n\t }\n\t if (Promise._10) {\n\t Promise._10(self);\n\t }\n\t if (self._81 === 0) {\n\t if (self._45 === 0) {\n\t self._45 = 1;\n\t self._54 = deferred;\n\t return;\n\t }\n\t if (self._45 === 1) {\n\t self._45 = 2;\n\t self._54 = [self._54, deferred];\n\t return;\n\t }\n\t self._54.push(deferred);\n\t return;\n\t }\n\t handleResolved(self, deferred);\n\t}\n\t\n\tfunction handleResolved(self, deferred) {\n\t asap(function() {\n\t var cb = self._81 === 1 ? deferred.onFulfilled : deferred.onRejected;\n\t if (cb === null) {\n\t if (self._81 === 1) {\n\t resolve(deferred.promise, self._65);\n\t } else {\n\t reject(deferred.promise, self._65);\n\t }\n\t return;\n\t }\n\t var ret = tryCallOne(cb, self._65);\n\t if (ret === IS_ERROR) {\n\t reject(deferred.promise, LAST_ERROR);\n\t } else {\n\t resolve(deferred.promise, ret);\n\t }\n\t });\n\t}\n\tfunction resolve(self, newValue) {\n\t // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n\t if (newValue === self) {\n\t return reject(\n\t self,\n\t new TypeError('A promise cannot be resolved with itself.')\n\t );\n\t }\n\t if (\n\t newValue &&\n\t (typeof newValue === 'object' || typeof newValue === 'function')\n\t ) {\n\t var then = getThen(newValue);\n\t if (then === IS_ERROR) {\n\t return reject(self, LAST_ERROR);\n\t }\n\t if (\n\t then === self.then &&\n\t newValue instanceof Promise\n\t ) {\n\t self._81 = 3;\n\t self._65 = newValue;\n\t finale(self);\n\t return;\n\t } else if (typeof then === 'function') {\n\t doResolve(then.bind(newValue), self);\n\t return;\n\t }\n\t }\n\t self._81 = 1;\n\t self._65 = newValue;\n\t finale(self);\n\t}\n\t\n\tfunction reject(self, newValue) {\n\t self._81 = 2;\n\t self._65 = newValue;\n\t if (Promise._97) {\n\t Promise._97(self, newValue);\n\t }\n\t finale(self);\n\t}\n\tfunction finale(self) {\n\t if (self._45 === 1) {\n\t handle(self, self._54);\n\t self._54 = null;\n\t }\n\t if (self._45 === 2) {\n\t for (var i = 0; i < self._54.length; i++) {\n\t handle(self, self._54[i]);\n\t }\n\t self._54 = null;\n\t }\n\t}\n\t\n\tfunction Handler(onFulfilled, onRejected, promise){\n\t this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n\t this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n\t this.promise = promise;\n\t}\n\t\n\t/**\n\t * Take a potentially misbehaving resolver function and make sure\n\t * onFulfilled and onRejected are only called once.\n\t *\n\t * Makes no guarantees about asynchrony.\n\t */\n\tfunction doResolve(fn, promise) {\n\t var done = false;\n\t var res = tryCallTwo(fn, function (value) {\n\t if (done) return;\n\t done = true;\n\t resolve(promise, value);\n\t }, function (reason) {\n\t if (done) return;\n\t done = true;\n\t reject(promise, reason);\n\t })\n\t if (!done && res === IS_ERROR) {\n\t done = true;\n\t reject(promise, LAST_ERROR);\n\t }\n\t}\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {\"use strict\";\n\t\n\t// Use the fastest means possible to execute a task in its own turn, with\n\t// priority over other events including IO, animation, reflow, and redraw\n\t// events in browsers.\n\t//\n\t// An exception thrown by a task will permanently interrupt the processing of\n\t// subsequent tasks. The higher level `asap` function ensures that if an\n\t// exception is thrown by a task, that the task queue will continue flushing as\n\t// soon as possible, but if you use `rawAsap` directly, you are responsible to\n\t// either ensure that no exceptions are thrown from your task, or to manually\n\t// call `rawAsap.requestFlush` if an exception is thrown.\n\tmodule.exports = rawAsap;\n\tfunction rawAsap(task) {\n\t if (!queue.length) {\n\t requestFlush();\n\t flushing = true;\n\t }\n\t // Equivalent to push, but avoids a function call.\n\t queue[queue.length] = task;\n\t}\n\t\n\tvar queue = [];\n\t// Once a flush has been requested, no further calls to `requestFlush` are\n\t// necessary until the next `flush` completes.\n\tvar flushing = false;\n\t// `requestFlush` is an implementation-specific method that attempts to kick\n\t// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n\t// the event queue before yielding to the browser's own event loop.\n\tvar requestFlush;\n\t// The position of the next task to execute in the task queue. This is\n\t// preserved between calls to `flush` so that it can be resumed if\n\t// a task throws an exception.\n\tvar index = 0;\n\t// If a task schedules additional tasks recursively, the task queue can grow\n\t// unbounded. To prevent memory exhaustion, the task queue will periodically\n\t// truncate already-completed tasks.\n\tvar capacity = 1024;\n\t\n\t// The flush function processes all tasks that have been scheduled with\n\t// `rawAsap` unless and until one of those tasks throws an exception.\n\t// If a task throws an exception, `flush` ensures that its state will remain\n\t// consistent and will resume where it left off when called again.\n\t// However, `flush` does not make any arrangements to be called again if an\n\t// exception is thrown.\n\tfunction flush() {\n\t while (index < queue.length) {\n\t var currentIndex = index;\n\t // Advance the index before calling the task. This ensures that we will\n\t // begin flushing on the next task the task throws an error.\n\t index = index + 1;\n\t queue[currentIndex].call();\n\t // Prevent leaking memory for long chains of recursive calls to `asap`.\n\t // If we call `asap` within tasks scheduled by `asap`, the queue will\n\t // grow, but to avoid an O(n) walk for every task we execute, we don't\n\t // shift tasks off the queue after they have been executed.\n\t // Instead, we periodically shift 1024 tasks off the queue.\n\t if (index > capacity) {\n\t // Manually shift all values starting at the index back to the\n\t // beginning of the queue.\n\t for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n\t queue[scan] = queue[scan + index];\n\t }\n\t queue.length -= index;\n\t index = 0;\n\t }\n\t }\n\t queue.length = 0;\n\t index = 0;\n\t flushing = false;\n\t}\n\t\n\t// `requestFlush` is implemented using a strategy based on data collected from\n\t// every available SauceLabs Selenium web driver worker at time of writing.\n\t// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\t\n\t// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n\t// have WebKitMutationObserver but not un-prefixed MutationObserver.\n\t// Must use `global` or `self` instead of `window` to work in both frames and web\n\t// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\t\n\t/* globals self */\n\tvar scope = typeof global !== \"undefined\" ? global : self;\n\tvar BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver;\n\t\n\t// MutationObservers are desirable because they have high priority and work\n\t// reliably everywhere they are implemented.\n\t// They are implemented in all modern browsers.\n\t//\n\t// - Android 4-4.3\n\t// - Chrome 26-34\n\t// - Firefox 14-29\n\t// - Internet Explorer 11\n\t// - iPad Safari 6-7.1\n\t// - iPhone Safari 7-7.1\n\t// - Safari 6-7\n\tif (typeof BrowserMutationObserver === \"function\") {\n\t requestFlush = makeRequestCallFromMutationObserver(flush);\n\t\n\t// MessageChannels are desirable because they give direct access to the HTML\n\t// task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n\t// 11-12, and in web workers in many engines.\n\t// Although message channels yield to any queued rendering and IO tasks, they\n\t// would be better than imposing the 4ms delay of timers.\n\t// However, they do not work reliably in Internet Explorer or Safari.\n\t\n\t// Internet Explorer 10 is the only browser that has setImmediate but does\n\t// not have MutationObservers.\n\t// Although setImmediate yields to the browser's renderer, it would be\n\t// preferrable to falling back to setTimeout since it does not have\n\t// the minimum 4ms penalty.\n\t// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n\t// Desktop to a lesser extent) that renders both setImmediate and\n\t// MessageChannel useless for the purposes of ASAP.\n\t// https://github.com/kriskowal/q/issues/396\n\t\n\t// Timers are implemented universally.\n\t// We fall back to timers in workers in most engines, and in foreground\n\t// contexts in the following browsers.\n\t// However, note that even this simple case requires nuances to operate in a\n\t// broad spectrum of browsers.\n\t//\n\t// - Firefox 3-13\n\t// - Internet Explorer 6-9\n\t// - iPad Safari 4.3\n\t// - Lynx 2.8.7\n\t} else {\n\t requestFlush = makeRequestCallFromTimer(flush);\n\t}\n\t\n\t// `requestFlush` requests that the high priority event queue be flushed as\n\t// soon as possible.\n\t// This is useful to prevent an error thrown in a task from stalling the event\n\t// queue if the exception handled by Node.js’s\n\t// `process.on(\"uncaughtException\")` or by a domain.\n\trawAsap.requestFlush = requestFlush;\n\t\n\t// To request a high priority event, we induce a mutation observer by toggling\n\t// the text of a text node between \"1\" and \"-1\".\n\tfunction makeRequestCallFromMutationObserver(callback) {\n\t var toggle = 1;\n\t var observer = new BrowserMutationObserver(callback);\n\t var node = document.createTextNode(\"\");\n\t observer.observe(node, {characterData: true});\n\t return function requestCall() {\n\t toggle = -toggle;\n\t node.data = toggle;\n\t };\n\t}\n\t\n\t// The message channel technique was discovered by Malte Ubl and was the\n\t// original foundation for this library.\n\t// http://www.nonblocking.io/2011/06/windownexttick.html\n\t\n\t// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n\t// page's first load. Thankfully, this version of Safari supports\n\t// MutationObservers, so we don't need to fall back in that case.\n\t\n\t// function makeRequestCallFromMessageChannel(callback) {\n\t// var channel = new MessageChannel();\n\t// channel.port1.onmessage = callback;\n\t// return function requestCall() {\n\t// channel.port2.postMessage(0);\n\t// };\n\t// }\n\t\n\t// For reasons explained above, we are also unable to use `setImmediate`\n\t// under any circumstances.\n\t// Even if we were, there is another bug in Internet Explorer 10.\n\t// It is not sufficient to assign `setImmediate` to `requestFlush` because\n\t// `setImmediate` must be called *by name* and therefore must be wrapped in a\n\t// closure.\n\t// Never forget.\n\t\n\t// function makeRequestCallFromSetImmediate(callback) {\n\t// return function requestCall() {\n\t// setImmediate(callback);\n\t// };\n\t// }\n\t\n\t// Safari 6.0 has a problem where timers will get lost while the user is\n\t// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n\t// mutation observers, so that implementation is used instead.\n\t// However, if we ever elect to use timers in Safari, the prevalent work-around\n\t// is to add a scroll event listener that calls for a flush.\n\t\n\t// `setTimeout` does not call the passed callback if the delay is less than\n\t// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n\t// even then.\n\t\n\tfunction makeRequestCallFromTimer(callback) {\n\t return function requestCall() {\n\t // We dispatch a timeout with a specified delay of 0 for engines that\n\t // can reliably accommodate that request. This will usually be snapped\n\t // to a 4 milisecond delay, but once we're flushing, there's no delay\n\t // between events.\n\t var timeoutHandle = setTimeout(handleTimer, 0);\n\t // However, since this timer gets frequently dropped in Firefox\n\t // workers, we enlist an interval handle that will try to fire\n\t // an event 20 times per second until it succeeds.\n\t var intervalHandle = setInterval(handleTimer, 50);\n\t\n\t function handleTimer() {\n\t // Whichever timer succeeds will cancel both timers and\n\t // execute the callback.\n\t clearTimeout(timeoutHandle);\n\t clearInterval(intervalHandle);\n\t callback();\n\t }\n\t };\n\t}\n\t\n\t// This is for `asap.js` only.\n\t// Its name will be periodically randomized to break any code that depends on\n\t// its existence.\n\trawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer;\n\t\n\t// ASAP was originally a nextTick shim included in Q. This was factored out\n\t// into this ASAP package. It was later adapted to RSVP which made further\n\t// amendments. These decisions, particularly to marginalize MessageChannel and\n\t// to capture the MutationObserver implementation in a closure, were integrated\n\t// back into ASAP proper.\n\t// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _preact = __webpack_require__(1);\n\t\n\tvar _Sudoku = __webpack_require__(7);\n\t\n\tvar _Sudoku2 = _interopRequireDefault(_Sudoku);\n\t\n\t__webpack_require__(10);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _ref = (0, _preact.h)(\n\t 'main',\n\t { className: 'center', role: 'main' },\n\t (0, _preact.h)(\n\t 'h1',\n\t { className: 'heading text-center' },\n\t 'Sudoku'\n\t ),\n\t (0, _preact.h)(_Sudoku2.default, null)\n\t);\n\t\n\tvar Game = function (_Component) {\n\t _inherits(Game, _Component);\n\t\n\t function Game() {\n\t _classCallCheck(this, Game);\n\t\n\t return _possibleConstructorReturn(this, (Game.__proto__ || Object.getPrototypeOf(Game)).apply(this, arguments));\n\t }\n\t\n\t _createClass(Game, [{\n\t key: 'render',\n\t value: function render() {\n\t return _ref;\n\t }\n\t }]);\n\t\n\t return Game;\n\t}(_preact.Component);\n\t\n\tmodule.exports = Game;\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _preact = __webpack_require__(1);\n\t\n\tvar _constants = __webpack_require__(2);\n\t\n\tvar _sudoku = __webpack_require__(8);\n\t\n\tvar _sudoku2 = _interopRequireDefault(_sudoku);\n\t\n\tvar _ga = __webpack_require__(3);\n\t\n\t__webpack_require__(11);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _ref8 = (0, _preact.h)('br', null);\n\t\n\tvar _ref9 = (0, _preact.h)('br', null);\n\t\n\tvar _ref10 = (0, _preact.h)('br', null);\n\t\n\tvar _ref11 = (0, _preact.h)(\n\t 'small',\n\t null,\n\t 'Difficulty: '\n\t);\n\t\n\tvar Sudoku = function (_Component) {\n\t _inherits(Sudoku, _Component);\n\t\n\t function Sudoku() {\n\t var _ref;\n\t\n\t var _temp, _this, _ret;\n\t\n\t _classCallCheck(this, Sudoku);\n\t\n\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\t\n\t return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Sudoku.__proto__ || Object.getPrototypeOf(Sudoku)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n\t attempt: [],\n\t difficulty: 0.5,\n\t puzzle: [],\n\t solution: [],\n\t solutionJSON: ''\n\t }, _this.handleCellChange = function (_ref2) {\n\t var target = _ref2.target;\n\t var _target$dataset = target.dataset,\n\t x = _target$dataset.x,\n\t y = _target$dataset.y,\n\t value = target.value;\n\t\n\t if (!target.readOnly && value) {\n\t _this.setState(function (state) {\n\t var attempt = state.attempt.map(function (row) {\n\t return row.slice();\n\t });\n\t attempt[y][x] = parseInt(value, 10) || null;\n\t return { attempt: attempt };\n\t });\n\t }\n\t }, _this.handleCellKeyDown = function (_ref3) {\n\t var key = _ref3.key,\n\t target = _ref3.target;\n\t\n\t // Get x, y dataset from target element.\n\t var _target$dataset2 = target.dataset,\n\t x = _target$dataset2.x,\n\t y = _target$dataset2.y;\n\t\n\t // Convert x and y to integers.\n\t\n\t x = parseInt(x, 10);\n\t y = parseInt(y, 10);\n\t\n\t switch (key) {\n\t case 'ArrowUp':\n\t y -= 1;\n\t break;\n\t case 'ArrowDown':\n\t y += 1;\n\t break;\n\t case 'ArrowLeft':\n\t x -= 1;\n\t break;\n\t case 'ArrowRight':\n\t x += 1;\n\t break;\n\t default:\n\t return;\n\t }\n\t\n\t var input = _this.tbody.querySelector('[data-x=\"' + x + '\"][data-y=\"' + y + '\"]');\n\t if (input) setTimeout(function () {\n\t return input.select();\n\t });\n\t }, _this.checkSolution = function () {\n\t var _this$state = _this.state,\n\t attempt = _this$state.attempt,\n\t difficulty = _this$state.difficulty,\n\t solutionJSON = _this$state.solutionJSON;\n\t\n\t console.log(JSON.stringify(attempt), solutionJSON);\n\t if (JSON.stringify(attempt) === solutionJSON) {\n\t (0, _ga.trackEvent)('puzzle', 'check', 'solved', Math.round(difficulty * _constants.GA_DIFFICULTY_MULTIPLIER));\n\t alert('Solved!');\n\t } else {\n\t (0, _ga.trackEvent)('puzzle', 'check', 'unsolved', Math.round(difficulty * _constants.GA_DIFFICULTY_MULTIPLIER));\n\t alert('Not solved.');\n\t }\n\t }, _this.clearPuzzle = function () {\n\t (0, _ga.trackEvent)('puzzle', 'clear');\n\t _this.setState(function (_ref4) {\n\t var puzzle = _ref4.puzzle;\n\t return {\n\t attempt: puzzle.map(function (row) {\n\t return row.slice();\n\t })\n\t };\n\t });\n\t }, _this.newPuzzle = function () {\n\t _this.setState(function (_ref5) {\n\t var difficulty = _ref5.difficulty;\n\t\n\t (0, _ga.trackEvent)('puzzle', 'new', undefined, Math.round(difficulty * _constants.GA_DIFFICULTY_MULTIPLIER));\n\t\n\t var _createSudoku = (0, _sudoku2.default)(difficulty),\n\t puzzle = _createSudoku.puzzle,\n\t solution = _createSudoku.solution;\n\t\n\t return {\n\t attempt: puzzle.map(function (row) {\n\t return row.slice();\n\t }),\n\t puzzle: puzzle,\n\t solution: solution,\n\t solutionJSON: JSON.stringify(solution)\n\t };\n\t });\n\t }, _this.changeDifficulty = function (_ref6) {\n\t var target = _ref6.target;\n\t\n\t _this.setState(function () {\n\t return {\n\t difficulty: Number(target.value)\n\t };\n\t });\n\t }, _temp), _possibleConstructorReturn(_this, _ret);\n\t }\n\t\n\t _createClass(Sudoku, [{\n\t key: 'componentDidMount',\n\t value: function componentDidMount() {\n\t this.newPuzzle();\n\t }\n\t\n\t /**\n\t * Focuses puzzle cell when clicked.\n\t *\n\t * @param {SyntheticEvent}\n\t */\n\t\n\t }, {\n\t key: 'handleCellClick',\n\t value: function handleCellClick(_ref7) {\n\t var target = _ref7.target;\n\t\n\t target.select();\n\t }\n\t\n\t /**\n\t * Records user input.\n\t *\n\t * @param {SyntheticEvent}\n\t */\n\t\n\t\n\t /**\n\t * Navigates puzzle.\n\t *\n\t * @param {SyntheticEvent}\n\t */\n\t\n\t\n\t /**\n\t * Checks if puzzle is solved.\n\t */\n\t\n\t\n\t /**\n\t * Clears puzzle attempt.\n\t */\n\t\n\t\n\t /**\n\t * Generates a new puzzle.\n\t */\n\t\n\t\n\t /**\n\t * Changes puzzle difficulty.\n\t */\n\t\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var _state = this.state,\n\t attempt = _state.attempt,\n\t difficulty = _state.difficulty,\n\t puzzle = _state.puzzle;\n\t\n\t return (0, _preact.h)(\n\t 'div',\n\t null,\n\t (0, _preact.h)(\n\t 'table',\n\t null,\n\t (0, _preact.h)(\n\t 'tbody',\n\t { ref: function ref(element) {\n\t return _this2.tbody = element;\n\t } },\n\t attempt.map(function (rows, y) {\n\t return (0, _preact.h)(\n\t 'tr',\n\t null,\n\t rows.map(function (digit, x) {\n\t return (0, _preact.h)(\n\t 'td',\n\t null,\n\t (0, _preact.h)('input', {\n\t 'data-x': x,\n\t 'data-y': y,\n\t formnovalidate: true,\n\t maxlength: '1',\n\t onClick: _this2.handleCellClick,\n\t onChange: _this2.handleCellChange,\n\t onKeyDown: _this2.handleCellKeyDown,\n\t pattern: '[0-9]',\n\t readonly: Boolean(puzzle[y][x]),\n\t type: 'text',\n\t value: digit\n\t })\n\t );\n\t })\n\t );\n\t })\n\t )\n\t ),\n\t _ref8,\n\t (0, _preact.h)(\n\t 'button',\n\t { onClick: this.checkSolution },\n\t 'Check Solution'\n\t ),\n\t '\\xA0',\n\t (0, _preact.h)(\n\t 'button',\n\t { onClick: this.clearPuzzle },\n\t 'Clear Puzzle'\n\t ),\n\t _ref9,\n\t _ref10,\n\t (0, _preact.h)(\n\t 'label',\n\t null,\n\t _ref11,\n\t (0, _preact.h)('input', {\n\t type: 'number',\n\t min: 0,\n\t max: 1,\n\t value: difficulty,\n\t onChange: this.changeDifficulty\n\t })\n\t ),\n\t '\\xA0',\n\t (0, _preact.h)(\n\t 'button',\n\t { onClick: this.newPuzzle },\n\t 'New Puzzle'\n\t )\n\t );\n\t }\n\t }]);\n\t\n\t return Sudoku;\n\t}(_preact.Component);\n\t\n\texports.default = Sudoku;\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _constants = __webpack_require__(2);\n\t\n\t/**\n\t * Shuffles an array.\n\t *\n\t * @param {Array} array\n\t * @param {Boolean} [shouldMutate=false]\n\t * @return {Array}\n\t */\n\tvar shuffleArray = function shuffleArray() {\n\t var array = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\t var shouldMutate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t\n\t var arr = shouldMutate ? array : array.slice();\n\t for (var i = arr.length - 1; i > 0; i--) {\n\t var j = Math.floor(Math.random() * (i + 1));\n\t var temp = arr[i];\n\t arr[i] = arr[j];\n\t arr[j] = temp;\n\t }\n\t return arr;\n\t};\n\t\n\t/**\n\t * Randomly generates a Sudoku row.\n\t *\n\t * @return {Array} - Shuffled numbers between 1 and 9 inclusive.\n\t */\n\tvar generateRow = function generateRow() {\n\t return shuffleArray(_constants.SUDOKU_DIGITS);\n\t};\n\t\n\t/**\n\t * Given output, checks if row is usable in Sudoku solution.\n\t *\n\t * @param {Number} index\n\t * @param {Array} row\n\t * @param {Array} output\n\t * @return {Boolean}\n\t */\n\tvar isRowUsable = function isRowUsable(index) {\n\t var row = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\t var output = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\t\n\t var rowIndex = output.length - 1;\n\t for (; rowIndex > -1; rowIndex--) {\n\t var columnIndex = output[rowIndex].length - 1;\n\t for (; columnIndex > -1; columnIndex--) {\n\t // check if row value exists in output column\n\t var rowValue = row[columnIndex];\n\t if (rowValue === output[rowIndex][columnIndex]) return false;\n\t\n\t var rowStart = 6;\n\t if (index < 3) {\n\t rowStart = 0;\n\t } else if (index < 6) {\n\t rowStart = 3;\n\t }\n\t\n\t var columnStart = 6;\n\t if (columnIndex < 3) {\n\t columnStart = 0;\n\t } else if (columnIndex < 6) {\n\t columnStart = 3;\n\t }\n\t\n\t var section = [];\n\t for (var i = 0; i < 3; i++) {\n\t if (output[rowStart + i] instanceof Array) {\n\t section = section.concat(output[rowStart + i].slice(columnStart, columnStart + 3));\n\t }\n\t }\n\t\n\t // check if row value exists in output 3x3 section\n\t if (section.indexOf(rowValue) !== -1) return false;\n\t }\n\t }\n\t return true;\n\t};\n\t\n\t/**\n\t * Generates a Sudoku solution.\n\t *\n\t * @return {Array}\n\t */\n\tvar generateSolution = function generateSolution() {\n\t // seed 1st row\n\t var output = [generateRow()];\n\t\n\t // generate rows 2 to 8\n\t var loopCount = 0;\n\t for (var index = 1; index < 8; index++) {\n\t while (true) {\n\t var row = generateRow();\n\t if (isRowUsable(index, row, output)) {\n\t output[index] = row;\n\t loopCount = 0;\n\t break;\n\t }\n\t loopCount++;\n\t // break and try again if stuck in infinite loop\n\t if (loopCount > 2e5) return generateSolution();\n\t }\n\t }\n\t\n\t // invert the output\n\t var columnValues = output.reduce(function (result, row, rowIndex) {\n\t row.forEach(function (columnValue, columnIndex) {\n\t result[columnIndex] = result[columnIndex] || [];\n\t result[columnIndex][rowIndex] = columnValue;\n\t });\n\t return result;\n\t }, []);\n\t\n\t // get 9th row\n\t var lastRow = [];\n\t for (var number = _constants.SUDOKU_LARGEST_DIGIT; number > 0; number--) {\n\t for (var i = columnValues.length - 1; i > -1; i--) {\n\t if (columnValues[i].indexOf(number) === -1) {\n\t lastRow[i] = number;\n\t break;\n\t }\n\t }\n\t }\n\t output.push(lastRow);\n\t\n\t return output;\n\t};\n\t\n\t/**\n\t * Creates Sudoku solution and puzzle.\n\t *\n\t * @param {Number} difficulty - A number between 0 and 1.\n\t * Lower means easier, higher means harder.\n\t * @return {Object}\n\t */\n\tvar createSudoku = function createSudoku(difficulty) {\n\t var solution = generateSolution();\n\t var puzzle = solution.map(function (row) {\n\t return row.slice().map(function (value) {\n\t return Math.random() > difficulty ? value : null;\n\t });\n\t });\n\t return { puzzle: puzzle, solution: solution };\n\t};\n\t\n\texports.default = createSudoku;\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _preact = __webpack_require__(1);\n\t\n\t/**\n\t * Initializes app.\n\t */\n\tvar bootstrap = function bootstrap() {\n\t // initialize google analytics\n\t __webpack_require__(3);\n\t\n\t // render game\n\t var Game = __webpack_require__(6);\n\t (0, _preact.render)((0, _preact.h)(Game, null), document.getElementById('root'));\n\t};\n\t\n\t/**\n\t * Try to load polyfill before app.\n\t */\n\tif (false) {\n\t bootstrap();\n\t} else {\n\t window.requirejs(['https://cdn.polyfill.io/v2/polyfill.min.js?features=es5&flags=gated'], bootstrap, bootstrap // http://requirejs.org/docs/api.html#errbacks\n\t );\n\t}\n\n/***/ },\n/* 10 */\n/***/ function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ },\n/* 11 */\n10,\n/* 12 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t/* eslint-disable no-unused-vars */\n\tvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\tvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\t\n\tfunction toObject(val) {\n\t\tif (val === null || val === undefined) {\n\t\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t\t}\n\t\n\t\treturn Object(val);\n\t}\n\t\n\tfunction shouldUseNative() {\n\t\ttry {\n\t\t\tif (!Object.assign) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\t// Detect buggy property enumeration order in older V8 versions.\n\t\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\t\tvar test1 = new String('abc'); // eslint-disable-line\n\t\t\ttest1[5] = 'de';\n\t\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\t\tvar test2 = {};\n\t\t\tfor (var i = 0; i < 10; i++) {\n\t\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t\t}\n\t\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\t\treturn test2[n];\n\t\t\t});\n\t\t\tif (order2.join('') !== '0123456789') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\t\tvar test3 = {};\n\t\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\t\ttest3[letter] = letter;\n\t\t\t});\n\t\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\t\tvar from;\n\t\tvar to = toObject(target);\n\t\tvar symbols;\n\t\n\t\tfor (var s = 1; s < arguments.length; s++) {\n\t\t\tfrom = Object(arguments[s]);\n\t\n\t\t\tfor (var key in from) {\n\t\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\t\tto[key] = from[key];\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif (Object.getOwnPropertySymbols) {\n\t\t\t\tsymbols = Object.getOwnPropertySymbols(from);\n\t\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn to;\n\t};\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tif (typeof Promise === 'undefined') {\n\t // Rejection tracking prevents a common issue where React gets into an\n\t // inconsistent state due to an error, but it gets swallowed by a Promise,\n\t // and the user has no idea what causes React's erratic future behavior.\n\t __webpack_require__(15).enable();\n\t window.Promise = __webpack_require__(14);\n\t}\n\t\n\t// fetch() polyfill for making API calls.\n\t__webpack_require__(16);\n\t\n\t// Object.assign() is commonly used with React.\n\t// It will use the native implementation if it's present and isn't buggy.\n\tObject.assign = __webpack_require__(12);\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\t//This file contains the ES6 extensions to the core Promises/A+ API\n\t\n\tvar Promise = __webpack_require__(4);\n\t\n\tmodule.exports = Promise;\n\t\n\t/* Static Functions */\n\t\n\tvar TRUE = valuePromise(true);\n\tvar FALSE = valuePromise(false);\n\tvar NULL = valuePromise(null);\n\tvar UNDEFINED = valuePromise(undefined);\n\tvar ZERO = valuePromise(0);\n\tvar EMPTYSTRING = valuePromise('');\n\t\n\tfunction valuePromise(value) {\n\t var p = new Promise(Promise._61);\n\t p._81 = 1;\n\t p._65 = value;\n\t return p;\n\t}\n\tPromise.resolve = function (value) {\n\t if (value instanceof Promise) return value;\n\t\n\t if (value === null) return NULL;\n\t if (value === undefined) return UNDEFINED;\n\t if (value === true) return TRUE;\n\t if (value === false) return FALSE;\n\t if (value === 0) return ZERO;\n\t if (value === '') return EMPTYSTRING;\n\t\n\t if (typeof value === 'object' || typeof value === 'function') {\n\t try {\n\t var then = value.then;\n\t if (typeof then === 'function') {\n\t return new Promise(then.bind(value));\n\t }\n\t } catch (ex) {\n\t return new Promise(function (resolve, reject) {\n\t reject(ex);\n\t });\n\t }\n\t }\n\t return valuePromise(value);\n\t};\n\t\n\tPromise.all = function (arr) {\n\t var args = Array.prototype.slice.call(arr);\n\t\n\t return new Promise(function (resolve, reject) {\n\t if (args.length === 0) return resolve([]);\n\t var remaining = args.length;\n\t function res(i, val) {\n\t if (val && (typeof val === 'object' || typeof val === 'function')) {\n\t if (val instanceof Promise && val.then === Promise.prototype.then) {\n\t while (val._81 === 3) {\n\t val = val._65;\n\t }\n\t if (val._81 === 1) return res(i, val._65);\n\t if (val._81 === 2) reject(val._65);\n\t val.then(function (val) {\n\t res(i, val);\n\t }, reject);\n\t return;\n\t } else {\n\t var then = val.then;\n\t if (typeof then === 'function') {\n\t var p = new Promise(then.bind(val));\n\t p.then(function (val) {\n\t res(i, val);\n\t }, reject);\n\t return;\n\t }\n\t }\n\t }\n\t args[i] = val;\n\t if (--remaining === 0) {\n\t resolve(args);\n\t }\n\t }\n\t for (var i = 0; i < args.length; i++) {\n\t res(i, args[i]);\n\t }\n\t });\n\t};\n\t\n\tPromise.reject = function (value) {\n\t return new Promise(function (resolve, reject) {\n\t reject(value);\n\t });\n\t};\n\t\n\tPromise.race = function (values) {\n\t return new Promise(function (resolve, reject) {\n\t values.forEach(function(value){\n\t Promise.resolve(value).then(resolve, reject);\n\t });\n\t });\n\t};\n\t\n\t/* Prototype Methods */\n\t\n\tPromise.prototype['catch'] = function (onRejected) {\n\t return this.then(null, onRejected);\n\t};\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar Promise = __webpack_require__(4);\n\t\n\tvar DEFAULT_WHITELIST = [\n\t ReferenceError,\n\t TypeError,\n\t RangeError\n\t];\n\t\n\tvar enabled = false;\n\texports.disable = disable;\n\tfunction disable() {\n\t enabled = false;\n\t Promise._10 = null;\n\t Promise._97 = null;\n\t}\n\t\n\texports.enable = enable;\n\tfunction enable(options) {\n\t options = options || {};\n\t if (enabled) disable();\n\t enabled = true;\n\t var id = 0;\n\t var displayId = 0;\n\t var rejections = {};\n\t Promise._10 = function (promise) {\n\t if (\n\t promise._81 === 2 && // IS REJECTED\n\t rejections[promise._72]\n\t ) {\n\t if (rejections[promise._72].logged) {\n\t onHandled(promise._72);\n\t } else {\n\t clearTimeout(rejections[promise._72].timeout);\n\t }\n\t delete rejections[promise._72];\n\t }\n\t };\n\t Promise._97 = function (promise, err) {\n\t if (promise._45 === 0) { // not yet handled\n\t promise._72 = id++;\n\t rejections[promise._72] = {\n\t displayId: null,\n\t error: err,\n\t timeout: setTimeout(\n\t onUnhandled.bind(null, promise._72),\n\t // For reference errors and type errors, this almost always\n\t // means the programmer made a mistake, so log them after just\n\t // 100ms\n\t // otherwise, wait 2 seconds to see if they get handled\n\t matchWhitelist(err, DEFAULT_WHITELIST)\n\t ? 100\n\t : 2000\n\t ),\n\t logged: false\n\t };\n\t }\n\t };\n\t function onUnhandled(id) {\n\t if (\n\t options.allRejections ||\n\t matchWhitelist(\n\t rejections[id].error,\n\t options.whitelist || DEFAULT_WHITELIST\n\t )\n\t ) {\n\t rejections[id].displayId = displayId++;\n\t if (options.onUnhandled) {\n\t rejections[id].logged = true;\n\t options.onUnhandled(\n\t rejections[id].displayId,\n\t rejections[id].error\n\t );\n\t } else {\n\t rejections[id].logged = true;\n\t logError(\n\t rejections[id].displayId,\n\t rejections[id].error\n\t );\n\t }\n\t }\n\t }\n\t function onHandled(id) {\n\t if (rejections[id].logged) {\n\t if (options.onHandled) {\n\t options.onHandled(rejections[id].displayId, rejections[id].error);\n\t } else if (!rejections[id].onUnhandled) {\n\t console.warn(\n\t 'Promise Rejection Handled (id: ' + rejections[id].displayId + '):'\n\t );\n\t console.warn(\n\t ' This means you can ignore any previous messages of the form \"Possible Unhandled Promise Rejection\" with id ' +\n\t rejections[id].displayId + '.'\n\t );\n\t }\n\t }\n\t }\n\t}\n\t\n\tfunction logError(id, error) {\n\t console.warn('Possible Unhandled Promise Rejection (id: ' + id + '):');\n\t var errStr = (error && (error.stack || error)) + '';\n\t errStr.split('\\n').forEach(function (line) {\n\t console.warn(' ' + line);\n\t });\n\t}\n\t\n\tfunction matchWhitelist(error, list) {\n\t return list.some(function (cls) {\n\t return error instanceof cls;\n\t });\n\t}\n\n/***/ },\n/* 16 */\n/***/ function(module, exports) {\n\n\t(function(self) {\n\t 'use strict';\n\t\n\t if (self.fetch) {\n\t return\n\t }\n\t\n\t var support = {\n\t searchParams: 'URLSearchParams' in self,\n\t iterable: 'Symbol' in self && 'iterator' in Symbol,\n\t blob: 'FileReader' in self && 'Blob' in self && (function() {\n\t try {\n\t new Blob()\n\t return true\n\t } catch(e) {\n\t return false\n\t }\n\t })(),\n\t formData: 'FormData' in self,\n\t arrayBuffer: 'ArrayBuffer' in self\n\t }\n\t\n\t function normalizeName(name) {\n\t if (typeof name !== 'string') {\n\t name = String(name)\n\t }\n\t if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n\t throw new TypeError('Invalid character in header field name')\n\t }\n\t return name.toLowerCase()\n\t }\n\t\n\t function normalizeValue(value) {\n\t if (typeof value !== 'string') {\n\t value = String(value)\n\t }\n\t return value\n\t }\n\t\n\t // Build a destructive iterator for the value list\n\t function iteratorFor(items) {\n\t var iterator = {\n\t next: function() {\n\t var value = items.shift()\n\t return {done: value === undefined, value: value}\n\t }\n\t }\n\t\n\t if (support.iterable) {\n\t iterator[Symbol.iterator] = function() {\n\t return iterator\n\t }\n\t }\n\t\n\t return iterator\n\t }\n\t\n\t function Headers(headers) {\n\t this.map = {}\n\t\n\t if (headers instanceof Headers) {\n\t headers.forEach(function(value, name) {\n\t this.append(name, value)\n\t }, this)\n\t\n\t } else if (headers) {\n\t Object.getOwnPropertyNames(headers).forEach(function(name) {\n\t this.append(name, headers[name])\n\t }, this)\n\t }\n\t }\n\t\n\t Headers.prototype.append = function(name, value) {\n\t name = normalizeName(name)\n\t value = normalizeValue(value)\n\t var list = this.map[name]\n\t if (!list) {\n\t list = []\n\t this.map[name] = list\n\t }\n\t list.push(value)\n\t }\n\t\n\t Headers.prototype['delete'] = function(name) {\n\t delete this.map[normalizeName(name)]\n\t }\n\t\n\t Headers.prototype.get = function(name) {\n\t var values = this.map[normalizeName(name)]\n\t return values ? values[0] : null\n\t }\n\t\n\t Headers.prototype.getAll = function(name) {\n\t return this.map[normalizeName(name)] || []\n\t }\n\t\n\t Headers.prototype.has = function(name) {\n\t return this.map.hasOwnProperty(normalizeName(name))\n\t }\n\t\n\t Headers.prototype.set = function(name, value) {\n\t this.map[normalizeName(name)] = [normalizeValue(value)]\n\t }\n\t\n\t Headers.prototype.forEach = function(callback, thisArg) {\n\t Object.getOwnPropertyNames(this.map).forEach(function(name) {\n\t this.map[name].forEach(function(value) {\n\t callback.call(thisArg, value, name, this)\n\t }, this)\n\t }, this)\n\t }\n\t\n\t Headers.prototype.keys = function() {\n\t var items = []\n\t this.forEach(function(value, name) { items.push(name) })\n\t return iteratorFor(items)\n\t }\n\t\n\t Headers.prototype.values = function() {\n\t var items = []\n\t this.forEach(function(value) { items.push(value) })\n\t return iteratorFor(items)\n\t }\n\t\n\t Headers.prototype.entries = function() {\n\t var items = []\n\t this.forEach(function(value, name) { items.push([name, value]) })\n\t return iteratorFor(items)\n\t }\n\t\n\t if (support.iterable) {\n\t Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n\t }\n\t\n\t function consumed(body) {\n\t if (body.bodyUsed) {\n\t return Promise.reject(new TypeError('Already read'))\n\t }\n\t body.bodyUsed = true\n\t }\n\t\n\t function fileReaderReady(reader) {\n\t return new Promise(function(resolve, reject) {\n\t reader.onload = function() {\n\t resolve(reader.result)\n\t }\n\t reader.onerror = function() {\n\t reject(reader.error)\n\t }\n\t })\n\t }\n\t\n\t function readBlobAsArrayBuffer(blob) {\n\t var reader = new FileReader()\n\t reader.readAsArrayBuffer(blob)\n\t return fileReaderReady(reader)\n\t }\n\t\n\t function readBlobAsText(blob) {\n\t var reader = new FileReader()\n\t reader.readAsText(blob)\n\t return fileReaderReady(reader)\n\t }\n\t\n\t function Body() {\n\t this.bodyUsed = false\n\t\n\t this._initBody = function(body) {\n\t this._bodyInit = body\n\t if (typeof body === 'string') {\n\t this._bodyText = body\n\t } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n\t this._bodyBlob = body\n\t } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n\t this._bodyFormData = body\n\t } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n\t this._bodyText = body.toString()\n\t } else if (!body) {\n\t this._bodyText = ''\n\t } else if (support.arrayBuffer && ArrayBuffer.prototype.isPrototypeOf(body)) {\n\t // Only support ArrayBuffers for POST method.\n\t // Receiving ArrayBuffers happens via Blobs, instead.\n\t } else {\n\t throw new Error('unsupported BodyInit type')\n\t }\n\t\n\t if (!this.headers.get('content-type')) {\n\t if (typeof body === 'string') {\n\t this.headers.set('content-type', 'text/plain;charset=UTF-8')\n\t } else if (this._bodyBlob && this._bodyBlob.type) {\n\t this.headers.set('content-type', this._bodyBlob.type)\n\t } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n\t this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n\t }\n\t }\n\t }\n\t\n\t if (support.blob) {\n\t this.blob = function() {\n\t var rejected = consumed(this)\n\t if (rejected) {\n\t return rejected\n\t }\n\t\n\t if (this._bodyBlob) {\n\t return Promise.resolve(this._bodyBlob)\n\t } else if (this._bodyFormData) {\n\t throw new Error('could not read FormData body as blob')\n\t } else {\n\t return Promise.resolve(new Blob([this._bodyText]))\n\t }\n\t }\n\t\n\t this.arrayBuffer = function() {\n\t return this.blob().then(readBlobAsArrayBuffer)\n\t }\n\t\n\t this.text = function() {\n\t var rejected = consumed(this)\n\t if (rejected) {\n\t return rejected\n\t }\n\t\n\t if (this._bodyBlob) {\n\t return readBlobAsText(this._bodyBlob)\n\t } else if (this._bodyFormData) {\n\t throw new Error('could not read FormData body as text')\n\t } else {\n\t return Promise.resolve(this._bodyText)\n\t }\n\t }\n\t } else {\n\t this.text = function() {\n\t var rejected = consumed(this)\n\t return rejected ? rejected : Promise.resolve(this._bodyText)\n\t }\n\t }\n\t\n\t if (support.formData) {\n\t this.formData = function() {\n\t return this.text().then(decode)\n\t }\n\t }\n\t\n\t this.json = function() {\n\t return this.text().then(JSON.parse)\n\t }\n\t\n\t return this\n\t }\n\t\n\t // HTTP methods whose capitalization should be normalized\n\t var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\t\n\t function normalizeMethod(method) {\n\t var upcased = method.toUpperCase()\n\t return (methods.indexOf(upcased) > -1) ? upcased : method\n\t }\n\t\n\t function Request(input, options) {\n\t options = options || {}\n\t var body = options.body\n\t if (Request.prototype.isPrototypeOf(input)) {\n\t if (input.bodyUsed) {\n\t throw new TypeError('Already read')\n\t }\n\t this.url = input.url\n\t this.credentials = input.credentials\n\t if (!options.headers) {\n\t this.headers = new Headers(input.headers)\n\t }\n\t this.method = input.method\n\t this.mode = input.mode\n\t if (!body) {\n\t body = input._bodyInit\n\t input.bodyUsed = true\n\t }\n\t } else {\n\t this.url = input\n\t }\n\t\n\t this.credentials = options.credentials || this.credentials || 'omit'\n\t if (options.headers || !this.headers) {\n\t this.headers = new Headers(options.headers)\n\t }\n\t this.method = normalizeMethod(options.method || this.method || 'GET')\n\t this.mode = options.mode || this.mode || null\n\t this.referrer = null\n\t\n\t if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n\t throw new TypeError('Body not allowed for GET or HEAD requests')\n\t }\n\t this._initBody(body)\n\t }\n\t\n\t Request.prototype.clone = function() {\n\t return new Request(this)\n\t }\n\t\n\t function decode(body) {\n\t var form = new FormData()\n\t body.trim().split('&').forEach(function(bytes) {\n\t if (bytes) {\n\t var split = bytes.split('=')\n\t var name = split.shift().replace(/\\+/g, ' ')\n\t var value = split.join('=').replace(/\\+/g, ' ')\n\t form.append(decodeURIComponent(name), decodeURIComponent(value))\n\t }\n\t })\n\t return form\n\t }\n\t\n\t function headers(xhr) {\n\t var head = new Headers()\n\t var pairs = (xhr.getAllResponseHeaders() || '').trim().split('\\n')\n\t pairs.forEach(function(header) {\n\t var split = header.trim().split(':')\n\t var key = split.shift().trim()\n\t var value = split.join(':').trim()\n\t head.append(key, value)\n\t })\n\t return head\n\t }\n\t\n\t Body.call(Request.prototype)\n\t\n\t function Response(bodyInit, options) {\n\t if (!options) {\n\t options = {}\n\t }\n\t\n\t this.type = 'default'\n\t this.status = options.status\n\t this.ok = this.status >= 200 && this.status < 300\n\t this.statusText = options.statusText\n\t this.headers = options.headers instanceof Headers ? options.headers : new Headers(options.headers)\n\t this.url = options.url || ''\n\t this._initBody(bodyInit)\n\t }\n\t\n\t Body.call(Response.prototype)\n\t\n\t Response.prototype.clone = function() {\n\t return new Response(this._bodyInit, {\n\t status: this.status,\n\t statusText: this.statusText,\n\t headers: new Headers(this.headers),\n\t url: this.url\n\t })\n\t }\n\t\n\t Response.error = function() {\n\t var response = new Response(null, {status: 0, statusText: ''})\n\t response.type = 'error'\n\t return response\n\t }\n\t\n\t var redirectStatuses = [301, 302, 303, 307, 308]\n\t\n\t Response.redirect = function(url, status) {\n\t if (redirectStatuses.indexOf(status) === -1) {\n\t throw new RangeError('Invalid status code')\n\t }\n\t\n\t return new Response(null, {status: status, headers: {location: url}})\n\t }\n\t\n\t self.Headers = Headers\n\t self.Request = Request\n\t self.Response = Response\n\t\n\t self.fetch = function(input, init) {\n\t return new Promise(function(resolve, reject) {\n\t var request\n\t if (Request.prototype.isPrototypeOf(input) && !init) {\n\t request = input\n\t } else {\n\t request = new Request(input, init)\n\t }\n\t\n\t var xhr = new XMLHttpRequest()\n\t\n\t function responseURL() {\n\t if ('responseURL' in xhr) {\n\t return xhr.responseURL\n\t }\n\t\n\t // Avoid security warnings on getResponseHeader when not allowed by CORS\n\t if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {\n\t return xhr.getResponseHeader('X-Request-URL')\n\t }\n\t\n\t return\n\t }\n\t\n\t xhr.onload = function() {\n\t var options = {\n\t status: xhr.status,\n\t statusText: xhr.statusText,\n\t headers: headers(xhr),\n\t url: responseURL()\n\t }\n\t var body = 'response' in xhr ? xhr.response : xhr.responseText\n\t resolve(new Response(body, options))\n\t }\n\t\n\t xhr.onerror = function() {\n\t reject(new TypeError('Network request failed'))\n\t }\n\t\n\t xhr.ontimeout = function() {\n\t reject(new TypeError('Network request failed'))\n\t }\n\t\n\t xhr.open(request.method, request.url, true)\n\t\n\t if (request.credentials === 'include') {\n\t xhr.withCredentials = true\n\t }\n\t\n\t if ('responseType' in xhr && support.blob) {\n\t xhr.responseType = 'blob'\n\t }\n\t\n\t request.headers.forEach(function(value, name) {\n\t xhr.setRequestHeader(name, value)\n\t })\n\t\n\t xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n\t })\n\t }\n\t self.fetch.polyfill = true\n\t})(typeof self !== 'undefined' ? self : this);\n\n\n/***/ }\n/******/ ])));\n\n\n/** WEBPACK FOOTER **\n ** static/js/main.9a635e99.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/sudoku/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap b7431c8fba199fa0f4cf\n **/","!function() {\n 'use strict';\n function VNode() {}\n function h(nodeName, attributes) {\n var lastSimple, child, simple, i, children = EMPTY_CHILDREN;\n for (i = arguments.length; i-- > 2; ) stack.push(arguments[i]);\n if (attributes && null != attributes.children) {\n if (!stack.length) stack.push(attributes.children);\n delete attributes.children;\n }\n while (stack.length) if ((child = stack.pop()) && void 0 !== child.pop) for (i = child.length; i--; ) stack.push(child[i]); else {\n if ('boolean' == typeof child) child = null;\n if (simple = 'function' != typeof nodeName) if (null == child) child = ''; else if ('number' == typeof child) child = String(child); else if ('string' != typeof child) simple = !1;\n if (simple && lastSimple) children[children.length - 1] += child; else if (children === EMPTY_CHILDREN) children = [ child ]; else children.push(child);\n lastSimple = simple;\n }\n var p = new VNode();\n p.nodeName = nodeName;\n p.children = children;\n p.attributes = null == attributes ? void 0 : attributes;\n p.key = null == attributes ? void 0 : attributes.key;\n if (void 0 !== options.vnode) options.vnode(p);\n return p;\n }\n function extend(obj, props) {\n for (var i in props) obj[i] = props[i];\n return obj;\n }\n function cloneElement(vnode, props) {\n return h(vnode.nodeName, extend(extend({}, vnode.attributes), props), arguments.length > 2 ? [].slice.call(arguments, 2) : vnode.children);\n }\n function enqueueRender(component) {\n if (!component.__d && (component.__d = !0) && 1 == items.push(component)) (options.debounceRendering || defer)(rerender);\n }\n function rerender() {\n var p, list = items;\n items = [];\n while (p = list.pop()) if (p.__d) renderComponent(p);\n }\n function isSameNodeType(node, vnode, hydrating) {\n if ('string' == typeof vnode || 'number' == typeof vnode) return void 0 !== node.splitText;\n if ('string' == typeof vnode.nodeName) return !node._componentConstructor && isNamedNode(node, vnode.nodeName); else return hydrating || node._componentConstructor === vnode.nodeName;\n }\n function isNamedNode(node, nodeName) {\n return node.__n === nodeName || node.nodeName.toLowerCase() === nodeName.toLowerCase();\n }\n function getNodeProps(vnode) {\n var props = extend({}, vnode.attributes);\n props.children = vnode.children;\n var defaultProps = vnode.nodeName.defaultProps;\n if (void 0 !== defaultProps) for (var i in defaultProps) if (void 0 === props[i]) props[i] = defaultProps[i];\n return props;\n }\n function createNode(nodeName, isSvg) {\n var node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);\n node.__n = nodeName;\n return node;\n }\n function removeNode(node) {\n var parentNode = node.parentNode;\n if (parentNode) parentNode.removeChild(node);\n }\n function setAccessor(node, name, old, value, isSvg) {\n if ('className' === name) name = 'class';\n if ('key' === name) ; else if ('ref' === name) {\n if (old) old(null);\n if (value) value(node);\n } else if ('class' === name && !isSvg) node.className = value || ''; else if ('style' === name) {\n if (!value || 'string' == typeof value || 'string' == typeof old) node.style.cssText = value || '';\n if (value && 'object' == typeof value) {\n if ('string' != typeof old) for (var i in old) if (!(i in value)) node.style[i] = '';\n for (var i in value) node.style[i] = 'number' == typeof value[i] && !1 === IS_NON_DIMENSIONAL.test(i) ? value[i] + 'px' : value[i];\n }\n } else if ('dangerouslySetInnerHTML' === name) {\n if (value) node.innerHTML = value.__html || '';\n } else if ('o' == name[0] && 'n' == name[1]) {\n var useCapture = name !== (name = name.replace(/Capture$/, ''));\n name = name.toLowerCase().substring(2);\n if (value) {\n if (!old) node.addEventListener(name, eventProxy, useCapture);\n } else node.removeEventListener(name, eventProxy, useCapture);\n (node.__l || (node.__l = {}))[name] = value;\n } else if ('list' !== name && 'type' !== name && !isSvg && name in node) {\n setProperty(node, name, null == value ? '' : value);\n if (null == value || !1 === value) node.removeAttribute(name);\n } else {\n var ns = isSvg && name !== (name = name.replace(/^xlink\\:?/, ''));\n if (null == value || !1 === value) if (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase()); else node.removeAttribute(name); else if ('function' != typeof value) if (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value); else node.setAttribute(name, value);\n }\n }\n function setProperty(node, name, value) {\n try {\n node[name] = value;\n } catch (e) {}\n }\n function eventProxy(e) {\n return this.__l[e.type](options.event && options.event(e) || e);\n }\n function flushMounts() {\n var c;\n while (c = mounts.pop()) {\n if (options.afterMount) options.afterMount(c);\n if (c.componentDidMount) c.componentDidMount();\n }\n }\n function diff(dom, vnode, context, mountAll, parent, componentRoot) {\n if (!diffLevel++) {\n isSvgMode = null != parent && void 0 !== parent.ownerSVGElement;\n hydrating = null != dom && !('__preactattr_' in dom);\n }\n var ret = idiff(dom, vnode, context, mountAll, componentRoot);\n if (parent && ret.parentNode !== parent) parent.appendChild(ret);\n if (!--diffLevel) {\n hydrating = !1;\n if (!componentRoot) flushMounts();\n }\n return ret;\n }\n function idiff(dom, vnode, context, mountAll, componentRoot) {\n var out = dom, prevSvgMode = isSvgMode;\n if (null == vnode || 'boolean' == typeof vnode) vnode = '';\n if ('string' == typeof vnode || 'number' == typeof vnode) {\n if (dom && void 0 !== dom.splitText && dom.parentNode && (!dom._component || componentRoot)) {\n if (dom.nodeValue != vnode) dom.nodeValue = vnode;\n } else {\n out = document.createTextNode(vnode);\n if (dom) {\n if (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n recollectNodeTree(dom, !0);\n }\n }\n out.__preactattr_ = !0;\n return out;\n }\n var vnodeName = vnode.nodeName;\n if ('function' == typeof vnodeName) return buildComponentFromVNode(dom, vnode, context, mountAll);\n isSvgMode = 'svg' === vnodeName ? !0 : 'foreignObject' === vnodeName ? !1 : isSvgMode;\n vnodeName = String(vnodeName);\n if (!dom || !isNamedNode(dom, vnodeName)) {\n out = createNode(vnodeName, isSvgMode);\n if (dom) {\n while (dom.firstChild) out.appendChild(dom.firstChild);\n if (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n recollectNodeTree(dom, !0);\n }\n }\n var fc = out.firstChild, props = out.__preactattr_, vchildren = vnode.children;\n if (null == props) {\n props = out.__preactattr_ = {};\n for (var a = out.attributes, i = a.length; i--; ) props[a[i].name] = a[i].value;\n }\n if (!hydrating && vchildren && 1 === vchildren.length && 'string' == typeof vchildren[0] && null != fc && void 0 !== fc.splitText && null == fc.nextSibling) {\n if (fc.nodeValue != vchildren[0]) fc.nodeValue = vchildren[0];\n } else if (vchildren && vchildren.length || null != fc) innerDiffNode(out, vchildren, context, mountAll, hydrating || null != props.dangerouslySetInnerHTML);\n diffAttributes(out, vnode.attributes, props);\n isSvgMode = prevSvgMode;\n return out;\n }\n function innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {\n var j, c, f, vchild, child, originalChildren = dom.childNodes, children = [], keyed = {}, keyedLen = 0, min = 0, len = originalChildren.length, childrenLen = 0, vlen = vchildren ? vchildren.length : 0;\n if (0 !== len) for (var i = 0; i < len; i++) {\n var _child = originalChildren[i], props = _child.__preactattr_, key = vlen && props ? _child._component ? _child._component.__k : props.key : null;\n if (null != key) {\n keyedLen++;\n keyed[key] = _child;\n } else if (props || (void 0 !== _child.splitText ? isHydrating ? _child.nodeValue.trim() : !0 : isHydrating)) children[childrenLen++] = _child;\n }\n if (0 !== vlen) for (var i = 0; i < vlen; i++) {\n vchild = vchildren[i];\n child = null;\n var key = vchild.key;\n if (null != key) {\n if (keyedLen && void 0 !== keyed[key]) {\n child = keyed[key];\n keyed[key] = void 0;\n keyedLen--;\n }\n } else if (!child && min < childrenLen) for (j = min; j < childrenLen; j++) if (void 0 !== children[j] && isSameNodeType(c = children[j], vchild, isHydrating)) {\n child = c;\n children[j] = void 0;\n if (j === childrenLen - 1) childrenLen--;\n if (j === min) min++;\n break;\n }\n child = idiff(child, vchild, context, mountAll);\n f = originalChildren[i];\n if (child && child !== dom && child !== f) if (null == f) dom.appendChild(child); else if (child === f.nextSibling) removeNode(f); else dom.insertBefore(child, f);\n }\n if (keyedLen) for (var i in keyed) if (void 0 !== keyed[i]) recollectNodeTree(keyed[i], !1);\n while (min <= childrenLen) if (void 0 !== (child = children[childrenLen--])) recollectNodeTree(child, !1);\n }\n function recollectNodeTree(node, unmountOnly) {\n var component = node._component;\n if (component) unmountComponent(component); else {\n if (null != node.__preactattr_ && node.__preactattr_.ref) node.__preactattr_.ref(null);\n if (!1 === unmountOnly || null == node.__preactattr_) removeNode(node);\n removeChildren(node);\n }\n }\n function removeChildren(node) {\n node = node.lastChild;\n while (node) {\n var next = node.previousSibling;\n recollectNodeTree(node, !0);\n node = next;\n }\n }\n function diffAttributes(dom, attrs, old) {\n var name;\n for (name in old) if ((!attrs || null == attrs[name]) && null != old[name]) setAccessor(dom, name, old[name], old[name] = void 0, isSvgMode);\n for (name in attrs) if (!('children' === name || 'innerHTML' === name || name in old && attrs[name] === ('value' === name || 'checked' === name ? dom[name] : old[name]))) setAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);\n }\n function collectComponent(component) {\n var name = component.constructor.name;\n (components[name] || (components[name] = [])).push(component);\n }\n function createComponent(Ctor, props, context) {\n var inst, list = components[Ctor.name];\n if (Ctor.prototype && Ctor.prototype.render) {\n inst = new Ctor(props, context);\n Component.call(inst, props, context);\n } else {\n inst = new Component(props, context);\n inst.constructor = Ctor;\n inst.render = doRender;\n }\n if (list) for (var i = list.length; i--; ) if (list[i].constructor === Ctor) {\n inst.__b = list[i].__b;\n list.splice(i, 1);\n break;\n }\n return inst;\n }\n function doRender(props, state, context) {\n return this.constructor(props, context);\n }\n function setComponentProps(component, props, opts, context, mountAll) {\n if (!component.__x) {\n component.__x = !0;\n if (component.__r = props.ref) delete props.ref;\n if (component.__k = props.key) delete props.key;\n if (!component.base || mountAll) {\n if (component.componentWillMount) component.componentWillMount();\n } else if (component.componentWillReceiveProps) component.componentWillReceiveProps(props, context);\n if (context && context !== component.context) {\n if (!component.__c) component.__c = component.context;\n component.context = context;\n }\n if (!component.__p) component.__p = component.props;\n component.props = props;\n component.__x = !1;\n if (0 !== opts) if (1 === opts || !1 !== options.syncComponentUpdates || !component.base) renderComponent(component, 1, mountAll); else enqueueRender(component);\n if (component.__r) component.__r(component);\n }\n }\n function renderComponent(component, opts, mountAll, isChild) {\n if (!component.__x) {\n var rendered, inst, cbase, props = component.props, state = component.state, context = component.context, previousProps = component.__p || props, previousState = component.__s || state, previousContext = component.__c || context, isUpdate = component.base, nextBase = component.__b, initialBase = isUpdate || nextBase, initialChildComponent = component._component, skip = !1;\n if (isUpdate) {\n component.props = previousProps;\n component.state = previousState;\n component.context = previousContext;\n if (2 !== opts && component.shouldComponentUpdate && !1 === component.shouldComponentUpdate(props, state, context)) skip = !0; else if (component.componentWillUpdate) component.componentWillUpdate(props, state, context);\n component.props = props;\n component.state = state;\n component.context = context;\n }\n component.__p = component.__s = component.__c = component.__b = null;\n component.__d = !1;\n if (!skip) {\n rendered = component.render(props, state, context);\n if (component.getChildContext) context = extend(extend({}, context), component.getChildContext());\n var toUnmount, base, childComponent = rendered && rendered.nodeName;\n if ('function' == typeof childComponent) {\n var childProps = getNodeProps(rendered);\n inst = initialChildComponent;\n if (inst && inst.constructor === childComponent && childProps.key == inst.__k) setComponentProps(inst, childProps, 1, context, !1); else {\n toUnmount = inst;\n component._component = inst = createComponent(childComponent, childProps, context);\n inst.__b = inst.__b || nextBase;\n inst.__u = component;\n setComponentProps(inst, childProps, 0, context, !1);\n renderComponent(inst, 1, mountAll, !0);\n }\n base = inst.base;\n } else {\n cbase = initialBase;\n toUnmount = initialChildComponent;\n if (toUnmount) cbase = component._component = null;\n if (initialBase || 1 === opts) {\n if (cbase) cbase._component = null;\n base = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, !0);\n }\n }\n if (initialBase && base !== initialBase && inst !== initialChildComponent) {\n var baseParent = initialBase.parentNode;\n if (baseParent && base !== baseParent) {\n baseParent.replaceChild(base, initialBase);\n if (!toUnmount) {\n initialBase._component = null;\n recollectNodeTree(initialBase, !1);\n }\n }\n }\n if (toUnmount) unmountComponent(toUnmount);\n component.base = base;\n if (base && !isChild) {\n var componentRef = component, t = component;\n while (t = t.__u) (componentRef = t).base = base;\n base._component = componentRef;\n base._componentConstructor = componentRef.constructor;\n }\n }\n if (!isUpdate || mountAll) mounts.unshift(component); else if (!skip) {\n if (component.componentDidUpdate) component.componentDidUpdate(previousProps, previousState, previousContext);\n if (options.afterUpdate) options.afterUpdate(component);\n }\n if (null != component.__h) while (component.__h.length) component.__h.pop().call(component);\n if (!diffLevel && !isChild) flushMounts();\n }\n }\n function buildComponentFromVNode(dom, vnode, context, mountAll) {\n var c = dom && dom._component, originalComponent = c, oldDom = dom, isDirectOwner = c && dom._componentConstructor === vnode.nodeName, isOwner = isDirectOwner, props = getNodeProps(vnode);\n while (c && !isOwner && (c = c.__u)) isOwner = c.constructor === vnode.nodeName;\n if (c && isOwner && (!mountAll || c._component)) {\n setComponentProps(c, props, 3, context, mountAll);\n dom = c.base;\n } else {\n if (originalComponent && !isDirectOwner) {\n unmountComponent(originalComponent);\n dom = oldDom = null;\n }\n c = createComponent(vnode.nodeName, props, context);\n if (dom && !c.__b) {\n c.__b = dom;\n oldDom = null;\n }\n setComponentProps(c, props, 1, context, mountAll);\n dom = c.base;\n if (oldDom && dom !== oldDom) {\n oldDom._component = null;\n recollectNodeTree(oldDom, !1);\n }\n }\n return dom;\n }\n function unmountComponent(component) {\n if (options.beforeUnmount) options.beforeUnmount(component);\n var base = component.base;\n component.__x = !0;\n if (component.componentWillUnmount) component.componentWillUnmount();\n component.base = null;\n var inner = component._component;\n if (inner) unmountComponent(inner); else if (base) {\n if (base.__preactattr_ && base.__preactattr_.ref) base.__preactattr_.ref(null);\n component.__b = base;\n removeNode(base);\n collectComponent(component);\n removeChildren(base);\n }\n if (component.__r) component.__r(null);\n }\n function Component(props, context) {\n this.__d = !0;\n this.context = context;\n this.props = props;\n this.state = this.state || {};\n }\n function render(vnode, parent, merge) {\n return diff(merge, vnode, {}, !1, parent, !1);\n }\n var options = {};\n var stack = [];\n var EMPTY_CHILDREN = [];\n var defer = 'function' == typeof Promise ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;\n var IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n var items = [];\n var mounts = [];\n var diffLevel = 0;\n var isSvgMode = !1;\n var hydrating = !1;\n var components = {};\n extend(Component.prototype, {\n setState: function(state, callback) {\n var s = this.state;\n if (!this.__s) this.__s = extend({}, s);\n extend(s, 'function' == typeof state ? state(s, this.props) : state);\n if (callback) (this.__h = this.__h || []).push(callback);\n enqueueRender(this);\n },\n forceUpdate: function(callback) {\n if (callback) (this.__h = this.__h || []).push(callback);\n renderComponent(this, 2);\n },\n render: function() {}\n });\n var preact = {\n h: h,\n createElement: h,\n cloneElement: cloneElement,\n Component: Component,\n render: render,\n rerender: rerender,\n options: options\n };\n if ('undefined' != typeof module) module.exports = preact; else self.preact = preact;\n}();\n//# sourceMappingURL=preact.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/preact/dist/preact.js\n ** module id = 1\n ** module chunks = 0\n **/","export const SUDOKU_DIGITS = [1, 2, 3, 4, 5, 6, 7, 8, 9];\n\nexport const SUDOKU_LARGEST_DIGIT = Math.max.apply({}, SUDOKU_DIGITS);\n\n// ga event value must be an integer\n// so a difficulty of .5 will be tracked as 500\nexport const GA_DIFFICULTY_MULTIPLIER = 1e3;\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/helpers/constants.js\n **/","const { ga, requirejs } = window;\n\nga('create', 'UA-59233605-5', 'auto');\n\n// https://developers.google.com/analytics/devguides/collection/analyticsjs/debugging\nlet url = 'https://www.google-analytics.com/analytics.js';\nif (\n process.env.NODE_ENV === 'development' ||\n location.hostname === 'localhost'\n) {\n url = url.replace('analytics.js', 'analytics_debug.js');\n ga('set', 'sendHitTask', null);\n}\n\nga('set', {\n title: 'Sudoku',\n page: '/sudoku/',\n});\nga('send', 'pageview');\n\nrequirejs([url]);\n\n/**\n * Tracks event with analytics.\n * https://developers.google.com/analytics/devguides/collection/analyticsjs/events\n *\n * @param {String} eventCategory\n * @param {String} eventAction\n * @param {String} [eventLabel]\n * @param {Number} [eventValue]\n */\nexport const trackEvent = (...args) => {\n window.ga.apply(null, ['send', 'event', ...args]);\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/helpers/ga.js\n **/","'use strict';\n\nvar asap = require('asap/raw');\n\nfunction noop() {}\n\n// States:\n//\n// 0 - pending\n// 1 - fulfilled with _value\n// 2 - rejected with _value\n// 3 - adopted the state of another promise, _value\n//\n// once the state is no longer pending (0) it is immutable\n\n// All `_` prefixed properties will be reduced to `_{random number}`\n// at build time to obfuscate them and discourage their use.\n// We don't use symbols or Object.defineProperty to fully hide them\n// because the performance isn't good enough.\n\n\n// to avoid using try/catch inside critical functions, we\n// extract them to here.\nvar LAST_ERROR = null;\nvar IS_ERROR = {};\nfunction getThen(obj) {\n try {\n return obj.then;\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nfunction tryCallOne(fn, a) {\n try {\n return fn(a);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\nfunction tryCallTwo(fn, a, b) {\n try {\n fn(a, b);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nmodule.exports = Promise;\n\nfunction Promise(fn) {\n if (typeof this !== 'object') {\n throw new TypeError('Promises must be constructed via new');\n }\n if (typeof fn !== 'function') {\n throw new TypeError('not a function');\n }\n this._45 = 0;\n this._81 = 0;\n this._65 = null;\n this._54 = null;\n if (fn === noop) return;\n doResolve(fn, this);\n}\nPromise._10 = null;\nPromise._97 = null;\nPromise._61 = noop;\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n if (this.constructor !== Promise) {\n return safeThen(this, onFulfilled, onRejected);\n }\n var res = new Promise(noop);\n handle(this, new Handler(onFulfilled, onRejected, res));\n return res;\n};\n\nfunction safeThen(self, onFulfilled, onRejected) {\n return new self.constructor(function (resolve, reject) {\n var res = new Promise(noop);\n res.then(resolve, reject);\n handle(self, new Handler(onFulfilled, onRejected, res));\n });\n};\nfunction handle(self, deferred) {\n while (self._81 === 3) {\n self = self._65;\n }\n if (Promise._10) {\n Promise._10(self);\n }\n if (self._81 === 0) {\n if (self._45 === 0) {\n self._45 = 1;\n self._54 = deferred;\n return;\n }\n if (self._45 === 1) {\n self._45 = 2;\n self._54 = [self._54, deferred];\n return;\n }\n self._54.push(deferred);\n return;\n }\n handleResolved(self, deferred);\n}\n\nfunction handleResolved(self, deferred) {\n asap(function() {\n var cb = self._81 === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n if (self._81 === 1) {\n resolve(deferred.promise, self._65);\n } else {\n reject(deferred.promise, self._65);\n }\n return;\n }\n var ret = tryCallOne(cb, self._65);\n if (ret === IS_ERROR) {\n reject(deferred.promise, LAST_ERROR);\n } else {\n resolve(deferred.promise, ret);\n }\n });\n}\nfunction resolve(self, newValue) {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) {\n return reject(\n self,\n new TypeError('A promise cannot be resolved with itself.')\n );\n }\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = getThen(newValue);\n if (then === IS_ERROR) {\n return reject(self, LAST_ERROR);\n }\n if (\n then === self.then &&\n newValue instanceof Promise\n ) {\n self._81 = 3;\n self._65 = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(then.bind(newValue), self);\n return;\n }\n }\n self._81 = 1;\n self._65 = newValue;\n finale(self);\n}\n\nfunction reject(self, newValue) {\n self._81 = 2;\n self._65 = newValue;\n if (Promise._97) {\n Promise._97(self, newValue);\n }\n finale(self);\n}\nfunction finale(self) {\n if (self._45 === 1) {\n handle(self, self._54);\n self._54 = null;\n }\n if (self._45 === 2) {\n for (var i = 0; i < self._54.length; i++) {\n handle(self, self._54[i]);\n }\n self._54 = null;\n }\n}\n\nfunction Handler(onFulfilled, onRejected, promise){\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, promise) {\n var done = false;\n var res = tryCallTwo(fn, function (value) {\n if (done) return;\n done = true;\n resolve(promise, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject(promise, reason);\n })\n if (!done && res === IS_ERROR) {\n done = true;\n reject(promise, LAST_ERROR);\n }\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/promise/lib/core.js\n ** module id = 4\n ** module chunks = 0\n **/","\"use strict\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including IO, animation, reflow, and redraw\n// events in browsers.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nmodule.exports = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Equivalent to push, but avoids a function call.\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// `requestFlush` is an implementation-specific method that attempts to kick\n// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n// the event queue before yielding to the browser's own event loop.\nvar requestFlush;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory exhaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index < queue.length) {\n var currentIndex = index;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index = index + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n queue.length -= index;\n index = 0;\n }\n }\n queue.length = 0;\n index = 0;\n flushing = false;\n}\n\n// `requestFlush` is implemented using a strategy based on data collected from\n// every available SauceLabs Selenium web driver worker at time of writing.\n// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\n// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nvar scope = typeof global !== \"undefined\" ? global : self;\nvar BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver;\n\n// MutationObservers are desirable because they have high priority and work\n// reliably everywhere they are implemented.\n// They are implemented in all modern browsers.\n//\n// - Android 4-4.3\n// - Chrome 26-34\n// - Firefox 14-29\n// - Internet Explorer 11\n// - iPad Safari 6-7.1\n// - iPhone Safari 7-7.1\n// - Safari 6-7\nif (typeof BrowserMutationObserver === \"function\") {\n requestFlush = makeRequestCallFromMutationObserver(flush);\n\n// MessageChannels are desirable because they give direct access to the HTML\n// task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n// 11-12, and in web workers in many engines.\n// Although message channels yield to any queued rendering and IO tasks, they\n// would be better than imposing the 4ms delay of timers.\n// However, they do not work reliably in Internet Explorer or Safari.\n\n// Internet Explorer 10 is the only browser that has setImmediate but does\n// not have MutationObservers.\n// Although setImmediate yields to the browser's renderer, it would be\n// preferrable to falling back to setTimeout since it does not have\n// the minimum 4ms penalty.\n// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n// Desktop to a lesser extent) that renders both setImmediate and\n// MessageChannel useless for the purposes of ASAP.\n// https://github.com/kriskowal/q/issues/396\n\n// Timers are implemented universally.\n// We fall back to timers in workers in most engines, and in foreground\n// contexts in the following browsers.\n// However, note that even this simple case requires nuances to operate in a\n// broad spectrum of browsers.\n//\n// - Firefox 3-13\n// - Internet Explorer 6-9\n// - iPad Safari 4.3\n// - Lynx 2.8.7\n} else {\n requestFlush = makeRequestCallFromTimer(flush);\n}\n\n// `requestFlush` requests that the high priority event queue be flushed as\n// soon as possible.\n// This is useful to prevent an error thrown in a task from stalling the event\n// queue if the exception handled by Node.js’s\n// `process.on(\"uncaughtException\")` or by a domain.\nrawAsap.requestFlush = requestFlush;\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nfunction makeRequestCallFromMutationObserver(callback) {\n var toggle = 1;\n var observer = new BrowserMutationObserver(callback);\n var node = document.createTextNode(\"\");\n observer.observe(node, {characterData: true});\n return function requestCall() {\n toggle = -toggle;\n node.data = toggle;\n };\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\nfunction makeRequestCallFromTimer(callback) {\n return function requestCall() {\n // We dispatch a timeout with a specified delay of 0 for engines that\n // can reliably accommodate that request. This will usually be snapped\n // to a 4 milisecond delay, but once we're flushing, there's no delay\n // between events.\n var timeoutHandle = setTimeout(handleTimer, 0);\n // However, since this timer gets frequently dropped in Firefox\n // workers, we enlist an interval handle that will try to fire\n // an event 20 times per second until it succeeds.\n var intervalHandle = setInterval(handleTimer, 50);\n\n function handleTimer() {\n // Whichever timer succeeds will cancel both timers and\n // execute the callback.\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n callback();\n }\n };\n}\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// its existence.\nrawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer;\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/asap/browser-raw.js\n ** module id = 5\n ** module chunks = 0\n **/","import { h, Component } from 'preact';\nimport Sudoku from '../Sudoku';\nimport './styles.css';\n\nclass Game extends Component {\n render() {\n return (\n
\n

Sudoku

\n \n
\n );\n }\n}\n\nmodule.exports = Game;\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/Game/index.js\n **/","import { h, Component } from 'preact';\nimport { GA_DIFFICULTY_MULTIPLIER } from '../helpers/constants';\nimport createSudoku from '../helpers/sudoku';\nimport { trackEvent } from '../helpers/ga';\nimport './styles.css';\n\nexport default class Sudoku extends Component {\n state = {\n attempt: [],\n difficulty: 0.5,\n puzzle: [],\n solution: [],\n solutionJSON: '',\n };\n\n componentDidMount() {\n this.newPuzzle();\n }\n\n /**\n * Focuses puzzle cell when clicked.\n *\n * @param {SyntheticEvent}\n */\n handleCellClick({ target }) {\n target.select();\n }\n\n /**\n * Records user input.\n *\n * @param {SyntheticEvent}\n */\n handleCellChange = ({ target }) => {\n const { dataset: { x, y }, value } = target;\n if (!target.readOnly && value) {\n this.setState(state => {\n const attempt = state.attempt.map(row => row.slice());\n attempt[y][x] = parseInt(value, 10) || null;\n return { attempt };\n });\n }\n };\n\n /**\n * Navigates puzzle.\n *\n * @param {SyntheticEvent}\n */\n handleCellKeyDown = ({ key, target }) => {\n // Get x, y dataset from target element.\n let { x, y } = target.dataset;\n\n // Convert x and y to integers.\n x = parseInt(x, 10);\n y = parseInt(y, 10);\n\n switch (key) {\n case 'ArrowUp':\n y -= 1;\n break;\n case 'ArrowDown':\n y += 1;\n break;\n case 'ArrowLeft':\n x -= 1;\n break;\n case 'ArrowRight':\n x += 1;\n break;\n default:\n return;\n }\n\n const input = this.tbody.querySelector(`[data-x=\"${x}\"][data-y=\"${y}\"]`);\n if (input) setTimeout(() => input.select());\n };\n\n /**\n * Checks if puzzle is solved.\n */\n checkSolution = () => {\n const { attempt, difficulty, solutionJSON } = this.state;\n console.log(JSON.stringify(attempt), solutionJSON);\n if (JSON.stringify(attempt) === solutionJSON) {\n trackEvent(\n 'puzzle',\n 'check',\n 'solved',\n Math.round(difficulty * GA_DIFFICULTY_MULTIPLIER)\n );\n alert('Solved!');\n } else {\n trackEvent(\n 'puzzle',\n 'check',\n 'unsolved',\n Math.round(difficulty * GA_DIFFICULTY_MULTIPLIER)\n );\n alert('Not solved.');\n }\n };\n\n /**\n * Clears puzzle attempt.\n */\n clearPuzzle = () => {\n trackEvent('puzzle', 'clear');\n this.setState(({ puzzle }) => ({\n attempt: puzzle.map(row => row.slice()),\n }));\n };\n\n /**\n * Generates a new puzzle.\n */\n newPuzzle = () => {\n this.setState(({ difficulty }) => {\n trackEvent(\n 'puzzle',\n 'new',\n undefined,\n Math.round(difficulty * GA_DIFFICULTY_MULTIPLIER)\n );\n const { puzzle, solution } = createSudoku(difficulty);\n return {\n attempt: puzzle.map(row => row.slice()),\n puzzle,\n solution,\n solutionJSON: JSON.stringify(solution),\n };\n });\n };\n\n /**\n * Changes puzzle difficulty.\n */\n changeDifficulty = ({ target }) => {\n this.setState(() => ({\n difficulty: Number(target.value),\n }));\n };\n\n render() {\n const { attempt, difficulty, puzzle } = this.state;\n return (\n
\n \n (this.tbody = element)}>\n {attempt.map((rows, y) => (\n \n {rows.map((digit, x) => (\n \n ))}\n \n ))}\n \n
\n \n
\n
\n  \n \n
\n
\n  \n \n
\n );\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/Sudoku/index.js\n **/","import { SUDOKU_DIGITS, SUDOKU_LARGEST_DIGIT } from './constants';\n\n/**\n * Shuffles an array.\n *\n * @param {Array} array\n * @param {Boolean} [shouldMutate=false]\n * @return {Array}\n */\nconst shuffleArray = (array = [], shouldMutate = false) => {\n const arr = shouldMutate ? array : array.slice();\n for (let i = arr.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const temp = arr[i];\n arr[i] = arr[j];\n arr[j] = temp;\n }\n return arr;\n};\n\n/**\n * Randomly generates a Sudoku row.\n *\n * @return {Array} - Shuffled numbers between 1 and 9 inclusive.\n */\nconst generateRow = () => shuffleArray(SUDOKU_DIGITS);\n\n/**\n * Given output, checks if row is usable in Sudoku solution.\n *\n * @param {Number} index\n * @param {Array} row\n * @param {Array} output\n * @return {Boolean}\n */\nconst isRowUsable = (index, row = [], output = []) => {\n let rowIndex = output.length - 1;\n for (; rowIndex > -1; rowIndex--) {\n let columnIndex = output[rowIndex].length - 1;\n for (; columnIndex > -1; columnIndex--) {\n // check if row value exists in output column\n const rowValue = row[columnIndex];\n if (rowValue === output[rowIndex][columnIndex]) return false;\n\n let rowStart = 6;\n if (index < 3) {\n rowStart = 0;\n } else if (index < 6) {\n rowStart = 3;\n }\n\n let columnStart = 6;\n if (columnIndex < 3) {\n columnStart = 0;\n } else if (columnIndex < 6) {\n columnStart = 3;\n }\n\n let section = [];\n for (let i = 0; i < 3; i++) {\n if (output[rowStart + i] instanceof Array) {\n section = section.concat(\n output[rowStart + i].slice(columnStart, columnStart + 3)\n );\n }\n }\n\n // check if row value exists in output 3x3 section\n if (section.indexOf(rowValue) !== -1) return false;\n }\n }\n return true;\n};\n\n/**\n * Generates a Sudoku solution.\n *\n * @return {Array}\n */\nconst generateSolution = () => {\n // seed 1st row\n const output = [generateRow()];\n\n // generate rows 2 to 8\n let loopCount = 0;\n for (let index = 1; index < 8; index++) {\n while (true) {\n const row = generateRow();\n if (isRowUsable(index, row, output)) {\n output[index] = row;\n loopCount = 0;\n break;\n }\n loopCount++;\n // break and try again if stuck in infinite loop\n if (loopCount > 2e5) return generateSolution();\n }\n }\n\n // invert the output\n const columnValues = output.reduce((result, row, rowIndex) => {\n row.forEach((columnValue, columnIndex) => {\n result[columnIndex] = result[columnIndex] || [];\n result[columnIndex][rowIndex] = columnValue;\n });\n return result;\n }, []);\n\n // get 9th row\n const lastRow = [];\n for (let number = SUDOKU_LARGEST_DIGIT; number > 0; number--) {\n for (let i = columnValues.length - 1; i > -1; i--) {\n if (columnValues[i].indexOf(number) === -1) {\n lastRow[i] = number;\n break;\n }\n }\n }\n output.push(lastRow);\n\n return output;\n};\n\n/**\n * Creates Sudoku solution and puzzle.\n *\n * @param {Number} difficulty - A number between 0 and 1.\n * Lower means easier, higher means harder.\n * @return {Object}\n */\nconst createSudoku = difficulty => {\n const solution = generateSolution();\n const puzzle = solution.map(row =>\n row.slice().map(value => (Math.random() > difficulty ? value : null))\n );\n return { puzzle, solution };\n};\n\nexport default createSudoku;\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/helpers/sudoku.js\n **/","import { h, render } from 'preact';\n\n/**\n * Initializes app.\n */\nconst bootstrap = () => {\n // initialize google analytics\n require('./helpers/ga');\n\n // render game\n const Game = require('./Game');\n render(, document.getElementById('root'));\n};\n\n/**\n * Try to load polyfill before app.\n */\nif (process.env.NODE_ENV === 'development') {\n bootstrap();\n} else {\n window.requirejs(\n ['https://cdn.polyfill.io/v2/polyfill.min.js?features=es5&flags=gated'],\n bootstrap,\n bootstrap // http://requirejs.org/docs/api.html#errbacks\n );\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/index.js\n **/","'use strict';\n/* eslint-disable no-unused-vars */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (e) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (Object.getOwnPropertySymbols) {\n\t\t\tsymbols = Object.getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/object-assign/index.js\n ** module id = 12\n ** module chunks = 0\n **/","if (typeof Promise === 'undefined') {\n // Rejection tracking prevents a common issue where React gets into an\n // inconsistent state due to an error, but it gets swallowed by a Promise,\n // and the user has no idea what causes React's erratic future behavior.\n require('promise/lib/rejection-tracking').enable();\n window.Promise = require('promise/lib/es6-extensions.js');\n}\n\n// fetch() polyfill for making API calls.\nrequire('whatwg-fetch');\n\n// Object.assign() is commonly used with React.\n// It will use the native implementation if it's present and isn't buggy.\nObject.assign = require('object-assign');\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/preact-scripts/config/polyfills.js\n ** module id = 13\n ** module chunks = 0\n **/","'use strict';\n\n//This file contains the ES6 extensions to the core Promises/A+ API\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nvar TRUE = valuePromise(true);\nvar FALSE = valuePromise(false);\nvar NULL = valuePromise(null);\nvar UNDEFINED = valuePromise(undefined);\nvar ZERO = valuePromise(0);\nvar EMPTYSTRING = valuePromise('');\n\nfunction valuePromise(value) {\n var p = new Promise(Promise._61);\n p._81 = 1;\n p._65 = value;\n return p;\n}\nPromise.resolve = function (value) {\n if (value instanceof Promise) return value;\n\n if (value === null) return NULL;\n if (value === undefined) return UNDEFINED;\n if (value === true) return TRUE;\n if (value === false) return FALSE;\n if (value === 0) return ZERO;\n if (value === '') return EMPTYSTRING;\n\n if (typeof value === 'object' || typeof value === 'function') {\n try {\n var then = value.then;\n if (typeof then === 'function') {\n return new Promise(then.bind(value));\n }\n } catch (ex) {\n return new Promise(function (resolve, reject) {\n reject(ex);\n });\n }\n }\n return valuePromise(value);\n};\n\nPromise.all = function (arr) {\n var args = Array.prototype.slice.call(arr);\n\n return new Promise(function (resolve, reject) {\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n if (val instanceof Promise && val.then === Promise.prototype.then) {\n while (val._81 === 3) {\n val = val._65;\n }\n if (val._81 === 1) return res(i, val._65);\n if (val._81 === 2) reject(val._65);\n val.then(function (val) {\n res(i, val);\n }, reject);\n return;\n } else {\n var then = val.then;\n if (typeof then === 'function') {\n var p = new Promise(then.bind(val));\n p.then(function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.reject = function (value) {\n return new Promise(function (resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function (values) {\n return new Promise(function (resolve, reject) {\n values.forEach(function(value){\n Promise.resolve(value).then(resolve, reject);\n });\n });\n};\n\n/* Prototype Methods */\n\nPromise.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/promise/lib/es6-extensions.js\n ** module id = 14\n ** module chunks = 0\n **/","'use strict';\n\nvar Promise = require('./core');\n\nvar DEFAULT_WHITELIST = [\n ReferenceError,\n TypeError,\n RangeError\n];\n\nvar enabled = false;\nexports.disable = disable;\nfunction disable() {\n enabled = false;\n Promise._10 = null;\n Promise._97 = null;\n}\n\nexports.enable = enable;\nfunction enable(options) {\n options = options || {};\n if (enabled) disable();\n enabled = true;\n var id = 0;\n var displayId = 0;\n var rejections = {};\n Promise._10 = function (promise) {\n if (\n promise._81 === 2 && // IS REJECTED\n rejections[promise._72]\n ) {\n if (rejections[promise._72].logged) {\n onHandled(promise._72);\n } else {\n clearTimeout(rejections[promise._72].timeout);\n }\n delete rejections[promise._72];\n }\n };\n Promise._97 = function (promise, err) {\n if (promise._45 === 0) { // not yet handled\n promise._72 = id++;\n rejections[promise._72] = {\n displayId: null,\n error: err,\n timeout: setTimeout(\n onUnhandled.bind(null, promise._72),\n // For reference errors and type errors, this almost always\n // means the programmer made a mistake, so log them after just\n // 100ms\n // otherwise, wait 2 seconds to see if they get handled\n matchWhitelist(err, DEFAULT_WHITELIST)\n ? 100\n : 2000\n ),\n logged: false\n };\n }\n };\n function onUnhandled(id) {\n if (\n options.allRejections ||\n matchWhitelist(\n rejections[id].error,\n options.whitelist || DEFAULT_WHITELIST\n )\n ) {\n rejections[id].displayId = displayId++;\n if (options.onUnhandled) {\n rejections[id].logged = true;\n options.onUnhandled(\n rejections[id].displayId,\n rejections[id].error\n );\n } else {\n rejections[id].logged = true;\n logError(\n rejections[id].displayId,\n rejections[id].error\n );\n }\n }\n }\n function onHandled(id) {\n if (rejections[id].logged) {\n if (options.onHandled) {\n options.onHandled(rejections[id].displayId, rejections[id].error);\n } else if (!rejections[id].onUnhandled) {\n console.warn(\n 'Promise Rejection Handled (id: ' + rejections[id].displayId + '):'\n );\n console.warn(\n ' This means you can ignore any previous messages of the form \"Possible Unhandled Promise Rejection\" with id ' +\n rejections[id].displayId + '.'\n );\n }\n }\n }\n}\n\nfunction logError(id, error) {\n console.warn('Possible Unhandled Promise Rejection (id: ' + id + '):');\n var errStr = (error && (error.stack || error)) + '';\n errStr.split('\\n').forEach(function (line) {\n console.warn(' ' + line);\n });\n}\n\nfunction matchWhitelist(error, list) {\n return list.some(function (cls) {\n return error instanceof cls;\n });\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/promise/lib/rejection-tracking.js\n ** module id = 15\n ** module chunks = 0\n **/","(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var list = this.map[name]\n if (!list) {\n list = []\n this.map[name] = list\n }\n list.push(value)\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n var values = this.map[normalizeName(name)]\n return values ? values[0] : null\n }\n\n Headers.prototype.getAll = function(name) {\n return this.map[normalizeName(name)] || []\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = [normalizeValue(value)]\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n Object.getOwnPropertyNames(this.map).forEach(function(name) {\n this.map[name].forEach(function(value) {\n callback.call(thisArg, value, name, this)\n }, this)\n }, this)\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n reader.readAsArrayBuffer(blob)\n return fileReaderReady(reader)\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n reader.readAsText(blob)\n return fileReaderReady(reader)\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (!body) {\n this._bodyText = ''\n } else if (support.arrayBuffer && ArrayBuffer.prototype.isPrototypeOf(body)) {\n // Only support ArrayBuffers for POST method.\n // Receiving ArrayBuffers happens via Blobs, instead.\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n } else {\n this.text = function() {\n var rejected = consumed(this)\n return rejected ? rejected : Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n if (Request.prototype.isPrototypeOf(input)) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = input\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this)\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function headers(xhr) {\n var head = new Headers()\n var pairs = (xhr.getAllResponseHeaders() || '').trim().split('\\n')\n pairs.forEach(function(header) {\n var split = header.trim().split(':')\n var key = split.shift().trim()\n var value = split.join(':').trim()\n head.append(key, value)\n })\n return head\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = options.statusText\n this.headers = options.headers instanceof Headers ? options.headers : new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request\n if (Request.prototype.isPrototypeOf(input) && !init) {\n request = input\n } else {\n request = new Request(input, init)\n }\n\n var xhr = new XMLHttpRequest()\n\n function responseURL() {\n if ('responseURL' in xhr) {\n return xhr.responseURL\n }\n\n // Avoid security warnings on getResponseHeader when not allowed by CORS\n if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {\n return xhr.getResponseHeader('X-Request-URL')\n }\n\n return\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: headers(xhr),\n url: responseURL()\n }\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/whatwg-fetch/fetch.js\n ** module id = 16\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file