LaTeX to CAS translator
This mockup demonstrates the concept of TeX to Computer Algebra System (CAS) conversion.
The demo-application converts LaTeX functions which directly translate to CAS counterparts.
Functions without explicit CAS support are available for translation via a DRMF package (under development).
The following LaTeX input ...
{\displaystyle g(z) = h(z)}
... is translated to the CAS output ...
Semantic latex: g(z) = h(z)
Confidence: 0
Mathematica
Translation: g[z] == h[z]
Information
Sub Equations
- g[z] = h[z]
Free variables
- z
Symbol info
- Function without DLMF-Definition. We keep it like it is (but delete prefix \ if necessary).
- Function without DLMF-Definition. We keep it like it is (but delete prefix \ if necessary).
Tests
Symbolic
Test expression: (g*(z))-(h*(z))
FAILURE: FullSimplify[(g*(z))-(h*(z))]:
{
"result": "FAILURE",
"testTitle": "Simple",
"testExpression": "FullSimplify[(g*(z))-(h*(z))]",
"resultExpression": "Times[Plus[g, Times[-1, h]], z]",
"wasAborted": false,
"conditionallySuccessful": false
}
Numeric
Test expression: (g*(z))-(h*(z))
SUCCESS: g = E^((I/6)*Pi), h = E^((I/6)*Pi), z = E^((I/6)*Pi), :
{
"result": "SUCCESS",
"resultExpression": "0.",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^((I\/6)*Pi)",
"z": "E^((I\/6)*Pi)"
}
}
SUCCESS: g = E^((I/6)*Pi), h = E^((I/6)*Pi), z = E^(((2*I)/3)*Pi), :
{
"result": "SUCCESS",
"resultExpression": "0.",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^((I\/6)*Pi)",
"z": "E^(((2*I)\/3)*Pi)"
}
}
SUCCESS: g = E^((I/6)*Pi), h = E^((I/6)*Pi), z = E^((-I/3)*Pi), :
{
"result": "SUCCESS",
"resultExpression": "0.",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^((I\/6)*Pi)",
"z": "E^((-I\/3)*Pi)"
}
}
SUCCESS: g = E^((I/6)*Pi), h = E^((I/6)*Pi), z = E^(((-5*I)/6)*Pi), :
{
"result": "SUCCESS",
"resultExpression": "0.",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^((I\/6)*Pi)",
"z": "E^(((-5*I)\/6)*Pi)"
}
}
SUCCESS: g = E^((I/6)*Pi), h = E^((I/6)*Pi), z = 3/2, :
{
"result": "SUCCESS",
"resultExpression": "0.",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^((I\/6)*Pi)",
"z": "3\/2"
}
}
SUCCESS: g = E^((I/6)*Pi), h = E^((I/6)*Pi), z = 1/2, :
{
"result": "SUCCESS",
"resultExpression": "0.",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^((I\/6)*Pi)",
"z": "1\/2"
}
}
SUCCESS: g = E^((I/6)*Pi), h = E^((I/6)*Pi), z = 2, :
{
"result": "SUCCESS",
"resultExpression": "0.",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^((I\/6)*Pi)",
"z": "2"
}
}
FAILURE: g = E^((I/6)*Pi), h = E^(((2*I)/3)*Pi), z = E^((I/6)*Pi), :
{
"result": "FAILURE",
"resultExpression": "1.3660254037844388 + 0.36602540378443865*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^(((2*I)\/3)*Pi)",
"z": "E^((I\/6)*Pi)"
}
}
FAILURE: g = E^((I/6)*Pi), h = E^(((2*I)/3)*Pi), z = E^(((2*I)/3)*Pi), :
{
"result": "FAILURE",
"resultExpression": "-0.36602540378443893 + 1.3660254037844386*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^(((2*I)\/3)*Pi)",
"z": "E^(((2*I)\/3)*Pi)"
}
}
FAILURE: g = E^((I/6)*Pi), h = E^(((2*I)/3)*Pi), z = E^((-I/3)*Pi), :
{
"result": "FAILURE",
"resultExpression": "0.3660254037844386 - 1.3660254037844386*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^(((2*I)\/3)*Pi)",
"z": "E^((-I\/3)*Pi)"
}
}
FAILURE: g = E^((I/6)*Pi), h = E^(((2*I)/3)*Pi), z = E^(((-5*I)/6)*Pi), :
{
"result": "FAILURE",
"resultExpression": "-1.3660254037844384 - 0.36602540378443876*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^(((2*I)\/3)*Pi)",
"z": "E^(((-5*I)\/6)*Pi)"
}
}
FAILURE: g = E^((I/6)*Pi), h = E^(((2*I)/3)*Pi), z = 3/2, :
{
"result": "FAILURE",
"resultExpression": "2.0490381056766576 - 0.5490381056766581*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^(((2*I)\/3)*Pi)",
"z": "3\/2"
}
}
FAILURE: g = E^((I/6)*Pi), h = E^(((2*I)/3)*Pi), z = 1/2, :
{
"result": "FAILURE",
"resultExpression": "0.6830127018922192 - 0.18301270189221938*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^(((2*I)\/3)*Pi)",
"z": "1\/2"
}
}
FAILURE: g = E^((I/6)*Pi), h = E^(((2*I)/3)*Pi), z = 2, :
{
"result": "FAILURE",
"resultExpression": "2.7320508075688767 - 0.7320508075688775*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^(((2*I)\/3)*Pi)",
"z": "2"
}
}
FAILURE: g = E^((I/6)*Pi), h = E^((-I/3)*Pi), z = E^((I/6)*Pi), :
{
"result": "FAILURE",
"resultExpression": "-0.3660254037844386 + 1.3660254037844386*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^((-I\/3)*Pi)",
"z": "E^((I\/6)*Pi)"
}
}
FAILURE: g = E^((I/6)*Pi), h = E^((-I/3)*Pi), z = E^(((2*I)/3)*Pi), :
{
"result": "FAILURE",
"resultExpression": "-1.3660254037844388 - 0.36602540378443865*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^((-I\/3)*Pi)",
"z": "E^(((2*I)\/3)*Pi)"
}
}
FAILURE: g = E^((I/6)*Pi), h = E^((-I/3)*Pi), z = E^((-I/3)*Pi), :
{
"result": "FAILURE",
"resultExpression": "1.3660254037844384 + 0.36602540378443876*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^((-I\/3)*Pi)",
"z": "E^((-I\/3)*Pi)"
}
}
FAILURE: g = E^((I/6)*Pi), h = E^((-I/3)*Pi), z = E^(((-5*I)/6)*Pi), :
{
"result": "FAILURE",
"resultExpression": "0.36602540378443893 - 1.3660254037844386*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^((-I\/3)*Pi)",
"z": "E^(((-5*I)\/6)*Pi)"
}
}
FAILURE: g = E^((I/6)*Pi), h = E^((-I/3)*Pi), z = 3/2, :
{
"result": "FAILURE",
"resultExpression": "0.5490381056766578 + 2.049038105676658*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^((-I\/3)*Pi)",
"z": "3\/2"
}
}
FAILURE: g = E^((I/6)*Pi), h = E^((-I/3)*Pi), z = 1/2, :
{
"result": "FAILURE",
"resultExpression": "0.1830127018922193 + 0.6830127018922193*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^((-I\/3)*Pi)",
"z": "1\/2"
}
}
FAILURE: g = E^((I/6)*Pi), h = E^((-I/3)*Pi), z = 2, :
{
"result": "FAILURE",
"resultExpression": "0.7320508075688772 + 2.732050807568877*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^((-I\/3)*Pi)",
"z": "2"
}
}
FAILURE: g = E^((I/6)*Pi), h = E^(((-5*I)/6)*Pi), z = E^((I/6)*Pi), :
{
"result": "FAILURE",
"resultExpression": "0.9999999999999999 + 1.7320508075688772*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^(((-5*I)\/6)*Pi)",
"z": "E^((I\/6)*Pi)"
}
}
FAILURE: g = E^((I/6)*Pi), h = E^(((-5*I)/6)*Pi), z = E^(((2*I)/3)*Pi), :
{
"result": "FAILURE",
"resultExpression": "-1.7320508075688774 + 0.9999999999999999*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^(((-5*I)\/6)*Pi)",
"z": "E^(((2*I)\/3)*Pi)"
}
}
FAILURE: g = E^((I/6)*Pi), h = E^(((-5*I)/6)*Pi), z = E^((-I/3)*Pi), :
{
"result": "FAILURE",
"resultExpression": "1.7320508075688774 - 0.9999999999999999*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^(((-5*I)\/6)*Pi)",
"z": "E^((-I\/3)*Pi)"
}
}
FAILURE: g = E^((I/6)*Pi), h = E^(((-5*I)/6)*Pi), z = E^(((-5*I)/6)*Pi), :
{
"result": "FAILURE",
"resultExpression": "-0.9999999999999999 - 1.7320508075688772*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^(((-5*I)\/6)*Pi)",
"z": "E^(((-5*I)\/6)*Pi)"
}
}
FAILURE: g = E^((I/6)*Pi), h = E^(((-5*I)/6)*Pi), z = 3/2, :
{
"result": "FAILURE",
"resultExpression": "2.598076211353316 + 1.4999999999999998*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^(((-5*I)\/6)*Pi)",
"z": "3\/2"
}
}
FAILURE: g = E^((I/6)*Pi), h = E^(((-5*I)/6)*Pi), z = 1/2, :
{
"result": "FAILURE",
"resultExpression": "0.8660254037844387 + 0.49999999999999994*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^(((-5*I)\/6)*Pi)",
"z": "1\/2"
}
}
FAILURE: g = E^((I/6)*Pi), h = E^(((-5*I)/6)*Pi), z = 2, :
{
"result": "FAILURE",
"resultExpression": "3.464101615137755 + 1.9999999999999998*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "E^(((-5*I)\/6)*Pi)",
"z": "2"
}
}
FAILURE: g = E^((I/6)*Pi), h = -3/2, z = E^((I/6)*Pi), :
{
"result": "FAILURE",
"resultExpression": "1.799038105676658 + 1.6160254037844384*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "-3\/2",
"z": "E^((I\/6)*Pi)"
}
}
FAILURE: g = E^((I/6)*Pi), h = -3/2, z = E^(((2*I)/3)*Pi), :
{
"result": "FAILURE",
"resultExpression": "-1.6160254037844384 + 1.799038105676658*I",
"testValues": {
"g": "E^((I\/6)*Pi)",
"h": "-3\/2",
"z": "E^(((2*I)\/3)*Pi)"
}
}
SymPy
Translation: g(z) == h(z)
Information
Sub Equations
- g(z) = h(z)
Free variables
- z
Symbol info
- Function without DLMF-Definition. We keep it like it is (but delete prefix \ if necessary).
- Function without DLMF-Definition. We keep it like it is (but delete prefix \ if necessary).
Tests
Symbolic
Numeric
Maple
Translation: g(z) = h(z)
Information
Sub Equations
- g(z) = h(z)
Free variables
- z
Symbol info
- Function without DLMF-Definition. We keep it like it is (but delete prefix \ if necessary).
- Function without DLMF-Definition. We keep it like it is (but delete prefix \ if necessary).
Tests
Symbolic
Numeric
Dependency Graph Information
Includes
Is part of
Description
- test case
- adjacent relation
- i.e.
Complete translation information:
{
"id" : "FORMULA_5bb1ebf5718bef031015b81ec09a0e47",
"formula" : "g(z) = h(z)",
"semanticFormula" : "g(z) = h(z)",
"confidence" : 0.0,
"translations" : {
"Mathematica" : {
"translation" : "g[z] == h[z]",
"translationInformation" : {
"subEquations" : [ "g[z] = h[z]" ],
"freeVariables" : [ "z" ],
"tokenTranslations" : {
"h" : "Function without DLMF-Definition. We keep it like it is (but delete prefix \\ if necessary).",
"g" : "Function without DLMF-Definition. We keep it like it is (but delete prefix \\ if necessary)."
}
},
"numericResults" : {
"overallResult" : "FAILURE",
"numberOfTests" : 30,
"numberOfFailedTests" : 23,
"numberOfSuccessfulTests" : 7,
"numberOfSkippedTests" : 0,
"numberOfErrorTests" : 0,
"wasAborted" : false,
"crashed" : false,
"testCalculationsGroups" : [ {
"lhs" : "g*(z)",
"rhs" : "h*(z)",
"testExpression" : "(g*(z))-(h*(z))",
"activeConstraints" : [ "-Pi < Arg[z]", "Arg[z] < Pi" ],
"testCalculations" : [ {
"result" : "SUCCESS",
"resultExpression" : "0.",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^((I/6)*Pi)",
"z" : "E^((I/6)*Pi)"
}
}, {
"result" : "SUCCESS",
"resultExpression" : "0.",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^((I/6)*Pi)",
"z" : "E^(((2*I)/3)*Pi)"
}
}, {
"result" : "SUCCESS",
"resultExpression" : "0.",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^((I/6)*Pi)",
"z" : "E^((-I/3)*Pi)"
}
}, {
"result" : "SUCCESS",
"resultExpression" : "0.",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^((I/6)*Pi)",
"z" : "E^(((-5*I)/6)*Pi)"
}
}, {
"result" : "SUCCESS",
"resultExpression" : "0.",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^((I/6)*Pi)",
"z" : "3/2"
}
}, {
"result" : "SUCCESS",
"resultExpression" : "0.",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^((I/6)*Pi)",
"z" : "1/2"
}
}, {
"result" : "SUCCESS",
"resultExpression" : "0.",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^((I/6)*Pi)",
"z" : "2"
}
}, {
"result" : "FAILURE",
"resultExpression" : "1.3660254037844388 + 0.36602540378443865*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^(((2*I)/3)*Pi)",
"z" : "E^((I/6)*Pi)"
}
}, {
"result" : "FAILURE",
"resultExpression" : "-0.36602540378443893 + 1.3660254037844386*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^(((2*I)/3)*Pi)",
"z" : "E^(((2*I)/3)*Pi)"
}
}, {
"result" : "FAILURE",
"resultExpression" : "0.3660254037844386 - 1.3660254037844386*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^(((2*I)/3)*Pi)",
"z" : "E^((-I/3)*Pi)"
}
}, {
"result" : "FAILURE",
"resultExpression" : "-1.3660254037844384 - 0.36602540378443876*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^(((2*I)/3)*Pi)",
"z" : "E^(((-5*I)/6)*Pi)"
}
}, {
"result" : "FAILURE",
"resultExpression" : "2.0490381056766576 - 0.5490381056766581*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^(((2*I)/3)*Pi)",
"z" : "3/2"
}
}, {
"result" : "FAILURE",
"resultExpression" : "0.6830127018922192 - 0.18301270189221938*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^(((2*I)/3)*Pi)",
"z" : "1/2"
}
}, {
"result" : "FAILURE",
"resultExpression" : "2.7320508075688767 - 0.7320508075688775*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^(((2*I)/3)*Pi)",
"z" : "2"
}
}, {
"result" : "FAILURE",
"resultExpression" : "-0.3660254037844386 + 1.3660254037844386*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^((-I/3)*Pi)",
"z" : "E^((I/6)*Pi)"
}
}, {
"result" : "FAILURE",
"resultExpression" : "-1.3660254037844388 - 0.36602540378443865*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^((-I/3)*Pi)",
"z" : "E^(((2*I)/3)*Pi)"
}
}, {
"result" : "FAILURE",
"resultExpression" : "1.3660254037844384 + 0.36602540378443876*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^((-I/3)*Pi)",
"z" : "E^((-I/3)*Pi)"
}
}, {
"result" : "FAILURE",
"resultExpression" : "0.36602540378443893 - 1.3660254037844386*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^((-I/3)*Pi)",
"z" : "E^(((-5*I)/6)*Pi)"
}
}, {
"result" : "FAILURE",
"resultExpression" : "0.5490381056766578 + 2.049038105676658*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^((-I/3)*Pi)",
"z" : "3/2"
}
}, {
"result" : "FAILURE",
"resultExpression" : "0.1830127018922193 + 0.6830127018922193*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^((-I/3)*Pi)",
"z" : "1/2"
}
}, {
"result" : "FAILURE",
"resultExpression" : "0.7320508075688772 + 2.732050807568877*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^((-I/3)*Pi)",
"z" : "2"
}
}, {
"result" : "FAILURE",
"resultExpression" : "0.9999999999999999 + 1.7320508075688772*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^(((-5*I)/6)*Pi)",
"z" : "E^((I/6)*Pi)"
}
}, {
"result" : "FAILURE",
"resultExpression" : "-1.7320508075688774 + 0.9999999999999999*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^(((-5*I)/6)*Pi)",
"z" : "E^(((2*I)/3)*Pi)"
}
}, {
"result" : "FAILURE",
"resultExpression" : "1.7320508075688774 - 0.9999999999999999*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^(((-5*I)/6)*Pi)",
"z" : "E^((-I/3)*Pi)"
}
}, {
"result" : "FAILURE",
"resultExpression" : "-0.9999999999999999 - 1.7320508075688772*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^(((-5*I)/6)*Pi)",
"z" : "E^(((-5*I)/6)*Pi)"
}
}, {
"result" : "FAILURE",
"resultExpression" : "2.598076211353316 + 1.4999999999999998*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^(((-5*I)/6)*Pi)",
"z" : "3/2"
}
}, {
"result" : "FAILURE",
"resultExpression" : "0.8660254037844387 + 0.49999999999999994*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^(((-5*I)/6)*Pi)",
"z" : "1/2"
}
}, {
"result" : "FAILURE",
"resultExpression" : "3.464101615137755 + 1.9999999999999998*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "E^(((-5*I)/6)*Pi)",
"z" : "2"
}
}, {
"result" : "FAILURE",
"resultExpression" : "1.799038105676658 + 1.6160254037844384*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "-3/2",
"z" : "E^((I/6)*Pi)"
}
}, {
"result" : "FAILURE",
"resultExpression" : "-1.6160254037844384 + 1.799038105676658*I",
"testValues" : {
"g" : "E^((I/6)*Pi)",
"h" : "-3/2",
"z" : "E^(((2*I)/3)*Pi)"
}
} ]
} ]
},
"symbolicResults" : {
"overallResult" : "FAILURE",
"numberOfTests" : 1,
"numberOfFailedTests" : 1,
"numberOfSuccessfulTests" : 0,
"numberOfSkippedTests" : 0,
"numberOfErrorTests" : 0,
"crashed" : false,
"testCalculationsGroup" : [ {
"lhs" : "g*(z)",
"rhs" : "h*(z)",
"testExpression" : "(g*(z))-(h*(z))",
"testCalculations" : [ {
"result" : "FAILURE",
"testTitle" : "Simple",
"testExpression" : "FullSimplify[(g*(z))-(h*(z))]",
"resultExpression" : "Times[Plus[g, Times[-1, h]], z]",
"wasAborted" : false,
"conditionallySuccessful" : false
} ]
} ]
}
},
"SymPy" : {
"translation" : "g(z) == h(z)",
"translationInformation" : {
"subEquations" : [ "g(z) = h(z)" ],
"freeVariables" : [ "z" ],
"tokenTranslations" : {
"h" : "Function without DLMF-Definition. We keep it like it is (but delete prefix \\ if necessary).",
"g" : "Function without DLMF-Definition. We keep it like it is (but delete prefix \\ if necessary)."
}
}
},
"Maple" : {
"translation" : "g(z) = h(z)",
"translationInformation" : {
"subEquations" : [ "g(z) = h(z)" ],
"freeVariables" : [ "z" ],
"tokenTranslations" : {
"h" : "Function without DLMF-Definition. We keep it like it is (but delete prefix \\ if necessary).",
"g" : "Function without DLMF-Definition. We keep it like it is (but delete prefix \\ if necessary)."
}
}
}
},
"positions" : [ {
"section" : 7,
"sentence" : 8,
"word" : 21
} ],
"includes" : [ "z", "f(z) = h(z)", "=" ],
"isPartOf" : [ "f(z) = g(z) = h(z)", "f(z) = h(z)" ],
"definiens" : [ {
"definition" : "test case",
"score" : 0.7125985104912714
}, {
"definition" : "adjacent relation",
"score" : 0.6859086196238077
}, {
"definition" : "i.e.",
"score" : 0.6859086196238077
} ]
}