libLIST=ReadString["C:/mathematica/Work/lossofgenerality/MET-CS/HomeWorks/libLIST.m"]<>"\n";
libNAMES=ReadString["C:/mathematica/Work/lossofgenerality/MET-CS/HomeWorks/libNAMES.m"]<>"\n";
libIO=ReadString["C:/mathematica/Work/lossofgenerality/MET-CS/HomeWorks/libIO.m"]<>"\n";
libERR=ReadString["C:/mathematica/Work/lossofgenerality/MET-CS/HomeWorks/libERR.m"]<>"\n";
libGUI=ReadString["C:/mathematica/Work/lossofgenerality/MET-CS/HomeWorks/libGUI.m"]<>"\n";
libML=ReadString["C:/mathematica/Work/lossofgenerality/MET-CS/HomeWorks/libML.m"]<>"\n";
libMISC=ReadString["C:/mathematica/Work/lossofgenerality/MET-CS/HomeWorks/libMISC.m"]<>"\n";
libGraphics=ReadString["C:/mathematica/Work/lossofgenerality/MET-CS/HomeWorks/libGraphics.m"]<>"\n";
libFUNC=ReadString["/Users/darashayda1xfer/Desktop/MODULES/BU/libs/libFUNC.m"]<>"\n";

libLIST=ReadString["/Users/darashayda1xfer/Desktop/MODULES/BU/libs/libLIST.m"]<>"\n";
libNAMES=ReadString["/Users/darashayda1xfer/Desktop/MODULES/BU/libs/libNAMES.m"]<>"\n";
libIO=ReadString["/Users/darashayda1xfer/Desktop/MODULES/BU/libs/libIO.m"]<>"\n";
libERR=ReadString["/Users/darashayda1xfer/Desktop/MODULES/BU/libs/libERR.m"]<>"\n";
libGUI=ReadString["/Users/darashayda1xfer/Desktop/MODULES/BU/libs/libGUI.m"]<>"\n";
libML=ReadString["/Users/darashayda1xfer/Desktop/MODULES/BU/libs/libML.m"]<>"\n";
libMISC=ReadString["/Users/darashayda1xfer/Desktop/MODULES/BU/libs/libMISC.m"]<>"\n";
libGraphics=ReadString["/Users/darashayda1xfer/Desktop/MODULES/BU/libs/libGraphics.m"]<>"\n";
libFUNC=ReadString["/Users/darashayda1xfer/Desktop/MODULES/BU/libs/libFUNC.m"]<>"\n";

data1="\n"<>"textfghjkl:="<>ToString[<|

"0"->{"Column[{ToString[\"fghjkl. Answer the following:\",TraditionalForm]"<>","<>"ToString[\"(Yes, No, True, False...) \"]"<>"}]","Column[{ToString[\"fghjkl. Answer with Y or N for yes and no:\",TraditionalForm]"<>","<>"ToString[\" \"]"<>"}]"},



"1"-><|
"1.1"->{"Column[{ToString[\" Is this a function:\"]"<>"}]",
"Column[{ToString[\" Is the follwing map a function:\"]"<>"}]"}
|>,

"2"-><|

"2.1"->{"Column[{ToString[\" Is this function @a and @b:\"]"<>"}]",
"Column[{ToString[\" Is the follwing @b and @a function:\"]"<>"}]"}

|>,


"3"-><|

"3.1"->{"Column[{ToString[\" Is this function not 1to1 and Onto:\"]"<>"}]",
"Column[{ToString[\" Is the follwing not 1to1 and Onto function:\"]"<>"}]"}

|>,

"4"-><|

"4.1"->{"Column[{ToString[\" Is this function 1to1 and not Onto:\"]"<>"}]",
"Column[{ToString[\" Is the following 1to1 and not Onto function:\"]"<>"}]"}

|>,

"5"-><|

"5.1"->{"Column[{ToString[\" Is this function not 1to1 and not Onto:\"]"<>"}]",
"Column[{ToString[\" Is the following not 1to1 and not Onto function:\"]"<>"}]"}

|>,

"6"-><|

"6.1"->{"Column[{ToString[\" Is this function 1to1:\"]"<>"}]"},

"6.2"->{"Column[{ToString[\" Is this Onto function:\"]"<>"}]"}

|>,

"7"-><|

"7.1"->{"Column[{ToString[\"Given f,g below is f∘g= \"]"<>"}]","Column[{ToString[\" Assume f,g as below then f∘g= \"]"<>"}]"}

|>,


"8"-><|

"8.1"->{"Column[{ToString[\" Is the following True? \"]"<>"}]","Column[{ToString[\" Evaluate the following statement \"]"<>"}]"}

|>,


"9"-><|

"9.1"->{"Column[{ToString[\" Does this funcation has an inverse? \"]"<>"}]","Column[{ToString[\" Is this function invertible? \"]"<>"}]"}

|>



|>,InputForm]<>";\n ";



