PBRYNWYOTORTAAYHMNGLU5KNAS4T5FCSEIWM656VQ7IZJ6P7NQ3QC var $elm$core$Set$Set_elm_builtin = function (a) {return {$: 'Set_elm_builtin', a: a};};var $elm$core$Dict$RBEmpty_elm_builtin = {$: 'RBEmpty_elm_builtin'};var $elm$core$Dict$empty = $elm$core$Dict$RBEmpty_elm_builtin;var $elm$core$Set$empty = $elm$core$Set$Set_elm_builtin($elm$core$Dict$empty);
};var $elm$core$Dict$Black = {$: 'Black'};var $elm$core$Dict$RBNode_elm_builtin = F5(function (a, b, c, d, e) {return {$: 'RBNode_elm_builtin', a: a, b: b, c: c, d: d, e: e};});var $elm$core$Dict$Red = {$: 'Red'};var $elm$core$Dict$balance = F5(function (color, key, value, left, right) {if ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Red')) {var _v1 = right.a;var rK = right.b;var rV = right.c;var rLeft = right.d;var rRight = right.e;if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) {var _v3 = left.a;var lK = left.b;var lV = left.c;var lLeft = left.d;var lRight = left.e;return A5($elm$core$Dict$RBNode_elm_builtin,$elm$core$Dict$Red,key,value,A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, lK, lV, lLeft, lRight),A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rLeft, rRight));} else {return A5($elm$core$Dict$RBNode_elm_builtin,color,rK,rV,A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, left, rLeft),rRight);}} else {if ((((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) && (left.d.$ === 'RBNode_elm_builtin')) && (left.d.a.$ === 'Red')) {var _v5 = left.a;var lK = left.b;var lV = left.c;var _v6 = left.d;var _v7 = _v6.a;var llK = _v6.b;var llV = _v6.c;var llLeft = _v6.d;var llRight = _v6.e;var lRight = left.e;return A5($elm$core$Dict$RBNode_elm_builtin,$elm$core$Dict$Red,lK,lV,A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight),A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, key, value, lRight, right));} else {return A5($elm$core$Dict$RBNode_elm_builtin, color, key, value, left, right);}}});var $elm$core$Basics$compare = _Utils_compare;var $elm$core$Dict$insertHelp = F3(function (key, value, dict) {if (dict.$ === 'RBEmpty_elm_builtin') {return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, $elm$core$Dict$RBEmpty_elm_builtin, $elm$core$Dict$RBEmpty_elm_builtin);} else {var nColor = dict.a;var nKey = dict.b;var nValue = dict.c;var nLeft = dict.d;var nRight = dict.e;var _v1 = A2($elm$core$Basics$compare, key, nKey);switch (_v1.$) {case 'LT':return A5($elm$core$Dict$balance,nColor,nKey,nValue,A3($elm$core$Dict$insertHelp, key, value, nLeft),nRight);case 'EQ':return A5($elm$core$Dict$RBNode_elm_builtin, nColor, nKey, value, nLeft, nRight);default:return A5($elm$core$Dict$balance,nColor,nKey,nValue,nLeft,A3($elm$core$Dict$insertHelp, key, value, nRight));}}});var $elm$core$Dict$insert = F3(function (key, value, dict) {var _v0 = A3($elm$core$Dict$insertHelp, key, value, dict);if ((_v0.$ === 'RBNode_elm_builtin') && (_v0.a.$ === 'Red')) {var _v1 = _v0.a;var k = _v0.b;var v = _v0.c;var l = _v0.d;var r = _v0.e;return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r);} else {var x = _v0;return x;}});var $elm$core$Set$insert = F2(function (key, _v0) {var dict = _v0.a;return $elm$core$Set$Set_elm_builtin(A3($elm$core$Dict$insert, key, _Utils_Tuple0, dict));});var $elm$core$Dict$getMin = function (dict) {getMin:while (true) {if ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) {var left = dict.d;var $temp$dict = left;dict = $temp$dict;continue getMin;} else {return dict;}}
var $elm$core$Dict$moveRedLeft = function (dict) {if (((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) && (dict.e.$ === 'RBNode_elm_builtin')) {if ((dict.e.d.$ === 'RBNode_elm_builtin') && (dict.e.d.a.$ === 'Red')) {var clr = dict.a;var k = dict.b;var v = dict.c;var _v1 = dict.d;var lClr = _v1.a;var lK = _v1.b;var lV = _v1.c;var lLeft = _v1.d;var lRight = _v1.e;var _v2 = dict.e;var rClr = _v2.a;var rK = _v2.b;var rV = _v2.c;var rLeft = _v2.d;var _v3 = rLeft.a;var rlK = rLeft.b;var rlV = rLeft.c;var rlL = rLeft.d;var rlR = rLeft.e;var rRight = _v2.e;return A5($elm$core$Dict$RBNode_elm_builtin,$elm$core$Dict$Red,rlK,rlV,A5($elm$core$Dict$RBNode_elm_builtin,$elm$core$Dict$Black,k,v,A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),rlL),A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rlR, rRight));} else {var clr = dict.a;var k = dict.b;var v = dict.c;var _v4 = dict.d;var lClr = _v4.a;var lK = _v4.b;var lV = _v4.c;var lLeft = _v4.d;var lRight = _v4.e;var _v5 = dict.e;var rClr = _v5.a;var rK = _v5.b;var rV = _v5.c;var rLeft = _v5.d;var rRight = _v5.e;if (clr.$ === 'Black') {return A5($elm$core$Dict$RBNode_elm_builtin,$elm$core$Dict$Black,k,v,A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));} else {return A5($elm$core$Dict$RBNode_elm_builtin,$elm$core$Dict$Black,k,v,A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));}}} else {return dict;}};var $elm$core$Dict$moveRedRight = function (dict) {if (((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) && (dict.e.$ === 'RBNode_elm_builtin')) {if ((dict.d.d.$ === 'RBNode_elm_builtin') && (dict.d.d.a.$ === 'Red')) {var clr = dict.a;var k = dict.b;var v = dict.c;var _v1 = dict.d;var lClr = _v1.a;var lK = _v1.b;var lV = _v1.c;var _v2 = _v1.d;var _v3 = _v2.a;var llK = _v2.b;var llV = _v2.c;var llLeft = _v2.d;var llRight = _v2.e;var lRight = _v1.e;var _v4 = dict.e;var rClr = _v4.a;var rK = _v4.b;var rV = _v4.c;var rLeft = _v4.d;var rRight = _v4.e;return A5($elm$core$Dict$RBNode_elm_builtin,$elm$core$Dict$Red,lK,lV,A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight),A5($elm$core$Dict$RBNode_elm_builtin,$elm$core$Dict$Black,k,v,lRight,A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight)));} else {var clr = dict.a;var k = dict.b;var v = dict.c;var _v5 = dict.d;var lClr = _v5.a;var lK = _v5.b;var lV = _v5.c;var lLeft = _v5.d;var lRight = _v5.e;var _v6 = dict.e;var rClr = _v6.a;var rK = _v6.b;var rV = _v6.c;var rLeft = _v6.d;var rRight = _v6.e;if (clr.$ === 'Black') {return A5($elm$core$Dict$RBNode_elm_builtin,$elm$core$Dict$Black,k,v,A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));} else {return A5($elm$core$Dict$RBNode_elm_builtin,$elm$core$Dict$Black,k,v,A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));}}} else {return dict;}};var $elm$core$Dict$removeHelpPrepEQGT = F7(function (targetKey, dict, color, key, value, left, right) {if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) {var _v1 = left.a;var lK = left.b;var lV = left.c;var lLeft = left.d;var lRight = left.e;return A5($elm$core$Dict$RBNode_elm_builtin,color,lK,lV,lLeft,A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, lRight, right));} else {_v2$2:while (true) {if ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Black')) {if (right.d.$ === 'RBNode_elm_builtin') {if (right.d.a.$ === 'Black') {var _v3 = right.a;var _v4 = right.d;var _v5 = _v4.a;return $elm$core$Dict$moveRedRight(dict);} else {break _v2$2;}} else {var _v6 = right.a;var _v7 = right.d;return $elm$core$Dict$moveRedRight(dict);}} else {break _v2$2;}}return dict;}});var $elm$core$Dict$removeMin = function (dict) {if ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) {var color = dict.a;var key = dict.b;var value = dict.c;var left = dict.d;var lColor = left.a;var lLeft = left.d;var right = dict.e;if (lColor.$ === 'Black') {if ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) {var _v3 = lLeft.a;return A5($elm$core$Dict$RBNode_elm_builtin,color,key,value,$elm$core$Dict$removeMin(left),right);} else {var _v4 = $elm$core$Dict$moveRedLeft(dict);if (_v4.$ === 'RBNode_elm_builtin') {var nColor = _v4.a;var nKey = _v4.b;var nValue = _v4.c;var nLeft = _v4.d;var nRight = _v4.e;return A5($elm$core$Dict$balance,nColor,nKey,nValue,$elm$core$Dict$removeMin(nLeft),nRight);} else {return $elm$core$Dict$RBEmpty_elm_builtin;}}} else {return A5($elm$core$Dict$RBNode_elm_builtin,color,key,value,$elm$core$Dict$removeMin(left),right);}} else {return $elm$core$Dict$RBEmpty_elm_builtin;}};var $elm$core$Dict$removeHelp = F2(function (targetKey, dict) {if (dict.$ === 'RBEmpty_elm_builtin') {return $elm$core$Dict$RBEmpty_elm_builtin;} else {var color = dict.a;var key = dict.b;var value = dict.c;var left = dict.d;var right = dict.e;if (_Utils_cmp(targetKey, key) < 0) {if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Black')) {var _v4 = left.a;var lLeft = left.d;if ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) {var _v6 = lLeft.a;return A5($elm$core$Dict$RBNode_elm_builtin,color,key,value,A2($elm$core$Dict$removeHelp, targetKey, left),right);} else {var _v7 = $elm$core$Dict$moveRedLeft(dict);if (_v7.$ === 'RBNode_elm_builtin') {var nColor = _v7.a;var nKey = _v7.b;var nValue = _v7.c;var nLeft = _v7.d;var nRight = _v7.e;return A5($elm$core$Dict$balance,nColor,nKey,nValue,A2($elm$core$Dict$removeHelp, targetKey, nLeft),nRight);} else {return $elm$core$Dict$RBEmpty_elm_builtin;}}} else {return A5($elm$core$Dict$RBNode_elm_builtin,color,key,value,A2($elm$core$Dict$removeHelp, targetKey, left),right);}} else {return A2($elm$core$Dict$removeHelpEQGT,targetKey,A7($elm$core$Dict$removeHelpPrepEQGT, targetKey, dict, color, key, value, left, right));}}});var $elm$core$Dict$removeHelpEQGT = F2(function (targetKey, dict) {if (dict.$ === 'RBNode_elm_builtin') {var color = dict.a;var key = dict.b;var value = dict.c;var left = dict.d;var right = dict.e;if (_Utils_eq(targetKey, key)) {var _v1 = $elm$core$Dict$getMin(right);if (_v1.$ === 'RBNode_elm_builtin') {var minKey = _v1.b;var minValue = _v1.c;return A5($elm$core$Dict$balance,color,minKey,minValue,left,$elm$core$Dict$removeMin(right));} else {return $elm$core$Dict$RBEmpty_elm_builtin;}} else {return A5($elm$core$Dict$balance,color,key,value,left,A2($elm$core$Dict$removeHelp, targetKey, right));}} else {return $elm$core$Dict$RBEmpty_elm_builtin;}});var $elm$core$Dict$remove = F2(function (key, dict) {var _v0 = A2($elm$core$Dict$removeHelp, key, dict);if ((_v0.$ === 'RBNode_elm_builtin') && (_v0.a.$ === 'Red')) {var _v1 = _v0.a;var k = _v0.b;var v = _v0.c;var l = _v0.d;var r = _v0.e;return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r);} else {var x = _v0;return x;}});var $elm$core$Set$remove = F2(function (key, _v0) {var dict = _v0.a;return $elm$core$Set$Set_elm_builtin(A2($elm$core$Dict$remove, key, dict));});
return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);
switch (msg.$) {case 'AddQueen':var i = msg.a;var j = msg.b;return _Utils_Tuple2(_Utils_update(model,{queens: A2($elm$core$Set$insert,_Utils_Tuple2(i, j),model.queens)}),$elm$core$Platform$Cmd$none);case 'RemoveQueen':var i = msg.a;var j = msg.b;return _Utils_Tuple2(_Utils_update(model,{queens: A2($elm$core$Set$remove,_Utils_Tuple2(i, j),model.queens)}),$elm$core$Platform$Cmd$none);default:return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);}});var $author$project$Queens$AddQueen = F2(function (a, b) {return {$: 'AddQueen', a: a, b: b};});var $author$project$Queens$RemoveQueen = F2(function (a, b) {return {$: 'RemoveQueen', a: a, b: b};
var $elm$svg$Svg$foreignObject = $elm$svg$Svg$trustedNode('foreignObject');var $elm$html$Html$Attributes$height = function (n) {return A2(_VirtualDom_attribute,'height',$elm$core$String$fromInt(n));};var $elm$svg$Svg$Attributes$height = _VirtualDom_attribute('height');var $elm$html$Html$img = _VirtualDom_node('img');
var $elm$virtual_dom$VirtualDom$Normal = function (a) {return {$: 'Normal', a: a};};var $elm$virtual_dom$VirtualDom$on = _VirtualDom_on;var $elm$html$Html$Events$on = F2(function (event, decoder) {return A2($elm$virtual_dom$VirtualDom$on,event,$elm$virtual_dom$VirtualDom$Normal(decoder));});var $elm$svg$Svg$Events$onClick = function (msg) {return A2($elm$html$Html$Events$on,'click',$elm$json$Json$Decode$succeed(msg));};
var $elm$json$Json$Encode$string = _Json_wrap;var $elm$html$Html$Attributes$stringProperty = F2(function (key, string) {return A2(_VirtualDom_property,key,$elm$json$Json$Encode$string(string));});var $elm$html$Html$Attributes$src = function (url) {return A2($elm$html$Html$Attributes$stringProperty,'src',_VirtualDom_noJavaScriptOrHtmlUri(url));};
var queen = function (_v0) {var i = _v0.a;var j = _v0.b;return A2($elm$svg$Svg$foreignObject,_List_fromArray([$elm$svg$Svg$Attributes$width('20'),$elm$svg$Svg$Attributes$height('20'),$elm$svg$Svg$Attributes$x($elm$core$String$fromInt(i * 20)),$elm$svg$Svg$Attributes$y($elm$core$String$fromInt(j * 20)),$elm$svg$Svg$Events$onClick(A2($author$project$Queens$RemoveQueen, i, j))]),_List_fromArray([A2($elm$html$Html$img,_List_fromArray([$elm$html$Html$Attributes$width(20),$elm$html$Html$Attributes$height(20),$elm$html$Html$Attributes$src('static/queen.svg')]),_List_Nil)]));};var border = _List_fromArray([A2($elm$svg$Svg$line,_List_fromArray([$elm$svg$Svg$Attributes$x1('0'),$elm$svg$Svg$Attributes$y1('0'),$elm$svg$Svg$Attributes$x2('160'),$elm$svg$Svg$Attributes$y2('0'),$elm$svg$Svg$Attributes$stroke('black')]),_List_Nil),A2($elm$svg$Svg$line,_List_fromArray([$elm$svg$Svg$Attributes$x1('160'),$elm$svg$Svg$Attributes$y1('0'),$elm$svg$Svg$Attributes$x2('160'),$elm$svg$Svg$Attributes$y2('160'),$elm$svg$Svg$Attributes$stroke('black')]),_List_Nil),A2($elm$svg$Svg$line,_List_fromArray([$elm$svg$Svg$Attributes$x1('160'),$elm$svg$Svg$Attributes$y1('160'),$elm$svg$Svg$Attributes$x2('0'),$elm$svg$Svg$Attributes$y2('160'),$elm$svg$Svg$Attributes$stroke('black')]),_List_Nil),A2($elm$svg$Svg$line,_List_fromArray([$elm$svg$Svg$Attributes$x1('0'),$elm$svg$Svg$Attributes$y1('160'),$elm$svg$Svg$Attributes$x2('0'),$elm$svg$Svg$Attributes$y2('0'),$elm$svg$Svg$Attributes$stroke('black')]),_List_Nil)]);
_List_fromArray([A2($elm$svg$Svg$line,_List_fromArray([$elm$svg$Svg$Attributes$x1('0'),$elm$svg$Svg$Attributes$y1('0'),$elm$svg$Svg$Attributes$x2('160'),$elm$svg$Svg$Attributes$y2('0'),$elm$svg$Svg$Attributes$stroke('black')]),_List_Nil),A2($elm$svg$Svg$line,_List_fromArray([$elm$svg$Svg$Attributes$x1('160'),$elm$svg$Svg$Attributes$y1('0'),$elm$svg$Svg$Attributes$x2('160'),$elm$svg$Svg$Attributes$y2('160'),$elm$svg$Svg$Attributes$stroke('black')]),_List_Nil),A2($elm$svg$Svg$line,_List_fromArray([$elm$svg$Svg$Attributes$x1('160'),$elm$svg$Svg$Attributes$y1('160'),$elm$svg$Svg$Attributes$x2('0'),$elm$svg$Svg$Attributes$y2('160'),$elm$svg$Svg$Attributes$stroke('black')]),_List_Nil),A2($elm$svg$Svg$line,_List_fromArray([$elm$svg$Svg$Attributes$x1('0'),$elm$svg$Svg$Attributes$y1('160'),$elm$svg$Svg$Attributes$x2('0'),$elm$svg$Svg$Attributes$y2('0'),$elm$svg$Svg$Attributes$stroke('black')]),_List_Nil)])));
_Utils_ap(border,A2($elm$core$List$map,queen,$elm$core$Set$toList(model.queens)))));
queen (i, j) = Svg.foreignObject[ Attr.width "20", Attr.height "20", Attr.x <| String.fromInt (i * 20), Attr.y <| String.fromInt (j * 20), Events.onClick (RemoveQueen i j)]<|[ img[ width 20, height 20, src "static/queen.svg"][]]border =[ Svg.line[ Attr.x1 "0", Attr.y1 "0", Attr.x2 "160", Attr.y2 "0", Attr.stroke "black"][], Svg.line[ Attr.x1 "160", Attr.y1 "0", Attr.x2 "160", Attr.y2 "160", Attr.stroke "black"][], Svg.line[ Attr.x1 "160", Attr.y1 "160", Attr.x2 "0", Attr.y2 "160", Attr.stroke "black"][], Svg.line[ Attr.x1 "0", Attr.y1 "160", Attr.x2 "0", Attr.y2 "0", Attr.stroke "black"][]]
<| List.map square (squares 8)++[ Svg.line[ Attr.x1 "0", Attr.y1 "0", Attr.x2 "160", Attr.y2 "0", Attr.stroke "black"][], Svg.line[ Attr.x1 "160", Attr.y1 "0", Attr.x2 "160", Attr.y2 "160", Attr.stroke "black"][], Svg.line[ Attr.x1 "160", Attr.y1 "160", Attr.x2 "0", Attr.y2 "160", Attr.stroke "black"][], Svg.line[ Attr.x1 "0", Attr.y1 "160", Attr.x2 "0", Attr.y2 "0", Attr.stroke "black"][]]
<| List.map square (squares 8) ++ border ++ (List.map queen <| Set.toList model.queens)