data2="listfghjkl:="<>


ToString[

(*KLUDGE: x and y could not be a part of the local vars list *)
<|

"a"->{

{Sin[x]^2,x∈Reals&&-10<=x<=100, y∈Reals&&-1<=y≤(1-0.00000001),ToString[Sin["x"]^2,TraditionalForm]},
{Sin[x]^2,x∈Reals&&-10<=x<=100, y∈Reals&&0<=y≤(1-0.00000001),ToString[Sin["x"]^2,TraditionalForm]},

{Sin[x],x∈Reals&&-10<=x<=100, y∈Reals&&-1<=y≤(1-0.00000001),ToString[Sin["x"],TraditionalForm]},
{Sin[x],x∈Reals&&-10<=x<=100, y∈Reals&&-2<=y≤(2-0.00000001),ToString[Sin["x"],TraditionalForm]},

{Cos[x]^2,x∈Reals&&-10<=x<=100, y∈Reals&&-1<=y≤(1-0.00000001),ToString[Sin["x"]^2,TraditionalForm]},
{Cos[x]^2,x∈Reals&&-10<=x<=100, y∈Reals&&0<=y≤(1-0.00000001),ToString[Sin["x"]^2,TraditionalForm]},

{Cos[x],x∈Reals&&-10<=x<=100, y∈Reals&&-1<=y≤(1-0.00000001),ToString[Sin["x"],TraditionalForm]},
{Cos[x],x∈Reals&&-10<=x<=100, y∈Reals&&-2<=y≤(2-0.00000001),ToString[Sin["x"],TraditionalForm]},

{Abs[x]^(1/2),x∈Reals&&-1<=x<=1 ,y∈Reals&&0<=y≤(1-0.00000001),ToString[Abs["x"]^(1/2),TraditionalForm]},

{Abs[x]^(1/2),x∈Reals&&0<=x<=1 ,y∈Reals&&0<=y≤(1-0.00000001),ToString[Abs["x"]^(1/2),TraditionalForm]},

{Abs[x],x∈Reals&&-1<=x<=1 ,y∈Reals&&0<=y≤(1-0.00000001),ToString[Abs["x"]^(1/2),TraditionalForm]},

{Abs[x],x∈Reals&&0<=x<=1 ,y∈Reals&&0<=y≤(1-0.00000001),ToString[Abs["x"],TraditionalForm]},

{x^nn,x∈Reals&&-10<=x<=10 ,y∈Reals&&((-10)^nn)<=y≤((10^nn)-0.00000001),ToString["x"^nn,TraditionalForm]},

{x^(1/nn),x∈Reals&&0<=x<=1 ,y∈Reals&&0<=y≤(1^(1/nn)-0.00000001),ToString["x"^(1/nn),TraditionalForm]},

{nn*x+1,x∈Reals&&0<=x<=10 ,y∈Reals&&1<=y≤(10*nn-0.00000001),ToString[nn*"x"+1,TraditionalForm]}
}
,
"b"->{Sin[x],Cos[x],x^nn,x^(1/nn),nn^x,x*Sin[x],x*Cos[x],1/x}

|>


,InputForm]<>";\n ";

data=ToString[{data1, data2}, InputForm];

canvas1="\n"<>ToString[Hold[canvasFunc1[s_]:=Module[{vars=ertyuiop,text,answers, options,locs,data},

{answers,options}=s;

text=vars["text"];

Column[{ToExpression@text[[1]],
Multicolumn[{


Column[{
Row[{Row[{Column[{options[[1]]<>")"}],ToExpression@text[[2]]}],Pane[answers[[1]],BaselinePosition->Scaled[0.2]]}] 
,

ToExpression@vars["vars"][[1]][[1]]

}],

(*Spacer@100,*)

Column[{Row[{Row[{Column[{options[[2]]<>")"}],ToExpression@text[[3]]}],Pane[answers[[2]],BaselinePosition->Scaled[0.2]]}] ,

ToExpression@vars["vars"][[2]][[1]]
}],

(*Spacer@100,*)
Column[{Row[{Row[{Column[{options[[3]]<>")"}],ToExpression@text[[4]]}],Pane[answers[[3]],BaselinePosition->Scaled[0.2]]}] ,

ToExpression@vars["vars"][[3]][[1]]

}]

,

(*Spacer@100,*)
Column[{Row[{Row[{Column[{options[[4]]<>")"}],ToExpression@text[[5]]}],Pane[answers[[4]],BaselinePosition->Scaled[0.2]]}] ,

ToExpression@vars["vars"][[4]][[1]]
}]

,

(*Spacer@100,*)
Column[{Row[{Row[{Column[{options[[5]]<>")"}],ToExpression@text[[6]]}],Pane[answers[[5]],BaselinePosition->Scaled[0.2]]}] ,

ToExpression@vars["vars"][[5]][[1]]
}]

,

(*Spacer@100,*)
Column[{Row[{Row[{Column[{options[[6]]<>")"}],ToExpression@text[[7]]}],Pane[answers[[6]],BaselinePosition->Scaled[0.2]]}] ,

ToString[Row@ToExpression[vars["vars"][[6]][[1]],TraditionalForm],TraditionalForm]
}]

},2,Frame->All,FrameStyle->Directive[Orange,Thickness[2],Dashing[4]]],

Spacer@100,

Column[{Row[{Row[{Column[{"2. "}],ToExpression@text[[8]]}],vars["vars"][[7]][[3]],Pane[answers[[7]],BaselinePosition->Scaled[0.2]]}] ,

Row@{"f(x)=",vars["vars"][[7]][[1]],",","g(x)=",vars["vars"][[7]][[2]]}

}],

Spacer@100,
Column[{Row[{Row[{Column[{"3. "}],ToExpression@text[[9]]}],Pane[answers[[8]],BaselinePosition->Scaled[0.2]]}] ,
ToExpression@vars["vars"][[8]][[2]],
ToExpression@vars["vars"][[8]][[1]]
}]
,

Spacer@100,
Column[{Row[{Row[{Column[{"4. "}],ToExpression@text[[10]]}],Pane[answers[[9]],BaselinePosition->Scaled[0.2]]}] ,
ToExpression@vars["vars"][[9]][[1]]
}]







(*
Column[{Row[{Row[{Column[{"2. "}],ToExpression@text[[8]]}],ToExpression[vars["vars"][[7]][[3]],TraditionalForm],Pane[answers[[7]],BaselinePosition->Scaled[0.2]]}] ,

vars["vars"][[7]],

Row@{"f=",ToExpression[vars["vars"][[7]][[1]],TraditionalForm],",","g=",ToExpression[vars["vars"][[7]][[2]],TraditionalForm]}

}]*)

}]]]

,InputForm]<>"\n ";




variation1=ToExpression[data][[1]]<>ToExpression[data][[2]]<>ToString[Hold[Module[{key,p,a,b,c,d,e,f,g,h,i,j,aa,bb,cc,dd,ee, ff, gg, hh, ii, jj,pp, vars,text,list,sol,aabbee,k, parta, partb, partc, partd,parte,partf,partg,parth,parti,question,list12,teste,n},


question=RandomChoice[textfghjkl["0"]];

(*a*)

key=RandomChoice[Keys[textfghjkl["1"]]];
text=RandomChoice[textfghjkl["1"][key]];

Which[

key=="1.1", 


aa=RandomChoice@{{makeFUNC["not function"],False},{RandomChoice@{makeFUNC["not 1to1 and Onto"],makeFUNC["not 1to1 and not Onto" ],makeFUNC["1to1 and not Onto"],makeFUNC["1to1 and Onto"]},True}};
cc={ToString[((aa[[1]])["plot"]),InputForm]};

bb=RandomChoice@{{Plot[Sin[x],{x,0,6Pi}], True},{Plot[Cos[x],{x,0,6Pi}], True},{Plot[x^2,{x,-6,6}], True}, {ParametricPlot[{Sin[u],Sin[2u]},{u,0,2Pi}],False}, {ParametricPlot[{Cos[u],Sin[u]},{u,Pi/4,5Pi/4}],False},{ParametricPlot[{Re[(1/(((-(1/2)+(E^(I ω))))^2))],Im[(1/(((-(1/2)+(E^(I ω))))^2))]},{ω,0,2Pi}],False}};
dd={ToString[bb[[1]],InputForm]};

{a,vars}=RandomChoice@{{aa,cc},{bb,dd}};

sol=If[a[[2]]==True, {"Y","y","yes","Yes","YES","True","T","true","t"},{"N","n","No","NO","no","false","False","F","f"}];

parta={StringReplace[text, { "#a"->""}],vars,sol} ;,


key=="1.2", 

{a,b}=RandomSample[{RandomChoice@{"1-1","one to one", "injective"},RandomChoice@{"onto","surjective"}},2];
c=RandomChoice@{{makeFUNC["1to1 and Onto"],True},{RandomChoice@{makeFUNC["1to1 and not Onto"],makeFUNC["not 1to1 and not Onto" ],makeFUNC["not 1to1 and Onto"],makeFUNC["not function"]},False}};

sol=If[c[[2]]==True, {"Y","y","yes","Yes","YES","True","T","true","t"},{"N","n","No","NO","no","false","False","F","f"}];
vars={ToString[((c[[1]])["plot"]),InputForm]};
partb={StringReplace[text, { "@a"->a, "@b"->b}],vars,sol} ;


];

key=RandomChoice[Keys[textfghjkl["2"]]];
text=RandomChoice[textfghjkl["2"][key]];

Which[key=="2.1", 
{a,b}=RandomSample[{RandomChoice@{"1-1","one to one", "injective"},RandomChoice@{"onto","surjective"}},2];
c=RandomChoice@{{makeFUNC["1to1 and Onto"],True},{RandomChoice@{makeFUNC["1to1 and not Onto"],makeFUNC["not 1to1 and not Onto" ],makeFUNC["not 1to1 and Onto"],makeFUNC["not function"]},False}};

sol=If[c[[2]]==True, {"Y","y","yes","Yes","YES","True","T","true","t"},{"N","n","No","NO","no","false","False","F","f"}];
vars={ToString[((c[[1]])["plot"]),InputForm]};
partb={StringReplace[text, { "@a"->a, "@b"->b}],vars,sol} ;];


key=RandomChoice[Keys[textfghjkl["3"]]];
text=RandomChoice[textfghjkl["3"][key]];

Which[key=="3.1", 

c=RandomChoice@{{makeFUNC["not 1to1 and Onto"],True},{RandomChoice@{makeFUNC["1to1 and not Onto"],makeFUNC["not 1to1 and not Onto" ],makeFUNC["1to1 and Onto"],makeFUNC["not function"]},False}};

sol=If[c[[2]]==True, {"Y","y","yes","Yes","YES","True","T","true","t"},{"N","n","No","NO","no","false","False","F","f"}];
vars={ToString[((c[[1]])["plot"]),InputForm]};
partc={StringReplace[text, { "@a"->"", "@b"->""}],vars,sol} ;];


key=RandomChoice[Keys[textfghjkl["4"]]];
text=RandomChoice[textfghjkl["4"][key]];

Which[key=="4.1", 

c=RandomChoice@{{makeFUNC["1to1 and not Onto"],True},{RandomChoice@{makeFUNC["not 1to1 and Onto"],makeFUNC["not 1to1 and not Onto" ],makeFUNC["1to1 and Onto"],makeFUNC["not function"]},False}};

sol=If[c[[2]]==True, {"Y","y","yes","Yes","YES","True","T","true","t"},{"N","n","No","NO","no","false","False","F","f"}];
vars={ToString[((c[[1]])["plot"]),InputForm]};
partd={StringReplace[text, { "@a"->"", "@b"->""}],vars,sol} ;];


key=RandomChoice[Keys[textfghjkl["5"]]];
text=RandomChoice[textfghjkl["5"][key]];

Which[key=="5.1", 

c=RandomChoice@{{makeFUNC["not 1to1 and not Onto"],True},{RandomChoice@{makeFUNC["not 1to1 and Onto"],makeFUNC["1to1 and not Onto" ],makeFUNC["1to1 and Onto"],makeFUNC["not function"]},False}};

sol=If[c[[2]]==True, {"Y","y","yes","Yes","YES","True","T","true","t"},{"N","n","No","NO","no","false","False","F","f"}];
vars={ToString[((c[[1]])["plot"]),InputForm]};
parte={StringReplace[text, { "@a"->"", "@b"->""}],vars,sol} ;];


key=RandomChoice[Keys[textfghjkl["6"]]];
text=RandomChoice[textfghjkl["6"][key]];

n=RandomInteger[{2,5}];

Which[key=="6.1", 
f=(RandomChoice@(listfghjkl["a"]))/.{nn->n};
f[[4]]=StringReplace[f[[4]],{"nn"->ToString@n}];
sol=If[oneTOone[f[[1]],f[[2]]]==True, {"Y","y","yes","Yes","YES","True","T","true","t"},{"N","n","No","NO","no","false","False","F","f"}];
vars={{ToString[f[[4]],InputForm],"\", \"",ToString[f[[2]],InputForm]}};
partf={StringReplace[text, { "@a"->"", "@b"->""}],vars,sol} ;
,

key=="6.2",
f=(RandomChoice@(listfghjkl["a"]))/.{nn->n};
f[[4]]=StringReplace[f[[4]],{"nn"->ToString@n}];
sol=If[onTO[f[[1]],f[[2]],f[[3]]]==True, {"Y","y","yes","Yes","YES","True","T","true","t"},{"N","n","No","NO","no","false","False","F","f"}];
vars={{ToString[f[[4]],InputForm],"\", \"",ToString[f[[2]],InputForm],"\", \"",ToString[f[[3]],InputForm]}};
partf={StringReplace[text, { "@a"->"", "@b"->""}],vars,sol} ;

];


key=RandomChoice[Keys[textfghjkl["7"]]];
text=RandomChoice[textfghjkl["7"][key]];

n=RandomInteger[{2,5}];

Which[key=="7.1",   
{f,g}={x,x};
h=RandomChoice@{{f/.{x->g},True},{g/.{x->f},False},{ f*g,False}};

While[PowerExpand[(f/.{x->g})-(g/.{x->f})]==0 ||PowerExpand[(f/.{x->g})-f*g]==0|| TrigExpand[(f/.{x->g})-(g/.{x->f})]==0 ||TrigExpand[(f/.{x->g})-f*g]==0,
{f,g}=(RandomSample[(listfghjkl["b"]),2])/.{nn->n};   (* x cannot be a part of the local vars list*)

h=RandomChoice@{{f/.{x->g},True},{g/.{x->f},False},{ f*g,False}};];


sol=If[h[[2]]==True, {"Y","y","yes","Yes","YES","True","T","true","t"},{"N","n","No","NO","no","false","False","F","f"}];
vars={ToString[f,TraditionalForm],ToString[g,TraditionalForm], ToString[h[[1]],TraditionalForm]};
partg={StringReplace[text, { "@a"->"", "@b"->""}],vars,sol} ;];


key=RandomChoice[Keys[textfghjkl["8"]]];
text=RandomChoice[textfghjkl["8"][key]];

Which[key=="8.1", 

f=makeFUNC@RandomChoice[Drop[makeFUNC["types"],1]];


(*TODO: make better wrong answers *)
c=RandomChoice@{

{"f("<>ToString@f["image"][[1]]<>")="<>ToString@f["image"][[2]]<>ToString[" ∧ (f^←)(",TraditionalForm]<>ToString@f["preimage"][[2]]<>")="<>ToString@f["preimage"][[1]],True},

{"f("<>ToString@f["image"][[1]]<>")="<>ToString@f["image"][[2]]<>ToString[" ∧ (f^←)(",TraditionalForm]<>ToString@f["preimage"][[1]]<>")="<>ToString@f["preimage"][[2]],False},

{"f("<>ToString@f["image"][[2]]<>")="<>ToString@f["image"][[1]]<>ToString[" ∧ (f^←)(",TraditionalForm]<>ToString@f["preimage"][[2]]<>")="<>ToString@f["preimage"][[1]],False},

If[Length@f["image"][[1]]< Length@f["domain"][[1]],{"f("<>ToString@f["domain"][[1]]<>")="<>ToString@f["image"][[2]]<>ToString[" ∧ (f^←)(",TraditionalForm]<>ToString@f["preimage"][[2]]<>")="<>ToString@f["preimage"][[1]],False},Nothing]



};

sol=If[c[[2]]==True, {"Y","y","yes","Yes","YES","True","T","true","t"},{"N","n","No","NO","no","false","False","F","f"}];
vars={ToString[f["plot"],InputForm],ToString[c[[1]],InputForm]};
parth={StringReplace[text, { "@a"->"", "@b"->""}],vars,sol} ;];



key=RandomChoice[Keys[textfghjkl["9"]]];
text=RandomChoice[textfghjkl["9"][key]];

Which[key=="9.1", 

c=RandomChoice@{{makeFUNC["not 1to1 and not Onto"],False},{makeFUNC["not 1to1 and Onto"],False},{makeFUNC["1to1 and not Onto" ],False},{makeFUNC["1to1 and Onto"],True}};

sol=If[c[[2]]==True, {"Y","y","yes","Yes","YES","True","T","true","t"},{"N","n","No","NO","no","false","False","F","f"}];
vars={ToString[((c[[1]])["plot"]),InputForm]};
parti={StringReplace[text, { "@a"->"", "@b"->""}],vars,sol} ;];




vars=ToString[<|"text"->{question, parta[[1]],partb[[1]],partc[[1]],partd[[1]],parte[[1]],partf[[1]],partg[[1]],parth[[1]],parti[[1]]},"vars"->{ parta[[2]],partb[[2]],partc[[2]],partd[[2]],parte[[2]],partf[[2]],partg[[2]],parth[[2]],parti[[2]]}, "sol"->{ parta[[3]],partb[[3]],partc[[3]],partd[[3]],parte[[3]],partf[[3]],partg[[3]],parth[[3]],parti[[3]]}|>,InputForm];

{StringReplace[ToString[canvasZ,InputForm],{"ertyuiop"->vars}],{ parta[[2]],partb[[2]],partc[[2]],partd[[2]],parte[[2]],partf[[2]],partg[[2]],parth[[2]],parti[[2]]}, { parta[[3]],partb[[3]],partc[[3]],partd[[3]],parte[[3]],partf[[3]],partg[[3]],parth[[3]],parti[[3]]}}


(* it has to be InputForm or ToExpression fails *)
]],InputForm]<>"\n ";


solution1=data1<>data2<>ToString[Hold[Module[{x, a,b,c,d,aa,bb,cc,dd,ee, ff, gg, hh, ii, jj, text,list,sol, body={},vars=ertyuiop,options=ERTYUIOP, varsa, varsb, varsc,varsd,varse,varsf,g,h,pp,teste,bb1,list123,pos1,t11,t12,t21,t22,s1,s2,sum1,sum2,k},





(*varsa=vars[[1]];
varsb=vars[[2]];*)



(*{aa,bb,cc,dd,ee,gg,pp}=varsa;
sol=Solve[ToExpression[bb]*x-ToExpression[cc]*(x-ToExpression[dd])==ToExpression[ee]-ToExpression[gg]*x,x];
*)


body={
{"",""

}, 
{Null ,Null} 
};


Panel[Grid[Transpose[body]]]

]],InputForm]<>"\n ";


hint1=ToString[Hold[Module[{aa,bb,cc,dd,ee, ff, gg, hh, ii, jj, text,list,sol, body={},vars=ertyuiop,options=ERTYUIOP},  


body={ 
{""
},
{Null}
};

Panel[Grid[Transpose[body]]]

]],InputForm]<>"\n ";

PRACTICE

proc1=ToString[{ToString[Hold[Module[{},"level"]],InputForm],variation1,hint1,solution1,canvas1},InputForm]<>";\n";

ToExpression@libGUI;
ToExpression@libIO;
ToExpression@libML;
ToExpression@libFUNC;
panelsMIX={ StringReplace[qCanvas0,{"pn0"->ToString[1],"proc0"->proc1,"libs"->(libLIST<>"\n"<>libNAMES<>"\n"<>libIO<>"\n"<>libERR<>"\n"<>libMISC<>"\n"<>libFUNC),"err0"->"{errNO4,errNO4,errNO4,errNO4,errNO4,errNO4,errNO4,errNO4,errNO4}","inputsize0"->"{5,5,5,5,5,5,5,5,5}","level00"->ToString[{1,1,{}}],"max0"->"3","mult0"->"9","diag00"->"0","IO00"->"qClick","logo"->ToString[,InputForm]}]

};

TEST

proc1=ToString[{ToString[Hold[Module[{},"level"]],InputForm],variation1,hint1,solution1,canvas1},InputForm]<>";\n";




ToExpression@libGUI;
ToExpression@libIO;
ToExpression@libML;
ToExpression@libFUNC;
panelsMIXTEST={ 

StringReplace[qCanvas0,{"pn0"->ToString[1],"proc0"->proc1,"libs"->(libLIST<>"\n"<>libNAMES<>"\n"<>libIO<>"\n"<>libERR<>"\n"<>libMISC<>"\n"<>libFUNC),"err0"->"{errNO4,errNO4,errNO4,errNO4,errNO4,errNO4,errNO4,errNO4,errNO4}","inputsize0"->"{5,5,5,5,5,5,5,5,5}","level00"->ToString[{1,1,{}}],"max0"->"3","mult0"->"9","diag00"->"1","IO00"->"qClick","logo"->ToString[,InputForm]}],



StringReplace[qSendLocal,{"libs"->(libLIST<>"\n"<>libIO<>"\n"<>libERR<>"\n"<>libMISC<>"\n"<>libFUNC),"path0"->"\"\"","examName0"->"\"MET CS248, Homework 3\"","examName20"->"\"MET CS248, Homework 3\"","examIDString20"->"\"MET CS248, Homework 3\"","logo"->ToString[,InputForm],"weights0"->"{1,1,1,1,1,1,1,1,1}"}]


};

HOMEWORK_CDF

CDFDeploy[ToFileName[{$UserDocumentsDirectory},"cs248_homework3_functions_PRAC.cdf"],Column[Table[ReleaseHold[ToExpression[panelsMIX[[i]]]],{i,1,Length[panelsMIX]}]],
"Method"->"Standalone"];

CDFDeploy[ToFileName[{$UserDocumentsDirectory},"cs248_homework3_functions.cdf"],Column[Table[ReleaseHold[ToExpression[panelsMIXTEST[[i]]]],{i,1,Length[panelsMIXTEST]}]],
"Method"->"Standalone"];

TEST AREA

Column[Table[ReleaseHold[ToExpression[panelsMIXTEST[[i]]]],{i,1,Length[panelsMIXTEST]}]]

ReleaseHold[ToExpression[panelsMIX[[3]]]]

Column[Table[ReleaseHold[ToExpression[panelsMIX[[i]]]],{i,1,Length[panelsMIX]}]]