1 |
- {"version":3,"sources":["webpack://ivprogCore/webpack/universalModuleDefinition","webpack://ivprogCore/webpack/bootstrap","webpack://ivprogCore/./grammar/en/ivprog.g4","webpack://ivprogCore/./grammar/en/langFunctions.js","webpack://ivprogCore/./grammar/en/langLibs.js","webpack://ivprogCore/./grammar/es/ivprog.g4","webpack://ivprogCore/./grammar/es/langFunctions.js","webpack://ivprogCore/./grammar/es/langLibs.js","webpack://ivprogCore/./grammar/index.js","webpack://ivprogCore/./grammar/pt/ivprog.g4","webpack://ivprogCore/./grammar/pt/langFunctions.js","webpack://ivprogCore/./grammar/pt/langLibs.js","webpack://ivprogCore/./i18n/error.csv","webpack://ivprogCore/./i18n/index.ts","webpack://ivprogCore/./i18n/message.csv","webpack://ivprogCore/./i18n/ui.csv","webpack://ivprogCore/./js/assessment/ivprogAssessment.js","webpack://ivprogCore/./js/assessment/output_matching/assessment_result.js","webpack://ivprogCore/./js/assessment/output_matching/output_matching.js","webpack://ivprogCore/./js/assessment/output_matching/output_result.js","webpack://ivprogCore/./js/ast/ast_helpers.js","webpack://ivprogCore/./js/ast/commands/arrayAssign.js","webpack://ivprogCore/./js/ast/commands/arrayDeclaration.js","webpack://ivprogCore/./js/ast/commands/assign.js","webpack://ivprogCore/./js/ast/commands/break.js","webpack://ivprogCore/./js/ast/commands/case.js","webpack://ivprogCore/./js/ast/commands/command.js","webpack://ivprogCore/./js/ast/commands/commandBlock.js","webpack://ivprogCore/./js/ast/commands/declaration.js","webpack://ivprogCore/./js/ast/commands/for.js","webpack://ivprogCore/./js/ast/commands/formalParameter.js","webpack://ivprogCore/./js/ast/commands/function.js","webpack://ivprogCore/./js/ast/commands/ifThenElse.js","webpack://ivprogCore/./js/ast/commands/index.js","webpack://ivprogCore/./js/ast/commands/repeatUntil.js","webpack://ivprogCore/./js/ast/commands/return.js","webpack://ivprogCore/./js/ast/commands/switch.js","webpack://ivprogCore/./js/ast/commands/sysCall.js","webpack://ivprogCore/./js/ast/commands/while.js","webpack://ivprogCore/./js/ast/error/syntaxError.js","webpack://ivprogCore/./js/ast/error/syntaxErrorFactory.js","webpack://ivprogCore/./js/ast/expressions/arrayAccess.js","webpack://ivprogCore/./js/ast/expressions/arrayLiteral.js","webpack://ivprogCore/./js/ast/expressions/boolLiteral.js","webpack://ivprogCore/./js/ast/expressions/expression.js","webpack://ivprogCore/./js/ast/expressions/functionCall.js","webpack://ivprogCore/./js/ast/expressions/index.js","webpack://ivprogCore/./js/ast/expressions/infixApp.js","webpack://ivprogCore/./js/ast/expressions/intLiteral.js","webpack://ivprogCore/./js/ast/expressions/literal.js","webpack://ivprogCore/./js/ast/expressions/realLiteral.js","webpack://ivprogCore/./js/ast/expressions/stringLiteral.js","webpack://ivprogCore/./js/ast/expressions/unaryApp.js","webpack://ivprogCore/./js/ast/expressions/variableLiteral.js","webpack://ivprogCore/./js/ast/ivprogParser.js","webpack://ivprogCore/./js/ast/operators.js","webpack://ivprogCore/./js/ast/sourceInfo.js","webpack://ivprogCore/./js/io/domConsole.js","webpack://ivprogCore/./js/io/input.js","webpack://ivprogCore/./js/io/output.js","webpack://ivprogCore/./js/main.js","webpack://ivprogCore/./js/memory/address.ts","webpack://ivprogCore/./js/memory/location.ts","webpack://ivprogCore/./js/processor/compatibilityTable.js","webpack://ivprogCore/./js/processor/context.ts","webpack://ivprogCore/./js/processor/definedFunctions.js","webpack://ivprogCore/./js/processor/error/processorErrorFactory.js","webpack://ivprogCore/./js/processor/error/runtimeError.js","webpack://ivprogCore/./js/processor/error/semanticError.js","webpack://ivprogCore/./js/processor/ivprogProcessor.js","webpack://ivprogCore/./js/processor/lib/arrays.js","webpack://ivprogCore/./js/processor/lib/io.js","webpack://ivprogCore/./js/processor/lib/lang.js","webpack://ivprogCore/./js/processor/lib/math.js","webpack://ivprogCore/./js/processor/lib/strings.js","webpack://ivprogCore/./js/processor/modes.ts","webpack://ivprogCore/./js/processor/semantic/semanticAnalyser.js","webpack://ivprogCore/./js/processor/store/store.ts","webpack://ivprogCore/./js/processor/store/storeObject.ts","webpack://ivprogCore/./js/processor/store/storeObjectArray.ts","webpack://ivprogCore/./js/processor/store/storeObjectRef.ts","webpack://ivprogCore/./js/processor/store/store_object_array_ref.ts","webpack://ivprogCore/./js/processor/store/value/array_store_value.ts","webpack://ivprogCore/./js/processor/store/value/array_store_value_ref.ts","webpack://ivprogCore/./js/processor/store/value/store_value.ts","webpack://ivprogCore/./js/processor/store/value/store_value_address.ts","webpack://ivprogCore/./js/processor/store/value/store_value_ref.ts","webpack://ivprogCore/./js/runner.js","webpack://ivprogCore/./js/services/i18nHelper.js","webpack://ivprogCore/./js/services/languageService.js","webpack://ivprogCore/./js/services/localizedStringsService.js","webpack://ivprogCore/./js/services/userLog.js","webpack://ivprogCore/./js/typeSystem/array_type.ts","webpack://ivprogCore/./js/typeSystem/multiType.ts","webpack://ivprogCore/./js/typeSystem/parsers.js","webpack://ivprogCore/./js/typeSystem/type.ts","webpack://ivprogCore/./js/typeSystem/types.ts","webpack://ivprogCore/./js/util/auto_gen_output.js","webpack://ivprogCore/./js/util/config.js","webpack://ivprogCore/./js/util/editorMode2.js","webpack://ivprogCore/./js/util/iassignHelpers.js","webpack://ivprogCore/./js/util/inputTest.js","webpack://ivprogCore/./js/util/input_assessment.js","webpack://ivprogCore/./js/util/maybe.ts","webpack://ivprogCore/./js/util/outputTest.js","webpack://ivprogCore/./js/util/string_diff.js","webpack://ivprogCore/./js/util/testConsole.js","webpack://ivprogCore/./js/util/utils.js","webpack://ivprogCore/./js/visualUI/algorithm.js","webpack://ivprogCore/./js/visualUI/code_generator.js","webpack://ivprogCore/./js/visualUI/commands.js","webpack://ivprogCore/./js/visualUI/commands/attribution.js","webpack://ivprogCore/./js/visualUI/commands/break.js","webpack://ivprogCore/./js/visualUI/commands/comment.js","webpack://ivprogCore/./js/visualUI/commands/conditional_expression.js","webpack://ivprogCore/./js/visualUI/commands/contextualized_menu.js","webpack://ivprogCore/./js/visualUI/commands/dowhiletrue.js","webpack://ivprogCore/./js/visualUI/commands/functioncall.js","webpack://ivprogCore/./js/visualUI/commands/generic_expression.js","webpack://ivprogCore/./js/visualUI/commands/iftrue.js","webpack://ivprogCore/./js/visualUI/commands/reader.js","webpack://ivprogCore/./js/visualUI/commands/repeatNtimes.js","webpack://ivprogCore/./js/visualUI/commands/return.js","webpack://ivprogCore/./js/visualUI/commands/switch.js","webpack://ivprogCore/./js/visualUI/commands/variable_value_menu.js","webpack://ivprogCore/./js/visualUI/commands/whiletrue.js","webpack://ivprogCore/./js/visualUI/commands/writer.js","webpack://ivprogCore/./js/visualUI/functions.js","webpack://ivprogCore/./js/visualUI/globals.js","webpack://ivprogCore/./js/visualUI/ivprog_elements.js","webpack://ivprogCore/./js/visualUI/text_editor.js","webpack://ivprogCore/./js/visualUI/types.js","webpack://ivprogCore/./js/visualUI/utils.js","webpack://ivprogCore/./js/visualUI/variables.js"],"names":["main_function","$read","$write","$numElements","$matrixLines","$matrixColumns","$substring","$length","$uppercase","$lowercase","$charAt","$isReal","$isInt","$isBool","$castReal","$castInt","$castBool","$castString","$sin","$cos","$tan","$sqrt","$pow","$log","$abs","$negate","$invert","$max","$min","$rand","$mathLib","$ioLib","$strLib","$arrayLib","$langLib","pt","lexer","PT","langFuncs","PTFuncs","langLibs","PTLibs","en","EN","ENFuncs","ENLibs","es","ES","ESFuncs","ESLibs","LocalizedStrings","LocalizedStringsService","StringTypes","line_i18n","AssessmentConfig","max_instruction_count","suspend_threshold","IVProgAssessment","ast_code","testCases","domConsole","old_config","JSON","parse","stringify","Config","setConfig","partialTests","map","t","name","OutputMatching","IVProgProcessor","input","output","testResult","om","eval","Promise","all","then","results","grade","i","length","result","writeToConsole","DOMConsole","INFO","MESSAGE","generateOutput","status","ERR","ERROR","error_msg","channel","toFixed","error","showErrorMessage","err","message","resolve","errorID","args","getError","msgID","info","getMessage","msgType","msg","getString","processString","USER","write","OutputAssessmentResult","inputs","store","time","template","DETAIL_TEMPLATE","replace","getUI","input_spans","prepareInputList","output_rows","type","formatString","formatNumber","formatBool","prepareOutputTable","failed_text","FAILED_TEMPLATE","input_list","list","INPUT_INFO_TEMPLATE","value","read","join","OUPUT_TABLE_TEMPLATE","assessment_result","prepareResults","page","PAGE_TEMPLATE","result_class","formatOutput","expected_class","generated_class","OUTPUT_TEMPLATE","expected_tmpl","expected","generated_tmpl","generated","EMPTY_OUTPUT_TEMPLATE","final_result","g_string","e_string","diff","StringDiff","diff_vec","part","getDiffStringStyle","diff_string","reduce","prev","actual","text","action","INSERT","DELETE","EQUAL","val","str","RegExp","program","expected_output","test_name","refThis","InputAssessment","gen_output","OutputTest","registerInput","registerOutput","start_time","Date","now","interpretAST","sto","final_time","isInputAvailable","getErrorMessage","g_out","OutputResult","getPotentialOutputType","outputMatch","e_out","push","NUM_REGEX","test","BOOLEAN_REGEX","g_output","e_output","checkStrings","g_num","Decimal","e_num","checkNumbers","g_bool","TypeParser","e_bool","checkBoolean","decimalPlaces","Math","min","dp","ROUND_FLOOR","eq","toNumber","g_bool_text","e_bool_text","e_ouput","assessmentList","e_output_clean","g_output_clean","NUM_IN_STRING_REGEX","expected_numbers","match","generated_numbers","g_val","e_val","trim","numberGrade","r","BOOLEAN_IN_STRING_REGEX","expected_bools","generated_bools","boolGrade","dist","levenshteinDistance","gradeDiff","max","Number","isNaN","assessment_size","gradeAcc","finalGrade","createNumberResult","OutputMatchResult","createBoolResult","createStringResult","recover","_","start","_tokenStartCharIndex","stop","_input","index","getText","getErrorDisplay","line","_tokenStartLine","column","_tokenStartColumn","SyntaxErrorFactory","invalid_character","ArrayIndexAssign","id","lineExpression","columnExpression","expression","Assign","ArrayDeclaration","lines","columns","initial","isConst","Declaration","Command","Break","Case","commands","_sourceInfo","sourceInfo","CommandBlock","variables","For","for_id","for_from","for_to","for_pass","commandBlock","FormalParameter","byRef","Function","returnType","formalParameters","isCompatible","Types","VOID","IfThenElse","condition","ifTrue","ifFalse","RepeatUntil","While","Return","Switch","cases","SysCall","langFunc","SyntaxError","Error","captureStackTrace","createError","message_id","context","Object","freeze","extra_lines","token_missing_one","token","token_missing_list","expectedList","getOR","id_missing","eos_missing","invalid_array_dimension","typeName","invalid_array_size","invalid_main_return","invalid_var_declaration","invalid_break_command","cmdName","invalid_terminal","invalid_type","const_not_init","invalid_id_format","duplicate_function","main_parameters","duplicate_variable","_column","annonymous_array_literal","invalid_matrix_literal_line","exp","cannot_infer_matrix_line","cannot_infer_matrix_column","cannot_infer_vector_size","matrix_to_vector_literal_attr","vector_to_matrix_literal_attr","array_init_not_literal","array_exceeds_2d","invalid_matrix_id_dimension","invalid_vector_init","invalid_matrix_init","ArrayAccess","strLine","toString","strColumn","parenthesis","Expression","ArrayLiteral","valid","strList","arrayLiteral","element","validateSize","validateType","Literal","BoolLiteral","BOOLEAN","convertBoolToString","_parenthesis","flag","FunctionCall","actualParameters","isMainCall","LanguageDefinedFunction","getMainFunctionName","getLocalName","params","strParams","v","InfixApp","op","left","right","l","IntLiteral","INTEGER","convertToString","RealLiteral","REAL","StringLiteral","STRING","UnaryApp","VariableLiteral","UNDEFINED","IVProgParser","lexerClass","LanguageService","getCurrentLexer","inputStream","InputStream","AstHelpers","bind","tokenStream","CommonTokenStream","fill","pos","variableTypes","RK_INTEGER","RK_REAL","RK_BOOLEAN","RK_STRING","functionTypes","concat","RK_VOID","parsingArrayDimension","scope","getCurrentLangFuncs","definedFuncsNameList","definedVariablesStack","parseProgram","LT","BASE","pop","getToken","fetchedEOF","consumeNewLines","globalVars","functions","RK_PROGRAM","checkOpenCurly","pushVariableStack","RK_CONST","isVariableType","parseGlobalVariables","RK_FUNCTION","parseFunction","popVariableStack","checkCloseCurly","isEOF","global","literalNames","attempt","OPEN_CURLY","CLOSE_CURLY","OPEN_BRACE","CLOSE_BRACE","OPEN_PARENTHESIS","CLOSE_PARENTHESIS","eosToken","EOS","functionID","funcIDToken","indexOf","variableID","getCurrentVariableStack","decl","parseMaybeConst","checkEOS","constToken","typeString","parseType","parseDeclaration","getTypeArray","dim1","dim2","dimensions","SourceInfo","createSourceInfo","idString","parseID","checkVariableDuplicate","checkOpenBrace","parseArrayDimension","checkCloseBrace","parseArrayDeclaration","equalsToken","parseExpressionOR","declaration","Commands","commaToken","COMMA","n_lines","n_columns","dim_is_id","Expressions","parseArrayLiteral","isVector","expString","toInt","ArrayType","find","dimToken","getIntLiteral","ID","parseVariable","toReal","toBool","openCurly","invalid_token","beginArray","data","maybeCurlyOpen","parseVectorList","parseExpressionList","endArray","createSourceInfoFromList","dataDim","console","log","lastSize","pushScope","FUNCTION","formalParams","funType","checkFunctionDuplicate","checkOpenParenthesis","checkCloseParenthesis","parseFormalParameters","commandsBlock","parseCommandBlock","func","isMain","popScope","reference","maybeIDToken","RK_REFERENCE","parameter","insideScope","LIB_ID","optionalCurly","variablesDecl","hasOpen","parsedCommand","cmd","parseCommand","Array","lastToken","varType","parseIDCommand","RK_RETURN","parseReturn","RK_WHILE","RK_WHILE_ALT","parseWhile","RK_FOR","RK_FOR_ALT","parseFor","RK_BREAK","BREAKABLE","parseBreak","RK_SWITCH","parseSwitchCase","RK_DO","parseRepeatUntil","RK_IF","parseIfThenElse","casesList","parseCases","whileToken","RK_DO_UNTIL","COMMAND","logicalExpression","cmdBlocks","maybeElse","RK_ELSE","maybeIf","elseBlock","for_token","id_token","parseForParameters","RK_FOR_FROM","RK_FOR_TO","maybePass","RK_FOR_PASS","refToken","isID","parseMaybeLibID","parseExpression","equalToken","equalOrParenthesis","funcCall","parseFunctionCallCommand","keyword_code","from_token","keyword","int_or_id","is_unary_op","SUM_OP","convertFromString","RK_CASE","nextToken","RK_DEFAULT","colonToken","COLON","block","defaultCase","setCommands","aCase","caseToken","exp1","parseExpressionAND","OR_OPERATOR","opToken","or","exp2","finalExp","parseExpressionNot","AND_OPERATOR","and","maybeNotToken","NOT_OPERATOR","not","parseExpressionRel","RELATIONAL_OPERATOR","relToken","rel","factor","parseFactor","sumOpToken","factor2","term","parseTerm","MULTI_OP","multOpToken","term2","getRealLiteral","getStringLiteral","RK_TRUE","RK_FALSE","getBoolLiteral","parseIDTerm","parseParenthesisExp","tokenA","tokenB","firstIndex","secondIndex","parseFunctionCallExpression","getInternalName","parseActualParameters","funcName","getFunctionName","maybeToken","types","x","Operators","ADD","ord","SUB","MULT","DIV","MOD","GT","GE","LE","EQ","NEQ","AND","OR","NOT","size","tokenIndex","elementID","disableMarginTop","cursorInterval","idleInterval","inputDiv","inputCMD","inputSpan","cursorRef","needInput","clearBtn","hideBtn","showBtn","termDiv","anyKey","actualID","substring","parent","document","getElementById","setup","inputListeners","hideInput","pending_writes","last_clear","_setupDom","_setupEvents","addEventListener","clearBtnClick","hideBtnClick","showBtnClick","event","keyCode","which","clearInterval","notifyListeners","_appendUserInput","innerHTML","bashNode","createElement","classList","add","BASH_TEMPLATE","querySelector","INPUT_CARET_TEMPLATE","setAttribute","append","_setupCursor","window","$","popup","content","blinkCaretAndFocus","updateSpanText","stopBlinkCaret","focus","setInterval","style","visibility","scheduleNotify","forEach","splice","_appendText","write_time","pending_write","setTimeout","shift","divClass","getClassForType","textDiv","getOutputText","insertBefore","scrollTerm","INPUT","getUserInputText","scrollTop","scrollHeight","display","top","marginTop","showInput","isElementInViewport","scrollIntoView","removeEventListener","cNode","cloneNode","parentNode","replaceChild","click","callback","split","clearTimeout","clearPendingWrites","parentElement","childNodes","removeChild","firstChild","clear","hide","notifyIdle","idle_input_interval","Input","Output","CodeEditor","initTextEditor","CodeEditorAll","setCode","getCode","updateEditor","disable","i18n","i18nHelper","buildInfixAddTable","table","buildInfixMultiDivSubTable","buildInfixEqualityInequalityTable","buildInfixRelationalTable","buildInfixAndOrTable","buildInfixModTable","buildUnarySumSubList","buildUnaryNegList","buildInfixCompatibilityTable","compatibilityMap","WeakMap","set","buildUnaryCompatibilityTable","infixMap","unaryMap","resultTypeAfterInfixOp","operator","leftExpressionType","rightExpressionType","MultiType","newMulti","typeA","j","typeB","filter","enable_type_casting","resultType","get","undefined","e","TypeError","resultTypeAfterUnaryOp","valueToKey","object","key","prototype","hasOwnProperty","call","concatObjects","obj","libsObject","createSinFun","createCosFun","createTanFun","createSqrtFun","createPowFun","createLogFun","createAbsFun","createNegateFun","createInvertFun","createMaxFun","createMinFun","createRandFun","createInputFun","createOutputFun","createSubstringFun","createLengthFun","createUppercaseFun","createLowercaseFun","createrCharAtFun","createNumElementsFun","createMatrixLinesFun","createMatrixColumnsFun","createIsRealFun","createIsIntFun","createIsBoolFun","createCastRealFun","createCastIntFun","createCastBoolFun","createCastStringFun","funcsObject","localName","names","lib","getCurrentLangLibs","internalName","getFunction","libName","funName","createRuntimeError","i18n_id","RuntimeError","createSemanticError","SemanticError","ProcessorErrorFactory","symbol_not_found_full","symbol_not_found","function_missing_full","function_missing","main_missing","array_dimension_not_int_full","array_dimension_not_int","unknown_command_full","unknown_command","incompatible_types_full","left_type","left_dim","right_type","right_dim","source_info","translateType","incompatible_types","incompatible_types_array_full","dim","incompatible_types_array","loop_condition_type_full","loop_condition_type","endless_loop_full","endless_loop","if_condition_type_full","if_condition_type","invalid_global_var","not_implemented","invalid_case_type_full","invalid_case_type","void_in_expression_full","void_in_expression","invalid_array_access_full","invalid_array_access","invalid_matrix_access_full","invalid_matrix_access","matrix_column_outbounds_full","matrix_column_outbounds","matrix_line_outbounds_full","matrix_line_outbounds","vector_line_outbounds_full","vector_line_outbounds","vector_not_matrix_full","vector_not_matrix","function_no_return","invalid_void_return_full","invalid_void_return","invalid_return_type_full","invalid_return_type","invalid_parameters_size_full","invalid_parameters_size","invalid_parameter_type_full","fun_name","invalid_parameter_type","invalid_ref_full","invalid_ref","unexpected_break_command_full","unexpected_break_command","invalid_array_literal_type_full","invalid_array_literal_type","invalid_array_literal_line_full","invalid_array_literal_line","invalid_array_literal_column_full","invalid_array_literal_column","invalid_unary_op_full","opName","translateOp","invalid_unary_op","invalid_infix_op_full","typeLeft","dimLeft","typeRight","dimRight","invalid_infix_op","array_dimension_not_positive_full","array_dimension_not_positive","invalid_type_conversion","invalid_read_type","invalid_read_type_array","typePos","dimPos","typeArray","dimArray","invalid_const_ref_full","invalid_const_ref","invalid_const_assignment_full","var_id","invalid_const_assignment","invalid_vector_assignment_full","left_id","left_size","right_id","right_size","invalid_vector_assignment","invalid_matrix_assignment_full","left_line","left_column","right_line","right_column","invalid_matrix_assignment","matrix_to_vector_attr","vector_to_matrix_attr","invalid_matrix_index_assign_full","mat_id","mat_line","mat_size","exp_size","invalid_matrix_index_assign","invalid_number_elements_vector","expected_num","actual_num","invalid_number_lines_matrix","divsion_by_zero_full","divsion_by_zero","undefined_tanget_value","negative_log_value","invalid_string_index","local_fun_name","negative_sqrt_value","exceeded_recursive_calls","invalid_for_variable","invalid_for_from","invalid_for_to","invalid_for_pass","exceed_max_instructions","ast","globalStore","Store","stores","Context","forceKill","mode","Modes","RUN","function_call_stack","instruction_count","function_call_count","RETURN","BREAK","prepareState","Location","initGlobal","mainFunc","findMainFunction","reject","runFunction","checkContext","executeCommands","MAIN_INTERNAL_ID","fun","funcStore","extendStore","run_lambda","newFuncStore$","associateParameters","variablesDeclarations","stoWithVars","finalSto","formal_params","effective_params","caller_store","callee_store","promises$","actual_param","evaluateExpression","values","sto_value","shouldTypeCast","formalParameter","canImplicitTypeCast","inStore","realObj","getStoreObject","ref","ArrayStoreValue","array_type","addresses","getLocAddressOf","ArrayStoreValueRef","StoreValueAddress","StoreValueRef","setReferenceDimension","locAddress","insertStore","realValue","doImplicitCasting","cmds","partial","lastCommand","next","nextCommand","executeCommand","command_lambda","PAUSE","ABORT","executeDeclaration","executeArrayIndexAssign","executeAssign","executeBreak","executeReturn","executeIfThenElse","executeRepeatUntil","executeWhile","executeFor","executeSwitch","executeFunctionCall","executeSysCall","findFunction","destroy","caseSequence","tuple","ignoreSwitchCases","isDefault","nSto","equalityInfixApp","stoObj","isEqual","newStore","initCmd","is_forward_exp","is_forward","pass_value","increment","whileBlock","forAsWhile","newCmdList","$newStore","$value","vl","funcType","real_value","stringInfo","applyStore","exp_type_string_info","exp_type_info","updateStore","mustBeArray","used_dims","line$","column$","value$","line_sv","column_sv","actualValue","canAccept","innerType","current_value","getAt","updateStoreArray","executeArrayDeclaration","temp","StoreValue","$lines","$columns","evaluateArrayLiteral","vector_list","expression_lambda","evaluateUnaryApp","evaluateInfixApp","evaluateArrayAccess","evaluateVariableLiteral","evaluateLiteral","evaluateFunctionCall","max_call_stack","$matrix","evaluateMatrix","vectorList","evaluateVector","exps","n_elements","actual_values","exp_str","new_value","vector","vec_type","$line","$column","isArray","c","readOnly","unaryApp","$left","negated","infixApp","$right","shouldImplicitCast","stringInfoLeft","infoLeft","stringInfoRight","infoRight","rightStr","leftStr","plus","minus","times","divToInt","div","leftValue","rightValue","trunc","modulo","gt","gte","lt","lte","numElementsFun","ALL","matrixLinesFun","matrix","matrixColumnsFun","writeFunction","sendOutput","readFunction","request","requestInput","typeToConvert","realObject","getReferenceDimension","arrayInfo","getRefObj","stoValue","isRealFun","parser","createParser","isIntFun","isBoolFun","castRealFun","typeStringInfoArray","typeInfo","castIntFun","floor","castBoolFun","castStringFun","convertToRadians","degrees","acos","sinFun","angle","mod","sin","cosFun","cos","tanFun","tan","sqrtFun","isNeg","sqrt","powFun","y","pow","logFun","isNegative","log10","absFun","abs","negateFun","invertFun","dividedBy","maxFun","numbers","sto_addrs","paramType","minFun","randFun","random","substringFun","end","lengthFun","uppercaseFun","toUpperCase","lowercaseFun","toLowerCase","charAtFun","idx","charAt","SemanticAnalyser","stringCode","semantic","parseTree","analyseTree","symbolMap","currentFunction","n","symbol_map","findSymbol","pushMap","assertDeclarations","f","assertFunction","assertDeclaration","assertArrayDeclaration","insertSymbol","evaluateExpressionType","result_string_info","result_info","lineType","columnType","finalResult","resultTypeLeft","resultTypeRight","evaluateLiteralType","assertParameters","arrayTypeInfo","arrType","literal","last","strInfo","strExp","arrayDeclaration","evaluateVectorLiteralType","line_literal","formalParam","optional","assertReturn","popMap","checkCommand","checkCommands","var_type","from_type","to_type","pass_type","sType","hasDefault","caseType","lineExp","columnExp","exp_type","access_type","compatible","access_type_string_info","access_type_info","getMainFunction","actualParametersList","param","variable","shared","expType","runner","ivprogLexer","editor","JsonEditor","analiser","semAna","proc","load","alert","a","identifier","opts","UI","warn","LanguageServiceExtended","iLMparameters","default_lang","lang","langInfo","Lexers","getLang","getDefaultLang","LanguageServiceNoLS","IVProgLocalizedStrings","langService","langsJsons","shouldListenToChange","type_string","category","Langs","_instance","getInstance","clicks","inRebuildMode","ActionTypes","INSERT_FUNCTION","REMOVE_FUNCTION","INSERT_GLOBAL_VAR","REMOVE_GLOBAL_VAR","RENAME_FUNCTION","RENAME_GLOBAL_VAR","SET_GLOBAL_CONST","CHANGE_FUNCTION_RETURN","CHANGE_GLOBAL_TYPE","CHANGE_GLOBAL_VALUE","INSERT_FUNCTION_PARAM","REMOVE_FUNCTION_PARAM","CHANGE_PARAM_TYPE","RENAME_FUNCTION_PARAM","INSERT_FUNCTION_VAR","REMOVE_FUNCTION_VAR","RENAME_FUNCTION_VAR","CHANGE_VAR_TYPE","CHANGE_VAR_VALUE","INSERT_COMMAND","REMOVE_COMMAND","CHANGE_COMMAND_EXP","CHANGE_ATTRIB_EXP","CHANGE_ATTRIB_VAR","MOVE_COMMAND","ENTER_CHANGE_VAR_NAME","ENTER_CHANGE_VAR_VALUE","ENTER_CHANGE_GLOBAL_NAME","ENTER_CHANGE_GLOBAL_VALUE","ENTER_CHANGE_PARAM_NAME","registerClick","details","registerUserEvent","command","registerEvent","registerSystemEvent","tag","getLogs","setRebuildMode","getLogsAsString","parseLogs","logData","instance","bool","autoGenerateTestCaseOutput","program_text","copyTestCases","assign","analyseFromSource","resultList","InputTest","exec","result_final","inputList","showAlert","outputGenerated","ConfigObject","intConvertRoundMode","MAX_SAFE_INTEGER","config","CodeEditorMode","CodeMirror","indented","align","pushContext","state","col","indent","popContext","typeBefore","stream","prevToken","string","slice","typeAtEndOfLine","indentation","isTopScope","contains","words","word","propertyIsEnumerable","tokenComment","maybeEnd","ch","tokenize","defineMode","parserConfig","indentUnit","statementIndentUnit","dontAlignCalls","keywords","switchKeyword","caseKeyword","defaultKeyword","caseRegex","builtin","blockKeywords","defKeywords","atoms","hooks","multiLineStrings","indentStatements","namespaceSeparator","isPunctuationChar","numberStart","number","isOperatorChar","isIdentifierChar","isReservedIdentifier","curPunc","isDefKeyword","tokenString","tokenBase","backUp","eat","skipToEnd","eatWhile","cur","current","quote","escaped","maybeEOL","typeFirstDefinitions","eol","startState","basecolumn","startOfLine","ctx","sol","eatSpace","styleDefs","textAfter","Pass","firstChar","closing","dontIndentStatements","hook","switchBlock","allmanIndentation","caseTestRegex","electricInput","blockCommentStart","blockCommentEnd","blockCommentContinue","lineComment","fold","codeConfig","getCodeEditorModeConfig","ivprogKeywords","basicTypes","ivprogTypes","ivprogBlockKeywords","blocks","ivprogDefKeywords","def","mimes","prop","helperType","registerHelper","defineMIME","switchString","case_default","modeProps","parseActivityData","algorithm_in_ilm","logs","Maybe","none","some","prepareActivityToStudentHelper","ilm_cont","maybe_content","testcases","setTestCases","prog_type","settings_programming_type","settingsProgrammingType","settingsDataTypes","settings_data_types","settingsCommands","settings_commands","settingsFunctions","settings_functions","algorithmInIlm","settingsFilter","settings_filter","compareArray","b","elementA","elementB","compareTestcases","original","student","elementO","elementS","autoEval","originalData","code","generate","getOrElse","getTestCases","autoAssessment","TestConsole","runTest","DIFF_DELETE","DIFF_INSERT","DIFF_EQUAL","diff_main","text1","text2","cursor_pos","_fix_unicode","editdiff","find_cursor_edit_diff","commonlength","diff_commonPrefix","commonprefix","diff_commonSuffix","commonsuffix","diffs","diff_compute_","unshift","diff_cleanupMerge","longtext","shorttext","hm","diff_halfMatch_","text1_a","text1_b","text2_a","text2_b","mid_common","diffs_a","diffs_b","diff_bisect_","text1_length","text2_length","max_d","ceil","v_offset","v_length","v1","v2","delta","front","k1start","k1end","k2start","k2end","d","k1","k1_offset","x1","y1","k2_offset","x2","diff_bisectSplit_","k2","y2","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","is_surrogate_pair_start","charCodeAt","pointerend","is_surrogate_pair_end","diff_halfMatchI_","seed","best_common","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","prefixLength","suffixLength","hm1","hm2","fix_unicode","pointer","count_delete","count_insert","text_delete","text_insert","previous_equality","ends_with_pair_start","stray","k","starts_with_pair_end","changes","charCode","remove_empty_tuples","tuples","ret","make_edit_splice","before","oldMiddle","newMiddle","after","oldText","newText","oldRange","newRange","oldLength","newLength","oldCursor","oldBefore","oldAfter","maybeNewCursor","editBefore","newCursor","newBefore","newAfter","oldPrefix","newPrefix","editAfter","cursor","oldSuffix","newSuffix","replaceRange","scrollIt","destination","duration","easing","easings","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","pageYOffset","startTime","performance","getTime","documentHeight","body","offsetHeight","documentElement","clientHeight","windowHeight","innerHeight","getElementsByTagName","destinationOffset","offsetTop","destinationOffsetToScroll","round","scroll","timeFunction","requestAnimationFrame","el","rect","getBoundingClientRect","bottom","innerWidth","clientWidth","cacheMainList","cacheOp","fillCache","mainList","nullLexer","logicOpList","lOp","isKeyword","isValidIdentifier","identifier_str","validRegex","blockList","keywordsList","typeList","atomList","win","openAssessmentDetail","preventDefault","page_code","currentTarget","dataset","close","open","range","startAt","keys","block_render","renderAlgorithm","draging","children","off","empty","program_obj","FunctionsManagement","globals","GlobalsManagement","blockAllEditingOptions","remove","globalsCode","has_error","n_code","functionsCode","function_obj","return_type","TEXT","return_dimensions","parameters_list","parametersCode","variables_list","variablesCode","commandsCode","command_obj","Models","breaksCode","comment","commentsCode","reader","readersCode","writer","writersCode","functioncall","functioncallsCode","attribution","attributionsCode","whiletrue","whiletruesCode","dowhiletrue","doWhilesCode","iftrue","iftruesCode","repeatNtimes","repeatNtimesCode","switchsCode","returnsCode","variable_value_menu","elementExpressionCode","variableValueMenuCode","switchcasesCode","switchcase","commands_block","var_attribution","expression1","expression2","expression3","itens","Utils","dom_object","commands_else","logicExpressionCode","first_operand","exp_logic","exp_arithmetic","arithmeticExpressionCode","equals_to","not_equals_to","second_operand","greater_than","less_than","greater_than_or_equals_to","less_than_or_equals_to","expression_obj","type_op","item","multiplication","division","module","function_called","variable_obj","is_return","translateInternalFunction","row","comment_text","parameter_obj","is_constant","rows","removeCommand","dom_obj","function_container_active","createFloatingCommand","function_container","command_type","mouse_event","floatingObject","BreaksManagement","CommentsManagement","ReadersManagement","WritersManagement","AttributionsManagement","IftruesManagement","RepeatNtimesManagement","WhiletruesManagement","DowhiletruesManagement","SwitchesManagement","FunctioncallsManagement","ReturnsManagement","draggable","appendTo","mouseup","evt","manageCommand","hasClass","originalEvent","srcElement","closest","on","addGhostDiv","elementFromPoint","clientX","clientY","ghostDiv","css","target","pageX","divx","pageY","trigger","active_container","addGhostToEmptyBlock","container","addGhostToNotEmptyBlock","is","containerIf","containerElse","topIfDistance","bottomIfDistance","height","topElseDistance","bottomElseDistance","addGhostToFunctionArea","allfilhos","topDistances","bottomDistances","topD","botD","menorTop","apply","indiceTop","menorBot","indiceBot","insertAfter","undermouse","borderMouseDragCommand","each","removeClass","objLeft","offset","objTop","objRight","width","objBottom","addClass","renderCommand","element_reference","before_after_inside","createdElement","genericCreateCommand","VariableValueMenuManagement","only_value","only_variable","only_function","sc","variable_and_function","dragTrash","trash","fadeIn","fadeOut","findSingleElement","searching","query","findPathRecursive","starter_index","hierarquia_bottom_up","index_command","full_path","hier","parentsUntil","esta_correto","esta_na_div_correta","new_cmd","findNearbyCommandToAddInFunctionScope","hier_find","is_correct_context","sub_elemento","findBeforeOrAfterCommandToAdd","insertCommandInBlockHierar","all_str_path","hier_dom","hier_obj","el_jq","command_parent","recentComand","findNearbyCommandToAddInBlockScope","addCommandToSwitchCase","findBeforeOrAfterCommandToAddInsertBlock","node_list_commands","all_sub","menor_distancia","elemento_menor_distancia","antes","t_bot","t_top","borda_inferior","command_target","temp_parent","is_in_else","d_top","d_bot","findInBlockCorrectPlace","insertCommandInBlock","correct_div","is_in_if","which_case","case_div","findInBlockCorrectPlaceInSwitchCase","VariableValueMenu","addHandlers","ExpressionManagement","manageExpressionElements","ref_object","menu_var_or_value","selectedItem","expression_element","index_to_move","exp_op_exp","op_exp","par_exp_par","renderExpressionElements","expression_div","command_container","renderElement","renderOperator","temp_op","index_op","context_menu","dropdown","onChange","$selectedItem","renderMenuAddExpression","dom_append_menu","expression_append_new_expression","type_exp","temp_exp_1","temp_exp_2","temp_exp","temp_par_1","temp_par_2","renderExpression","menu_add_item","menu_add_item_seq","index_temp","addMenuItens","divs_expression","attribution_dom","CommandsManagement","renderMenuOperations","variable_selected","createExpressionAround","break_dom","renderTextComment","comment_dom","initial_el_to_render","renderStartMenu","main_div","renderLogicExpression","renderArithmeticExpression","restartMenu","renderArithmeticOperator","all_expression","expression_arithmetic","arithmetic_operator","element_to_append","menu_operator","selected","renderLogicOperator","expression_logic","logic_operator","exp_el_par_1","exp_el_expr_el_1","exp_el_expr_operand","exp_el_expr_el_2","exp_el_par_2","start_menu","html","selectOnKeydown","renderMenu","dom_where_render","dom_command","menu_div","addCaseToSwitch","SwitchManagement","ContextualizedMenu","GenericExpressionManagement","dowhiletrue_dom","functioncall_dom","timer","div_to_render","expression_array","WatchJS","unwatch","watch","m","s","types_included","exp_conditional","renderElements","open_or_close","lixeira","posX","posY","Sortable","create","animation","ghostClass","group","put","sort","onStart","onMove","onEnd","onAdd","removeElement","indice","first","opening","div_temp","renderFinalAddElements","renderParenthesis","renderStartAddOperator","renderOperatorMenu","renderAddParenthesis","parentheses_activate","addParentheses","delay","show","actual_target","renderGhostParentheses","floating","comando_que_esta","comando_certo","open_parentheses","close_parentheses","inserir_open","inserir_close","evts","is_correct","index_in_array","count_opened","count_closed","expression_content","position","ghost_parenthesis","menu_final","getArithmeticOperators","getLogicOperators","getRelationalOperators","div_higher","sera","is_last","button","arithmetic_operators","logic_operators","relational_operators","iftrue_dom","reader_dom","togglePasso","var_incrementation","cond_exp","manageClearExpressionElements","repeatNtimes_dom","return_dom","renderCase","casediv","switch_dom","VAR_OR_VALUE_TYPES","variable_and_value_opt","value_and_function","size_field","variable_and_value","addVariablesToMenu","addFunctionsToMenu","addIVProgFunctionsToMenu","variable_fun","isVarInProgram","renderPreviousContent","appendSelectText","ret_function","isFunctionInProgram","function_called_obj","system_functions","var_obj","var_fun","parameters_menu","AttribuitionsManagement","variable_render","openInputToValue","sub_menu","math","arrangement","conversion","is_there","include_constant","openInputToFunction","openInputToVariable","RepeatNTimesManagement","inputWidth","textWidth","tmpStr","function_selected","field","rendered","focusout","fn","font","fakeEl","attr","whiletrue_dom","addHandlersManager","writer_dom","item_div","content_element","handle","newIndex","oldIndex","replaceWith","addHandlerIconAdd","insert_after","after_which","icon_add_item","div_parent_with_handler","new_div_item","new_related_menu","addContent","ref_object_content","counter_new_functions","counter_new_parameters","ivprog_version","VersionInfo","version","globalChangeListeners","functionsChangeListeners","_testCases","isRunning","studentGrade","mainFunction","function_comment","addFunction","generator","CodeManagement","runCodeAssessment","AlgorithmManagement","insertContext","watchW","addFunctionHandler","new_function","renderFunction","addParameter","new_parameter","renderParameter","updateReturnType","new_type","new_dimensions","removeFunction","minimizeFunction","is_hidden","enableNameFunctionUpdate","VariablesManagement","toggle","slideToggle","renderFunctionReturn","function_element","tm","cont","appender","is_main","function_index","updateSequenceLocals","addSortableHandler","updateSequenceParameters","teste","sticky","scrollContext","observeChanges","onStick","onBottom","onUnstick","onReposition","onScroll","isVisible","onTop","elementTop","elementHeight","containerTop","containerHeight","evento_drag","updateProgramObjDrag","nodes","start_index","path_target","index_each","path_relative","indice_na_raiz","is_in_case_switch","command_start_point","block_to_insert","command_in_drag","prepareDragHandler","id_function","n_group","itemEl","to","from","initVisualUI","showStopButton","runCode","showRunButton","stopExecution","toggleVisualCoding","toggleTextualCoding","is_iassign","toggleConsole","full_screen","time_show","listWithHandle","updateSequenceFunction","listGlobalsHandle","updateSequenceGlobals","strCode","settingsProgrammingTypes","TextEditor","getEvaluationCallback","scheduleCall","is_running","removeParameter","parameter_container","updateParameterType","function_name","__","enableNameParameterUpdate","updateParameterName","parameter_var","new_name","parameter_obj_dom","variableNameAlreadyExists","name_var","updateFunctionName","function_var","function_obj_dom","functionNameAlreadyExists","opened_name_parameter","opened_input_parameter","parent_node","input_field","select","opened_name_function","opened_input","previousPadding","addFunctionChangeListener","addGlobalChangeListener","removeGlobalListener","removeFunctionListener","scheduled_call","cancelPendingInputRequests","counter_new_globals","addGlobal","is_from_click","new_global","newe","renderGlobal","toggleConstant","global_var","updateName","global_obj_dom","globalNameAlreadyExists","global_name","updateType","updateInitialValues","removeGlobal","global_container","alternateBooleanGlobalValue","value_container","alternateBooleanGlobalVectorValue","removeGlobalColumnVector","addGlobalColumnVector","removeColumnGlobalMatrix","addColumnGlobalMatrix","removeLineGlobalMatrix","addLineGlobalMatrix","n_l","alternateBooleanGlobalMatrixValue","renderValues","enableGlobalValueUpdate","enableGlobalVectorValueUpdate","enableGlobalMatrixValueUpdate","updateColumnsAndRowsText","enableNameUpdate","ff","complete_element","opened_name_value_matrix_global_v","opened_input_value_matrix_global_v","parseFloat","parseInt","opened_name_value_global_var","opened_input_value_global_ar","changed","opened_name_global","opened_input_global","input_name","opened_name_value_vector_global_","opened_input_value_vector_global_","COMMAND_TYPES","ARITHMETIC_TYPES","EXPRESSION_ELEMENTS","start_point","EXPRESSION_TYPES","ARITHMETIC_COMPARISON","LOGIC_COMPARISON","SYSTEM_FUNCTIONS_CATEGORIES","Variable","SystemFunction","Comment","Reader","Writer","Attribution","ExpressionOperator","ExpressionElement","ConditionalExpression","LogicExpression","has_neg","ArithmeticExpression","IfTrue","RepeatNTimes","WhileTrue","DoWhileTrue","SwitchCase","FunctionCallMenu","Program","function_to_add","function_to_receive","codeEditor","theme","lineNumbers","matchBrackets","autoCloseBrackets","fixedGutter","styleActiveLine","setOption","refresh","setValue","getValue","renderErrorMessage","dom_obj_target","message_text","transition","closable","movePopup","boundary","preserve","className","onHidden","$module","counter_new_variables","addVariable","is_in_click","new_var","renderVariable","variable_obj_dom","removeVariable","variable_container","function_associated","variable_var","alternateBooleanValue","enableValueUpdate","alternateBooleanVectorValue","enableVectorValueUpdate","removeColumnVector","addColumnVector","removeColumnMatrix","addColumnMatrix","removeLineMatrix","addLineMatrix","alternateBooleanMatrixValue","enableMatrixValueUpdate"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA,iBAAiB,4BAA4B;QAC7C;QACA;QACA,kBAAkB,2BAA2B;QAC7C;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA;QACA;QACA;QACA,gBAAgB,uBAAuB;QACvC;;;QAGA;QACA;QACA;QACA;;;;;;;;;;;;;;;;;;;;;;;ACvJA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,cAAc;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B,EAAE;AAC/D,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA;AACA,8DAA8D,+DAA+D;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,GAAG;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA,6BAA6B,OAAO;AACpC;AACA,aAAa,qBAAqB;AAClC;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,+BAA+B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0BAA0B;AACzD,aAAa,0BAA0B;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA,mEAAmE,sCAAsC,EAAE;;AAE3G;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE,qCAAqC;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;;;;AAIA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA,iBAAiB,mBAAO,CAAC,oDAAc;;AAEvC,OAAO;AACP,Y;;;;;;;;;;;;ACziBA;AAAA;;AAEe;AACbA,eAAa,EAAE,MADF;AAEbC,OAAK,EAAE,MAFM;AAGbC,QAAM,EAAE,OAHK;AAIbC,cAAY,EAAE,mBAJD;AAKbC,cAAY,EAAE,gBALD;AAMbC,gBAAc,EAAE,kBANH;AAObC,YAAU,EAAE,WAPC;AAQbC,SAAO,EAAE,QARI;AASbC,YAAU,EAAE,WATC;AAUbC,YAAU,EAAE,WAVC;AAWbC,SAAO,EAAE,SAXI;AAYbC,SAAO,EAAE,SAZI;AAabC,QAAM,EAAE,YAbK;AAcbC,SAAO,EAAE,UAdI;AAebC,WAAS,EAAE,SAfE;AAgBbC,UAAQ,EAAE,YAhBG;AAiBbC,WAAS,EAAE,UAjBE;AAkBbC,aAAW,EAAE,WAlBA;AAmBbC,MAAI,EAAE,KAnBO;AAoBbC,MAAI,EAAE,KApBO;AAqBbC,MAAI,EAAE,KArBO;AAsBbC,OAAK,EAAE,MAtBM;AAuBbC,MAAI,EAAE,KAvBO;AAwBbC,MAAI,EAAE,KAxBO;AAyBbC,MAAI,EAAE,KAzBO;AA0BbC,SAAO,EAAE,QA1BI;AA2BbC,SAAO,EAAE,QA3BI;AA4BbC,MAAI,EAAE,SA5BO;AA6BbC,MAAI,EAAE,SA7BO;AA8BbC,OAAK,EAAE;AA9BM,CAAf,E;;;;;;;;;;;;ACFA;AAAA;;;AAGe;AACbC,UAAQ,EAAE,YADG;AAEbC,QAAM,EAAE,IAFK;AAGbC,SAAO,EAAE,MAHI;AAIbC,WAAS,EAAE,OAJE;AAKbC,UAAQ,EAAE;AALG,CAAf,E;;;;;;;;;;;ACHA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,cAAc;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B,EAAE;AAC/D,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA;AACA,8DAA8D,+DAA+D;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,gDAAgD;AAChD;AACA;AACA,8DAA8D;AAC9D,aAAa;AACb;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB,sBAAsB;AAC9D,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA,mEAAmE,sCAAsC,EAAE;;AAE3G;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE,qCAAqC;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;;;;AAIA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA,iBAAiB,mBAAO,CAAC,oDAAc;;AAEvC,OAAO;AACP,Y;;;;;;;;;;;;ACxgBA;AAAA;;AAEe;AACblC,eAAa,EAAE,QADF;AAEbC,OAAK,EAAE,MAFM;AAGbC,QAAM,EAAE,SAHK;AAIbC,cAAY,EAAE,mBAJD;AAKbC,cAAY,EAAE,gBALD;AAMbC,gBAAc,EAAE,kBANH;AAObC,YAAU,EAAE,WAPC;AAQbC,SAAO,EAAE,aARI;AASbC,YAAU,EAAE,YATC;AAUbC,YAAU,EAAE,aAVC;AAWbC,SAAO,EAAE,SAXI;AAYbC,SAAO,EAAE,SAZI;AAabC,QAAM,EAAE,YAbK;AAcbC,SAAO,EAAE,UAdI;AAebC,WAAS,EAAE,SAfE;AAgBbC,UAAQ,EAAE,YAhBG;AAiBbC,WAAS,EAAE,UAjBE;AAkBbC,aAAW,EAAE,WAlBA;AAmBbC,MAAI,EAAE,KAnBO;AAoBbC,MAAI,EAAE,KApBO;AAqBbC,MAAI,EAAE,KArBO;AAsBbC,OAAK,EAAE,MAtBM;AAuBbC,MAAI,EAAE,KAvBO;AAwBbC,MAAI,EAAE,KAxBO;AAyBbC,MAAI,EAAE,KAzBO;AA0BbC,SAAO,EAAE,QA1BI;AA2BbC,SAAO,EAAE,QA3BI;AA4BbC,MAAI,EAAE,SA5BO;AA6BbC,MAAI,EAAE;AA7BO,CAAf,E;;;;;;;;;;;;ACFA;AAAA;;;AAGe;AACbE,UAAQ,EAAE,YADG;AAEbC,QAAM,EAAE,IAFK;AAGbC,SAAO,EAAE,OAHI;AAIbC,WAAS,EAAE,SAJE;AAKbC,UAAQ,EAAE;AALG,CAAf,E;;;;;;;;;;;;ACHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEe;AACbC,IAAE,EAAE;AAACC,SAAK,EAAEC,oDAAR;AAAmBC,aAAS,EAAEC,yDAA9B;AAAuCC,YAAQ,EAAEC,oDAAMA;AAAvD,GADS;AAEbC,IAAE,EAAE;AAACN,SAAK,EAAEO,oDAAR;AAAmBL,aAAS,EAAEM,yDAA9B;AAAuCJ,YAAQ,EAAEK,oDAAMA;AAAvD,GAFS;AAGbC,IAAE,EAAE;AAACV,SAAK,EAAEW,oDAAR;AAAmBT,aAAS,EAAEU,yDAA9B;AAAuCR,YAAQ,EAAES,oDAAMA;AAAvD;AAHS,CAAf,E;;;;;;;;;;;ACVA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,cAAc;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B,EAAE;AAC/D,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA;AACA,8DAA8D,+DAA+D;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,GAAG;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,uDAAuD,OAAO;AAC9D;AACA,0CAA0C,qBAAqB;AAC/D;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,+BAA+B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,0BAA0B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,0BAA0B;AACtE,yBAAyB,0BAA0B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA,mEAAmE,sCAAsC,EAAE;;AAE3G;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,OAAO;AACjE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;;;;AAIA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA,iBAAiB,mBAAO,CAAC,oDAAc;;AAEvC,OAAO;AACP,Y;;;;;;;;;;;;ACzjBA;AAAA;;AAEe;AACbjD,eAAa,EAAE,QADF;AAEbC,OAAK,EAAE,MAFM;AAGbC,QAAM,EAAE,SAHK;AAIbC,cAAY,EAAE,oBAJD;AAKbC,cAAY,EAAE,iBALD;AAMbC,gBAAc,EAAE,kBANH;AAObC,YAAU,EAAE,WAPC;A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U,GAAG;AACjBC,gBAAc,EAAEC,oEADC;AAEjBC,SAAO,EAAED,6DAFQ;AAGjBE,SAAO,EAAEF,6DAHQ;AAIjBG,cAAY,EAAEH,kEAJG;AAKjBI,SAAO,EAAEJ,6DAAqBI;AALb,CAAnB;AAQA,IAAMC,IAAI,GAAGC,+DAAU,CAACD,IAAxB;AACA,IAAMltB,gBAAgB,GAAGC,6EAAA,EAAzB;;;;;;;;;;;;;ACrBa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACba;AACb,8CAA8C,cAAc;AAC5D,kBAAkB,mBAAO,CAAC,yCAAW;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC3GD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;;AAEA,SAASmtB,kBAAT,GAA+B;AAC7B,MAAMC,KAAK,GAAG,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,CAAd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AC3D,gCAAgC,mBAAO,CAAC,0FAA+B;AACvE,iCAAiC,mBAAO,CAAC,gFAA0B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,GAAG;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,GAAG;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,cAAc,+BAA+B,cAAc;AAC1F;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,GAAG;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,qBAAqB;AAC5D;AACA;AACA;AACA;AACA;AACA,uCAAuC,oBAAoB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F,GAAG;AAC7F;AACA;AACA;AACA;AACA;AACA,0FAA0F,GAAG;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,cAAc,+BAA+B,cAAc;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,GAAG;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,2BAA2B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,GAAG;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACjQa;AACb,8CAA8C,cAAc;AAC5D,mBAAmB,mBAAO,CAAC,sDAAuB;AAClD;AACA;AACA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC5Da;AACb,8CAA8C,cAAc;AAC5D,sBAAsB,mBAAO,CAAC,0DAAe;AAC7C,4BAA4B,mBAAO,CAAC,kFAA2B;AAC/D,mBAAmB,mBAAO,CAAC,sDAAuB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,oBAAoB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,oBAAoB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACpIa;AACb,8CAA8C,cAAc;AAC5D,sBAAsB,mBAAO,CAAC,0DAAe;AAC7C;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1Ba;AACb,8CAA8C,cAAc;AAC5D,2BAA2B,mBAAO,CAAC,oEAAoB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AClBa;AACb,8CAA8C,cAAc;AAC5D,qBAAqB,mBAAO,CAAC,qEAAgC;AAC7D,8BAA8B,mBAAO,CAAC,gFAAuB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,oBAAoB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AAC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","file":"main.953c46193185032c68f7.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ivprogCore\"] = factory();\n\telse\n\t\troot[\"ivprogCore\"] = factory();\n})(window, function() {\nreturn "," \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"main\": 0\n \t};\n\n \tvar deferredModules = [];\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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonpivprogCore\"] = window[\"webpackJsonpivprogCore\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([\"./js/main.js\",\"vendors~main\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports =\n/******/ (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/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\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.l = 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// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Generated from /tmp/tmp-405w9ojosQJhPnz/ivprog.g4 by ANTLR 4.7\n// jshint ignore: start\nvar antlr4 = __webpack_require__(2);\n\n\nvar serializedATN = [\"\\u0003\\u608b\\ua72a\\u8133\\ub9ed\\u417c\\u3be7\\u7786\\u5964\",\n \"\\u00026\\u0207\\b\\u0001\\u0004\\u0002\\t\\u0002\\u0004\\u0003\\t\\u0003\\u0004\",\n \"\\u0004\\t\\u0004\\u0004\\u0005\\t\\u0005\\u0004\\u0006\\t\\u0006\\u0004\\u0007\\t\",\n \"\\u0007\\u0004\\b\\t\\b\\u0004\\t\\t\\t\\u0004\\n\\t\\n\\u0004\\u000b\\t\\u000b\\u0004\",\n \"\\f\\t\\f\\u0004\\r\\t\\r\\u0004\\u000e\\t\\u000e\\u0004\\u000f\\t\\u000f\\u0004\\u0010\",\n \"\\t\\u0010\\u0004\\u0011\\t\\u0011\\u0004\\u0012\\t\\u0012\\u0004\\u0013\\t\\u0013\",\n \"\\u0004\\u0014\\t\\u0014\\u0004\\u0015\\t\\u0015\\u0004\\u0016\\t\\u0016\\u0004\\u0017\",\n \"\\t\\u0017\\u0004\\u0018\\t\\u0018\\u0004\\u0019\\t\\u0019\\u0004\\u001a\\t\\u001a\",\n \"\\u0004\\u001b\\t\\u001b\\u0004\\u001c\\t\\u001c\\u0004\\u001d\\t\\u001d\\u0004\\u001e\",\n \"\\t\\u001e\\u0004\\u001f\\t\\u001f\\u0004 \\t \\u0004!\\t!\\u0004\\\"\\t\\\"\\u0004#\",\n \"\\t#\\u0004$\\t$\\u0004%\\t%\\u0004&\\t&\\u0004\\'\\t\\'\\u0004(\\t(\\u0004)\\t)\\u0004\",\n \"*\\t*\\u0004+\\t+\\u0004,\\t,\\u0004-\\t-\\u0004.\\t.\\u0004/\\t/\\u00040\\t0\\u0004\",\n \"1\\t1\\u00042\\t2\\u00043\\t3\\u00044\\t4\\u00045\\t5\\u00046\\t6\\u00047\\t7\\u0004\",\n \"8\\t8\\u00049\\t9\\u0004:\\t:\\u0004;\\t;\\u0004<\\t<\\u0004=\\t=\\u0004>\\t>\\u0004\",\n \"?\\t?\\u0004@\\t@\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\",\n \"\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0003\\u0003\\u0003\\u0003\",\n \"\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0004\\u0003\\u0004\\u0003\\u0004\\u0003\",\n \"\\u0004\\u0003\\u0004\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\",\n \"\\u0005\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\",\n \"\\u0006\\u0003\\u0006\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\",\n \"\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\",\n \"\\t\\u0003\\t\\u0003\\t\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\u000b\",\n \"\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\",\n \"\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\f\\u0003\\f\\u0003\\f\\u0003\\f\",\n \"\\u0003\\f\\u0003\\f\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\",\n \"\\r\\u0003\\r\\u0003\\r\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\",\n \"\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000f\\u0003\\u000f\\u0003\\u000f\\u0003\",\n \"\\u000f\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\",\n \"\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\",\n \"\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0012\\u0003\",\n \"\\u0012\\u0003\\u0012\\u0003\\u0013\\u0003\\u0013\\u0003\\u0013\\u0003\\u0013\\u0003\",\n \"\\u0013\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\",\n \"\\u0014\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\",\n \"\\u0015\\u0003\\u0015\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\",\n \"\\u0016\\u0003\\u0016\\u0003\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\",\n \"\\u0017\\u0003\\u0017\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\",\n \"\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\",\n \"\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0019\\u0003\\u0019\\u0003\\u0019\\u0003\",\n \"\\u001a\\u0003\\u001a\\u0003\\u001a\\u0003\\u001a\\u0003\\u001a\\u0003\\u001b\\u0003\",\n \"\\u001b\\u0003\\u001b\\u0003\\u001b\\u0003\\u001b\\u0003\\u001b\\u0003\\u001c\\u0003\",\n \"\\u001c\\u0003\\u001c\\u0003\\u001c\\u0003\\u001c\\u0003\\u001d\\u0003\\u001d\\u0003\",\n \"\\u001d\\u0003\\u001d\\u0003\\u001e\\u0003\\u001e\\u0003\\u001e\\u0003\\u001e\\u0003\",\n \"\\u001f\\u0003\\u001f\\u0003\\u001f\\u0003 \\u0003 \\u0003!\\u0003!\\u0003\\\"\\u0003\",\n \"\\\"\\u0003#\\u0003#\\u0003$\\u0003$\\u0003%\\u0003%\\u0003&\\u0003&\\u0003\\'\\u0003\",\n \"\\'\\u0003(\\u0003(\\u0003(\\u0005(\\u0148\\n(\\u0003)\\u0003)\\u0003*\\u0003*\",\n \"\\u0003+\\u0003+\\u0003,\\u0003,\\u0003-\\u0003-\\u0003-\\u0003-\\u0003-\\u0003\",\n \"-\\u0003-\\u0003-\\u0003-\\u0005-\\u015b\\n-\\u0003.\\u0003.\\u0003/\\u0003/\\u0003\",\n \"0\\u00030\\u00070\\u0163\\n0\\f0\\u000e0\\u0166\\u000b0\\u00031\\u00031\\u0003\",\n \"1\\u00031\\u00032\\u00062\\u016d\\n2\\r2\\u000e2\\u016e\\u00032\\u00032\\u0003\",\n \"2\\u00032\\u00052\\u0175\\n2\\u00032\\u00062\\u0178\\n2\\r2\\u000e2\\u0179\\u0003\",\n \"2\\u00032\\u00032\\u00032\\u00052\\u0180\\n2\\u00032\\u00062\\u0183\\n2\\r2\\u000e\",\n \"2\\u0184\\u00052\\u0187\\n2\\u00033\\u00063\\u018a\\n3\\r3\\u000e3\\u018b\\u0003\",\n \"3\\u00033\\u00063\\u0190\\n3\\r3\\u000e3\\u0191\\u00033\\u00063\\u0195\\n3\\r3\\u000e\",\n \"3\\u0196\\u00033\\u00033\\u00073\\u019b\\n3\\f3\\u000e3\\u019e\\u000b3\\u00033\",\n \"\\u00053\\u01a1\\n3\\u00034\\u00034\\u00054\\u01a5\\n4\\u00034\\u00064\\u01a8\\n\",\n \"4\\r4\\u000e4\\u01a9\\u00035\\u00035\\u00075\\u01ae\\n5\\f5\\u000e5\\u01b1\\u000b\",\n \"5\\u00035\\u00035\\u00036\\u00036\\u00056\\u01b7\\n6\\u00037\\u00037\\u00037\\u0005\",\n \"7\\u01bc\\n7\\u00037\\u00037\\u00038\\u00038\\u00038\\u00038\\u00039\\u00039\\u0003\",\n \":\\u0006:\\u01c7\\n:\\r:\\u000e:\\u01c8\\u0003:\\u0005:\\u01cc\\n:\\u0003;\\u0003\",\n \";\\u0003<\\u0003<\\u0003=\\u0003=\\u0003=\\u0003=\\u0005=\\u01d6\\n=\\u0003>\\u0003\",\n \">\\u0003>\\u0003>\\u0003>\\u0003>\\u0003>\\u0003>\\u0003>\\u0003>\\u0003>\\u0005\",\n \">\\u01e3\\n>\\u0003?\\u0003?\\u0003?\\u0003?\\u0003?\\u0003?\\u0003?\\u0003@\\u0003\",\n \"@\\u0003@\\u0003@\\u0007@\\u01f0\\n@\\f@\\u000e@\\u01f3\\u000b@\\u0003@\\u0005\",\n \"@\\u01f6\\n@\\u0003@\\u0003@\\u0003@\\u0003@\\u0003@\\u0007@\\u01fd\\n@\\f@\\u000e\",\n \"@\\u0200\\u000b@\\u0003@\\u0003@\\u0005@\\u0204\\n@\\u0003@\\u0003@\\u0003\\u01fe\",\n \"\\u0002A\\u0003\\u0003\\u0005\\u0004\\u0007\\u0005\\t\\u0006\\u000b\\u0007\\r\\b\",\n \"\\u000f\\t\\u0011\\n\\u0013\\u000b\\u0015\\f\\u0017\\r\\u0019\\u000e\\u001b\\u000f\",\n \"\\u001d\\u0010\\u001f\\u0011!\\u0012#\\u0013%\\u0014\\'\\u0015)\\u0016+\\u0017\",\n \"-\\u0018/\\u00191\\u001a3\\u001b5\\u001c7\\u001d9\\u0002;\\u0002=\\u0002?\\u001e\",\n \"A\\u001fC E!G\\\"I#K$M%O&Q\\'S(U)W*Y+[,]-_.a/c0e1g\\u0002i2k\\u0002m3o4q\\u0002\",\n \"s5u\\u0002w\\u0002y\\u0002{\\u0002}\\u0002\\u007f6\\u0003\\u0002\\u0012\\u0004\",\n \"\\u0002--//\\u0005\\u0002\\'\\',,11\\u0004\\u0002>>@@\\u0005\\u0002C\\\\aac|\\u0006\",\n \"\\u00022;C\\\\aac|\\u0003\\u00022;\\u0003\\u000223\\u0004\\u0002GGgg\\u0006\\u0002\",\n \"\\f\\f\\u000f\\u000f$$^^\\u0006\\u0002\\f\\f\\u000f\\u000f))^^\\u0004\\u0002\\u000b\",\n \"\\u000b\\\"\\\"\\u0004\\u0002\\f\\f\\u000f\\u000f\\u0005\\u00022;CHch\\u0003\\u0002\",\n \"29\\n\\u0002$$))^^ddhhppttvv\\u0003\\u000225\\u0002\\u021c\\u0002\\u0003\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0005\\u0003\\u0002\\u0002\\u0002\\u0002\\u0007\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\t\\u0003\\u0002\\u0002\\u0002\\u0002\\u000b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\r\\u0003\\u0002\\u0002\\u0002\\u0002\\u000f\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0011\\u0003\\u0002\\u0002\\u0002\\u0002\\u0013\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0015\\u0003\\u0002\\u0002\\u0002\\u0002\\u0017\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0019\\u0003\\u0002\\u0002\\u0002\\u0002\\u001b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u001d\\u0003\\u0002\\u0002\\u0002\\u0002\\u001f\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002!\\u0003\\u0002\\u0002\\u0002\\u0002#\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002%\\u0003\\u0002\\u0002\\u0002\\u0002\\'\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002)\\u0003\\u0002\\u0002\\u0002\\u0002+\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002-\\u0003\\u0002\\u0002\\u0002\\u0002/\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"1\\u0003\\u0002\\u0002\\u0002\\u00023\\u0003\\u0002\\u0002\\u0002\\u00025\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00027\\u0003\\u0002\\u0002\\u0002\\u0002?\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002A\\u0003\\u0002\\u0002\\u0002\\u0002C\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002E\\u0003\\u0002\\u0002\\u0002\\u0002G\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002I\\u0003\\u0002\\u0002\\u0002\\u0002K\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"M\\u0003\\u0002\\u0002\\u0002\\u0002O\\u0003\\u0002\\u0002\\u0002\\u0002Q\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002S\\u0003\\u0002\\u0002\\u0002\\u0002U\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002W\\u0003\\u0002\\u0002\\u0002\\u0002Y\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002[\\u0003\\u0002\\u0002\\u0002\\u0002]\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002_\\u0003\\u0002\\u0002\\u0002\\u0002a\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"c\\u0003\\u0002\\u0002\\u0002\\u0002e\\u0003\\u0002\\u0002\\u0002\\u0002i\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002m\\u0003\\u0002\\u0002\\u0002\\u0002o\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002s\\u0003\\u0002\\u0002\\u0002\\u0002\\u007f\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0003\\u0081\\u0003\\u0002\\u0002\\u0002\\u0005\\u0089\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0007\\u008e\\u0003\\u0002\\u0002\\u0002\\t\\u0093\\u0003\\u0002\",\n \"\\u0002\\u0002\\u000b\\u0098\\u0003\\u0002\\u0002\\u0002\\r\\u009f\\u0003\\u0002\",\n \"\\u0002\\u0002\\u000f\\u00a3\\u0003\\u0002\\u0002\\u0002\\u0011\\u00a8\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0013\\u00af\\u0003\\u0002\\u0002\\u0002\\u0015\\u00b4\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0017\\u00be\\u0003\\u0002\\u0002\\u0002\\u0019\\u00c4\\u0003\\u0002\",\n \"\\u0002\\u0002\\u001b\\u00cd\\u0003\\u0002\\u0002\\u0002\\u001d\\u00d4\\u0003\\u0002\",\n \"\\u0002\\u0002\\u001f\\u00d8\\u0003\\u0002\\u0002\\u0002!\\u00e3\\u0003\\u0002\",\n \"\\u0002\\u0002#\\u00e8\\u0003\\u0002\\u0002\\u0002%\\u00eb\\u0003\\u0002\\u0002\",\n \"\\u0002\\'\\u00f0\\u0003\\u0002\\u0002\\u0002)\\u00f6\\u0003\\u0002\\u0002\\u0002\",\n \"+\\u00fd\\u0003\\u0002\\u0002\\u0002-\\u0103\\u0003\\u0002\\u0002\\u0002/\\u0109\",\n \"\\u0003\\u0002\\u0002\\u00021\\u0116\\u0003\\u0002\\u0002\\u00023\\u0119\\u0003\",\n \"\\u0002\\u0002\\u00025\\u011e\\u0003\\u0002\\u0002\\u00027\\u0124\\u0003\\u0002\",\n \"\\u0002\\u00029\\u0129\\u0003\\u0002\\u0002\\u0002;\\u012d\\u0003\\u0002\\u0002\",\n \"\\u0002=\\u0131\\u0003\\u0002\\u0002\\u0002?\\u0134\\u0003\\u0002\\u0002\\u0002\",\n \"A\\u0136\\u0003\\u0002\\u0002\\u0002C\\u0138\\u0003\\u0002\\u0002\\u0002E\\u013a\",\n \"\\u0003\\u0002\\u0002\\u0002G\\u013c\\u0003\\u0002\\u0002\\u0002I\\u013e\\u0003\",\n \"\\u0002\\u0002\\u0002K\\u0140\\u0003\\u0002\\u0002\\u0002M\\u0142\\u0003\\u0002\",\n \"\\u0002\\u0002O\\u0147\\u0003\\u0002\\u0002\\u0002Q\\u0149\\u0003\\u0002\\u0002\",\n \"\\u0002S\\u014b\\u0003\\u0002\\u0002\\u0002U\\u014d\\u0003\\u0002\\u0002\\u0002\",\n \"W\\u014f\\u0003\\u0002\\u0002\\u0002Y\\u015a\\u0003\\u0002\\u0002\\u0002[\\u015c\",\n \"\\u0003\\u0002\\u0002\\u0002]\\u015e\\u0003\\u0002\\u0002\\u0002_\\u0160\\u0003\",\n \"\\u0002\\u0002\\u0002a\\u0167\\u0003\\u0002\\u0002\\u0002c\\u0186\\u0003\\u0002\",\n \"\\u0002\\u0002e\\u01a0\\u0003\\u0002\\u0002\\u0002g\\u01a2\\u0003\\u0002\\u0002\",\n \"\\u0002i\\u01ab\\u0003\\u0002\\u0002\\u0002k\\u01b6\\u0003\\u0002\\u0002\\u0002\",\n \"m\\u01b8\\u0003\\u0002\\u0002\\u0002o\\u01bf\\u0003\\u0002\\u0002\\u0002q\\u01c3\",\n \"\\u0003\\u0002\\u0002\\u0002s\\u01cb\\u0003\\u0002\\u0002\\u0002u\\u01cd\\u0003\",\n \"\\u0002\\u0002\\u0002w\\u01cf\\u0003\\u0002\\u0002\\u0002y\\u01d5\\u0003\\u0002\",\n \"\\u0002\\u0002{\\u01e2\\u0003\\u0002\\u0002\\u0002}\\u01e4\\u0003\\u0002\\u0002\",\n \"\\u0002\\u007f\\u0203\\u0003\\u0002\\u0002\\u0002\\u0081\\u0082\\u0007r\\u0002\",\n \"\\u0002\\u0082\\u0083\\u0007t\\u0002\\u0002\\u0083\\u0084\\u0007q\\u0002\\u0002\",\n \"\\u0084\\u0085\\u0007i\\u0002\\u0002\\u0085\\u0086\\u0007t\\u0002\\u0002\\u0086\",\n \"\\u0087\\u0007c\\u0002\\u0002\\u0087\\u0088\\u0007o\\u0002\\u0002\\u0088\\u0004\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0089\\u008a\\u0007t\\u0002\\u0002\\u008a\\u008b\",\n \"\\u0007g\\u0002\\u0002\\u008b\\u008c\\u0007c\\u0002\\u0002\\u008c\\u008d\\u0007\",\n \"n\\u0002\\u0002\\u008d\\u0006\\u0003\\u0002\\u0002\\u0002\\u008e\\u008f\\u0007\",\n \"x\\u0002\\u0002\\u008f\\u0090\\u0007q\\u0002\\u0002\\u0090\\u0091\\u0007k\\u0002\",\n \"\\u0002\\u0091\\u0092\\u0007f\\u0002\\u0002\\u0092\\b\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0093\\u0094\\u0007d\\u0002\\u0002\\u0094\\u0095\\u0007q\\u0002\\u0002\\u0095\",\n \"\\u0096\\u0007q\\u0002\\u0002\\u0096\\u0097\\u0007n\\u0002\\u0002\\u0097\\n\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0098\\u0099\\u0007u\\u0002\\u0002\\u0099\\u009a\\u0007\",\n \"v\\u0002\\u0002\\u009a\\u009b\\u0007t\\u0002\\u0002\\u009b\\u009c\\u0007k\\u0002\",\n \"\\u0002\\u009c\\u009d\\u0007p\\u0002\\u0002\\u009d\\u009e\\u0007i\\u0002\\u0002\",\n \"\\u009e\\f\\u0003\\u0002\\u0002\\u0002\\u009f\\u00a0\\u0007k\\u0002\\u0002\\u00a0\",\n \"\\u00a1\\u0007p\\u0002\\u0002\\u00a1\\u00a2\\u0007v\\u0002\\u0002\\u00a2\\u000e\",\n \"\\u0003\\u0002\\u0002\\u0002\\u00a3\\u00a4\\u0007e\\u0002\\u0002\\u00a4\\u00a5\",\n \"\\u0007j\\u0002\\u0002\\u00a5\\u00a6\\u0007c\\u0002\\u0002\\u00a6\\u00a7\\u0007\",\n \"t\\u0002\\u0002\\u00a7\\u0010\\u0003\\u0002\\u0002\\u0002\\u00a8\\u00a9\\u0007\",\n \"u\\u0002\\u0002\\u00a9\\u00aa\\u0007y\\u0002\\u0002\\u00aa\\u00ab\\u0007k\\u0002\",\n \"\\u0002\\u00ab\\u00ac\\u0007v\\u0002\\u0002\\u00ac\\u00ad\\u0007e\\u0002\\u0002\",\n \"\\u00ad\\u00ae\\u0007j\\u0002\\u0002\\u00ae\\u0012\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00af\\u00b0\\u0007e\\u0002\\u0002\\u00b0\\u00b1\\u0007c\\u0002\\u0002\\u00b1\",\n \"\\u00b2\\u0007u\\u0002\\u0002\\u00b2\\u00b3\\u0007g\\u0002\\u0002\\u00b3\\u0014\",\n \"\\u0003\\u0002\\u0002\\u0002\\u00b4\\u00b5\\u0007q\\u0002\\u0002\\u00b5\\u00b6\",\n \"\\u0007v\\u0002\\u0002\\u00b6\\u00b7\\u0007j\\u0002\\u0002\\u00b7\\u00b8\\u0007\",\n \"g\\u0002\\u0002\\u00b8\\u00b9\\u0007t\\u0002\\u0002\\u00b9\\u00ba\\u0007y\\u0002\",\n \"\\u0002\\u00ba\\u00bb\\u0007k\\u0002\\u0002\\u00bb\\u00bc\\u0007u\\u0002\\u0002\",\n \"\\u00bc\\u00bd\\u0007g\\u0002\\u0002\\u00bd\\u0016\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00be\\u00bf\\u0007e\\u0002\\u0002\\u00bf\\u00c0\\u0007q\\u0002\\u0002\\u00c0\",\n \"\\u00c1\\u0007p\\u0002\\u0002\\u00c1\\u00c2\\u0007u\\u0002\\u0002\\u00c2\\u00c3\",\n \"\\u0007v\\u0002\\u0002\\u00c3\\u0018\\u0003\\u0002\\u0002\\u0002\\u00c4\\u00c5\",\n \"\\u0007h\\u0002\\u0002\\u00c5\\u00c6\\u0007w\\u0002\\u0002\\u00c6\\u00c7\\u0007\",\n \"p\\u0002\\u0002\\u00c7\\u00c8\\u0007e\\u0002\\u0002\\u00c8\\u00c9\\u0007v\\u0002\",\n \"\\u0002\\u00c9\\u00ca\\u0007k\\u0002\\u0002\\u00ca\\u00cb\\u0007q\\u0002\\u0002\",\n \"\\u00cb\\u00cc\\u0007p\\u0002\\u0002\\u00cc\\u001a\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00cd\\u00ce\\u0007t\\u0002\\u0002\\u00ce\\u00cf\\u0007g\\u0002\\u0002\\u00cf\",\n \"\\u00d0\\u0007v\\u0002\\u0002\\u00d0\\u00d1\\u0007w\\u0002\\u0002\\u00d1\\u00d2\",\n \"\\u0007t\\u0002\\u0002\\u00d2\\u00d3\\u0007p\\u0002\\u0002\\u00d3\\u001c\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00d4\\u00d5\\u0007h\\u0002\\u0002\\u00d5\\u00d6\\u0007\",\n \"q\\u0002\\u0002\\u00d6\\u00d7\\u0007t\\u0002\\u0002\\u00d7\\u001e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00d8\\u00d9\\u0007t\\u0002\\u0002\\u00d9\\u00da\\u0007g\\u0002\",\n \"\\u0002\\u00da\\u00db\\u0007r\\u0002\\u0002\\u00db\\u00dc\\u0007g\\u0002\\u0002\",\n \"\\u00dc\\u00dd\\u0007c\\u0002\\u0002\\u00dd\\u00de\\u0007v\\u0002\\u0002\\u00de\",\n \"\\u00df\\u0007a\\u0002\\u0002\\u00df\\u00e0\\u0007h\\u0002\\u0002\\u00e0\\u00e1\",\n \"\\u0007q\\u0002\\u0002\\u00e1\\u00e2\\u0007t\\u0002\\u0002\\u00e2 \\u0003\\u0002\",\n \"\\u0002\\u0002\\u00e3\\u00e4\\u0007h\\u0002\\u0002\\u00e4\\u00e5\\u0007t\\u0002\",\n \"\\u0002\\u00e5\\u00e6\\u0007q\\u0002\\u0002\\u00e6\\u00e7\\u0007o\\u0002\\u0002\",\n \"\\u00e7\\\"\\u0003\\u0002\\u0002\\u0002\\u00e8\\u00e9\\u0007v\\u0002\\u0002\\u00e9\",\n \"\\u00ea\\u0007q\\u0002\\u0002\\u00ea$\\u0003\\u0002\\u0002\\u0002\\u00eb\\u00ec\",\n \"\\u0007r\\u0002\\u0002\\u00ec\\u00ed\\u0007c\\u0002\\u0002\\u00ed\\u00ee\\u0007\",\n \"u\\u0002\\u0002\\u00ee\\u00ef\\u0007u\\u0002\\u0002\\u00ef&\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00f0\\u00f1\\u0007d\\u0002\\u0002\\u00f1\\u00f2\\u0007t\\u0002\\u0002\",\n \"\\u00f2\\u00f3\\u0007g\\u0002\\u0002\\u00f3\\u00f4\\u0007c\\u0002\\u0002\\u00f4\",\n \"\\u00f5\\u0007m\\u0002\\u0002\\u00f5(\\u0003\\u0002\\u0002\\u0002\\u00f6\\u00f7\",\n \"\\u0007t\\u0002\\u0002\\u00f7\\u00f8\\u0007g\\u0002\\u0002\\u00f8\\u00f9\\u0007\",\n \"r\\u0002\\u0002\\u00f9\\u00fa\\u0007g\\u0002\\u0002\\u00fa\\u00fb\\u0007c\\u0002\",\n \"\\u0002\\u00fb\\u00fc\\u0007v\\u0002\\u0002\\u00fc*\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00fd\\u00fe\\u0007w\\u0002\\u0002\\u00fe\\u00ff\\u0007p\\u0002\\u0002\\u00ff\",\n \"\\u0100\\u0007v\\u0002\\u0002\\u0100\\u0101\\u0007k\\u0002\\u0002\\u0101\\u0102\",\n \"\\u0007n\\u0002\\u0002\\u0102,\\u0003\\u0002\\u0002\\u0002\\u0103\\u0104\\u0007\",\n \"y\\u0002\\u0002\\u0104\\u0105\\u0007j\\u0002\\u0002\\u0105\\u0106\\u0007k\\u0002\",\n \"\\u0002\\u0106\\u0107\\u0007n\\u0002\\u0002\\u0107\\u0108\\u0007g\\u0002\\u0002\",\n \"\\u0108.\\u0003\\u0002\\u0002\\u0002\\u0109\\u010a\\u0007t\\u0002\\u0002\\u010a\",\n \"\\u010b\\u0007g\\u0002\\u0002\\u010b\\u010c\\u0007r\\u0002\\u0002\\u010c\\u010d\",\n \"\\u0007g\\u0002\\u0002\\u010d\\u010e\\u0007c\\u0002\\u0002\\u010e\\u010f\\u0007\",\n \"v\\u0002\\u0002\\u010f\\u0110\\u0007a\\u0002\\u0002\\u0110\\u0111\\u0007y\\u0002\",\n \"\\u0002\\u0111\\u0112\\u0007j\\u0002\\u0002\\u0112\\u0113\\u0007k\\u0002\\u0002\",\n \"\\u0113\\u0114\\u0007n\\u0002\\u0002\\u0114\\u0115\\u0007g\\u0002\\u0002\\u0115\",\n \"0\\u0003\\u0002\\u0002\\u0002\\u0116\\u0117\\u0007k\\u0002\\u0002\\u0117\\u0118\",\n \"\\u0007h\\u0002\\u0002\\u01182\\u0003\\u0002\\u0002\\u0002\\u0119\\u011a\\u0007\",\n \"g\\u0002\\u0002\\u011a\\u011b\\u0007n\\u0002\\u0002\\u011b\\u011c\\u0007u\\u0002\",\n \"\\u0002\\u011c\\u011d\\u0007g\\u0002\\u0002\\u011d4\\u0003\\u0002\\u0002\\u0002\",\n \"\\u011e\\u011f\\u0007h\\u0002\\u0002\\u011f\\u0120\\u0007c\\u0002\\u0002\\u0120\",\n \"\\u0121\\u0007n\\u0002\\u0002\\u0121\\u0122\\u0007u\\u0002\\u0002\\u0122\\u0123\",\n \"\\u0007g\\u0002\\u0002\\u01236\\u0003\\u0002\\u0002\\u0002\\u0124\\u0125\\u0007\",\n \"v\\u0002\\u0002\\u0125\\u0126\\u0007t\\u0002\\u0002\\u0126\\u0127\\u0007w\\u0002\",\n \"\\u0002\\u0127\\u0128\\u0007g\\u0002\\u0002\\u01288\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0129\\u012a\\u0007p\\u0002\\u0002\\u012a\\u012b\\u0007q\\u0002\\u0002\\u012b\",\n \"\\u012c\\u0007v\\u0002\\u0002\\u012c:\\u0003\\u0002\\u0002\\u0002\\u012d\\u012e\",\n \"\\u0007C\\u0002\\u0002\\u012e\\u012f\\u0007P\\u0002\\u0002\\u012f\\u0130\\u0007\",\n \"F\\u0002\\u0002\\u0130<\\u0003\\u0002\\u0002\\u0002\\u0131\\u0132\\u0007Q\\u0002\",\n \"\\u0002\\u0132\\u0133\\u0007T\\u0002\\u0002\\u0133>\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0134\\u0135\\u0007(\\u0002\\u0002\\u0135@\\u0003\\u0002\\u0002\\u0002\\u0136\",\n \"\\u0137\\u0007*\\u0002\\u0002\\u0137B\\u0003\\u0002\\u0002\\u0002\\u0138\\u0139\",\n \"\\u0007+\\u0002\\u0002\\u0139D\\u0003\\u0002\\u0002\\u0002\\u013a\\u013b\\u0007\",\n \"]\\u0002\\u0002\\u013bF\\u0003\\u0002\\u0002\\u0002\\u013c\\u013d\\u0007_\\u0002\",\n \"\\u0002\\u013dH\\u0003\\u0002\\u0002\\u0002\\u013e\\u013f\\u0007}\\u0002\\u0002\",\n \"\\u013fJ\\u0003\\u0002\\u0002\\u0002\\u0140\\u0141\\u0007\\u007f\\u0002\\u0002\",\n \"\\u0141L\\u0003\\u0002\\u0002\\u0002\\u0142\\u0143\\u0007.\\u0002\\u0002\\u0143\",\n \"N\\u0003\\u0002\\u0002\\u0002\\u0144\\u0145\\u0007>\\u0002\\u0002\\u0145\\u0148\",\n \"\\u0007/\\u0002\\u0002\\u0146\\u0148\\u0007\\u2192\\u0002\\u0002\\u0147\\u0144\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0147\\u0146\\u0003\\u0002\\u0002\\u0002\\u0148P\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0149\\u014a\\t\\u0002\\u0002\\u0002\\u014aR\\u0003\",\n \"\\u0002\\u0002\\u0002\\u014b\\u014c\\t\\u0003\\u0002\\u0002\\u014cT\\u0003\\u0002\",\n \"\\u0002\\u0002\\u014d\\u014e\\u0005;\\u001e\\u0002\\u014eV\\u0003\\u0002\\u0002\",\n \"\\u0002\\u014f\\u0150\\u0005=\\u001f\\u0002\\u0150X\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0151\\u0152\\u0007@\\u0002\\u0002\\u0152\\u015b\\u0007?\\u0002\\u0002\\u0153\",\n \"\\u0154\\u0007?\\u0002\\u0002\\u0154\\u015b\\u0007?\\u0002\\u0002\\u0155\\u0156\",\n \"\\u0007>\\u0002\\u0002\\u0156\\u015b\\u0007?\\u0002\\u0002\\u0157\\u015b\\t\\u0004\",\n \"\\u0002\\u0002\\u0158\\u0159\\u0007#\\u0002\\u0002\\u0159\\u015b\\u0007?\\u0002\",\n \"\\u0002\\u015a\\u0151\\u0003\\u0002\\u0002\\u0002\\u015a\\u0153\\u0003\\u0002\\u0002\",\n \"\\u0002\\u015a\\u0155\\u0003\\u0002\\u0002\\u0002\\u015a\\u0157\\u0003\\u0002\\u0002\",\n \"\\u0002\\u015a\\u0158\\u0003\\u0002\\u0002\\u0002\\u015bZ\\u0003\\u0002\\u0002\",\n \"\\u0002\\u015c\\u015d\\u0007<\\u0002\\u0002\\u015d\\\\\\u0003\\u0002\\u0002\\u0002\",\n \"\\u015e\\u015f\\u00059\\u001d\\u0002\\u015f^\\u0003\\u0002\\u0002\\u0002\\u0160\",\n \"\\u0164\\t\\u0005\\u0002\\u0002\\u0161\\u0163\\t\\u0006\\u0002\\u0002\\u0162\\u0161\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0163\\u0166\\u0003\\u0002\\u0002\\u0002\\u0164\\u0162\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0164\\u0165\\u0003\\u0002\\u0002\\u0002\\u0165`\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0166\\u0164\\u0003\\u0002\\u0002\\u0002\\u0167\\u0168\",\n \"\\u0005_0\\u0002\\u0168\\u0169\\u00070\\u0002\\u0002\\u0169\\u016a\\u0005_0\\u0002\",\n \"\\u016ab\\u0003\\u0002\\u0002\\u0002\\u016b\\u016d\\t\\u0007\\u0002\\u0002\\u016c\",\n \"\\u016b\\u0003\\u0002\\u0002\\u0002\\u016d\\u016e\\u0003\\u0002\\u0002\\u0002\\u016e\",\n \"\\u016c\\u0003\\u0002\\u0002\\u0002\\u016e\\u016f\\u0003\\u0002\\u0002\\u0002\\u016f\",\n \"\\u0187\\u0003\\u0002\\u0002\\u0002\\u0170\\u0171\\u00072\\u0002\\u0002\\u0171\",\n \"\\u0175\\u0007z\\u0002\\u0002\\u0172\\u0173\\u00072\\u0002\\u0002\\u0173\\u0175\",\n \"\\u0007Z\\u0002\\u0002\\u0174\\u0170\\u0003\\u0002\\u0002\\u0002\\u0174\\u0172\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0175\\u0177\\u0003\\u0002\\u0002\\u0002\\u0176\\u0178\",\n \"\\u0005u;\\u0002\\u0177\\u0176\\u0003\\u0002\\u0002\\u0002\\u0178\\u0179\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0179\\u0177\\u0003\\u0002\\u0002\\u0002\\u0179\\u017a\\u0003\",\n \"\\u0002\\u0002\\u0002\\u017a\\u0187\\u0003\\u0002\\u0002\\u0002\\u017b\\u017c\\u0007\",\n \"2\\u0002\\u0002\\u017c\\u0180\\u0007d\\u0002\\u0002\\u017d\\u017e\\u00072\\u0002\",\n \"\\u0002\\u017e\\u0180\\u0007D\\u0002\\u0002\\u017f\\u017b\\u0003\\u0002\\u0002\",\n \"\\u0002\\u017f\\u017d\\u0003\\u0002\\u0002\\u0002\\u0180\\u0182\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0181\\u0183\\t\\b\\u0002\\u0002\\u0182\\u0181\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0183\\u0184\\u0003\\u0002\\u0002\\u0002\\u0184\\u0182\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0184\\u0185\\u0003\\u0002\\u0002\\u0002\\u0185\\u0187\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0186\\u016c\\u0003\\u0002\\u0002\\u0002\\u0186\\u0174\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0186\\u017f\\u0003\\u0002\\u0002\\u0002\\u0187d\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0188\\u018a\\t\\u0007\\u0002\\u0002\\u0189\\u0188\\u0003\\u0002\\u0002\\u0002\",\n \"\\u018a\\u018b\\u0003\\u0002\\u0002\\u0002\\u018b\\u0189\\u0003\\u0002\\u0002\\u0002\",\n \"\\u018b\\u018c\\u0003\\u0002\\u0002\\u0002\\u018c\\u018d\\u0003\\u0002\\u0002\\u0002\",\n \"\\u018d\\u018f\\u00070\\u0002\\u0002\\u018e\\u0190\\t\\u0007\\u0002\\u0002\\u018f\",\n \"\\u018e\\u0003\\u0002\\u0002\\u0002\\u0190\\u0191\\u0003\\u0002\\u0002\\u0002\\u0191\",\n \"\\u018f\\u0003\\u0002\\u0002\\u0002\\u0191\\u0192\\u0003\\u0002\\u0002\\u0002\\u0192\",\n \"\\u01a1\\u0003\\u0002\\u0002\\u0002\\u0193\\u0195\\t\\u0007\\u0002\\u0002\\u0194\",\n \"\\u0193\\u0003\\u0002\\u0002\\u0002\\u0195\\u0196\\u0003\\u0002\\u0002\\u0002\\u0196\",\n \"\\u0194\\u0003\\u0002\\u0002\\u0002\\u0196\\u0197\\u0003\\u0002\\u0002\\u0002\\u0197\",\n \"\\u0198\\u0003\\u0002\\u0002\\u0002\\u0198\\u019c\\u00070\\u0002\\u0002\\u0199\",\n \"\\u019b\\t\\u0007\\u0002\\u0002\\u019a\\u0199\\u0003\\u0002\\u0002\\u0002\\u019b\",\n \"\\u019e\\u0003\\u0002\\u0002\\u0002\\u019c\\u019a\\u0003\\u0002\\u0002\\u0002\\u019c\",\n \"\\u019d\\u0003\\u0002\\u0002\\u0002\\u019d\\u019f\\u0003\\u0002\\u0002\\u0002\\u019e\",\n \"\\u019c\\u0003\\u0002\\u0002\\u0002\\u019f\\u01a1\\u0005g4\\u0002\\u01a0\\u0189\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01a0\\u0194\\u0003\\u0002\\u0002\\u0002\\u01a1f\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01a2\\u01a4\\t\\t\\u0002\\u0002\\u01a3\\u01a5\\t\\u0002\",\n \"\\u0002\\u0002\\u01a4\\u01a3\\u0003\\u0002\\u0002\\u0002\\u01a4\\u01a5\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01a5\\u01a7\\u0003\\u0002\\u0002\\u0002\\u01a6\\u01a8\\t\\u0007\",\n \"\\u0002\\u0002\\u01a7\\u01a6\\u0003\\u0002\\u0002\\u0002\\u01a8\\u01a9\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01a9\\u01a7\\u0003\\u0002\\u0002\\u0002\\u01a9\\u01aa\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01aah\\u0003\\u0002\\u0002\\u0002\\u01ab\\u01af\\u0007$\\u0002\",\n \"\\u0002\\u01ac\\u01ae\\u0005k6\\u0002\\u01ad\\u01ac\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01ae\\u01b1\\u0003\\u0002\\u0002\\u0002\\u01af\\u01ad\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01af\\u01b0\\u0003\\u0002\\u0002\\u0002\\u01b0\\u01b2\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01b1\\u01af\\u0003\\u0002\\u0002\\u0002\\u01b2\\u01b3\\u0007$\\u0002\\u0002\",\n \"\\u01b3j\\u0003\\u0002\\u0002\\u0002\\u01b4\\u01b7\\n\\n\\u0002\\u0002\\u01b5\\u01b7\",\n \"\\u0005y=\\u0002\\u01b6\\u01b4\\u0003\\u0002\\u0002\\u0002\\u01b6\\u01b5\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01b7l\\u0003\\u0002\\u0002\\u0002\\u01b8\\u01bb\\u0007\",\n \")\\u0002\\u0002\\u01b9\\u01bc\\u0005y=\\u0002\\u01ba\\u01bc\\n\\u000b\\u0002\\u0002\",\n \"\\u01bb\\u01b9\\u0003\\u0002\\u0002\\u0002\\u01bb\\u01ba\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01bc\\u01bd\\u0003\\u0002\\u0002\\u0002\\u01bd\\u01be\\u0007)\\u0002\\u0002\",\n \"\\u01ben\\u0003\\u0002\\u0002\\u0002\\u01bf\\u01c0\\t\\f\\u0002\\u0002\\u01c0\\u01c1\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01c1\\u01c2\\b8\\u0002\\u0002\\u01c2p\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01c3\\u01c4\\u0007=\\u0002\\u0002\\u01c4r\\u0003\\u0002\\u0002\",\n \"\\u0002\\u01c5\\u01c7\\t\\r\\u0002\\u0002\\u01c6\\u01c5\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01c7\\u01c8\\u0003\\u0002\\u0002\\u0002\\u01c8\\u01c6\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01c8\\u01c9\\u0003\\u0002\\u0002\\u0002\\u01c9\\u01cc\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01ca\\u01cc\\u0005q9\\u0002\\u01cb\\u01c6\\u0003\\u0002\\u0002\\u0002\\u01cb\",\n \"\\u01ca\\u0003\\u0002\\u0002\\u0002\\u01cct\\u0003\\u0002\\u0002\\u0002\\u01cd\",\n \"\\u01ce\\t\\u000e\\u0002\\u0002\\u01cev\\u0003\\u0002\\u0002\\u0002\\u01cf\\u01d0\",\n \"\\t\\u000f\\u0002\\u0002\\u01d0x\\u0003\\u0002\\u0002\\u0002\\u01d1\\u01d2\\u0007\",\n \"^\\u0002\\u0002\\u01d2\\u01d6\\t\\u0010\\u0002\\u0002\\u01d3\\u01d6\\u0005}?\\u0002\",\n \"\\u01d4\\u01d6\\u0005{>\\u0002\\u01d5\\u01d1\\u0003\\u0002\\u0002\\u0002\\u01d5\",\n \"\\u01d3\\u0003\\u0002\\u0002\\u0002\\u01d5\\u01d4\\u0003\\u0002\\u0002\\u0002\\u01d6\",\n \"z\\u0003\\u0002\\u0002\\u0002\\u01d7\\u01d8\\u0007^\\u0002\\u0002\\u01d8\\u01d9\",\n \"\\t\\u0011\\u0002\\u0002\\u01d9\\u01da\\u0005w<\\u0002\\u01da\\u01db\\u0005w<\\u0002\",\n \"\\u01db\\u01e3\\u0003\\u0002\\u0002\\u0002\\u01dc\\u01dd\\u0007^\\u0002\\u0002\",\n \"\\u01dd\\u01de\\u0005w<\\u0002\\u01de\\u01df\\u0005w<\\u0002\\u01df\\u01e3\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01e0\\u01e1\\u0007^\\u0002\\u0002\\u01e1\\u01e3\\u0005\",\n \"w<\\u0002\\u01e2\\u01d7\\u0003\\u0002\\u0002\\u0002\\u01e2\\u01dc\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01e2\\u01e0\\u0003\\u0002\\u0002\\u0002\\u01e3|\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01e4\\u01e5\\u0007^\\u0002\\u0002\\u01e5\\u01e6\\u0007w\\u0002\",\n \"\\u0002\\u01e6\\u01e7\\u0005u;\\u0002\\u01e7\\u01e8\\u0005u;\\u0002\\u01e8\\u01e9\",\n \"\\u0005u;\\u0002\\u01e9\\u01ea\\u0005u;\\u0002\\u01ea~\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01eb\\u01ec\\u00071\\u0002\\u0002\\u01ec\\u01ed\\u00071\\u0002\\u0002\\u01ed\",\n \"\\u01f1\\u0003\\u0002\\u0002\\u0002\\u01ee\\u01f0\\n\\r\\u0002\\u0002\\u01ef\\u01ee\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01f0\\u01f3\\u0003\\u0002\\u0002\\u0002\\u01f1\\u01ef\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01f1\\u01f2\\u0003\\u0002\\u0002\\u0002\\u01f2\\u01f5\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01f3\\u01f1\\u0003\\u0002\\u0002\\u0002\\u01f4\\u01f6\",\n \"\\u0007\\u000f\\u0002\\u0002\\u01f5\\u01f4\\u0003\\u0002\\u0002\\u0002\\u01f5\\u01f6\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01f6\\u01f7\\u0003\\u0002\\u0002\\u0002\\u01f7\\u0204\",\n \"\\u0007\\f\\u0002\\u0002\\u01f8\\u01f9\\u00071\\u0002\\u0002\\u01f9\\u01fa\\u0007\",\n \",\\u0002\\u0002\\u01fa\\u01fe\\u0003\\u0002\\u0002\\u0002\\u01fb\\u01fd\\u000b\",\n \"\\u0002\\u0002\\u0002\\u01fc\\u01fb\\u0003\\u0002\\u0002\\u0002\\u01fd\\u0200\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01fe\\u01ff\\u0003\\u0002\\u0002\\u0002\\u01fe\\u01fc\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01ff\\u0201\\u0003\\u0002\\u0002\\u0002\\u0200\\u01fe\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0201\\u0202\\u0007,\\u0002\\u0002\\u0202\\u0204\\u0007\",\n \"1\\u0002\\u0002\\u0203\\u01eb\\u0003\\u0002\\u0002\\u0002\\u0203\\u01f8\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0204\\u0205\\u0003\\u0002\\u0002\\u0002\\u0205\\u0206\\b\",\n \"@\\u0003\\u0002\\u0206\\u0080\\u0003\\u0002\\u0002\\u0002\\u001e\\u0002\\u0147\",\n \"\\u015a\\u0164\\u016e\\u0174\\u0179\\u017f\\u0184\\u0186\\u018b\\u0191\\u0196\\u019c\",\n \"\\u01a0\\u01a4\\u01a9\\u01af\\u01b6\\u01bb\\u01c8\\u01cb\\u01d5\\u01e2\\u01f1\\u01f5\",\n \"\\u01fe\\u0203\\u0004\\b\\u0002\\u0002\\u0002\\u0003\\u0002\"].join(\"\");\n\n\nvar atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);\n\nvar decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); });\n\nfunction ivprog(input) {\n\tantlr4.Lexer.call(this, input);\n this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache());\n return this;\n}\n\nivprog.prototype = Object.create(antlr4.Lexer.prototype);\nivprog.prototype.constructor = ivprog;\n\nivprog.EOF = antlr4.Token.EOF;\nivprog.RK_PROGRAM = 1;\nivprog.RK_REAL = 2;\nivprog.RK_VOID = 3;\nivprog.RK_BOOLEAN = 4;\nivprog.RK_STRING = 5;\nivprog.RK_INTEGER = 6;\nivprog.RK_CHARACTER = 7;\nivprog.RK_SWITCH = 8;\nivprog.RK_CASE = 9;\nivprog.RK_DEFAULT = 10;\nivprog.RK_CONST = 11;\nivprog.RK_FUNCTION = 12;\nivprog.RK_RETURN = 13;\nivprog.RK_FOR = 14;\nivprog.RK_FOR_ALT = 15;\nivprog.RK_FOR_FROM = 16;\nivprog.RK_FOR_TO = 17;\nivprog.RK_FOR_PASS = 18;\nivprog.RK_BREAK = 19;\nivprog.RK_DO = 20;\nivprog.RK_DO_UNTIL = 21;\nivprog.RK_WHILE = 22;\nivprog.RK_WHILE_ALT = 23;\nivprog.RK_IF = 24;\nivprog.RK_ELSE = 25;\nivprog.RK_FALSE = 26;\nivprog.RK_TRUE = 27;\nivprog.RK_REFERENCE = 28;\nivprog.OPEN_PARENTHESIS = 29;\nivprog.CLOSE_PARENTHESIS = 30;\nivprog.OPEN_BRACE = 31;\nivprog.CLOSE_BRACE = 32;\nivprog.OPEN_CURLY = 33;\nivprog.CLOSE_CURLY = 34;\nivprog.COMMA = 35;\nivprog.EQUAL = 36;\nivprog.SUM_OP = 37;\nivprog.MULTI_OP = 38;\nivprog.AND_OPERATOR = 39;\nivprog.OR_OPERATOR = 40;\nivprog.RELATIONAL_OPERATOR = 41;\nivprog.COLON = 42;\nivprog.NOT_OPERATOR = 43;\nivprog.ID = 44;\nivprog.LIB_ID = 45;\nivprog.INTEGER = 46;\nivprog.REAL = 47;\nivprog.STRING = 48;\nivprog.CHARACTER = 49;\nivprog.WHITESPACE = 50;\nivprog.EOS = 51;\nivprog.COMMENTS = 52;\n\nivprog.prototype.channelNames = [ \"DEFAULT_TOKEN_CHANNEL\", \"HIDDEN\" ];\n\nivprog.prototype.modeNames = [ \"DEFAULT_MODE\" ];\n\nivprog.prototype.literalNames = [ null, \"'program'\", \"'real'\", \"'void'\", \n \"'bool'\", \"'string'\", \"'int'\", \"'char'\", \n \"'switch'\", \"'case'\", \"'otherwise'\", \"'const'\", \n \"'function'\", \"'return'\", \"'for'\", \"'repeat_for'\", \n \"'from'\", \"'to'\", \"'pass'\", \"'break'\", \n \"'repeat'\", \"'until'\", \"'while'\", \"'repeat_while'\", \n \"'if'\", \"'else'\", \"'false'\", \"'true'\", \n \"'&'\", \"'('\", \"')'\", \"'['\", \"']'\", \"'{'\", \n \"'}'\", \"','\", null, null, null, null, \n null, null, \"':'\" ];\n\nivprog.prototype.symbolicNames = [ null, \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \n \"RK_BOOLEAN\", \"RK_STRING\", \"RK_INTEGER\", \n \"RK_CHARACTER\", \"RK_SWITCH\", \"RK_CASE\", \n \"RK_DEFAULT\", \"RK_CONST\", \"RK_FUNCTION\", \n \"RK_RETURN\", \"RK_FOR\", \"RK_FOR_ALT\", \n \"RK_FOR_FROM\", \"RK_FOR_TO\", \"RK_FOR_PASS\", \n \"RK_BREAK\", \"RK_DO\", \"RK_DO_UNTIL\", \"RK_WHILE\", \n \"RK_WHILE_ALT\", \"RK_IF\", \"RK_ELSE\", \"RK_FALSE\", \n \"RK_TRUE\", \"RK_REFERENCE\", \"OPEN_PARENTHESIS\", \n \"CLOSE_PARENTHESIS\", \"OPEN_BRACE\", \"CLOSE_BRACE\", \n \"OPEN_CURLY\", \"CLOSE_CURLY\", \"COMMA\", \n \"EQUAL\", \"SUM_OP\", \"MULTI_OP\", \"AND_OPERATOR\", \n \"OR_OPERATOR\", \"RELATIONAL_OPERATOR\", \n \"COLON\", \"NOT_OPERATOR\", \"ID\", \"LIB_ID\", \n \"INTEGER\", \"REAL\", \"STRING\", \"CHARACTER\", \n \"WHITESPACE\", \"EOS\", \"COMMENTS\" ];\n\nivprog.prototype.ruleNames = [ \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \"RK_BOOLEAN\", \n \"RK_STRING\", \"RK_INTEGER\", \"RK_CHARACTER\", \n \"RK_SWITCH\", \"RK_CASE\", \"RK_DEFAULT\", \"RK_CONST\", \n \"RK_FUNCTION\", \"RK_RETURN\", \"RK_FOR\", \"RK_FOR_ALT\", \n \"RK_FOR_FROM\", \"RK_FOR_TO\", \"RK_FOR_PASS\", \n \"RK_BREAK\", \"RK_DO\", \"RK_DO_UNTIL\", \"RK_WHILE\", \n \"RK_WHILE_ALT\", \"RK_IF\", \"RK_ELSE\", \"RK_FALSE\", \n \"RK_TRUE\", \"RK_LOGICAL_NOT\", \"RK_LOGICAL_AND\", \n \"RK_LOGICAL_OR\", \"RK_REFERENCE\", \"OPEN_PARENTHESIS\", \n \"CLOSE_PARENTHESIS\", \"OPEN_BRACE\", \"CLOSE_BRACE\", \n \"OPEN_CURLY\", \"CLOSE_CURLY\", \"COMMA\", \"EQUAL\", \n \"SUM_OP\", \"MULTI_OP\", \"AND_OPERATOR\", \"OR_OPERATOR\", \n \"RELATIONAL_OPERATOR\", \"COLON\", \"NOT_OPERATOR\", \n \"ID\", \"LIB_ID\", \"INTEGER\", \"REAL\", \"ExponentPart\", \n \"STRING\", \"STRING_CHARACTER\", \"CHARACTER\", \n \"WHITESPACE\", \"SEMICOLON\", \"EOS\", \"HEX_DIGIT\", \n \"OCTAL_DIGIT\", \"ESC_SEQ\", \"ESC_OCTAL\", \"ESC_UNICODE\", \n \"COMMENTS\" ];\n\nivprog.prototype.grammarFileName = \"ivprog.g4\";\n\n\n\nexports.ivprog = ivprog;\n\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = {\nivprog: __webpack_require__(0).ivprog\n};\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"antlr4/index\");\n\n/***/ })\n/******/ ]);","/* This is a dictionary of the language defined functions\n**/\nexport default {\n main_function: \"main\",\n $read: \"read\",\n $write: \"write\",\n $numElements: \"total_of_elements\",\n $matrixLines: \"total_of_lines\",\n $matrixColumns: \"total_of_columns\",\n $substring: \"substring\",\n $length: \"length\",\n $uppercase: \"uppercase\",\n $lowercase: \"lowercase\",\n $charAt: \"char_at\",\n $isReal: \"is_real\",\n $isInt: \"is_integer\",\n $isBool: \"is_logic\",\n $castReal: \"to_real\",\n $castInt: \"to_integer\",\n $castBool: \"to_logic\",\n $castString: \"to_string\",\n $sin: \"sin\",\n $cos: \"cos\",\n $tan: \"tan\",\n $sqrt: \"sqrt\",\n $pow: \"pow\",\n $log: \"log\",\n $abs: \"abs\",\n $negate: \"negate\",\n $invert: \"invert\",\n $max: \"maximum\",\n $min: \"minimum\",\n $rand: \"random\"\n\n}","/**\n * This is the dictionary of the language defined libraries\n */\nexport default {\n $mathLib: \"Mathematic\",\n $ioLib: \"IO\",\n $strLib: \"Text\",\n $arrayLib: \"Array\",\n $langLib: \"Conversion\"\n}","module.exports =\n/******/ (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/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\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.l = 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// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Generated from /tmp/tmp-405uNNdAGGYDPmN/ivprog.g4 by ANTLR 4.7\n// jshint ignore: start\nvar antlr4 = __webpack_require__(2);\n\n\nvar serializedATN = [\"\\u0003\\u608b\\ua72a\\u8133\\ub9ed\\u417c\\u3be7\\u7786\\u5964\",\n \"\\u00020\\u01e3\\b\\u0001\\u0004\\u0002\\t\\u0002\\u0004\\u0003\\t\\u0003\\u0004\",\n \"\\u0004\\t\\u0004\\u0004\\u0005\\t\\u0005\\u0004\\u0006\\t\\u0006\\u0004\\u0007\\t\",\n \"\\u0007\\u0004\\b\\t\\b\\u0004\\t\\t\\t\\u0004\\n\\t\\n\\u0004\\u000b\\t\\u000b\\u0004\",\n \"\\f\\t\\f\\u0004\\r\\t\\r\\u0004\\u000e\\t\\u000e\\u0004\\u000f\\t\\u000f\\u0004\\u0010\",\n \"\\t\\u0010\\u0004\\u0011\\t\\u0011\\u0004\\u0012\\t\\u0012\\u0004\\u0013\\t\\u0013\",\n \"\\u0004\\u0014\\t\\u0014\\u0004\\u0015\\t\\u0015\\u0004\\u0016\\t\\u0016\\u0004\\u0017\",\n \"\\t\\u0017\\u0004\\u0018\\t\\u0018\\u0004\\u0019\\t\\u0019\\u0004\\u001a\\t\\u001a\",\n \"\\u0004\\u001b\\t\\u001b\\u0004\\u001c\\t\\u001c\\u0004\\u001d\\t\\u001d\\u0004\\u001e\",\n \"\\t\\u001e\\u0004\\u001f\\t\\u001f\\u0004 \\t \\u0004!\\t!\\u0004\\\"\\t\\\"\\u0004#\",\n \"\\t#\\u0004$\\t$\\u0004%\\t%\\u0004&\\t&\\u0004\\'\\t\\'\\u0004(\\t(\\u0004)\\t)\\u0004\",\n \"*\\t*\\u0004+\\t+\\u0004,\\t,\\u0004-\\t-\\u0004.\\t.\\u0004/\\t/\\u00040\\t0\\u0004\",\n \"1\\t1\\u00042\\t2\\u00043\\t3\\u00044\\t4\\u00045\\t5\\u00046\\t6\\u00047\\t7\\u0004\",\n \"8\\t8\\u00049\\t9\\u0004:\\t:\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\",\n \"\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0003\",\n \"\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0004\\u0003\\u0004\",\n \"\\u0003\\u0004\\u0003\\u0004\\u0003\\u0004\\u0003\\u0004\\u0003\\u0005\\u0003\\u0005\",\n \"\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0006\",\n \"\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\",\n \"\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\",\n \"\\u0003\\u0007\\u0003\\u0007\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\",\n \"\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\",\n \"\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\",\n \"\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\",\n \"\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\f\\u0003\\f\\u0003\\f\\u0003\",\n \"\\f\\u0003\\f\\u0003\\f\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\",\n \"\\r\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\",\n \"\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000f\\u0003\\u000f\\u0003\\u000f\\u0003\",\n \"\\u000f\\u0003\\u000f\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\",\n \"\\u0010\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\",\n \"\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\",\n \"\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0013\\u0003\\u0013\\u0003\\u0013\\u0003\",\n \"\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\",\n \"\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\",\n \"\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\",\n \"\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0017\\u0003\",\n \"\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\\u0018\\u0003\\u0018\\u0003\\u0019\\u0003\",\n \"\\u0019\\u0003\\u0019\\u0003\\u001a\\u0003\\u001a\\u0003\\u001b\\u0003\\u001b\\u0003\",\n \"\\u001c\\u0003\\u001c\\u0003\\u001d\\u0003\\u001d\\u0003\\u001e\\u0003\\u001e\\u0003\",\n \"\\u001f\\u0003\\u001f\\u0003 \\u0003 \\u0003!\\u0003!\\u0003\\\"\\u0003\\\"\\u0003\",\n \"\\\"\\u0005\\\"\\u0124\\n\\\"\\u0003#\\u0003#\\u0003$\\u0003$\\u0003%\\u0003%\\u0003\",\n \"&\\u0003&\\u0003\\'\\u0003\\'\\u0003\\'\\u0003\\'\\u0003\\'\\u0003\\'\\u0003\\'\\u0003\",\n \"\\'\\u0003\\'\\u0005\\'\\u0137\\n\\'\\u0003(\\u0003(\\u0003)\\u0003)\\u0003*\\u0003\",\n \"*\\u0007*\\u013f\\n*\\f*\\u000e*\\u0142\\u000b*\\u0003+\\u0003+\\u0003+\\u0003\",\n \"+\\u0003,\\u0006,\\u0149\\n,\\r,\\u000e,\\u014a\\u0003,\\u0003,\\u0003,\\u0003\",\n \",\\u0005,\\u0151\\n,\\u0003,\\u0006,\\u0154\\n,\\r,\\u000e,\\u0155\\u0003,\\u0003\",\n \",\\u0003,\\u0003,\\u0005,\\u015c\\n,\\u0003,\\u0006,\\u015f\\n,\\r,\\u000e,\\u0160\",\n \"\\u0005,\\u0163\\n,\\u0003-\\u0006-\\u0166\\n-\\r-\\u000e-\\u0167\\u0003-\\u0003\",\n \"-\\u0006-\\u016c\\n-\\r-\\u000e-\\u016d\\u0003-\\u0006-\\u0171\\n-\\r-\\u000e-\\u0172\",\n \"\\u0003-\\u0003-\\u0007-\\u0177\\n-\\f-\\u000e-\\u017a\\u000b-\\u0003-\\u0005-\",\n \"\\u017d\\n-\\u0003.\\u0003.\\u0005.\\u0181\\n.\\u0003.\\u0006.\\u0184\\n.\\r.\\u000e\",\n \".\\u0185\\u0003/\\u0003/\\u0007/\\u018a\\n/\\f/\\u000e/\\u018d\\u000b/\\u0003/\",\n \"\\u0003/\\u00030\\u00030\\u00050\\u0193\\n0\\u00031\\u00031\\u00031\\u00051\\u0198\",\n \"\\n1\\u00031\\u00031\\u00032\\u00032\\u00032\\u00032\\u00033\\u00033\\u00034\\u0006\",\n \"4\\u01a3\\n4\\r4\\u000e4\\u01a4\\u00034\\u00054\\u01a8\\n4\\u00035\\u00035\\u0003\",\n \"6\\u00036\\u00037\\u00037\\u00037\\u00037\\u00057\\u01b2\\n7\\u00038\\u00038\\u0003\",\n \"8\\u00038\\u00038\\u00038\\u00038\\u00038\\u00038\\u00038\\u00038\\u00058\\u01bf\",\n \"\\n8\\u00039\\u00039\\u00039\\u00039\\u00039\\u00039\\u00039\\u0003:\\u0003:\\u0003\",\n \":\\u0003:\\u0007:\\u01cc\\n:\\f:\\u000e:\\u01cf\\u000b:\\u0003:\\u0005:\\u01d2\",\n \"\\n:\\u0003:\\u0003:\\u0003:\\u0003:\\u0003:\\u0007:\\u01d9\\n:\\f:\\u000e:\\u01dc\",\n \"\\u000b:\\u0003:\\u0003:\\u0005:\\u01e0\\n:\\u0003:\\u0003:\\u0003\\u01da\\u0002\",\n \";\\u0003\\u0003\\u0005\\u0004\\u0007\\u0005\\t\\u0006\\u000b\\u0007\\r\\b\\u000f\",\n \"\\t\\u0011\\n\\u0013\\u000b\\u0015\\f\\u0017\\r\\u0019\\u000e\\u001b\\u000f\\u001d\",\n \"\\u0010\\u001f\\u0011!\\u0012#\\u0013%\\u0014\\'\\u0015)\\u0016+\\u0017-\\u0002\",\n \"/\\u00021\\u00023\\u00185\\u00197\\u001a9\\u001b;\\u001c=\\u001d?\\u001eA\\u001f\",\n \"C E!G\\\"I#K$M%O&Q\\'S(U)W*Y+[\\u0002],_\\u0002a-c.e\\u0002g/i\\u0002k\\u0002\",\n \"m\\u0002o\\u0002q\\u0002s0\\u0003\\u0002\\u0012\\u0004\\u0002--//\\u0005\\u0002\",\n \"\\'\\',,11\\u0004\\u0002>>@@\\u0005\\u0002C\\\\aac|\\u0006\\u00022;C\\\\aac|\\u0003\",\n \"\\u00022;\\u0003\\u000223\\u0004\\u0002GGgg\\u0006\\u0002\\f\\f\\u000f\\u000f$\",\n \"$^^\\u0006\\u0002\\f\\f\\u000f\\u000f))^^\\u0004\\u0002\\u000b\\u000b\\\"\\\"\\u0004\",\n \"\\u0002\\f\\f\\u000f\\u000f\\u0005\\u00022;CHch\\u0003\\u000229\\n\\u0002$$))^\",\n \"^ddhhppttvv\\u0003\\u000225\\u0002\\u01f8\\u0002\\u0003\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002\\u0005\\u0003\\u0002\\u0002\\u0002\\u0002\\u0007\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002\\t\\u0003\\u0002\\u0002\\u0002\\u0002\\u000b\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002\\r\\u0003\\u0002\\u0002\\u0002\\u0002\\u000f\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002\\u0011\\u0003\\u0002\\u0002\\u0002\\u0002\\u0013\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002\\u0015\\u0003\\u0002\\u0002\\u0002\\u0002\\u0017\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002\\u0019\\u0003\\u0002\\u0002\\u0002\\u0002\\u001b\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002\\u001d\\u0003\\u0002\\u0002\\u0002\\u0002\\u001f\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002!\\u0003\\u0002\\u0002\\u0002\\u0002#\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002%\\u0003\\u0002\\u0002\\u0002\\u0002\\'\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \")\\u0003\\u0002\\u0002\\u0002\\u0002+\\u0003\\u0002\\u0002\\u0002\\u00023\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00025\\u0003\\u0002\\u0002\\u0002\\u00027\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00029\\u0003\\u0002\\u0002\\u0002\\u0002;\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002=\\u0003\\u0002\\u0002\\u0002\\u0002?\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002A\\u0003\\u0002\\u0002\\u0002\\u0002C\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"E\\u0003\\u0002\\u0002\\u0002\\u0002G\\u0003\\u0002\\u0002\\u0002\\u0002I\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002K\\u0003\\u0002\\u0002\\u0002\\u0002M\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002O\\u0003\\u0002\\u0002\\u0002\\u0002Q\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002S\\u0003\\u0002\\u0002\\u0002\\u0002U\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002W\\u0003\\u0002\\u0002\\u0002\\u0002Y\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"]\\u0003\\u0002\\u0002\\u0002\\u0002a\\u0003\\u0002\\u0002\\u0002\\u0002c\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002g\\u0003\\u0002\\u0002\\u0002\\u0002s\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0003u\\u0003\\u0002\\u0002\\u0002\\u0005~\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0007\\u0083\\u0003\\u0002\\u0002\\u0002\\t\\u0089\\u0003\\u0002\\u0002\",\n \"\\u0002\\u000b\\u0090\\u0003\\u0002\\u0002\\u0002\\r\\u0097\\u0003\\u0002\\u0002\",\n \"\\u0002\\u000f\\u009f\\u0003\\u0002\\u0002\\u0002\\u0011\\u00a9\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0013\\u00b1\\u0003\\u0002\\u0002\\u0002\\u0015\\u00b6\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0017\\u00c0\\u0003\\u0002\\u0002\\u0002\\u0019\\u00c6\\u0003\\u0002\\u0002\",\n \"\\u0002\\u001b\\u00cd\\u0003\\u0002\\u0002\\u0002\\u001d\\u00d5\\u0003\\u0002\\u0002\",\n \"\\u0002\\u001f\\u00da\\u0003\\u0002\\u0002\\u0002!\\u00df\\u0003\\u0002\\u0002\",\n \"\\u0002#\\u00e4\\u0003\\u0002\\u0002\\u0002%\\u00ed\\u0003\\u0002\\u0002\\u0002\",\n \"\\'\\u00f0\\u0003\\u0002\\u0002\\u0002)\\u00f6\\u0003\\u0002\\u0002\\u0002+\\u00fc\",\n \"\\u0003\\u0002\\u0002\\u0002-\\u0107\\u0003\\u0002\\u0002\\u0002/\\u010b\\u0003\",\n \"\\u0002\\u0002\\u00021\\u010d\\u0003\\u0002\\u0002\\u00023\\u0110\\u0003\\u0002\",\n \"\\u0002\\u00025\\u0112\\u0003\\u0002\\u0002\\u00027\\u0114\\u0003\\u0002\\u0002\",\n \"\\u00029\\u0116\\u0003\\u0002\\u0002\\u0002;\\u0118\\u0003\\u0002\\u0002\\u0002\",\n \"=\\u011a\\u0003\\u0002\\u0002\\u0002?\\u011c\\u0003\\u0002\\u0002\\u0002A\\u011e\",\n \"\\u0003\\u0002\\u0002\\u0002C\\u0123\\u0003\\u0002\\u0002\\u0002E\\u0125\\u0003\",\n \"\\u0002\\u0002\\u0002G\\u0127\\u0003\\u0002\\u0002\\u0002I\\u0129\\u0003\\u0002\",\n \"\\u0002\\u0002K\\u012b\\u0003\\u0002\\u0002\\u0002M\\u0136\\u0003\\u0002\\u0002\",\n \"\\u0002O\\u0138\\u0003\\u0002\\u0002\\u0002Q\\u013a\\u0003\\u0002\\u0002\\u0002\",\n \"S\\u013c\\u0003\\u0002\\u0002\\u0002U\\u0143\\u0003\\u0002\\u0002\\u0002W\\u0162\",\n \"\\u0003\\u0002\\u0002\\u0002Y\\u017c\\u0003\\u0002\\u0002\\u0002[\\u017e\\u0003\",\n \"\\u0002\\u0002\\u0002]\\u0187\\u0003\\u0002\\u0002\\u0002_\\u0192\\u0003\\u0002\",\n \"\\u0002\\u0002a\\u0194\\u0003\\u0002\\u0002\\u0002c\\u019b\\u0003\\u0002\\u0002\",\n \"\\u0002e\\u019f\\u0003\\u0002\\u0002\\u0002g\\u01a7\\u0003\\u0002\\u0002\\u0002\",\n \"i\\u01a9\\u0003\\u0002\\u0002\\u0002k\\u01ab\\u0003\\u0002\\u0002\\u0002m\\u01b1\",\n \"\\u0003\\u0002\\u0002\\u0002o\\u01be\\u0003\\u0002\\u0002\\u0002q\\u01c0\\u0003\",\n \"\\u0002\\u0002\\u0002s\\u01df\\u0003\\u0002\\u0002\\u0002uv\\u0007r\\u0002\\u0002\",\n \"vw\\u0007t\\u0002\\u0002wx\\u0007q\\u0002\\u0002xy\\u0007i\\u0002\\u0002yz\\u0007\",\n \"t\\u0002\\u0002z{\\u0007c\\u0002\\u0002{|\\u0007o\\u0002\\u0002|}\\u0007c\\u0002\",\n \"\\u0002}\\u0004\\u0003\\u0002\\u0002\\u0002~\\u007f\\u0007t\\u0002\\u0002\\u007f\",\n \"\\u0080\\u0007g\\u0002\\u0002\\u0080\\u0081\\u0007c\\u0002\\u0002\\u0081\\u0082\",\n \"\\u0007n\\u0002\\u0002\\u0082\\u0006\\u0003\\u0002\\u0002\\u0002\\u0083\\u0084\",\n \"\\u0007x\\u0002\\u0002\\u0084\\u0085\\u0007c\\u0002\\u0002\\u0085\\u0086\\u0007\",\n \"|\\u0002\\u0002\\u0086\\u0087\\u0007k\\u0002\\u0002\\u0087\\u0088\\u0007q\\u0002\",\n \"\\u0002\\u0088\\b\\u0003\\u0002\\u0002\\u0002\\u0089\\u008a\\u0007n\\u0002\\u0002\",\n \"\\u008a\\u008b\\u0007q\\u0002\\u0002\\u008b\\u008c\\u0007i\\u0002\\u0002\\u008c\",\n \"\\u008d\\u0007k\\u0002\\u0002\\u008d\\u008e\\u0007e\\u0002\\u0002\\u008e\\u008f\",\n \"\\u0007q\\u0002\\u0002\\u008f\\n\\u0003\\u0002\\u0002\\u0002\\u0090\\u0091\\u0007\",\n \"e\\u0002\\u0002\\u0091\\u0092\\u0007c\\u0002\\u0002\\u0092\\u0093\\u0007f\\u0002\",\n \"\\u0002\\u0093\\u0094\\u0007g\\u0002\\u0002\\u0094\\u0095\\u0007k\\u0002\\u0002\",\n \"\\u0095\\u0096\\u0007c\\u0002\\u0002\\u0096\\f\\u0003\\u0002\\u0002\\u0002\\u0097\",\n \"\\u0098\\u0007k\\u0002\\u0002\\u0098\\u0099\\u0007p\\u0002\\u0002\\u0099\\u009a\",\n \"\\u0007v\\u0002\\u0002\\u009a\\u009b\\u0007g\\u0002\\u0002\\u009b\\u009c\\u0007\",\n \"k\\u0002\\u0002\\u009c\\u009d\\u0007t\\u0002\\u0002\\u009d\\u009e\\u0007q\\u0002\",\n \"\\u0002\\u009e\\u000e\\u0003\\u0002\\u0002\\u0002\\u009f\\u00a0\\u0007e\\u0002\",\n \"\\u0002\\u00a0\\u00a1\\u0007c\\u0002\\u0002\\u00a1\\u00a2\\u0007t\\u0002\\u0002\",\n \"\\u00a2\\u00a3\\u0007c\\u0002\\u0002\\u00a3\\u00a4\\u0007e\\u0002\\u0002\\u00a4\",\n \"\\u00a5\\u0007v\\u0002\\u0002\\u00a5\\u00a6\\u0007g\\u0002\\u0002\\u00a6\\u00a7\",\n \"\\u0007t\\u0002\\u0002\\u00a7\\u00a8\\u0007g\\u0002\\u0002\\u00a8\\u0010\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00a9\\u00aa\\u0007g\\u0002\\u0002\\u00aa\\u00ab\\u0007\",\n \"u\\u0002\\u0002\\u00ab\\u00ac\\u0007e\\u0002\\u0002\\u00ac\\u00ad\\u0007q\\u0002\",\n \"\\u0002\\u00ad\\u00ae\\u0007n\\u0002\\u0002\\u00ae\\u00af\\u0007j\\u0002\\u0002\",\n \"\\u00af\\u00b0\\u0007c\\u0002\\u0002\\u00b0\\u0012\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00b1\\u00b2\\u0007e\\u0002\\u0002\\u00b2\\u00b3\\u0007c\\u0002\\u0002\\u00b3\",\n \"\\u00b4\\u0007u\\u0002\\u0002\\u00b4\\u00b5\\u0007q\\u0002\\u0002\\u00b5\\u0014\",\n \"\\u0003\\u0002\\u0002\\u0002\\u00b6\\u00b7\\u0007e\\u0002\\u0002\\u00b7\\u00b8\",\n \"\\u0007q\\u0002\\u0002\\u00b8\\u00b9\\u0007p\\u0002\\u0002\\u00b9\\u00ba\\u0007\",\n \"v\\u0002\\u0002\\u00ba\\u00bb\\u0007t\\u0002\\u0002\\u00bb\\u00bc\\u0007c\\u0002\",\n \"\\u0002\\u00bc\\u00bd\\u0007t\\u0002\\u0002\\u00bd\\u00be\\u0007k\\u0002\\u0002\",\n \"\\u00be\\u00bf\\u0007q\\u0002\\u0002\\u00bf\\u0016\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00c0\\u00c1\\u0007e\\u0002\\u0002\\u00c1\\u00c2\\u0007q\\u0002\\u0002\\u00c2\",\n \"\\u00c3\\u0007p\\u0002\\u0002\\u00c3\\u00c4\\u0007u\\u0002\\u0002\\u00c4\\u00c5\",\n \"\\u0007v\\u0002\\u0002\\u00c5\\u0018\\u0003\\u0002\\u0002\\u0002\\u00c6\\u00c7\",\n \"\\u0007h\\u0002\\u0002\\u00c7\\u00c8\\u0007w\\u0002\\u0002\\u00c8\\u00c9\\u0007\",\n \"p\\u0002\\u0002\\u00c9\\u00ca\\u0007e\\u0002\\u0002\\u00ca\\u00cb\\u0007c\\u0002\",\n \"\\u0002\\u00cb\\u00cc\\u0007q\\u0002\\u0002\\u00cc\\u001a\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00cd\\u00ce\\u0007t\\u0002\\u0002\\u00ce\\u00cf\\u0007g\\u0002\\u0002\",\n \"\\u00cf\\u00d0\\u0007v\\u0002\\u0002\\u00d0\\u00d1\\u0007q\\u0002\\u0002\\u00d1\",\n \"\\u00d2\\u0007t\\u0002\\u0002\\u00d2\\u00d3\\u0007p\\u0002\\u0002\\u00d3\\u00d4\",\n \"\\u0007g\\u0002\\u0002\\u00d4\\u001c\\u0003\\u0002\\u0002\\u0002\\u00d5\\u00d6\",\n \"\\u0007r\\u0002\\u0002\\u00d6\\u00d7\\u0007c\\u0002\\u0002\\u00d7\\u00d8\\u0007\",\n \"t\\u0002\\u0002\\u00d8\\u00d9\\u0007c\\u0002\\u0002\\u00d9\\u001e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00da\\u00db\\u0007r\\u0002\\u0002\\u00db\\u00dc\\u0007c\\u0002\",\n \"\\u0002\\u00dc\\u00dd\\u0007t\\u0002\\u0002\\u00dd\\u00de\\u0007g\\u0002\\u0002\",\n \"\\u00de \\u0003\\u0002\\u0002\\u0002\\u00df\\u00e0\\u0007h\\u0002\\u0002\\u00e0\",\n \"\\u00e1\\u0007c\\u0002\\u0002\\u00e1\\u00e2\\u0007e\\u0002\\u0002\\u00e2\\u00e3\",\n \"\\u0007c\\u0002\\u0002\\u00e3\\\"\\u0003\\u0002\\u0002\\u0002\\u00e4\\u00e5\\u0007\",\n \"g\\u0002\\u0002\\u00e5\\u00e6\\u0007p\\u0002\\u0002\\u00e6\\u00e7\\u0007s\\u0002\",\n \"\\u0002\\u00e7\\u00e8\\u0007w\\u0002\\u0002\\u00e8\\u00e9\\u0007c\\u0002\\u0002\",\n \"\\u00e9\\u00ea\\u0007p\\u0002\\u0002\\u00ea\\u00eb\\u0007v\\u0002\\u0002\\u00eb\",\n \"\\u00ec\\u0007q\\u0002\\u0002\\u00ec$\\u0003\\u0002\\u0002\\u0002\\u00ed\\u00ee\",\n \"\\u0007u\\u0002\\u0002\\u00ee\\u00ef\\u0007g\\u0002\\u0002\\u00ef&\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00f0\\u00f1\\u0007u\\u0002\\u0002\\u00f1\\u00f2\\u0007g\\u0002\",\n \"\\u0002\\u00f2\\u00f3\\u0007p\\u0002\\u0002\\u00f3\\u00f4\\u0007c\\u0002\\u0002\",\n \"\\u00f4\\u00f5\\u0007q\\u0002\\u0002\\u00f5(\\u0003\\u0002\\u0002\\u0002\\u00f6\",\n \"\\u00f7\\u0007h\\u0002\\u0002\\u00f7\\u00f8\\u0007c\\u0002\\u0002\\u00f8\\u00f9\",\n \"\\u0007n\\u0002\\u0002\\u00f9\\u00fa\\u0007u\\u0002\\u0002\\u00fa\\u00fb\\u0007\",\n \"q\\u0002\\u0002\\u00fb*\\u0003\\u0002\\u0002\\u0002\\u00fc\\u00fd\\u0007x\\u0002\",\n \"\\u0002\\u00fd\\u00fe\\u0007g\\u0002\\u0002\\u00fe\\u00ff\\u0007t\\u0002\\u0002\",\n \"\\u00ff\\u0100\\u0007f\\u0002\\u0002\\u0100\\u0101\\u0007c\\u0002\\u0002\\u0101\",\n \"\\u0102\\u0007f\\u0002\\u0002\\u0102\\u0103\\u0007g\\u0002\\u0002\\u0103\\u0104\",\n \"\\u0007k\\u0002\\u0002\\u0104\\u0105\\u0007t\\u0002\\u0002\\u0105\\u0106\\u0007\",\n \"q\\u0002\\u0002\\u0106,\\u0003\\u0002\\u0002\\u0002\\u0107\\u0108\\u0007p\\u0002\",\n \"\\u0002\\u0108\\u0109\\u0007c\\u0002\\u0002\\u0109\\u010a\\u0007q\\u0002\\u0002\",\n \"\\u010a.\\u0003\\u0002\\u0002\\u0002\\u010b\\u010c\\u0007G\\u0002\\u0002\\u010c\",\n \"0\\u0003\\u0002\\u0002\\u0002\\u010d\\u010e\\u0007Q\\u0002\\u0002\\u010e\\u010f\",\n \"\\u0007W\\u0002\\u0002\\u010f2\\u0003\\u0002\\u0002\\u0002\\u0110\\u0111\\u0007\",\n \"(\\u0002\\u0002\\u01114\\u0003\\u0002\\u0002\\u0002\\u0112\\u0113\\u0007*\\u0002\",\n \"\\u0002\\u01136\\u0003\\u0002\\u0002\\u0002\\u0114\\u0115\\u0007+\\u0002\\u0002\",\n \"\\u01158\\u0003\\u0002\\u0002\\u0002\\u0116\\u0117\\u0007]\\u0002\\u0002\\u0117\",\n \":\\u0003\\u0002\\u0002\\u0002\\u0118\\u0119\\u0007_\\u0002\\u0002\\u0119<\\u0003\",\n \"\\u0002\\u0002\\u0002\\u011a\\u011b\\u0007}\\u0002\\u0002\\u011b>\\u0003\\u0002\",\n \"\\u0002\\u0002\\u011c\\u011d\\u0007\\u007f\\u0002\\u0002\\u011d@\\u0003\\u0002\",\n \"\\u0002\\u0002\\u011e\\u011f\\u0007.\\u0002\\u0002\\u011fB\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0120\\u0121\\u0007>\\u0002\\u0002\\u0121\\u0124\\u0007/\\u0002\\u0002\",\n \"\\u0122\\u0124\\u0007\\u2192\\u0002\\u0002\\u0123\\u0120\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0123\\u0122\\u0003\\u0002\\u0002\\u0002\\u0124D\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0125\\u0126\\t\\u0002\\u0002\\u0002\\u0126F\\u0003\\u0002\\u0002\\u0002\\u0127\",\n \"\\u0128\\t\\u0003\\u0002\\u0002\\u0128H\\u0003\\u0002\\u0002\\u0002\\u0129\\u012a\",\n \"\\u0005/\\u0018\\u0002\\u012aJ\\u0003\\u0002\\u0002\\u0002\\u012b\\u012c\\u0005\",\n \"1\\u0019\\u0002\\u012cL\\u0003\\u0002\\u0002\\u0002\\u012d\\u012e\\u0007@\\u0002\",\n \"\\u0002\\u012e\\u0137\\u0007?\\u0002\\u0002\\u012f\\u0130\\u0007?\\u0002\\u0002\",\n \"\\u0130\\u0137\\u0007?\\u0002\\u0002\\u0131\\u0132\\u0007>\\u0002\\u0002\\u0132\",\n \"\\u0137\\u0007?\\u0002\\u0002\\u0133\\u0137\\t\\u0004\\u0002\\u0002\\u0134\\u0135\",\n \"\\u0007#\\u0002\\u0002\\u0135\\u0137\\u0007?\\u0002\\u0002\\u0136\\u012d\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0136\\u012f\\u0003\\u0002\\u0002\\u0002\\u0136\\u0131\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0136\\u0133\\u0003\\u0002\\u0002\\u0002\\u0136\\u0134\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0137N\\u0003\\u0002\\u0002\\u0002\\u0138\\u0139\\u0007\",\n \"<\\u0002\\u0002\\u0139P\\u0003\\u0002\\u0002\\u0002\\u013a\\u013b\\u0005-\\u0017\",\n \"\\u0002\\u013bR\\u0003\\u0002\\u0002\\u0002\\u013c\\u0140\\t\\u0005\\u0002\\u0002\",\n \"\\u013d\\u013f\\t\\u0006\\u0002\\u0002\\u013e\\u013d\\u0003\\u0002\\u0002\\u0002\",\n \"\\u013f\\u0142\\u0003\\u0002\\u0002\\u0002\\u0140\\u013e\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0140\\u0141\\u0003\\u0002\\u0002\\u0002\\u0141T\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0142\\u0140\\u0003\\u0002\\u0002\\u0002\\u0143\\u0144\\u0005S*\\u0002\\u0144\",\n \"\\u0145\\u00070\\u0002\\u0002\\u0145\\u0146\\u0005S*\\u0002\\u0146V\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0147\\u0149\\t\\u0007\\u0002\\u0002\\u0148\\u0147\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0149\\u014a\\u0003\\u0002\\u0002\\u0002\\u014a\\u0148\\u0003\\u0002\",\n \"\\u0002\\u0002\\u014a\\u014b\\u0003\\u0002\\u0002\\u0002\\u014b\\u0163\\u0003\\u0002\",\n \"\\u0002\\u0002\\u014c\\u014d\\u00072\\u0002\\u0002\\u014d\\u0151\\u0007z\\u0002\",\n \"\\u0002\\u014e\\u014f\\u00072\\u0002\\u0002\\u014f\\u0151\\u0007Z\\u0002\\u0002\",\n \"\\u0150\\u014c\\u0003\\u0002\\u0002\\u0002\\u0150\\u014e\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0151\\u0153\\u0003\\u0002\\u0002\\u0002\\u0152\\u0154\\u0005i5\\u0002\\u0153\",\n \"\\u0152\\u0003\\u0002\\u0002\\u0002\\u0154\\u0155\\u0003\\u0002\\u0002\\u0002\\u0155\",\n \"\\u0153\\u0003\\u0002\\u0002\\u0002\\u0155\\u0156\\u0003\\u0002\\u0002\\u0002\\u0156\",\n \"\\u0163\\u0003\\u0002\\u0002\\u0002\\u0157\\u0158\\u00072\\u0002\\u0002\\u0158\",\n \"\\u015c\\u0007d\\u0002\\u0002\\u0159\\u015a\\u00072\\u0002\\u0002\\u015a\\u015c\",\n \"\\u0007D\\u0002\\u0002\\u015b\\u0157\\u0003\\u0002\\u0002\\u0002\\u015b\\u0159\",\n \"\\u0003\\u0002\\u0002\\u0002\\u015c\\u015e\\u0003\\u0002\\u0002\\u0002\\u015d\\u015f\",\n \"\\t\\b\\u0002\\u0002\\u015e\\u015d\\u0003\\u0002\\u0002\\u0002\\u015f\\u0160\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0160\\u015e\\u0003\\u0002\\u0002\\u0002\\u0160\\u0161\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0161\\u0163\\u0003\\u0002\\u0002\\u0002\\u0162\\u0148\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0162\\u0150\\u0003\\u0002\\u0002\\u0002\\u0162\\u015b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0163X\\u0003\\u0002\\u0002\\u0002\\u0164\\u0166\\t\\u0007\",\n \"\\u0002\\u0002\\u0165\\u0164\\u0003\\u0002\\u0002\\u0002\\u0166\\u0167\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0167\\u0165\\u0003\\u0002\\u0002\\u0002\\u0167\\u0168\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0168\\u0169\\u0003\\u0002\\u0002\\u0002\\u0169\\u016b\\u00070\",\n \"\\u0002\\u0002\\u016a\\u016c\\t\\u0007\\u0002\\u0002\\u016b\\u016a\\u0003\\u0002\",\n \"\\u0002\\u0002\\u016c\\u016d\\u0003\\u0002\\u0002\\u0002\\u016d\\u016b\\u0003\\u0002\",\n \"\\u0002\\u0002\\u016d\\u016e\\u0003\\u0002\\u0002\\u0002\\u016e\\u017d\\u0003\\u0002\",\n \"\\u0002\\u0002\\u016f\\u0171\\t\\u0007\\u0002\\u0002\\u0170\\u016f\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0171\\u0172\\u0003\\u0002\\u0002\\u0002\\u0172\\u0170\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0172\\u0173\\u0003\\u0002\\u0002\\u0002\\u0173\\u0174\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0174\\u0178\\u00070\\u0002\\u0002\\u0175\\u0177\\t\\u0007\\u0002\",\n \"\\u0002\\u0176\\u0175\\u0003\\u0002\\u0002\\u0002\\u0177\\u017a\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0178\\u0176\\u0003\\u0002\\u0002\\u0002\\u0178\\u0179\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0179\\u017b\\u0003\\u0002\\u0002\\u0002\\u017a\\u0178\\u0003\\u0002\\u0002\",\n \"\\u0002\\u017b\\u017d\\u0005[.\\u0002\\u017c\\u0165\\u0003\\u0002\\u0002\\u0002\",\n \"\\u017c\\u0170\\u0003\\u0002\\u0002\\u0002\\u017dZ\\u0003\\u0002\\u0002\\u0002\",\n \"\\u017e\\u0180\\t\\t\\u0002\\u0002\\u017f\\u0181\\t\\u0002\\u0002\\u0002\\u0180\\u017f\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0180\\u0181\\u0003\\u0002\\u0002\\u0002\\u0181\\u0183\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0182\\u0184\\t\\u0007\\u0002\\u0002\\u0183\\u0182\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0184\\u0185\\u0003\\u0002\\u0002\\u0002\\u0185\\u0183\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0185\\u0186\\u0003\\u0002\\u0002\\u0002\\u0186\\\\\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0187\\u018b\\u0007$\\u0002\\u0002\\u0188\\u018a\",\n \"\\u0005_0\\u0002\\u0189\\u0188\\u0003\\u0002\\u0002\\u0002\\u018a\\u018d\\u0003\",\n \"\\u0002\\u0002\\u0002\\u018b\\u0189\\u0003\\u0002\\u0002\\u0002\\u018b\\u018c\\u0003\",\n \"\\u0002\\u0002\\u0002\\u018c\\u018e\\u0003\\u0002\\u0002\\u0002\\u018d\\u018b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u018e\\u018f\\u0007$\\u0002\\u0002\\u018f^\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0190\\u0193\\n\\n\\u0002\\u0002\\u0191\\u0193\\u0005m7\\u0002\\u0192\",\n \"\\u0190\\u0003\\u0002\\u0002\\u0002\\u0192\\u0191\\u0003\\u0002\\u0002\\u0002\\u0193\",\n \"`\\u0003\\u0002\\u0002\\u0002\\u0194\\u0197\\u0007)\\u0002\\u0002\\u0195\\u0198\",\n \"\\u0005m7\\u0002\\u0196\\u0198\\n\\u000b\\u0002\\u0002\\u0197\\u0195\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0197\\u0196\\u0003\\u0002\\u0002\\u0002\\u0198\\u0199\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0199\\u019a\\u0007)\\u0002\\u0002\\u019ab\\u0003\\u0002\\u0002\",\n \"\\u0002\\u019b\\u019c\\t\\f\\u0002\\u0002\\u019c\\u019d\\u0003\\u0002\\u0002\\u0002\",\n \"\\u019d\\u019e\\b2\\u0002\\u0002\\u019ed\\u0003\\u0002\\u0002\\u0002\\u019f\\u01a0\",\n \"\\u0007=\\u0002\\u0002\\u01a0f\\u0003\\u0002\\u0002\\u0002\\u01a1\\u01a3\\t\\r\\u0002\",\n \"\\u0002\\u01a2\\u01a1\\u0003\\u0002\\u0002\\u0002\\u01a3\\u01a4\\u0003\\u0002\\u0002\",\n \"\\u0002\\u01a4\\u01a2\\u0003\\u0002\\u0002\\u0002\\u01a4\\u01a5\\u0003\\u0002\\u0002\",\n \"\\u0002\\u01a5\\u01a8\\u0003\\u0002\\u0002\\u0002\\u01a6\\u01a8\\u0005e3\\u0002\",\n \"\\u01a7\\u01a2\\u0003\\u0002\\u0002\\u0002\\u01a7\\u01a6\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01a8h\\u0003\\u0002\\u0002\\u0002\\u01a9\\u01aa\\t\\u000e\\u0002\\u0002\\u01aa\",\n \"j\\u0003\\u0002\\u0002\\u0002\\u01ab\\u01ac\\t\\u000f\\u0002\\u0002\\u01acl\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01ad\\u01ae\\u0007^\\u0002\\u0002\\u01ae\\u01b2\\t\\u0010\",\n \"\\u0002\\u0002\\u01af\\u01b2\\u0005q9\\u0002\\u01b0\\u01b2\\u0005o8\\u0002\\u01b1\",\n \"\\u01ad\\u0003\\u0002\\u0002\\u0002\\u01b1\\u01af\\u0003\\u0002\\u0002\\u0002\\u01b1\",\n \"\\u01b0\\u0003\\u0002\\u0002\\u0002\\u01b2n\\u0003\\u0002\\u0002\\u0002\\u01b3\",\n \"\\u01b4\\u0007^\\u0002\\u0002\\u01b4\\u01b5\\t\\u0011\\u0002\\u0002\\u01b5\\u01b6\",\n \"\\u0005k6\\u0002\\u01b6\\u01b7\\u0005k6\\u0002\\u01b7\\u01bf\\u0003\\u0002\\u0002\",\n \"\\u0002\\u01b8\\u01b9\\u0007^\\u0002\\u0002\\u01b9\\u01ba\\u0005k6\\u0002\\u01ba\",\n \"\\u01bb\\u0005k6\\u0002\\u01bb\\u01bf\\u0003\\u0002\\u0002\\u0002\\u01bc\\u01bd\",\n \"\\u0007^\\u0002\\u0002\\u01bd\\u01bf\\u0005k6\\u0002\\u01be\\u01b3\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01be\\u01b8\\u0003\\u0002\\u0002\\u0002\\u01be\\u01bc\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01bfp\\u0003\\u0002\\u0002\\u0002\\u01c0\\u01c1\\u0007^\\u0002\",\n \"\\u0002\\u01c1\\u01c2\\u0007w\\u0002\\u0002\\u01c2\\u01c3\\u0005i5\\u0002\\u01c3\",\n \"\\u01c4\\u0005i5\\u0002\\u01c4\\u01c5\\u0005i5\\u0002\\u01c5\\u01c6\\u0005i5\\u0002\",\n \"\\u01c6r\\u0003\\u0002\\u0002\\u0002\\u01c7\\u01c8\\u00071\\u0002\\u0002\\u01c8\",\n \"\\u01c9\\u00071\\u0002\\u0002\\u01c9\\u01cd\\u0003\\u0002\\u0002\\u0002\\u01ca\",\n \"\\u01cc\\n\\r\\u0002\\u0002\\u01cb\\u01ca\\u0003\\u0002\\u0002\\u0002\\u01cc\\u01cf\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01cd\\u01cb\\u0003\\u0002\\u0002\\u0002\\u01cd\\u01ce\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01ce\\u01d1\\u0003\\u0002\\u0002\\u0002\\u01cf\\u01cd\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01d0\\u01d2\\u0007\\u000f\\u0002\\u0002\\u01d1\\u01d0\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01d1\\u01d2\\u0003\\u0002\\u0002\\u0002\\u01d2\\u01d3\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01d3\\u01e0\\u0007\\f\\u0002\\u0002\\u01d4\\u01d5\",\n \"\\u00071\\u0002\\u0002\\u01d5\\u01d6\\u0007,\\u0002\\u0002\\u01d6\\u01da\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01d7\\u01d9\\u000b\\u0002\\u0002\\u0002\\u01d8\\u01d7\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01d9\\u01dc\\u0003\\u0002\\u0002\\u0002\\u01da\\u01db\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01da\\u01d8\\u0003\\u0002\\u0002\\u0002\\u01db\\u01dd\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01dc\\u01da\\u0003\\u0002\\u0002\\u0002\\u01dd\\u01de\\u0007\",\n \",\\u0002\\u0002\\u01de\\u01e0\\u00071\\u0002\\u0002\\u01df\\u01c7\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01df\\u01d4\\u0003\\u0002\\u0002\\u0002\\u01e0\\u01e1\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01e1\\u01e2\\b:\\u0003\\u0002\\u01e2t\\u0003\\u0002\\u0002\\u0002\",\n \"\\u001e\\u0002\\u0123\\u0136\\u0140\\u014a\\u0150\\u0155\\u015b\\u0160\\u0162\\u0167\",\n \"\\u016d\\u0172\\u0178\\u017c\\u0180\\u0185\\u018b\\u0192\\u0197\\u01a4\\u01a7\\u01b1\",\n \"\\u01be\\u01cd\\u01d1\\u01da\\u01df\\u0004\\b\\u0002\\u0002\\u0002\\u0003\\u0002\"].join(\"\");\n\n\nvar atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);\n\nvar decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); });\n\nfunction ivprog(input) {\n\tantlr4.Lexer.call(this, input);\n this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache());\n return this;\n}\n\nivprog.prototype = Object.create(antlr4.Lexer.prototype);\nivprog.prototype.constructor = ivprog;\n\nivprog.EOF = antlr4.Token.EOF;\nivprog.RK_PROGRAM = 1;\nivprog.RK_REAL = 2;\nivprog.RK_VOID = 3;\nivprog.RK_BOOLEAN = 4;\nivprog.RK_STRING = 5;\nivprog.RK_INTEGER = 6;\nivprog.RK_CHARACTER = 7;\nivprog.RK_SWITCH = 8;\nivprog.RK_CASE = 9;\nivprog.RK_DEFAULT = 10;\nivprog.RK_CONST = 11;\nivprog.RK_FUNCTION = 12;\nivprog.RK_RETURN = 13;\nivprog.RK_FOR = 14;\nivprog.RK_BREAK = 15;\nivprog.RK_DO = 16;\nivprog.RK_WHILE = 17;\nivprog.RK_IF = 18;\nivprog.RK_ELSE = 19;\nivprog.RK_FALSE = 20;\nivprog.RK_TRUE = 21;\nivprog.RK_REFERENCE = 22;\nivprog.OPEN_PARENTHESIS = 23;\nivprog.CLOSE_PARENTHESIS = 24;\nivprog.OPEN_BRACE = 25;\nivprog.CLOSE_BRACE = 26;\nivprog.OPEN_CURLY = 27;\nivprog.CLOSE_CURLY = 28;\nivprog.COMMA = 29;\nivprog.EQUAL = 30;\nivprog.SUM_OP = 31;\nivprog.MULTI_OP = 32;\nivprog.AND_OPERATOR = 33;\nivprog.OR_OPERATOR = 34;\nivprog.RELATIONAL_OPERATOR = 35;\nivprog.COLON = 36;\nivprog.NOT_OPERATOR = 37;\nivprog.ID = 38;\nivprog.LIB_ID = 39;\nivprog.INTEGER = 40;\nivprog.REAL = 41;\nivprog.STRING = 42;\nivprog.CHARACTER = 43;\nivprog.WHITESPACE = 44;\nivprog.EOS = 45;\nivprog.COMMENTS = 46;\n\nivprog.prototype.channelNames = [ \"DEFAULT_TOKEN_CHANNEL\", \"HIDDEN\" ];\n\nivprog.prototype.modeNames = [ \"DEFAULT_MODE\" ];\n\nivprog.prototype.literalNames = [ null, \"'programa'\", \"'real'\", \"'vazio'\", \n \"'logico'\", \"'cadeia'\", \"'inteiro'\", \"'caractere'\", \n \"'escolha'\", \"'caso'\", \"'contrario'\", \n \"'const'\", \"'funcao'\", \"'retorne'\", \"'para'\", \n \"'pare'\", \"'faca'\", \"'enquanto'\", \"'se'\", \n \"'senao'\", \"'falso'\", \"'verdadeiro'\", \n \"'&'\", \"'('\", \"')'\", \"'['\", \"']'\", \"'{'\", \n \"'}'\", \"','\", null, null, null, null, \n null, null, \"':'\" ];\n\nivprog.prototype.symbolicNames = [ null, \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \n \"RK_BOOLEAN\", \"RK_STRING\", \"RK_INTEGER\", \n \"RK_CHARACTER\", \"RK_SWITCH\", \"RK_CASE\", \n \"RK_DEFAULT\", \"RK_CONST\", \"RK_FUNCTION\", \n \"RK_RETURN\", \"RK_FOR\", \"RK_BREAK\", \"RK_DO\", \n \"RK_WHILE\", \"RK_IF\", \"RK_ELSE\", \"RK_FALSE\", \n \"RK_TRUE\", \"RK_REFERENCE\", \"OPEN_PARENTHESIS\", \n \"CLOSE_PARENTHESIS\", \"OPEN_BRACE\", \"CLOSE_BRACE\", \n \"OPEN_CURLY\", \"CLOSE_CURLY\", \"COMMA\", \n \"EQUAL\", \"SUM_OP\", \"MULTI_OP\", \"AND_OPERATOR\", \n \"OR_OPERATOR\", \"RELATIONAL_OPERATOR\", \n \"COLON\", \"NOT_OPERATOR\", \"ID\", \"LIB_ID\", \n \"INTEGER\", \"REAL\", \"STRING\", \"CHARACTER\", \n \"WHITESPACE\", \"EOS\", \"COMMENTS\" ];\n\nivprog.prototype.ruleNames = [ \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \"RK_BOOLEAN\", \n \"RK_STRING\", \"RK_INTEGER\", \"RK_CHARACTER\", \n \"RK_SWITCH\", \"RK_CASE\", \"RK_DEFAULT\", \"RK_CONST\", \n \"RK_FUNCTION\", \"RK_RETURN\", \"RK_FOR\", \"RK_BREAK\", \n \"RK_DO\", \"RK_WHILE\", \"RK_IF\", \"RK_ELSE\", \n \"RK_FALSE\", \"RK_TRUE\", \"RK_LOGICAL_NOT\", \n \"RK_LOGICAL_AND\", \"RK_LOGICAL_OR\", \"RK_REFERENCE\", \n \"OPEN_PARENTHESIS\", \"CLOSE_PARENTHESIS\", \n \"OPEN_BRACE\", \"CLOSE_BRACE\", \"OPEN_CURLY\", \n \"CLOSE_CURLY\", \"COMMA\", \"EQUAL\", \"SUM_OP\", \n \"MULTI_OP\", \"AND_OPERATOR\", \"OR_OPERATOR\", \n \"RELATIONAL_OPERATOR\", \"COLON\", \"NOT_OPERATOR\", \n \"ID\", \"LIB_ID\", \"INTEGER\", \"REAL\", \"ExponentPart\", \n \"STRING\", \"STRING_CHARACTER\", \"CHARACTER\", \n \"WHITESPACE\", \"SEMICOLON\", \"EOS\", \"HEX_DIGIT\", \n \"OCTAL_DIGIT\", \"ESC_SEQ\", \"ESC_OCTAL\", \"ESC_UNICODE\", \n \"COMMENTS\" ];\n\nivprog.prototype.grammarFileName = \"ivprog.g4\";\n\n\n\nexports.ivprog = ivprog;\n\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = {\nivprog: __webpack_require__(0).ivprog\n};\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"antlr4/index\");\n\n/***/ })\n/******/ ]);","/* This is a dictionary of the language defined functions\n**/\nexport default {\n main_function: \"inicio\",\n $read: \"leia\",\n $write: \"escreva\",\n $numElements: \"total_of_elements\",\n $matrixLines: \"total_of_lines\",\n $matrixColumns: \"total_of_columns\",\n $substring: \"subcadeia\",\n $length: \"comprimento\",\n $uppercase: \"caixa_alta\",\n $lowercase: \"caixa_baixa\",\n $charAt: \"char_at\",\n $isReal: \"is_real\",\n $isInt: \"is_integer\",\n $isBool: \"is_logic\",\n $castReal: \"to_real\",\n $castInt: \"to_integer\",\n $castBool: \"to_logic\",\n $castString: \"to_string\",\n $sin: \"sin\",\n $cos: \"cos\",\n $tan: \"tan\",\n $sqrt: \"sqrt\",\n $pow: \"pow\",\n $log: \"log\",\n $abs: \"abs\",\n $negate: \"negate\",\n $invert: \"invert\",\n $max: \"maximum\",\n $min: \"minimum\"\n}\n","/**\n * This is the dictionary of the language defined libraries\n */\nexport default {\n $mathLib: \"Mathematic\",\n $ioLib: \"ES\",\n $strLib: \"Texto\",\n $arrayLib: \"Arranjo\",\n $langLib: \"Conversion\"\n}","import * as PT from './pt/ivprog.g4';\nimport PTFuncs from './pt/langFunctions';\nimport PTLibs from './pt/langLibs';\nimport * as EN from './en/ivprog.g4';\nimport ENFuncs from './en/langFunctions';\nimport ENLibs from './en/langLibs';\nimport * as ES from './es/ivprog.g4';\nimport ESFuncs from './es/langFunctions';\nimport ESLibs from './es/langLibs';\n\nexport default {\n pt: {lexer: PT.ivprog, langFuncs: PTFuncs, langLibs: PTLibs},\n en: {lexer: EN.ivprog, langFuncs: ENFuncs, langLibs: ENLibs},\n es: {lexer: ES.ivprog, langFuncs: ESFuncs, langLibs: ESLibs}\n}\n","module.exports =\n/******/ (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/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\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.l = 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// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Generated from /tmp/tmp-405N2hWcSyOQaIL/ivprog.g4 by ANTLR 4.7\n// jshint ignore: start\nvar antlr4 = __webpack_require__(2);\n\n\nvar serializedATN = [\"\\u0003\\u608b\\ua72a\\u8133\\ub9ed\\u417c\\u3be7\\u7786\\u5964\",\n \"\\u00026\\u0222\\b\\u0001\\u0004\\u0002\\t\\u0002\\u0004\\u0003\\t\\u0003\\u0004\",\n \"\\u0004\\t\\u0004\\u0004\\u0005\\t\\u0005\\u0004\\u0006\\t\\u0006\\u0004\\u0007\\t\",\n \"\\u0007\\u0004\\b\\t\\b\\u0004\\t\\t\\t\\u0004\\n\\t\\n\\u0004\\u000b\\t\\u000b\\u0004\",\n \"\\f\\t\\f\\u0004\\r\\t\\r\\u0004\\u000e\\t\\u000e\\u0004\\u000f\\t\\u000f\\u0004\\u0010\",\n \"\\t\\u0010\\u0004\\u0011\\t\\u0011\\u0004\\u0012\\t\\u0012\\u0004\\u0013\\t\\u0013\",\n \"\\u0004\\u0014\\t\\u0014\\u0004\\u0015\\t\\u0015\\u0004\\u0016\\t\\u0016\\u0004\\u0017\",\n \"\\t\\u0017\\u0004\\u0018\\t\\u0018\\u0004\\u0019\\t\\u0019\\u0004\\u001a\\t\\u001a\",\n \"\\u0004\\u001b\\t\\u001b\\u0004\\u001c\\t\\u001c\\u0004\\u001d\\t\\u001d\\u0004\\u001e\",\n \"\\t\\u001e\\u0004\\u001f\\t\\u001f\\u0004 \\t \\u0004!\\t!\\u0004\\\"\\t\\\"\\u0004#\",\n \"\\t#\\u0004$\\t$\\u0004%\\t%\\u0004&\\t&\\u0004\\'\\t\\'\\u0004(\\t(\\u0004)\\t)\\u0004\",\n \"*\\t*\\u0004+\\t+\\u0004,\\t,\\u0004-\\t-\\u0004.\\t.\\u0004/\\t/\\u00040\\t0\\u0004\",\n \"1\\t1\\u00042\\t2\\u00043\\t3\\u00044\\t4\\u00045\\t5\\u00046\\t6\\u00047\\t7\\u0004\",\n \"8\\t8\\u00049\\t9\\u0004:\\t:\\u0004;\\t;\\u0004<\\t<\\u0004=\\t=\\u0004>\\t>\\u0004\",\n \"?\\t?\\u0004@\\t@\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\",\n \"\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0003\\u0003\",\n \"\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0004\\u0003\\u0004\\u0003\",\n \"\\u0004\\u0003\\u0004\\u0003\\u0004\\u0003\\u0004\\u0003\\u0005\\u0003\\u0005\\u0003\",\n \"\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0006\\u0003\",\n \"\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\",\n \"\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\",\n \"\\u0007\\u0003\\u0007\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\",\n \"\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\",\n \"\\t\\u0003\\t\\u0003\\t\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\u000b\",\n \"\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\",\n \"\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\f\\u0003\\f\\u0003\\f\\u0003\\f\",\n \"\\u0003\\f\\u0003\\f\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\",\n \"\\r\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\",\n \"\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000f\\u0003\\u000f\\u0003\\u000f\\u0003\",\n \"\\u000f\\u0003\\u000f\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\",\n \"\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\",\n \"\\u0010\\u0003\\u0010\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0012\\u0003\",\n \"\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0013\\u0003\\u0013\\u0003\\u0013\\u0003\",\n \"\\u0013\\u0003\\u0013\\u0003\\u0013\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\",\n \"\\u0014\\u0003\\u0014\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\",\n \"\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\",\n \"\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0017\\u0003\",\n \"\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\",\n \"\\u0017\\u0003\\u0017\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\",\n \"\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\",\n \"\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\",\n \"\\u0019\\u0003\\u0019\\u0003\\u0019\\u0003\\u001a\\u0003\\u001a\\u0003\\u001a\\u0003\",\n \"\\u001a\\u0003\\u001a\\u0003\\u001a\\u0003\\u001b\\u0003\\u001b\\u0003\\u001b\\u0003\",\n \"\\u001b\\u0003\\u001b\\u0003\\u001b\\u0003\\u001c\\u0003\\u001c\\u0003\\u001c\\u0003\",\n \"\\u001c\\u0003\\u001c\\u0003\\u001c\\u0003\\u001c\\u0003\\u001c\\u0003\\u001c\\u0003\",\n \"\\u001c\\u0003\\u001c\\u0003\\u001d\\u0003\\u001d\\u0003\\u001d\\u0003\\u001d\\u0003\",\n \"\\u001e\\u0003\\u001e\\u0003\\u001f\\u0003\\u001f\\u0003\\u001f\\u0003 \\u0003\",\n \" \\u0003!\\u0003!\\u0003\\\"\\u0003\\\"\\u0003#\\u0003#\\u0003$\\u0003$\\u0003%\\u0003\",\n \"%\\u0003&\\u0003&\\u0003\\'\\u0003\\'\\u0003(\\u0003(\\u0003(\\u0005(\\u0163\\n\",\n \"(\\u0003)\\u0003)\\u0003*\\u0003*\\u0003+\\u0003+\\u0003,\\u0003,\\u0003-\\u0003\",\n \"-\\u0003-\\u0003-\\u0003-\\u0003-\\u0003-\\u0003-\\u0003-\\u0005-\\u0176\\n-\\u0003\",\n \".\\u0003.\\u0003/\\u0003/\\u00030\\u00030\\u00070\\u017e\\n0\\f0\\u000e0\\u0181\",\n \"\\u000b0\\u00031\\u00031\\u00031\\u00031\\u00032\\u00062\\u0188\\n2\\r2\\u000e\",\n \"2\\u0189\\u00032\\u00032\\u00032\\u00032\\u00052\\u0190\\n2\\u00032\\u00062\\u0193\",\n \"\\n2\\r2\\u000e2\\u0194\\u00032\\u00032\\u00032\\u00032\\u00052\\u019b\\n2\\u0003\",\n \"2\\u00062\\u019e\\n2\\r2\\u000e2\\u019f\\u00052\\u01a2\\n2\\u00033\\u00063\\u01a5\",\n \"\\n3\\r3\\u000e3\\u01a6\\u00033\\u00033\\u00063\\u01ab\\n3\\r3\\u000e3\\u01ac\\u0003\",\n \"3\\u00063\\u01b0\\n3\\r3\\u000e3\\u01b1\\u00033\\u00033\\u00073\\u01b6\\n3\\f3\\u000e\",\n \"3\\u01b9\\u000b3\\u00033\\u00053\\u01bc\\n3\\u00034\\u00034\\u00054\\u01c0\\n4\",\n \"\\u00034\\u00064\\u01c3\\n4\\r4\\u000e4\\u01c4\\u00035\\u00035\\u00075\\u01c9\\n\",\n \"5\\f5\\u000e5\\u01cc\\u000b5\\u00035\\u00035\\u00036\\u00036\\u00056\\u01d2\\n\",\n \"6\\u00037\\u00037\\u00037\\u00057\\u01d7\\n7\\u00037\\u00037\\u00038\\u00038\\u0003\",\n \"8\\u00038\\u00039\\u00039\\u0003:\\u0006:\\u01e2\\n:\\r:\\u000e:\\u01e3\\u0003\",\n \":\\u0005:\\u01e7\\n:\\u0003;\\u0003;\\u0003<\\u0003<\\u0003=\\u0003=\\u0003=\\u0003\",\n \"=\\u0005=\\u01f1\\n=\\u0003>\\u0003>\\u0003>\\u0003>\\u0003>\\u0003>\\u0003>\\u0003\",\n \">\\u0003>\\u0003>\\u0003>\\u0005>\\u01fe\\n>\\u0003?\\u0003?\\u0003?\\u0003?\\u0003\",\n \"?\\u0003?\\u0003?\\u0003@\\u0003@\\u0003@\\u0003@\\u0007@\\u020b\\n@\\f@\\u000e\",\n \"@\\u020e\\u000b@\\u0003@\\u0005@\\u0211\\n@\\u0003@\\u0003@\\u0003@\\u0003@\\u0003\",\n \"@\\u0007@\\u0218\\n@\\f@\\u000e@\\u021b\\u000b@\\u0003@\\u0003@\\u0005@\\u021f\",\n \"\\n@\\u0003@\\u0003@\\u0003\\u0219\\u0002A\\u0003\\u0003\\u0005\\u0004\\u0007\\u0005\",\n \"\\t\\u0006\\u000b\\u0007\\r\\b\\u000f\\t\\u0011\\n\\u0013\\u000b\\u0015\\f\\u0017\\r\",\n \"\\u0019\\u000e\\u001b\\u000f\\u001d\\u0010\\u001f\\u0011!\\u0012#\\u0013%\\u0014\",\n \"\\'\\u0015)\\u0016+\\u0017-\\u0018/\\u00191\\u001a3\\u001b5\\u001c7\\u001d9\\u0002\",\n \";\\u0002=\\u0002?\\u001eA\\u001fC E!G\\\"I#K$M%O&Q\\'S(U)W*Y+[,]-_.a/c0e1g\",\n \"\\u0002i2k\\u0002m3o4q\\u0002s5u\\u0002w\\u0002y\\u0002{\\u0002}\\u0002\\u007f\",\n \"6\\u0003\\u0002\\u0012\\u0004\\u0002--//\\u0005\\u0002\\'\\',,11\\u0004\\u0002\",\n \">>@@\\u0005\\u0002C\\\\aac|\\u0006\\u00022;C\\\\aac|\\u0003\\u00022;\\u0003\\u0002\",\n \"23\\u0004\\u0002GGgg\\u0006\\u0002\\f\\f\\u000f\\u000f$$^^\\u0006\\u0002\\f\\f\\u000f\",\n \"\\u000f))^^\\u0004\\u0002\\u000b\\u000b\\\"\\\"\\u0004\\u0002\\f\\f\\u000f\\u000f\\u0005\",\n \"\\u00022;CHch\\u0003\\u000229\\n\\u0002$$))^^ddhhppttvv\\u0003\\u000225\\u0002\",\n \"\\u0237\\u0002\\u0003\\u0003\\u0002\\u0002\\u0002\\u0002\\u0005\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002\\u0007\\u0003\\u0002\\u0002\\u0002\\u0002\\t\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002\\u000b\\u0003\\u0002\\u0002\\u0002\\u0002\\r\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002\\u000f\\u0003\\u0002\\u0002\\u0002\\u0002\\u0011\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002\\u0013\\u0003\\u0002\\u0002\\u0002\\u0002\\u0015\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002\\u0017\\u0003\\u0002\\u0002\\u0002\\u0002\\u0019\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002\\u001b\\u0003\\u0002\\u0002\\u0002\\u0002\\u001d\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002\\u001f\\u0003\\u0002\\u0002\\u0002\\u0002!\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002#\\u0003\\u0002\\u0002\\u0002\\u0002%\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002\\'\\u0003\\u0002\\u0002\\u0002\\u0002)\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"+\\u0003\\u0002\\u0002\\u0002\\u0002-\\u0003\\u0002\\u0002\\u0002\\u0002/\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00021\\u0003\\u0002\\u0002\\u0002\\u00023\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00025\\u0003\\u0002\\u0002\\u0002\\u00027\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002?\\u0003\\u0002\\u0002\\u0002\\u0002A\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002C\\u0003\\u0002\\u0002\\u0002\\u0002E\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"G\\u0003\\u0002\\u0002\\u0002\\u0002I\\u0003\\u0002\\u0002\\u0002\\u0002K\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002M\\u0003\\u0002\\u0002\\u0002\\u0002O\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002Q\\u0003\\u0002\\u0002\\u0002\\u0002S\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002U\\u0003\\u0002\\u0002\\u0002\\u0002W\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002Y\\u0003\\u0002\\u0002\\u0002\\u0002[\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"]\\u0003\\u0002\\u0002\\u0002\\u0002_\\u0003\\u0002\\u0002\\u0002\\u0002a\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002c\\u0003\\u0002\\u0002\\u0002\\u0002e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002i\\u0003\\u0002\\u0002\\u0002\\u0002m\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002o\\u0003\\u0002\\u0002\\u0002\\u0002s\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002\\u007f\\u0003\\u0002\\u0002\\u0002\\u0003\\u0081\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0005\\u008a\\u0003\\u0002\\u0002\\u0002\\u0007\\u008f\\u0003\\u0002\\u0002\\u0002\",\n \"\\t\\u0095\\u0003\\u0002\\u0002\\u0002\\u000b\\u009c\\u0003\\u0002\\u0002\\u0002\",\n \"\\r\\u00a3\\u0003\\u0002\\u0002\\u0002\\u000f\\u00ab\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0011\\u00b5\\u0003\\u0002\\u0002\\u0002\\u0013\\u00bd\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0015\\u00c2\\u0003\\u0002\\u0002\\u0002\\u0017\\u00cc\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0019\\u00d2\\u0003\\u0002\\u0002\\u0002\\u001b\\u00d9\\u0003\\u0002\\u0002\\u0002\",\n \"\\u001d\\u00e1\\u0003\\u0002\\u0002\\u0002\\u001f\\u00e6\\u0003\\u0002\\u0002\\u0002\",\n \"!\\u00f2\\u0003\\u0002\\u0002\\u0002#\\u00f5\\u0003\\u0002\\u0002\\u0002%\\u00f9\",\n \"\\u0003\\u0002\\u0002\\u0002\\'\\u00ff\\u0003\\u0002\\u0002\\u0002)\\u0104\\u0003\",\n \"\\u0002\\u0002\\u0002+\\u010b\\u0003\\u0002\\u0002\\u0002-\\u0113\\u0003\\u0002\",\n \"\\u0002\\u0002/\\u011c\\u0003\\u0002\\u0002\\u00021\\u012c\\u0003\\u0002\\u0002\",\n \"\\u00023\\u012f\\u0003\\u0002\\u0002\\u00025\\u0135\\u0003\\u0002\\u0002\\u0002\",\n \"7\\u013b\\u0003\\u0002\\u0002\\u00029\\u0146\\u0003\\u0002\\u0002\\u0002;\\u014a\",\n \"\\u0003\\u0002\\u0002\\u0002=\\u014c\\u0003\\u0002\\u0002\\u0002?\\u014f\\u0003\",\n \"\\u0002\\u0002\\u0002A\\u0151\\u0003\\u0002\\u0002\\u0002C\\u0153\\u0003\\u0002\",\n \"\\u0002\\u0002E\\u0155\\u0003\\u0002\\u0002\\u0002G\\u0157\\u0003\\u0002\\u0002\",\n \"\\u0002I\\u0159\\u0003\\u0002\\u0002\\u0002K\\u015b\\u0003\\u0002\\u0002\\u0002\",\n \"M\\u015d\\u0003\\u0002\\u0002\\u0002O\\u0162\\u0003\\u0002\\u0002\\u0002Q\\u0164\",\n \"\\u0003\\u0002\\u0002\\u0002S\\u0166\\u0003\\u0002\\u0002\\u0002U\\u0168\\u0003\",\n \"\\u0002\\u0002\\u0002W\\u016a\\u0003\\u0002\\u0002\\u0002Y\\u0175\\u0003\\u0002\",\n \"\\u0002\\u0002[\\u0177\\u0003\\u0002\\u0002\\u0002]\\u0179\\u0003\\u0002\\u0002\",\n \"\\u0002_\\u017b\\u0003\\u0002\\u0002\\u0002a\\u0182\\u0003\\u0002\\u0002\\u0002\",\n \"c\\u01a1\\u0003\\u0002\\u0002\\u0002e\\u01bb\\u0003\\u0002\\u0002\\u0002g\\u01bd\",\n \"\\u0003\\u0002\\u0002\\u0002i\\u01c6\\u0003\\u0002\\u0002\\u0002k\\u01d1\\u0003\",\n \"\\u0002\\u0002\\u0002m\\u01d3\\u0003\\u0002\\u0002\\u0002o\\u01da\\u0003\\u0002\",\n \"\\u0002\\u0002q\\u01de\\u0003\\u0002\\u0002\\u0002s\\u01e6\\u0003\\u0002\\u0002\",\n \"\\u0002u\\u01e8\\u0003\\u0002\\u0002\\u0002w\\u01ea\\u0003\\u0002\\u0002\\u0002\",\n \"y\\u01f0\\u0003\\u0002\\u0002\\u0002{\\u01fd\\u0003\\u0002\\u0002\\u0002}\\u01ff\",\n \"\\u0003\\u0002\\u0002\\u0002\\u007f\\u021e\\u0003\\u0002\\u0002\\u0002\\u0081\\u0082\",\n \"\\u0007r\\u0002\\u0002\\u0082\\u0083\\u0007t\\u0002\\u0002\\u0083\\u0084\\u0007\",\n \"q\\u0002\\u0002\\u0084\\u0085\\u0007i\\u0002\\u0002\\u0085\\u0086\\u0007t\\u0002\",\n \"\\u0002\\u0086\\u0087\\u0007c\\u0002\\u0002\\u0087\\u0088\\u0007o\\u0002\\u0002\",\n \"\\u0088\\u0089\\u0007c\\u0002\\u0002\\u0089\\u0004\\u0003\\u0002\\u0002\\u0002\",\n \"\\u008a\\u008b\\u0007t\\u0002\\u0002\\u008b\\u008c\\u0007g\\u0002\\u0002\\u008c\",\n \"\\u008d\\u0007c\\u0002\\u0002\\u008d\\u008e\\u0007n\\u0002\\u0002\\u008e\\u0006\",\n \"\\u0003\\u0002\\u0002\\u0002\\u008f\\u0090\\u0007x\\u0002\\u0002\\u0090\\u0091\",\n \"\\u0007c\\u0002\\u0002\\u0091\\u0092\\u0007|\\u0002\\u0002\\u0092\\u0093\\u0007\",\n \"k\\u0002\\u0002\\u0093\\u0094\\u0007q\\u0002\\u0002\\u0094\\b\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0095\\u0096\\u0007n\\u0002\\u0002\\u0096\\u0097\\u0007q\\u0002\\u0002\",\n \"\\u0097\\u0098\\u0007i\\u0002\\u0002\\u0098\\u0099\\u0007k\\u0002\\u0002\\u0099\",\n \"\\u009a\\u0007e\\u0002\\u0002\\u009a\\u009b\\u0007q\\u0002\\u0002\\u009b\\n\\u0003\",\n \"\\u0002\\u0002\\u0002\\u009c\\u009d\\u0007e\\u0002\\u0002\\u009d\\u009e\\u0007\",\n \"c\\u0002\\u0002\\u009e\\u009f\\u0007f\\u0002\\u0002\\u009f\\u00a0\\u0007g\\u0002\",\n \"\\u0002\\u00a0\\u00a1\\u0007k\\u0002\\u0002\\u00a1\\u00a2\\u0007c\\u0002\\u0002\",\n \"\\u00a2\\f\\u0003\\u0002\\u0002\\u0002\\u00a3\\u00a4\\u0007k\\u0002\\u0002\\u00a4\",\n \"\\u00a5\\u0007p\\u0002\\u0002\\u00a5\\u00a6\\u0007v\\u0002\\u0002\\u00a6\\u00a7\",\n \"\\u0007g\\u0002\\u0002\\u00a7\\u00a8\\u0007k\\u0002\\u0002\\u00a8\\u00a9\\u0007\",\n \"t\\u0002\\u0002\\u00a9\\u00aa\\u0007q\\u0002\\u0002\\u00aa\\u000e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00ab\\u00ac\\u0007e\\u0002\\u0002\\u00ac\\u00ad\\u0007c\\u0002\",\n \"\\u0002\\u00ad\\u00ae\\u0007t\\u0002\\u0002\\u00ae\\u00af\\u0007c\\u0002\\u0002\",\n \"\\u00af\\u00b0\\u0007e\\u0002\\u0002\\u00b0\\u00b1\\u0007v\\u0002\\u0002\\u00b1\",\n \"\\u00b2\\u0007g\\u0002\\u0002\\u00b2\\u00b3\\u0007t\\u0002\\u0002\\u00b3\\u00b4\",\n \"\\u0007g\\u0002\\u0002\\u00b4\\u0010\\u0003\\u0002\\u0002\\u0002\\u00b5\\u00b6\",\n \"\\u0007g\\u0002\\u0002\\u00b6\\u00b7\\u0007u\\u0002\\u0002\\u00b7\\u00b8\\u0007\",\n \"e\\u0002\\u0002\\u00b8\\u00b9\\u0007q\\u0002\\u0002\\u00b9\\u00ba\\u0007n\\u0002\",\n \"\\u0002\\u00ba\\u00bb\\u0007j\\u0002\\u0002\\u00bb\\u00bc\\u0007c\\u0002\\u0002\",\n \"\\u00bc\\u0012\\u0003\\u0002\\u0002\\u0002\\u00bd\\u00be\\u0007e\\u0002\\u0002\",\n \"\\u00be\\u00bf\\u0007c\\u0002\\u0002\\u00bf\\u00c0\\u0007u\\u0002\\u0002\\u00c0\",\n \"\\u00c1\\u0007q\\u0002\\u0002\\u00c1\\u0014\\u0003\\u0002\\u0002\\u0002\\u00c2\",\n \"\\u00c3\\u0007e\\u0002\\u0002\\u00c3\\u00c4\\u0007q\\u0002\\u0002\\u00c4\\u00c5\",\n \"\\u0007p\\u0002\\u0002\\u00c5\\u00c6\\u0007v\\u0002\\u0002\\u00c6\\u00c7\\u0007\",\n \"t\\u0002\\u0002\\u00c7\\u00c8\\u0007c\\u0002\\u0002\\u00c8\\u00c9\\u0007t\\u0002\",\n \"\\u0002\\u00c9\\u00ca\\u0007k\\u0002\\u0002\\u00ca\\u00cb\\u0007q\\u0002\\u0002\",\n \"\\u00cb\\u0016\\u0003\\u0002\\u0002\\u0002\\u00cc\\u00cd\\u0007e\\u0002\\u0002\",\n \"\\u00cd\\u00ce\\u0007q\\u0002\\u0002\\u00ce\\u00cf\\u0007p\\u0002\\u0002\\u00cf\",\n \"\\u00d0\\u0007u\\u0002\\u0002\\u00d0\\u00d1\\u0007v\\u0002\\u0002\\u00d1\\u0018\",\n \"\\u0003\\u0002\\u0002\\u0002\\u00d2\\u00d3\\u0007h\\u0002\\u0002\\u00d3\\u00d4\",\n \"\\u0007w\\u0002\\u0002\\u00d4\\u00d5\\u0007p\\u0002\\u0002\\u00d5\\u00d6\\u0007\",\n \"e\\u0002\\u0002\\u00d6\\u00d7\\u0007c\\u0002\\u0002\\u00d7\\u00d8\\u0007q\\u0002\",\n \"\\u0002\\u00d8\\u001a\\u0003\\u0002\\u0002\\u0002\\u00d9\\u00da\\u0007f\\u0002\",\n \"\\u0002\\u00da\\u00db\\u0007g\\u0002\\u0002\\u00db\\u00dc\\u0007x\\u0002\\u0002\",\n \"\\u00dc\\u00dd\\u0007q\\u0002\\u0002\\u00dd\\u00de\\u0007n\\u0002\\u0002\\u00de\",\n \"\\u00df\\u0007x\\u0002\\u0002\\u00df\\u00e0\\u0007c\\u0002\\u0002\\u00e0\\u001c\",\n \"\\u0003\\u0002\\u0002\\u0002\\u00e1\\u00e2\\u0007r\\u0002\\u0002\\u00e2\\u00e3\",\n \"\\u0007c\\u0002\\u0002\\u00e3\\u00e4\\u0007t\\u0002\\u0002\\u00e4\\u00e5\\u0007\",\n \"c\\u0002\\u0002\\u00e5\\u001e\\u0003\\u0002\\u0002\\u0002\\u00e6\\u00e7\\u0007\",\n \"t\\u0002\\u0002\\u00e7\\u00e8\\u0007g\\u0002\\u0002\\u00e8\\u00e9\\u0007r\\u0002\",\n \"\\u0002\\u00e9\\u00ea\\u0007k\\u0002\\u0002\\u00ea\\u00eb\\u0007v\\u0002\\u0002\",\n \"\\u00eb\\u00ec\\u0007c\\u0002\\u0002\\u00ec\\u00ed\\u0007a\\u0002\\u0002\\u00ed\",\n \"\\u00ee\\u0007r\\u0002\\u0002\\u00ee\\u00ef\\u0007c\\u0002\\u0002\\u00ef\\u00f0\",\n \"\\u0007t\\u0002\\u0002\\u00f0\\u00f1\\u0007c\\u0002\\u0002\\u00f1 \\u0003\\u0002\",\n \"\\u0002\\u0002\\u00f2\\u00f3\\u0007f\\u0002\\u0002\\u00f3\\u00f4\\u0007g\\u0002\",\n \"\\u0002\\u00f4\\\"\\u0003\\u0002\\u0002\\u0002\\u00f5\\u00f6\\u0007c\\u0002\\u0002\",\n \"\\u00f6\\u00f7\\u0007v\\u0002\\u0002\\u00f7\\u00f8\\u0007g\\u0002\\u0002\\u00f8\",\n \"$\\u0003\\u0002\\u0002\\u0002\\u00f9\\u00fa\\u0007r\\u0002\\u0002\\u00fa\\u00fb\",\n \"\\u0007c\\u0002\\u0002\\u00fb\\u00fc\\u0007u\\u0002\\u0002\\u00fc\\u00fd\\u0007\",\n \"u\\u0002\\u0002\\u00fd\\u00fe\\u0007q\\u0002\\u0002\\u00fe&\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00ff\\u0100\\u0007r\\u0002\\u0002\\u0100\\u0101\\u0007c\\u0002\\u0002\",\n \"\\u0101\\u0102\\u0007t\\u0002\\u0002\\u0102\\u0103\\u0007g\\u0002\\u0002\\u0103\",\n \"(\\u0003\\u0002\\u0002\\u0002\\u0104\\u0105\\u0007t\\u0002\\u0002\\u0105\\u0106\",\n \"\\u0007g\\u0002\\u0002\\u0106\\u0107\\u0007r\\u0002\\u0002\\u0107\\u0108\\u0007\",\n \"k\\u0002\\u0002\\u0108\\u0109\\u0007v\\u0002\\u0002\\u0109\\u010a\\u0007c\\u0002\",\n \"\\u0002\\u010a*\\u0003\\u0002\\u0002\\u0002\\u010b\\u010c\\u0007c\\u0002\\u0002\",\n \"\\u010c\\u010d\\u0007v\\u0002\\u0002\\u010d\\u010e\\u0007g\\u0002\\u0002\\u010e\",\n \"\\u010f\\u0007a\\u0002\\u0002\\u010f\\u0110\\u0007s\\u0002\\u0002\\u0110\\u0111\",\n \"\\u0007w\\u0002\\u0002\\u0111\\u0112\\u0007g\\u0002\\u0002\\u0112,\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0113\\u0114\\u0007g\\u0002\\u0002\\u0114\\u0115\\u0007p\\u0002\",\n \"\\u0002\\u0115\\u0116\\u0007s\\u0002\\u0002\\u0116\\u0117\\u0007w\\u0002\\u0002\",\n \"\\u0117\\u0118\\u0007c\\u0002\\u0002\\u0118\\u0119\\u0007p\\u0002\\u0002\\u0119\",\n \"\\u011a\\u0007v\\u0002\\u0002\\u011a\\u011b\\u0007q\\u0002\\u0002\\u011b.\\u0003\",\n \"\\u0002\\u0002\\u0002\\u011c\\u011d\\u0007t\\u0002\\u0002\\u011d\\u011e\\u0007\",\n \"g\\u0002\\u0002\\u011e\\u011f\\u0007r\\u0002\\u0002\\u011f\\u0120\\u0007k\\u0002\",\n \"\\u0002\\u0120\\u0121\\u0007v\\u0002\\u0002\\u0121\\u0122\\u0007c\\u0002\\u0002\",\n \"\\u0122\\u0123\\u0007a\\u0002\\u0002\\u0123\\u0124\\u0007g\\u0002\\u0002\\u0124\",\n \"\\u0125\\u0007p\\u0002\\u0002\\u0125\\u0126\\u0007s\\u0002\\u0002\\u0126\\u0127\",\n \"\\u0007w\\u0002\\u0002\\u0127\\u0128\\u0007c\\u0002\\u0002\\u0128\\u0129\\u0007\",\n \"p\\u0002\\u0002\\u0129\\u012a\\u0007v\\u0002\\u0002\\u012a\\u012b\\u0007q\\u0002\",\n \"\\u0002\\u012b0\\u0003\\u0002\\u0002\\u0002\\u012c\\u012d\\u0007u\\u0002\\u0002\",\n \"\\u012d\\u012e\\u0007g\\u0002\\u0002\\u012e2\\u0003\\u0002\\u0002\\u0002\\u012f\",\n \"\\u0130\\u0007u\\u0002\\u0002\\u0130\\u0131\\u0007g\\u0002\\u0002\\u0131\\u0132\",\n \"\\u0007p\\u0002\\u0002\\u0132\\u0133\\u0007c\\u0002\\u0002\\u0133\\u0134\\u0007\",\n \"q\\u0002\\u0002\\u01344\\u0003\\u0002\\u0002\\u0002\\u0135\\u0136\\u0007h\\u0002\",\n \"\\u0002\\u0136\\u0137\\u0007c\\u0002\\u0002\\u0137\\u0138\\u0007n\\u0002\\u0002\",\n \"\\u0138\\u0139\\u0007u\\u0002\\u0002\\u0139\\u013a\\u0007q\\u0002\\u0002\\u013a\",\n \"6\\u0003\\u0002\\u0002\\u0002\\u013b\\u013c\\u0007x\\u0002\\u0002\\u013c\\u013d\",\n \"\\u0007g\\u0002\\u0002\\u013d\\u013e\\u0007t\\u0002\\u0002\\u013e\\u013f\\u0007\",\n \"f\\u0002\\u0002\\u013f\\u0140\\u0007c\\u0002\\u0002\\u0140\\u0141\\u0007f\\u0002\",\n \"\\u0002\\u0141\\u0142\\u0007g\\u0002\\u0002\\u0142\\u0143\\u0007k\\u0002\\u0002\",\n \"\\u0143\\u0144\\u0007t\\u0002\\u0002\\u0144\\u0145\\u0007q\\u0002\\u0002\\u0145\",\n \"8\\u0003\\u0002\\u0002\\u0002\\u0146\\u0147\\u0007p\\u0002\\u0002\\u0147\\u0148\",\n \"\\u0007c\\u0002\\u0002\\u0148\\u0149\\u0007q\\u0002\\u0002\\u0149:\\u0003\\u0002\",\n \"\\u0002\\u0002\\u014a\\u014b\\u0007G\\u0002\\u0002\\u014b<\\u0003\\u0002\\u0002\",\n \"\\u0002\\u014c\\u014d\\u0007Q\\u0002\\u0002\\u014d\\u014e\\u0007W\\u0002\\u0002\",\n \"\\u014e>\\u0003\\u0002\\u0002\\u0002\\u014f\\u0150\\u0007(\\u0002\\u0002\\u0150\",\n \"@\\u0003\\u0002\\u0002\\u0002\\u0151\\u0152\\u0007*\\u0002\\u0002\\u0152B\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0153\\u0154\\u0007+\\u0002\\u0002\\u0154D\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0155\\u0156\\u0007]\\u0002\\u0002\\u0156F\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0157\\u0158\\u0007_\\u0002\\u0002\\u0158H\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0159\\u015a\\u0007}\\u0002\\u0002\\u015aJ\\u0003\\u0002\\u0002\\u0002\\u015b\",\n \"\\u015c\\u0007\\u007f\\u0002\\u0002\\u015cL\\u0003\\u0002\\u0002\\u0002\\u015d\",\n \"\\u015e\\u0007.\\u0002\\u0002\\u015eN\\u0003\\u0002\\u0002\\u0002\\u015f\\u0160\",\n \"\\u0007>\\u0002\\u0002\\u0160\\u0163\\u0007/\\u0002\\u0002\\u0161\\u0163\\u0007\",\n \"\\u2192\\u0002\\u0002\\u0162\\u015f\\u0003\\u0002\\u0002\\u0002\\u0162\\u0161\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0163P\\u0003\\u0002\\u0002\\u0002\\u0164\\u0165\\t\\u0002\",\n \"\\u0002\\u0002\\u0165R\\u0003\\u0002\\u0002\\u0002\\u0166\\u0167\\t\\u0003\\u0002\",\n \"\\u0002\\u0167T\\u0003\\u0002\\u0002\\u0002\\u0168\\u0169\\u0005;\\u001e\\u0002\",\n \"\\u0169V\\u0003\\u0002\\u0002\\u0002\\u016a\\u016b\\u0005=\\u001f\\u0002\\u016b\",\n \"X\\u0003\\u0002\\u0002\\u0002\\u016c\\u016d\\u0007@\\u0002\\u0002\\u016d\\u0176\",\n \"\\u0007?\\u0002\\u0002\\u016e\\u016f\\u0007?\\u0002\\u0002\\u016f\\u0176\\u0007\",\n \"?\\u0002\\u0002\\u0170\\u0171\\u0007>\\u0002\\u0002\\u0171\\u0176\\u0007?\\u0002\",\n \"\\u0002\\u0172\\u0176\\t\\u0004\\u0002\\u0002\\u0173\\u0174\\u0007#\\u0002\\u0002\",\n \"\\u0174\\u0176\\u0007?\\u0002\\u0002\\u0175\\u016c\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0175\\u016e\\u0003\\u0002\\u0002\\u0002\\u0175\\u0170\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0175\\u0172\\u0003\\u0002\\u0002\\u0002\\u0175\\u0173\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0176Z\\u0003\\u0002\\u0002\\u0002\\u0177\\u0178\\u0007<\\u0002\\u0002\\u0178\",\n \"\\\\\\u0003\\u0002\\u0002\\u0002\\u0179\\u017a\\u00059\\u001d\\u0002\\u017a^\\u0003\",\n \"\\u0002\\u0002\\u0002\\u017b\\u017f\\t\\u0005\\u0002\\u0002\\u017c\\u017e\\t\\u0006\",\n \"\\u0002\\u0002\\u017d\\u017c\\u0003\\u0002\\u0002\\u0002\\u017e\\u0181\\u0003\\u0002\",\n \"\\u0002\\u0002\\u017f\\u017d\\u0003\\u0002\\u0002\\u0002\\u017f\\u0180\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0180`\\u0003\\u0002\\u0002\\u0002\\u0181\\u017f\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0182\\u0183\\u0005_0\\u0002\\u0183\\u0184\\u00070\\u0002\\u0002\",\n \"\\u0184\\u0185\\u0005_0\\u0002\\u0185b\\u0003\\u0002\\u0002\\u0002\\u0186\\u0188\",\n \"\\t\\u0007\\u0002\\u0002\\u0187\\u0186\\u0003\\u0002\\u0002\\u0002\\u0188\\u0189\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0189\\u0187\\u0003\\u0002\\u0002\\u0002\\u0189\\u018a\",\n \"\\u0003\\u0002\\u0002\\u0002\\u018a\\u01a2\\u0003\\u0002\\u0002\\u0002\\u018b\\u018c\",\n \"\\u00072\\u0002\\u0002\\u018c\\u0190\\u0007z\\u0002\\u0002\\u018d\\u018e\\u0007\",\n \"2\\u0002\\u0002\\u018e\\u0190\\u0007Z\\u0002\\u0002\\u018f\\u018b\\u0003\\u0002\",\n \"\\u0002\\u0002\\u018f\\u018d\\u0003\\u0002\\u0002\\u0002\\u0190\\u0192\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0191\\u0193\\u0005u;\\u0002\\u0192\\u0191\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0193\\u0194\\u0003\\u0002\\u0002\\u0002\\u0194\\u0192\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0194\\u0195\\u0003\\u0002\\u0002\\u0002\\u0195\\u01a2\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0196\\u0197\\u00072\\u0002\\u0002\\u0197\\u019b\\u0007d\\u0002\\u0002\",\n \"\\u0198\\u0199\\u00072\\u0002\\u0002\\u0199\\u019b\\u0007D\\u0002\\u0002\\u019a\",\n \"\\u0196\\u0003\\u0002\\u0002\\u0002\\u019a\\u0198\\u0003\\u0002\\u0002\\u0002\\u019b\",\n \"\\u019d\\u0003\\u0002\\u0002\\u0002\\u019c\\u019e\\t\\b\\u0002\\u0002\\u019d\\u019c\",\n \"\\u0003\\u0002\\u0002\\u0002\\u019e\\u019f\\u0003\\u0002\\u0002\\u0002\\u019f\\u019d\",\n \"\\u0003\\u0002\\u0002\\u0002\\u019f\\u01a0\\u0003\\u0002\\u0002\\u0002\\u01a0\\u01a2\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01a1\\u0187\\u0003\\u0002\\u0002\\u0002\\u01a1\\u018f\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01a1\\u019a\\u0003\\u0002\\u0002\\u0002\\u01a2d\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01a3\\u01a5\\t\\u0007\\u0002\\u0002\\u01a4\\u01a3\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01a5\\u01a6\\u0003\\u0002\\u0002\\u0002\\u01a6\\u01a4\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01a6\\u01a7\\u0003\\u0002\\u0002\\u0002\\u01a7\\u01a8\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01a8\\u01aa\\u00070\\u0002\\u0002\\u01a9\\u01ab\",\n \"\\t\\u0007\\u0002\\u0002\\u01aa\\u01a9\\u0003\\u0002\\u0002\\u0002\\u01ab\\u01ac\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01ac\\u01aa\\u0003\\u0002\\u0002\\u0002\\u01ac\\u01ad\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01ad\\u01bc\\u0003\\u0002\\u0002\\u0002\\u01ae\\u01b0\",\n \"\\t\\u0007\\u0002\\u0002\\u01af\\u01ae\\u0003\\u0002\\u0002\\u0002\\u01b0\\u01b1\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01b1\\u01af\\u0003\\u0002\\u0002\\u0002\\u01b1\\u01b2\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01b2\\u01b3\\u0003\\u0002\\u0002\\u0002\\u01b3\\u01b7\",\n \"\\u00070\\u0002\\u0002\\u01b4\\u01b6\\t\\u0007\\u0002\\u0002\\u01b5\\u01b4\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01b6\\u01b9\\u0003\\u0002\\u0002\\u0002\\u01b7\\u01b5\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01b7\\u01b8\\u0003\\u0002\\u0002\\u0002\\u01b8\\u01ba\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01b9\\u01b7\\u0003\\u0002\\u0002\\u0002\\u01ba\\u01bc\\u0005\",\n \"g4\\u0002\\u01bb\\u01a4\\u0003\\u0002\\u0002\\u0002\\u01bb\\u01af\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01bcf\\u0003\\u0002\\u0002\\u0002\\u01bd\\u01bf\\t\\t\\u0002\\u0002\",\n \"\\u01be\\u01c0\\t\\u0002\\u0002\\u0002\\u01bf\\u01be\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01bf\\u01c0\\u0003\\u0002\\u0002\\u0002\\u01c0\\u01c2\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01c1\\u01c3\\t\\u0007\\u0002\\u0002\\u01c2\\u01c1\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01c3\\u01c4\\u0003\\u0002\\u0002\\u0002\\u01c4\\u01c2\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01c4\\u01c5\\u0003\\u0002\\u0002\\u0002\\u01c5h\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01c6\\u01ca\\u0007$\\u0002\\u0002\\u01c7\\u01c9\\u0005k6\\u0002\\u01c8\\u01c7\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01c9\\u01cc\\u0003\\u0002\\u0002\\u0002\\u01ca\\u01c8\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01ca\\u01cb\\u0003\\u0002\\u0002\\u0002\\u01cb\\u01cd\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01cc\\u01ca\\u0003\\u0002\\u0002\\u0002\\u01cd\\u01ce\",\n \"\\u0007$\\u0002\\u0002\\u01cej\\u0003\\u0002\\u0002\\u0002\\u01cf\\u01d2\\n\\n\\u0002\",\n \"\\u0002\\u01d0\\u01d2\\u0005y=\\u0002\\u01d1\\u01cf\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01d1\\u01d0\\u0003\\u0002\\u0002\\u0002\\u01d2l\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01d3\\u01d6\\u0007)\\u0002\\u0002\\u01d4\\u01d7\\u0005y=\\u0002\\u01d5\\u01d7\",\n \"\\n\\u000b\\u0002\\u0002\\u01d6\\u01d4\\u0003\\u0002\\u0002\\u0002\\u01d6\\u01d5\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01d7\\u01d8\\u0003\\u0002\\u0002\\u0002\\u01d8\\u01d9\",\n \"\\u0007)\\u0002\\u0002\\u01d9n\\u0003\\u0002\\u0002\\u0002\\u01da\\u01db\\t\\f\\u0002\",\n \"\\u0002\\u01db\\u01dc\\u0003\\u0002\\u0002\\u0002\\u01dc\\u01dd\\b8\\u0002\\u0002\",\n \"\\u01ddp\\u0003\\u0002\\u0002\\u0002\\u01de\\u01df\\u0007=\\u0002\\u0002\\u01df\",\n \"r\\u0003\\u0002\\u0002\\u0002\\u01e0\\u01e2\\t\\r\\u0002\\u0002\\u01e1\\u01e0\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01e2\\u01e3\\u0003\\u0002\\u0002\\u0002\\u01e3\\u01e1\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01e3\\u01e4\\u0003\\u0002\\u0002\\u0002\\u01e4\\u01e7\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01e5\\u01e7\\u0005q9\\u0002\\u01e6\\u01e1\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01e6\\u01e5\\u0003\\u0002\\u0002\\u0002\\u01e7t\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01e8\\u01e9\\t\\u000e\\u0002\\u0002\\u01e9v\\u0003\\u0002\\u0002\",\n \"\\u0002\\u01ea\\u01eb\\t\\u000f\\u0002\\u0002\\u01ebx\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01ec\\u01ed\\u0007^\\u0002\\u0002\\u01ed\\u01f1\\t\\u0010\\u0002\\u0002\\u01ee\",\n \"\\u01f1\\u0005}?\\u0002\\u01ef\\u01f1\\u0005{>\\u0002\\u01f0\\u01ec\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01f0\\u01ee\\u0003\\u0002\\u0002\\u0002\\u01f0\\u01ef\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01f1z\\u0003\\u0002\\u0002\\u0002\\u01f2\\u01f3\\u0007^\\u0002\",\n \"\\u0002\\u01f3\\u01f4\\t\\u0011\\u0002\\u0002\\u01f4\\u01f5\\u0005w<\\u0002\\u01f5\",\n \"\\u01f6\\u0005w<\\u0002\\u01f6\\u01fe\\u0003\\u0002\\u0002\\u0002\\u01f7\\u01f8\",\n \"\\u0007^\\u0002\\u0002\\u01f8\\u01f9\\u0005w<\\u0002\\u01f9\\u01fa\\u0005w<\\u0002\",\n \"\\u01fa\\u01fe\\u0003\\u0002\\u0002\\u0002\\u01fb\\u01fc\\u0007^\\u0002\\u0002\",\n \"\\u01fc\\u01fe\\u0005w<\\u0002\\u01fd\\u01f2\\u0003\\u0002\\u0002\\u0002\\u01fd\",\n \"\\u01f7\\u0003\\u0002\\u0002\\u0002\\u01fd\\u01fb\\u0003\\u0002\\u0002\\u0002\\u01fe\",\n \"|\\u0003\\u0002\\u0002\\u0002\\u01ff\\u0200\\u0007^\\u0002\\u0002\\u0200\\u0201\",\n \"\\u0007w\\u0002\\u0002\\u0201\\u0202\\u0005u;\\u0002\\u0202\\u0203\\u0005u;\\u0002\",\n \"\\u0203\\u0204\\u0005u;\\u0002\\u0204\\u0205\\u0005u;\\u0002\\u0205~\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0206\\u0207\\u00071\\u0002\\u0002\\u0207\\u0208\\u00071\\u0002\",\n \"\\u0002\\u0208\\u020c\\u0003\\u0002\\u0002\\u0002\\u0209\\u020b\\n\\r\\u0002\\u0002\",\n \"\\u020a\\u0209\\u0003\\u0002\\u0002\\u0002\\u020b\\u020e\\u0003\\u0002\\u0002\\u0002\",\n \"\\u020c\\u020a\\u0003\\u0002\\u0002\\u0002\\u020c\\u020d\\u0003\\u0002\\u0002\\u0002\",\n \"\\u020d\\u0210\\u0003\\u0002\\u0002\\u0002\\u020e\\u020c\\u0003\\u0002\\u0002\\u0002\",\n \"\\u020f\\u0211\\u0007\\u000f\\u0002\\u0002\\u0210\\u020f\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0210\\u0211\\u0003\\u0002\\u0002\\u0002\\u0211\\u0212\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0212\\u021f\\u0007\\f\\u0002\\u0002\\u0213\\u0214\\u00071\\u0002\\u0002\\u0214\",\n \"\\u0215\\u0007,\\u0002\\u0002\\u0215\\u0219\\u0003\\u0002\\u0002\\u0002\\u0216\",\n \"\\u0218\\u000b\\u0002\\u0002\\u0002\\u0217\\u0216\\u0003\\u0002\\u0002\\u0002\\u0218\",\n \"\\u021b\\u0003\\u0002\\u0002\\u0002\\u0219\\u021a\\u0003\\u0002\\u0002\\u0002\\u0219\",\n \"\\u0217\\u0003\\u0002\\u0002\\u0002\\u021a\\u021c\\u0003\\u0002\\u0002\\u0002\\u021b\",\n \"\\u0219\\u0003\\u0002\\u0002\\u0002\\u021c\\u021d\\u0007,\\u0002\\u0002\\u021d\",\n \"\\u021f\\u00071\\u0002\\u0002\\u021e\\u0206\\u0003\\u0002\\u0002\\u0002\\u021e\",\n \"\\u0213\\u0003\\u0002\\u0002\\u0002\\u021f\\u0220\\u0003\\u0002\\u0002\\u0002\\u0220\",\n \"\\u0221\\b@\\u0003\\u0002\\u0221\\u0080\\u0003\\u0002\\u0002\\u0002\\u001e\\u0002\",\n \"\\u0162\\u0175\\u017f\\u0189\\u018f\\u0194\\u019a\\u019f\\u01a1\\u01a6\\u01ac\\u01b1\",\n \"\\u01b7\\u01bb\\u01bf\\u01c4\\u01ca\\u01d1\\u01d6\\u01e3\\u01e6\\u01f0\\u01fd\\u020c\",\n \"\\u0210\\u0219\\u021e\\u0004\\b\\u0002\\u0002\\u0002\\u0003\\u0002\"].join(\"\");\n\n\nvar atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);\n\nvar decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); });\n\nfunction ivprog(input) {\n\tantlr4.Lexer.call(this, input);\n this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache());\n return this;\n}\n\nivprog.prototype = Object.create(antlr4.Lexer.prototype);\nivprog.prototype.constructor = ivprog;\n\nivprog.EOF = antlr4.Token.EOF;\nivprog.RK_PROGRAM = 1;\nivprog.RK_REAL = 2;\nivprog.RK_VOID = 3;\nivprog.RK_BOOLEAN = 4;\nivprog.RK_STRING = 5;\nivprog.RK_INTEGER = 6;\nivprog.RK_CHARACTER = 7;\nivprog.RK_SWITCH = 8;\nivprog.RK_CASE = 9;\nivprog.RK_DEFAULT = 10;\nivprog.RK_CONST = 11;\nivprog.RK_FUNCTION = 12;\nivprog.RK_RETURN = 13;\nivprog.RK_FOR = 14;\nivprog.RK_FOR_ALT = 15;\nivprog.RK_FOR_FROM = 16;\nivprog.RK_FOR_TO = 17;\nivprog.RK_FOR_PASS = 18;\nivprog.RK_BREAK = 19;\nivprog.RK_DO = 20;\nivprog.RK_DO_UNTIL = 21;\nivprog.RK_WHILE = 22;\nivprog.RK_WHILE_ALT = 23;\nivprog.RK_IF = 24;\nivprog.RK_ELSE = 25;\nivprog.RK_FALSE = 26;\nivprog.RK_TRUE = 27;\nivprog.RK_REFERENCE = 28;\nivprog.OPEN_PARENTHESIS = 29;\nivprog.CLOSE_PARENTHESIS = 30;\nivprog.OPEN_BRACE = 31;\nivprog.CLOSE_BRACE = 32;\nivprog.OPEN_CURLY = 33;\nivprog.CLOSE_CURLY = 34;\nivprog.COMMA = 35;\nivprog.EQUAL = 36;\nivprog.SUM_OP = 37;\nivprog.MULTI_OP = 38;\nivprog.AND_OPERATOR = 39;\nivprog.OR_OPERATOR = 40;\nivprog.RELATIONAL_OPERATOR = 41;\nivprog.COLON = 42;\nivprog.NOT_OPERATOR = 43;\nivprog.ID = 44;\nivprog.LIB_ID = 45;\nivprog.INTEGER = 46;\nivprog.REAL = 47;\nivprog.STRING = 48;\nivprog.CHARACTER = 49;\nivprog.WHITESPACE = 50;\nivprog.EOS = 51;\nivprog.COMMENTS = 52;\n\nivprog.prototype.channelNames = [ \"DEFAULT_TOKEN_CHANNEL\", \"HIDDEN\" ];\n\nivprog.prototype.modeNames = [ \"DEFAULT_MODE\" ];\n\nivprog.prototype.literalNames = [ null, \"'programa'\", \"'real'\", \"'vazio'\", \n \"'logico'\", \"'cadeia'\", \"'inteiro'\", \"'caractere'\", \n \"'escolha'\", \"'caso'\", \"'contrario'\", \n \"'const'\", \"'funcao'\", \"'devolva'\", \"'para'\", \n \"'repita_para'\", \"'de'\", \"'ate'\", \"'passo'\", \n \"'pare'\", \"'repita'\", \"'ate_que'\", \"'enquanto'\", \n \"'repita_enquanto'\", \"'se'\", \"'senao'\", \n \"'falso'\", \"'verdadeiro'\", \"'&'\", \"'('\", \n \"')'\", \"'['\", \"']'\", \"'{'\", \"'}'\", \"','\", \n null, null, null, null, null, null, \"':'\" ];\n\nivprog.prototype.symbolicNames = [ null, \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \n \"RK_BOOLEAN\", \"RK_STRING\", \"RK_INTEGER\", \n \"RK_CHARACTER\", \"RK_SWITCH\", \"RK_CASE\", \n \"RK_DEFAULT\", \"RK_CONST\", \"RK_FUNCTION\", \n \"RK_RETURN\", \"RK_FOR\", \"RK_FOR_ALT\", \n \"RK_FOR_FROM\", \"RK_FOR_TO\", \"RK_FOR_PASS\", \n \"RK_BREAK\", \"RK_DO\", \"RK_DO_UNTIL\", \"RK_WHILE\", \n \"RK_WHILE_ALT\", \"RK_IF\", \"RK_ELSE\", \"RK_FALSE\", \n \"RK_TRUE\", \"RK_REFERENCE\", \"OPEN_PARENTHESIS\", \n \"CLOSE_PARENTHESIS\", \"OPEN_BRACE\", \"CLOSE_BRACE\", \n \"OPEN_CURLY\", \"CLOSE_CURLY\", \"COMMA\", \n \"EQUAL\", \"SUM_OP\", \"MULTI_OP\", \"AND_OPERATOR\", \n \"OR_OPERATOR\", \"RELATIONAL_OPERATOR\", \n \"COLON\", \"NOT_OPERATOR\", \"ID\", \"LIB_ID\", \n \"INTEGER\", \"REAL\", \"STRING\", \"CHARACTER\", \n \"WHITESPACE\", \"EOS\", \"COMMENTS\" ];\n\nivprog.prototype.ruleNames = [ \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \"RK_BOOLEAN\", \n \"RK_STRING\", \"RK_INTEGER\", \"RK_CHARACTER\", \n \"RK_SWITCH\", \"RK_CASE\", \"RK_DEFAULT\", \"RK_CONST\", \n \"RK_FUNCTION\", \"RK_RETURN\", \"RK_FOR\", \"RK_FOR_ALT\", \n \"RK_FOR_FROM\", \"RK_FOR_TO\", \"RK_FOR_PASS\", \n \"RK_BREAK\", \"RK_DO\", \"RK_DO_UNTIL\", \"RK_WHILE\", \n \"RK_WHILE_ALT\", \"RK_IF\", \"RK_ELSE\", \"RK_FALSE\", \n \"RK_TRUE\", \"RK_LOGICAL_NOT\", \"RK_LOGICAL_AND\", \n \"RK_LOGICAL_OR\", \"RK_REFERENCE\", \"OPEN_PARENTHESIS\", \n \"CLOSE_PARENTHESIS\", \"OPEN_BRACE\", \"CLOSE_BRACE\", \n \"OPEN_CURLY\", \"CLOSE_CURLY\", \"COMMA\", \"EQUAL\", \n \"SUM_OP\", \"MULTI_OP\", \"AND_OPERATOR\", \"OR_OPERATOR\", \n \"RELATIONAL_OPERATOR\", \"COLON\", \"NOT_OPERATOR\", \n \"ID\", \"LIB_ID\", \"INTEGER\", \"REAL\", \"ExponentPart\", \n \"STRING\", \"STRING_CHARACTER\", \"CHARACTER\", \n \"WHITESPACE\", \"SEMICOLON\", \"EOS\", \"HEX_DIGIT\", \n \"OCTAL_DIGIT\", \"ESC_SEQ\", \"ESC_OCTAL\", \"ESC_UNICODE\", \n \"COMMENTS\" ];\n\nivprog.prototype.grammarFileName = \"ivprog.g4\";\n\n\n\nexports.ivprog = ivprog;\n\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = {\nivprog: __webpack_require__(0).ivprog\n};\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"antlr4/index\");\n\n/***/ })\n/******/ ]);","/* This is a dictionary of the language defined functions\n**/\nexport default {\n main_function: \"inicio\",\n $read: \"leia\",\n $write: \"escreva\",\n $numElements: \"total_de_elementos\",\n $matrixLines: \"total_de_linhas\",\n $matrixColumns: \"total_de_colunas\",\n $substring: \"subcadeia\",\n $length: \"comprimento\",\n $uppercase: \"caixa_alta\",\n $lowercase: \"caixa_baixa\",\n $charAt: \"texto_na_posicao\",\n $isReal: \"e_real\",\n $isInt: \"e_inteiro\",\n $isBool: \"e_logico\",\n $castReal: \"como_real\",\n $castInt: \"como_inteiro\",\n $castBool: \"como_logico\",\n $castString: \"como_cadeia\",\n $sin: \"seno\",\n $cos: \"cosseno\",\n $tan: \"tangente\",\n $sqrt: \"raiz_quadrada\",\n $pow: \"potencia\",\n $log: \"logaritmo\",\n $abs: \"modulo\",\n $negate: \"trocar_sinal\",\n $invert: \"inverter_valor\",\n $max: \"maximo\",\n $min: \"minimo\",\n $rand: \"numero_aleatorio\"\n}","/**\n * This is the dictionary of the language defined libraries\n */\nexport default {\n $mathLib: \"Matematica\",\n $ioLib: \"ES\",\n $strLib: \"Texto\",\n $arrayLib: \"Arranjo\",\n $langLib: \"Conversao\"\n}","module.exports = {\"pt\":{\"token_missing_one\":\"Erro de sintaxe: Espera-se $0, mas encontrou-se $1 na linha:$2, coluna:$3\",\"token_missing_two\":\"Erro de sintaxe: Esperava-se $0 ou $1 mas encontrou-se $2 na liha:$3, coluna: $4\",\"eos_missing\":\"Falta uma nova linha ou ; na linha: $0, coluna: $1\",\"invalid_type\":\"$0 na linha: $1, coluna: $2 é um tipo inválido. Os tipos válidos são: $3\",\"invalid_array_dimension\":\"A dimensão inválida na linha: $0, coluna: $1. Insira um $2 ou identificador válido do mesmo tipo.\",\"invalid_array_size\":\"O tamnho do vetor/matriz excede o máximo de 2 na linha $0\",\"extra_lines\":\"Nenhum texto é permitido após '}' em 'programa {...}'\",\"invalid_main_return\":\"A função $0 declarada na linha $2 deve retornar $1.\",\"invalid_var_declaration\":\"Erro na linha $0: variáveis só podem ser declaradas no corpo principal da função e nas primeiras linhas, antes de qualquer comando.\",\"invalid_break_command\":\"Erro na linha $0. O comando $1 não pode ser usado fora de uma estrutura de repetição ou 'escolha...caso'\",\"invalid_terminal\":\"Não é possível utilizar $0 na expressão da linha: $1, coluna: $2. Tente um valor númerico, variável ou chamada de função.\",\"const_not_init\":\"Erro na linha: $0, coluna: $1. Uma variável declarada como const deve ser inicializada\",\"id_missing\":\"Esperava-se um identificador, mas encontrou-se $0 na linha: $1, coluna: $2\",\"invalid_id_format\":\"$0 na linha: $1, coluna: $2 não é um identificador válido. O símbolo '.' não é permitido neste contexto.\",\"main_missing\":\"A função principal não foi encontrada\",\"invalid_global_var\":\"Erro crítico: Chamada inválida da função initGlobal fora do contexto BASE\",\"not_implemented\":\"Erro interno crítico: A função definida pelo sistema $0 não foi implementada.\",\"function_missing\":\"A função $0 não foi encontrada\",\"function_missing_full\":\"A função $0 na linha: $1, coluna: $2 não foi encontrada\",\"invalid_parameters_size_full\":\"Erro na linha $0: a quantidade de parâmetros fornecidos à função $1 está incorreta. Esperava-se $2, encontrou-se $3.\",\"invalid_parameters_size\":\"A quantidade de parâmetros fornecidos à função $0 está incorreta. Esperava-se $1, encontrou-se $2\",\"invalid_ref_full\":\"A expressão $0 fornecida como parâmetro para a função $1 na linha $2 não é válida para esta função. Use uma variável ou posição de vetor.\",\"invalid_ref\":\"A expressão $0 fornecida como parâmetro para a função $1 não é válida para esta função. Use uma variável ou posição de vetor.\",\"invalid_parameter_type_full\":\"A expressão $0 fornecida como parâmetro para a função $1 na linha $2 não é compatível com o tipo esperado.\",\"invalid_parameter_type\":\"A expressão $0 fornecida como parâmetro para a função $1 não é compatível com o tipo esperado.\",\"unknown_command_full\":\"Erro interno crítico: comando desconhecido encontrado na linha $0\",\"unknown_command\":\"Erro interno crítico: comando desconhecido encontrado!\",\"loop_condition_type_full\":\"Erro na linha: $0, coluna $1: a condição $2 do laço de repetição deve ser do tipo lógico\",\"loop_condition_type\":\"A condição $0 do laço de repetição deve ser do tipo lógico\",\"endless_loop_full\":\"Possível laço infinito detectado no seu código. Verifique a linha $0\",\"endless_loop\":\"Possível laço infinito detectado no seu código.\",\"for_condition_type_full\":\"Erro na linha: $0, coluna $1: a condição de parada $2 do comando para(...) deve ser do tipo lógico\",\"for_condition_type\":\"A condição de parada $0 do comando para(...) deve ser do tipo lógico\",\"if_condition_type_full\":\"Erro na linha: $0, coluna $1: a condição $2 do comando se...senao deve ser do tipo lógico\",\"if_condition_type\":\"A condição $0 do comando se...senao deve ser do tipo lógico\",\"invalid_return_type_full\":\"Erro na linha $0: a expressão não produz um tipo compatível com a função $1. Tipo esperado: $2.\",\"invalid_return_type\":\"A expressão não produz um tipo compatível com a função $0. Tipo esperado: $1.\",\"invalid_void_return_full\":\"Erro na linha $0: a função $1 não pode retornar uma expressão vazia, use uma espressão do tipo $2\",\"invalid_void_return\":\"A função $0 não pode retornar uma expressão vazia, use uma espressão do tipo $1\",\"unexpected_break_command_full\":\"Erro interno crítico: comando pare encontrado fora do contexto de um laço/escolha..caso na linha $0\",\"unexpected_break_command\":\"Erro interno crítico: comando pare encontrado fora do contexto de um laço/escolha..caso\",\"invalid_dimension\":\"As dimensões de um vetor/matriz devem ser do tipo inteiro\",\"void_in_expression_full\":\"Erro na linha: $0, coluna: $1: a função $2 não pode ser utilizada em uma expressão pois seu tipo de retorno é vazio\",\"void_in_expression\":\"A função $0 não pode ser utilizada em uma expressão pois seu tipo de retorno é vazio\",\"invalid_array_access_full\":\"Identificador $0 na linha: $1, coluna: $2 não se refere a um vetor/matriz válido\",\"invalid_array_access\":\"Identificador $0 não se refere a um vetor/matriz válido\",\"invalid_matrix_access_full\":\"Identificador $0 na linha: $1, coluna: $2 não se refere a uma matriz válida\",\"invalid_matrix_access\":\"Identificador $0 não se refere a uma matriz válida\",\"matrix_column_outbounds_full\":\"Erro na linha $0: número de colunas $1 é inválido para a matriz $2 que possui $3 colunas\",\"matrix_column_outbounds\":\"Número de colunas $0 é inválido para a matriz $1 que possui $2 colunas\",\"matrix_line_outbounds_full\":\"Erro na linha $0: número de linhas $1 é inválido para a matriz $2 que possui $3 linhas\",\"matrix_line_outbounds\":\"Número de linhas $0 é inválido para a matriz $1 que possui $2 linhas\",\"vector_line_outbounds_full\":\"Erro na linha $0: O número de elementos $1 é inválido para a vetor $2 que possui $3 elementos.\",\"vector_line_outbounds\":\"O número de elementos $1 é inválido para a vetor $2 que possui $3 elementos.\",\"vector_not_matrix_full\":\"Erro na linha $0: $1 não é uma matriz\",\"vector_not_matrix\":\"$0 não é uma matriz\",\"invalid_infix_op_full\":\"Erro na linha $0: a expressão $1 é inválida, pois o operador $2 não pode ser aplicado aos tipos $3 e $4\",\"invalid_infix_op\":\"A expressão $0 é inválida, pois o operador $1 não pode ser aplicado aos tipos $2 e $3\",\"invalid_unary_op_full\":\"Erro na linha $0: a expressão $1 é inválida, pois o operador $2 não pode ser aplicado ao tipo $3\",\"invalid_unary_op\":\"A expressão $0 é inválida, pois o operador $1 não pode ser aplicado ao tipo $2\",\"unknown_op\":\"Erro interno crítico: Operação $0 desconhecida\",\"duplicate_function\":\"A função $0 na linha: $1, coluna: $2 já foi definida anteriormente.\",\"duplicate_variable\":\"A variável $0 na linha: $1, coluna: $2 já foi declarada anteriormente.\",\"main_parameters\":\"A função inicio não pode ter parâmetros.\",\"symbol_not_found_full\":\"A variável $0 na linha: $1, coluna: $2 não foi declarada\",\"symbol_not_found\":\"A variável $0 não foi declarada\",\"array_dimension_not_int_full\":\"As dimensões do arranjo (vetor ou matriz) na linha $0 devem ser do tipo inteiro.\",\"array_dimension_not_int\":\"As dimensões de um arranjo (vetor ou matriz) devem ser do tipo inteiro.\",\"array_dimension_not_positive_full\":\"As dimensões do arranjo (vetor ou matriz) na linha $0 devem ser valores positivos.\",\"array_dimension_not_positive\":\"As dimensões de um arranjo (vetor ou matriz) devem ser valores positivos.\",\"incompatible_types_full\":\"Era esperado um $0 mas a expressão $1 na linha $2 resulta em $3.\",\"incompatible_types\":\"Era esperado um $0 mas a expressão $1 resulta em $2.\",\"incompatible_types_array_full\":\"A expressão $0 na linha $2 é incompatível com o tipo $1.\",\"incompatible_types_array\":\"A expressão $0 é incompatível com o tipo $1.\",\"invalid_case_type_full\":\"O caso $0 na linha $1 é incompatível com o tipo $2.\",\"invalid_case_type\":\"O caso $0 é incompatível com o tipo $1.\",\"function_no_return\":\"A função $0 não possui um comando de devolução acessível. Toda função deve ter ao menos um comando 'devolva' no seu corpo principal.\",\"invalid_array_literal_type_full\":\"Erro na linha $0: a expressão $1 não resulta em um tipo compatível.\",\"invalid_array_literal_type\":\"A expressão $0 não resulta em um tipo compatível.\",\"invalid_array_literal_line_full\":\"Erro na linha $0: esperava-se $1 linhas mas encontrou $2.\",\"invalid_array_literal_line\":\"Esperava-se $0 linhas mas encontrou $1.\",\"invalid_array_literal_column_full\":\"Erro na linha $0: esperava-se $1 colunas mas encontrou $2.\",\"invalid_array_literal_column\":\"Esperava-se $0 colunas mas encontrou $1.\",\"exceeded_input_request\":\"A quantidade de leituras requisitadas execedeu a quantidade de entradas disponíveis.\",\"test_case_few_reads\":\"Caso de teste $0 falhou: ainda restam entradas!\",\"test_case_failed\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$1\\\"> <span>Caso de teste $0 não executou com sucesso.</span></div>\",\"test_case_failed_exception\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$2\\\"> <span>Caso de teste $0 falhou</span>: $1\",\"test_case_exception\":\"Ocorreu uma exceção no caso de teste $0: $1\",\"invalid_type_conversion\":\"O valor $0 não pode ser convertido para o tipo $1\",\"invalid_read_type\":\"Erro na linha $0: A entrada \\\"$1\\\" não é do tipo $2, que é o tipo da variável <span class='ivprog-error-varname'>$3</span>.\",\"invalid_read_type_array\":\"Erro na linha $0: A entrada \\\"$1\\\" não é do tipo $2, que é o tipo aceito pela variável <span class='ivprog-error-varname'>$3</span> que é um $4.\",\"inform_valid_identifier\":\"Informe um nome válido! O nome não pode ser uma palavra reservadas e deve começar com letras ou _ e conter apenas letras, números e _.\",\"inform_valid_global_duplicated\":\"Já existe uma variável global com o nome <span class='ivprog-error-varname'>$0</span>, você precisa de nomes distintos.\",\"inform_valid_variable_duplicated\":\"Já existe uma variável com o nome <span class='ivprog-error-varname'>$0</span> na função <span class='ivprog-error-varname'>$1</span>, você precisa de nomes distintos.\",\"inform_valid_function_duplicated\":\"Já existe uma função com o nome <span class='ivprog-error-varname'>$0</span>, você precisa de nomes distintos.\",\"inform_valid_param_duplicated\":\"Já existe um parâmetro com o nome <span class='ivprog-error-varname'>$0</span> na função <span class='ivprog-error-varname'>$1</span>, você precisa de nomes distintos.\",\"invalid_character\":\"O caractere $0 na linha $1 não pode ser utilizado neste contexto.\",\"annonymous_array_literal\":\"Erro na linha $0: a notação de vetor/matriz só permitida durante a inicialização de uma variável desse tipo. Ex: inteiro vec[3] ← {1,2,3}.\",\"invalid_matrix_literal_line\":\"A expressão $0 na linha $1 não possui um número de elementos igual a linha anterior. Todas as linhas de uma matriz devem ter a mesma quantidade de elementos.\",\"cannot_infer_matrix_line\":\"Não é possível inferir o número de linhas da matriz $0 na linha $1. É necessário que ela seja inicializada ou que o valor seja informado de forma explícita.\",\"cannot_infer_matrix_column\":\"Não é possível inferir o número de colunas da matriz $0 na linha $1. É necessário que ela seja inicializada ou que o valor seja informado de forma explícita.\",\"cannot_infer_vector_size\":\"Não é possível inferir o número de elementos do vetor $0 na linha $1. É necessário que ele seja inicializado ou que o valor seja informado de forma explícita\",\"matrix_to_vector_literal_attr\":\"Erro na linha $0: A expressão $1 representa uma matriz e não pode ser atribuída ao vetor $2.\",\"vector_to_matrix_literal_attr\":\"Erro na linha $0: A expressão $1 representa um vetor e não pode ser atribuído a matriz $2.\",\"invalid_const_ref_full\":\"A variável $0 fornecida como parâmetro para a função $1 na linha $2 é uma constante e não pode ser usada neste contexto. Use uma variável ou posição de vetor.\",\"invalid_const_ref\":\"A variável $0 fornecida como parâmetro para a função $1 é uma constante e não pode ser usada neste contexto. Use uma variável ou posição de vetor.\",\"invalid_const_assignment_full\":\"Erro na linha $0: $1 é uma constante e portanto não pode ter seu valor alterado\",\"invalid_const_assignment\":\"$0 é uma constante e portanto não pode ter seu valor alterado\",\"array_init_not_literal\":\"Erro na linha $0: Vetor/Matriz só pode ser inicializado por literal. Ex: real vetor[] <- {1,2,3}\",\"array_exceeds_2d\":\"Erro na linha $0: O número máximo de dimensões que um arranjo pode ter é 2. Elemento de 3 ou mais dimensões encontrado!\",\"invalid_matrix_id_dimension\":\"Erro na linha $0: Você deve definir todas as dimensões da matriz quando uma delas é definida por uma variável! Ex: real mat1[var][5], mat2[5][var]\",\"invalid_vector_init\":\"Erro na linha $0: Não se pode inicializar um vetor que teve seu tamanho declarado utilizando uma variável! Utilize uma atribuição de vetores ou use um laço de repetição.\",\"invalid_matrix_init\":\"Erro na linha $0: Não se pode inicializar uma matrix que teve ao menos uma das suas dimensões declaradas utilizando uma variável! Utilize uma atribuição de matrizes ou use um laço de repetição.\",\"invalid_vector_assignment_full\":\"Erro na linha $0: Só se pode atribuir um vetor a outro desde que eles comportem o mesmo número de elementos. $1 comporta $2 e $3 comporta $4!\",\"invalid_vector_assignment\":\"Só se pode atribuir um vetor a outro desde que eles comportem o mesmo número de elementos. $0 comporta $1 e $2 comporta $3!\",\"invalid_matrix_assignment_full\":\"Erro na linha $0: Só se pode atribuir uma matriz a outra desde que ambas possuam dimensões de mesmo tamanho. $1 tem $2 linhas e $3 colunas, enquanto $4 possui $5 linhas e $6 colunas!\",\"invalid_matrix_assignment\":\"Só se pode atribuir uma matriz a outra desde que ambas possuam dimensões de mesmo tamanho. $0 tem $1 linhas e $2 colunas, enquanto $3 possui $4 linhas e $5 colunas!\",\"matrix_to_vector_attr\":\"Erro na linha $0: $1 representa uma matriz e não pode ser atribuída ao vetor $2.\",\"vector_to_matrix_attr\":\"Erro na linha $0: $1 representa um vetor e não pode ser atribuído a matriz $2.\",\"invalid_matrix_index_assign_full\":\"Erro na linha $0: A posição $1 da matriz $2 aceita apenas vetores de tamanho $3, mas $4 tem tamanho $5\",\"invalid_matrix_index_assign\":\"A linha $0 da matriz $1 aceita apenas vetores de tamanho $2, mas $3 tem tamanho $4\",\"invalid_number_elements_vector\":\"Esperava-se por $0 elementos na linha $1 mas a expressão $2 possui $3 elementos.\",\"invalid_number_lines_matrix\":\"Esperava-se por uma matriz com $0 linhas na linha $1 mas a expressão $2 possui $3 linhas\",\"divsion_by_zero_full\":\"Erro na linha $0: A expressão $1 resulta em uma divisão por 0.\",\"divsion_by_zero\":\"A expressão $0 resulta em uma divisão por 0.\",\"undefined_tanget_value\":\"Erro na linha $0: A tangente de $1° não é indefinida.\",\"negative_log_value\":\"Erro na linha $0: Não se pode calcular o log de um valor negativo.\",\"invalid_string_index\":\"Erro na linha $0 durante a execução da função $1: $2 é um índice inválido para a cadeia de texto $3. Os valores válidos vão de 0 à $4\",\"negative_sqrt_value\":\"Erro na linha $0: Não é permitido calcular a raiz quadrada de um número negativo.\",\"exceeded_recursive_calls\":\"Erro na execução da linha $0: Número de chamadas recursivas execedeu o limite máximo definido!\",\"invalid_for_variable\":\"Erro na linha $0: A variavel $1 utilizada no comando repita_para deve ser do tipo inteiro.\",\"invalid_for_from\":\"Erro na linha $0: O valor $1 passado para o parâmetro 'de' do comando repita_para deve ser do tipo inteiro.\",\"invalid_for_to\":\"Erro na linha $0: O valor $1 passado para o parâmetro 'para' do comando repita_para deve ser do tipo inteiro.\",\"invalid_for_pass\":\"Erro na linha $0: O valor $1 passado para o parâmetro 'passo' do comando repita_para deve ser do tipo inteiro.\",\"exceed_max_instructions\":\"Número de instruções excedeu o limite definido. Certifique-se que seu código não possui laços infinitos ou muitas chamadas de funções recursivas.\"},\"en\":{\"token_missing_one\":\"Syntax error: Expected $0 but found $1 at line:$2, column:$3\",\"token_missing_two\":\"Syntax error: Expected $0 or $1 but found $2 at line:$3, column: $4\",\"eos_missing\":\"A new line or a ‘;’ is missing at line: $0, column: $1\",\"invalid_type\":\"$0 at line: $1, column: $2 is a invalid type. The valid types are: $3\",\"invalid_array_dimension\":\"Invalid dimension at line: $0, column: $1. Insert a $2 or a valid identifier of the same type.\",\"invalid_array_size\":\"The array at line $0 exceeds the maximum size of 2.\",\"extra_lines\":\"No text is allowed after '}' in 'program { … }'\",\"invalid_main_return\":\"The function $0 declared at line $2 must return $1.\",\"invalid_var_declaration\":\"Error at line $0: Variables can only be declared in the main body of a function and at the first lines, before any command.\",\"invalid_break_command\":\"Error at line $0. The command $1 cannot be used outside a loop command or ‘switch ...case’ structure.\",\"invalid_terminal\":\"It is not possible to use $0 in the expression at line: $1, column: $2. Try a numeric value, variable or function call.\",\"const_not_init\":\"Error at line: $0, column: $1. A variable declared as const must be initialized.\",\"id_missing\":\"Expected an identifier but found $0 at line: $1, column: $2.\",\"invalid_id_format\":\"$0 at line: $1, column: $2 is not a valid identifier. The symbol '.' is not permitted in this context.\",\"main_missing\":\"The main function was not found. You need to declare a function of return type void named main.\",\"invalid_global_var\":\"Critical Error: Invalid call of the function IVProgProcessor.initGlobal outside the BASE context.\",\"not_implemented\":\"Critial internal error: The system defined function $0 was not found.\",\"function_missing\":\"The function $0 was not found.\",\"function_missing_full\":\"The function $0 at line: $1, column: $2 was not found.\",\"invalid_parameters_size_full\":\"Error at line $0: The number of parameters provided to the function $1 is incorrect. It expected $2 but found $3.\",\"invalid_parameters_size\":\"The number of parameters provided to the function $0 is incorrect. It expected $1 but found $2.\",\"invalid_ref_full\":\"The expression $0 provided as a parameter to the function $1 at line $2 is not valid in this context. Use a variable or a position of a vector.\",\"invalid_ref\":\"The expression $0 provided as a parameter to the function $1 is not valid in this context. Use a variable or a position of a vector.\",\"invalid_parameter_type_full\":\"The expression $0 provided as a parameter to the function $1 at line $2 is not of the expected type.\",\"invalid_parameter_type\":\"The expression $0 provided as a parameter to the function $1 is not of the expected type.\",\"unknown_command_full\":\"Internal error: an unknown command found at line $0.\",\"unknown_command\":\"Internal error: an unknown command found.\",\"loop_condition_type_full\":\"Error at line: $0, column $1: the condition $2 of the loop must be of type bool (true or false).\",\"loop_condition_type\":\"The condition $0 of the loop must be of type bool (true or false).\",\"endless_loop_full\":\"Possible infinite loop detected in your code. Check line $0.\",\"endless_loop\":\"Possible infinite loop detected in your code.\",\"for_condition_type_full\":\"Erro na linha: $0, coluna $1: a condição de parada $2 do comando para(...) deve ser do tipo lógico\",\"for_condition_type\":\"A condição de parada $0 do comando para(...) deve ser do tipo lógico\",\"if_condition_type_full\":\"Error at line: $0, column $1: the condition $2 in the if … else command must result in a bool (true or false).\",\"if_condition_type\":\"The condition $0 in the if … else command must result in a bool (true or false).\",\"invalid_return_type_full\":\"Error at line $0: The expression doest not result in a type compatible with the function $1. Expected type: $2.\",\"invalid_return_type\":\"The expression doest not result in a type compatible with the function $0. Expected type: $1.\",\"invalid_void_return_full\":\"Error at line $0: The function $1 cannot return an empty expression, use an expression that results in a $2\",\"invalid_void_return\":\"The function $0 cannot return an empty expression, use an expression that results in a $1\",\"unexpected_break_command_full\":\"Critical error at line $0: a break command was found outside a valid context: loop or switch … case structure.\",\"unexpected_break_command\":\"Critical error: a break command was found outside a valid context: loop or switch … case structure.\",\"invalid_dimension\":\"Array (vector or matrix) dimensions must be of type int.\",\"void_in_expression_full\":\"Error at line: $0, column: $1: The function $2 cannot be used inside an expression since its return type is void.\",\"void_in_expression\":\"The function $0 cannot be used inside an expression since its return type is void.\",\"invalid_array_access_full\":\"Identifier $0 at line: $1, column: $2 does not identify a valid vector or matrix.\",\"invalid_array_access\":\"Identifier $0 does not identify a valid vector or matrix.\",\"invalid_matrix_access_full\":\"Identifier $0 at line: $1, column: $2 does not identify a valid matrix.\",\"invalid_matrix_access\":\"Identifier $0 does not identify a valid matrix.\",\"matrix_column_outbounds_full\":\"Error at line $0: The number of columns $1 is invalid for the matrix $2 which has $3 columns.\",\"matrix_column_outbounds\":\"The number of columns $0 is invalid for the matrix $1 which has $2 columns.\",\"matrix_line_outbounds_full\":\"Error at line $0: The number of lines $1 is invalid for matrix $2 which has $3 lines.\",\"matrix_line_outbounds\":\"The number of lines $0 is invalid for matrix $1 which has $2 lines.\",\"vector_line_outbounds_full\":\"Error at line $0: The number of elements $1 is invalid for vector $2 which has $3 elements.\",\"vector_line_outbounds\":\"Error at line $0: The number of elements $1 is invalid for vector $2 which has $3 elements.\",\"vector_not_matrix_full\":\"Error at line $0: $1 is not a matrix.\",\"vector_not_matrix\":\"$0 is not a matrix.\",\"invalid_infix_op_full\":\"Error at line $0: The expression $1 is not valid because the operator $2 cannot be applied to the types $3 and $4.\",\"invalid_infix_op\":\"The expression $0 is not valid because the operator $1 cannot be applied to the types $2 and $3.\",\"invalid_unary_op_full\":\"Error at line $0: The expression $1 is not valid because the operator $2 cannot be applied to the type $3.\",\"invalid_unary_op\":\"The expression $0 is not valid because the operator $1 cannot be applied to the type $2.\",\"unknown_op\":\"Critical error: Unknown operator $0.\",\"duplicate_function\":\"The function $0 at line: $1, column: $2 has already been declared.\",\"duplicate_variable\":\"The variable $0 at line: $1, column: $2 has already been declared.\",\"main_parameters\":\"The main function cannot have parameters.\",\"symbol_not_found_full\":\"The variable $0 at line: $1, column: $2 has not been declared.\",\"symbol_not_found\":\"The variable $0 has not been declared.\",\"array_dimension_not_int_full\":\"The array (vector or matrix) dimensions at line $0 must be of type int.\",\"array_dimension_not_int\":\"An array (vector or matrix) dimensions must be of type int.\",\"array_dimension_not_positive_full\":\"The array (vector or matrix) dimensions at line $0 must be positive.\",\"array_dimension_not_positive\":\"An array (vector or matrix) dimensions must be positive.\",\"incompatible_types_full\":\"It expected $0 but the expression $1 at line $2 results in $3.\",\"incompatible_types\":\"It expected $0 but the expression $1 results in $2.\",\"incompatible_types_array_full\":\"The expression $0 at line $2 is not compatible with type $1.\",\"incompatible_types_array\":\"The expression $0 is not compatible with type $1.\",\"invalid_case_type_full\":\"The case expression $0 at line $1 is not compatible with type $2.\",\"invalid_case_type\":\"The case expression $0 is not compatible with type $1.\",\"function_no_return\":\"The function $0 does not have a reacheable return command. Every function must have at least one return command in its main body.\",\"invalid_array_literal_type_full\":\"Error at line $0: the expression $1 does not result in a compatible type.\",\"invalid_array_literal_type\":\"The expression $0 does not result in a compatible type.\",\"invalid_array_literal_line_full\":\"Error at line $0: it expected $1 lines but found $2.\",\"invalid_array_literal_line\":\"It expected $0 lines but found $1.\",\"invalid_array_literal_column_full\":\"Error at line $0: it expected $1 column but found $2.\",\"invalid_array_literal_column\":\"It expected $0 column but found $1.\",\"exceeded_input_request\":\"The amount of reads requested exceeded the amount of inputs available.\",\"test_case_few_reads\":\"Teste case $0 failed: there are available inputs remaining.\",\"test_case_failed\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$1\\\"> <span>Test case $0 did not executed successfully.</span></div>\",\"test_case_failed_exception\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$2\\\"> <span>Test case $0 failed</span>: $1\",\"test_case_exception\":\"An exception has ocurred during the execution of test case $0: $1\",\"invalid_type_conversion\":\"The value $0 cannot be converted to type $1.\",\"invalid_read_type\":\"Error at line $0: The input \\\"$1\\\" is not of type $2 which is the type of the variable <span class='ivprog-error-varname'>$3</span>.\",\"invalid_read_type_array\":\"Error at line $0: The input \\\"$1\\\" is not of type $2 which is the type accepted by the variable <span class='ivprog-error-varname'>$3</span> of type $4.\",\"inform_valid_identifier\":\"Enter a valid identifier! The identifier cannot be a reserved word and it must begin with a letter or _, followed by numbers, letters and _ only.\",\"inform_valid_global_duplicated\":\"A global variable named <span class='ivprog-error-varname'>$0</span> already exists, you need distinct names for each gloval variable.\",\"inform_valid_variable_duplicated\":\"A variable named <span class='ivprog-error-varname'>$0</span> already exists, you need distinct names for each variable.\",\"inform_valid_function_duplicated\":\"A function named <span class='ivprog-error-varname'>$0</span> already exists, you need distinct names for each function.\",\"inform_valid_param_duplicated\":\"A parameter named <span class='ivprog-error-varname'>$0</span> already exists in function <span class='ivprog-error-varname'>$1</span>, you need distinc names for each parameter.\",\"invalid_character\":\"The character $0 at line $1 cannot be used in this context.\",\"annonymous_array_literal\":\"Error at line $0: the array notation is only permitted during initialization of an array variable. i. e.: int vec[3] ← {1, 2, 3}.\",\"invalid_matrix_literal_line\":\"The expression $0 at line $1 does not have the same number of elements as the last line. All lines of a matrix must have the same number of elements.\",\"cannot_infer_matrix_line\":\"It is not possible to infer the number of lines of matrix $0 at line $1. It must be initialized or have its lines explicitly declared.\",\"cannot_infer_matrix_column\":\"It is not possible to infer the number of columns of matrix $0 at line $1. It must be initialized or have its columns explicitly declared.\",\"cannot_infer_vector_size\":\"It is not possible to infer the number of elements of vector $0 at line $1. It must be initialized or have its size explicitly declard.\",\"matrix_to_vector_literal_attr\":\"Error at line $0: The expression $1 represents a matrix and cannot be assigned to the vector $2.\",\"vector_to_matrix_literal_attr\":\"Error at line $0: The expression $1 represents a vector and cannot be assigned to the matrix $2.\",\"invalid_const_ref_full\":\"The variable $0 provided as a parameter to the function $1 at line $2 is a constant and cannot be used in this context. Use a non-constant variable or vector position.\",\"invalid_const_ref\":\"The variable $0 provided as a parameter to the function $1 is a constant and cannot be used in this context. Use a non-constant variable or vector position.\",\"invalid_const_assignment_full\":\"Error at line $0: $1 is a constant e therefore cannot have its value changed.\",\"invalid_const_assignment\":\"$0 is a constant e therefore cannot have its value changed.\",\"array_init_not_literal\":\"Error at line $0: An array (vector or matrix) can only be initialized by an array literal. i.e : real vector[] <- {1,2,3}\",\"array_exceeds_2d\":\"Error at line $0: The maximum number of dimensions an array can have is 2. An element of 3 or dimensions was found.\",\"invalid_matrix_id_dimension\":\"Error at line $0: You must define all dimensions of the matrix when one of them is defined by a variable! i.e: real mat1[var][5], mat2[5][var]\",\"invalid_vector_init\":\"Error at line $0: You cannot initialize a vector when its size is defined by a variable. Use a vector assignment or loop command.\",\"invalid_matrix_init\":\"Error at line $0: You cannot initialize a matrix when one of its dimensions is defined by a variable. Use a matrix assignment or loop command.\",\"invalid_vector_assignment_full\":\"Error at line $0: You can only assign a vector to another when both have the same number of elements. $1 has $2 and $3 has $4 elements!\",\"invalid_vector_assignment\":\"You can only assign a vector to another when both have the same number of elements. $0 has $1 and $2 has $3 elements!\",\"invalid_matrix_assignment_full\":\"Error at line $0: You can only assign a matrix to another when both have dimensions of the same size. $1 has $2 lines e $3 columns while $4 has $5 lines and $6 columns!\",\"invalid_matrix_assignment\":\"You can only assign a matrix to another when both have dimensions of the same size. $0 has $1 lines e $2 columns while $3 has $4 lines and $5 columns!\",\"matrix_to_vector_attr\":\"Error at line $0: $1 represents a matrix and cannot be assigned to the vector $2.\",\"vector_to_matrix_attr\":\"Error at line $0: $1 represents a vector and cannot be assigned to the matrix $2.\",\"invalid_matrix_index_assign_full\":\"Error at line $0: The position $1 of the matrix $2 only accepts vectors of size $3 but $4 has size $5.\",\"invalid_matrix_index_assign\":\"The position $0 of the matrix $1 only accepts vectors of size $2 but $3 has size $4.\",\"invalid_number_elements_vector\":\"It expected $0 elements at line $1 but the expression $2 has $3 elements.\",\"invalid_number_lines_matrix\":\"It expected a matrix with $0 lines at line $1 but the expression $2 has $3 lines.\",\"divsion_by_zero_full\":\"Error at line $0: The expression $1 resuts in a division by zero.\",\"divsion_by_zero\":\"The expression $0 resuts in a division by zero.\",\"undefined_tanget_value\":\"Error at line $0: The tangent of $1° is undefined.\",\"negative_log_value\":\"Error at line $0: You cannot calculate the logarithm of a negative value.\",\"invalid_string_index\":\"Error at line $0 during the execution of the function $1: $2 is an invalid index for the text string $3. The valid indexes go from 0 to $4.\",\"negative_sqrt_value\":\"Error at line $0: It is not allowd to calculate the square root of a negative number.\",\"exceeded_recursive_calls\":\"Error during the execution of line $0: The number of recursive calls exceeded the allowed number of calls.\",\"invalid_for_variable\":\"Error at line $0: The variable $1 used in the repeat_for command must be of type int.\",\"invalid_for_from\":\"Error at line $0: The value $1 passed to the parameter 'from' of the repeat_for command must be of type int.\",\"invalid_for_to\":\"Error at line $0: The value $1 passed to the parameter 'to' of the repeat_for command must be of type int.\",\"invalid_for_pass\":\"Error at line $0: The value $1 passed to the parameter 'pass' of the repeat_for command must be of type int.\",\"exceed_max_instructions\":\"The number of instructions executed by your program exceed the defined limit. Check your code for infinite loops or excessive recursive functions calls.\"},\"es\":{\"token_missing_one\":\" \",\"token_missing_two\":\" \",\"eos_missing\":\" \",\"invalid_type\":\" \",\"invalid_array_dimension\":\" \",\"invalid_array_size\":\" \",\"extra_lines\":\" \",\"invalid_main_return\":\" \",\"invalid_var_declaration\":\" \",\"invalid_break_command\":\" \",\"invalid_terminal\":\" \",\"const_not_init\":\" \",\"id_missing\":\" \",\"invalid_id_format\":\" \",\"main_missing\":\" \",\"invalid_global_var\":\" \",\"not_implemented\":\" \",\"function_missing\":\" \",\"function_missing_full\":\" \",\"invalid_parameters_size_full\":\" \",\"invalid_parameters_size\":\" \",\"invalid_ref_full\":\" \",\"invalid_ref\":\" \",\"invalid_parameter_type_full\":\" \",\"invalid_parameter_type\":\" \",\"unknown_command_full\":\" \",\"unknown_command\":\" \",\"loop_condition_type_full\":\" \",\"loop_condition_type\":\" \",\"endless_loop_full\":\" \",\"endless_loop\":\" \",\"for_condition_type_full\":\" \",\"for_condition_type\":\" \",\"if_condition_type_full\":\" \",\"if_condition_type\":\" \",\"invalid_return_type_full\":\" \",\"invalid_return_type\":\" \",\"invalid_void_return_full\":\" \",\"invalid_void_return\":\" \",\"unexpected_break_command_full\":\" \",\"unexpected_break_command\":\" \",\"invalid_dimension\":\" \",\"void_in_expression_full\":\" \",\"void_in_expression\":\" \",\"invalid_array_access_full\":\" \",\"invalid_array_access\":\" \",\"invalid_matrix_access_full\":\" \",\"invalid_matrix_access\":\" \",\"matrix_column_outbounds_full\":\" \",\"matrix_column_outbounds\":\" \",\"matrix_line_outbounds_full\":\" \",\"matrix_line_outbounds\":\" \",\"vector_line_outbounds_full\":\" \",\"vector_line_outbounds\":\" \",\"vector_not_matrix_full\":\" \",\"vector_not_matrix\":\" \",\"invalid_infix_op_full\":\" \",\"invalid_infix_op\":\" \",\"invalid_unary_op_full\":\" \",\"invalid_unary_op\":\" \",\"unknown_op\":\" \",\"duplicate_function\":\" \",\"duplicate_variable\":\" \",\"main_parameters\":\" \",\"symbol_not_found_full\":\" \",\"symbol_not_found\":\" \",\"array_dimension_not_int_full\":\" \",\"array_dimension_not_int\":\" \",\"array_dimension_not_positive_full\":\" \",\"array_dimension_not_positive\":\" \",\"incompatible_types_full\":\" \",\"incompatible_types\":\" \",\"incompatible_types_array_full\":\" \",\"incompatible_types_array\":\" \",\"invalid_case_type_full\":\" \",\"invalid_case_type\":\" \",\"function_no_return\":\" \",\"invalid_array_literal_type_full\":\" \",\"invalid_array_literal_type\":\" \",\"invalid_array_literal_line_full\":\" \",\"invalid_array_literal_line\":\" \",\"invalid_array_literal_column_full\":\" \",\"invalid_array_literal_column\":\" \",\"exceeded_input_request\":\" \",\"test_case_few_reads\":\" \",\"test_case_failed\":\" \",\"test_case_failed_exception\":\" \",\"test_case_exception\":\" \",\"invalid_type_conversion\":\" \",\"invalid_read_type\":\" \",\"invalid_read_type_array\":\" \",\"inform_valid_identifier\":\" \",\"inform_valid_global_duplicated\":\" \",\"inform_valid_variable_duplicated\":\" \",\"inform_valid_function_duplicated\":\" \",\"inform_valid_param_duplicated\":\" \",\"invalid_character\":\" \",\"annonymous_array_literal\":\" \",\"invalid_matrix_literal_line\":\" \",\"cannot_infer_matrix_line\":\" \",\"cannot_infer_matrix_column\":\" \",\"cannot_infer_vector_size\":\" \",\"matrix_to_vector_literal_attr\":\" \",\"vector_to_matrix_literal_attr\":\" \",\"invalid_const_ref_full\":\" \",\"invalid_const_ref\":\" \",\"invalid_const_assignment_full\":\" \",\"invalid_const_assignment\":\" \",\"array_init_not_literal\":\" \",\"array_exceeds_2d\":\" \",\"invalid_matrix_id_dimension\":\" \",\"invalid_vector_init\":\" \",\"invalid_matrix_init\":\" \",\"invalid_vector_assignment_full\":\" \",\"invalid_vector_assignment\":\" \",\"invalid_matrix_assignment_full\":\" \",\"invalid_matrix_assignment\":\" \",\"matrix_to_vector_attr\":\" \",\"vector_to_matrix_attr\":\" \",\"invalid_matrix_index_assign_full\":\" \",\"invalid_matrix_index_assign\":\" \",\"invalid_number_elements_vector\":\" \",\"invalid_number_lines_matrix\":\" \",\"divsion_by_zero_full\":\" \",\"divsion_by_zero\":\" \",\"undefined_tanget_value\":\" \",\"negative_log_value\":\" \",\"invalid_string_index\":\" \",\"negative_sqrt_value\":\" \",\"exceeded_recursive_calls\":\" \",\"invalid_for_variable\":\"\",\"invalid_for_from\":\"\",\"invalid_for_to\":\"\",\"invalid_for_pass\":\"\",\"exceed_max_instructions\":\"\"}}","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/// <reference path=\"csv.d.ts\" />\nconst Messages = require(\"./message.csv\");\nconst UI = require(\"./ui.csv\");\nconst Errors = require(\"./error.csv\");\nconst MessagesObj = Messages;\nconst UIObj = UI;\nconst ErrorsObj = Errors;\nconst i18n_data = {};\nfor (const key in UIObj) {\n const data = {};\n data['error'] = ErrorsObj[key];\n data['message'] = MessagesObj[key];\n data['ui'] = UIObj[key];\n i18n_data[key] = data;\n}\nexports.default = i18n_data;\n","module.exports = {\"pt\":{\"test_case_success\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$1\\\"><span>Caso de teste $0</span>: OK</div>\",\"test_case_duration\":\"Levou $0ms\",\"test_suite_grade\":\"A sua solução alcançou $0% da nota.\",\"awaiting_input_message\":\"O seu programa está em execução e aguardando uma entrada! Digite algo e pressione ENTER...\",\"assessment-empty-expected-tooltip\":\"A saída gerada foi além do esperado\",\"assessment-empty-generated-tooltip\":\"O programa não gerou saídas suficientes\",\"testcase_autogen_unused_input\":\"O caso de teste $0 possui mais entradas do que as leituras feitas no programa.\",\"testcase_autogen_empty\":\"O caso de teste $0 não gerou qualquer saída.\",\"success_execution\":\"Programa executado com sucesso!\",\"aborted_execution\":\"A execução do programa foi interrompida!\",\"unexpected_execution_error\":\"Erro inesperado durante a execução do programa.\"},\"en\":{\"test_case_success\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$1\\\"><span>Test case $0</span>: OK</div>\",\"test_case_duration\":\"Took $0ms\",\"test_suite_grade\":\"Your solution scored $0% of the grade.\",\"awaiting_input_message\":\"Your program is running and awaiting for an input. Type something and press ENTER…\",\"assessment-empty-expected-tooltip\":\"The generated output was beyond the amount expected\",\"assessment-empty-generated-tooltip\":\"The program did not generated enough outputs\",\"testcase_autogen_unused_input\":\"The test case $0 has more inputs than output than the number of reads present in the algorithm.\",\"testcase_autogen_empty\":\"The test case $0 did not generate any output.\",\"success_execution\":\"Program executed successfully!\",\"aborted_execution\":\"Program execution was aborted!\",\"unexpected_execution_error\":\"Unexpected error during program execution.\"},\"es\":{\"test_case_success\":\" \",\"test_case_duration\":\" \",\"test_suite_grade\":\" \",\"awaiting_input_message\":\" \",\"assessment-empty-expected-tooltip\":\" \",\"assessment-empty-generated-tooltip\":\" \",\"testcase_autogen_unused_input\":\" \",\"testcase_autogen_empty\":\" \",\"success_execution\":\"\",\"aborted_execution\":\"\",\"unexpected_execution_error\":\"\"}}","module.exports = {\"pt\":{\"function\":\"funcao\",\"btn_clear\":\"Limpar\",\"btn_function\":\"Função\",\"btn_arithmetic_plus\":\"Adição\",\"btn_arithmetic_minus\":\"Subtração\",\"btn_arithmetic_multiplication\":\"Multiplicação\",\"btn_arithmetic_division\":\"Divisão\",\"btn_arithmetic_module\":\"Módulo\",\"btn_break\":\"Pare\",\"btn_case\":\"Caso\",\"start\":\"inicio\",\"type_void\":\"vazio\",\"type_integer\":\"inteiro\",\"logic_operator_and\":\"E\",\"logic_operator_or\":\"OU\",\"logic_operator_not\":\"nao\",\"type_real\":\"real\",\"program\":\"programa\",\"type_text\":\"cadeia\",\"textvar_default_value\":\"texto\",\"type_boolean\":\"logico\",\"logic_value_true\":\"verdadeiro\",\"logic_value_false\":\"falso\",\"variable\":\"Variável\",\"command\":\"Comando\",\"new_parameter\":\"parametro\",\"new_variable\":\"variavel\",\"new_global\":\"global\",\"new_function\":\"nova_funcao\",\"matrix\":\"matriz\",\"vector\":\"vetor\",\"text_comment_start\":\"Comentário inicial da função...\",\"text_comment_main\":\"Esta é a função principal...\",\"text_read_var\":\"Entrada/Leitura de dados\",\"text_write_var\":\"Saída/Escrita de dados\",\"text_command_read\":\"leia\",\"text_command_write\":\"escreva\",\"text_return\":\"devolva\",\"text_btn_return\":\"Devolver\",\"text_comment\":\"Comentário\",\"string_join_or\":\"ou\",\"matrix_info_string\":\"matriz de $0\",\"vector_info_string\":\"vetor de $0\",\"text_attribution\":\"Atribuição\",\"text_if\":\"se\",\"text_break\":\"pare\",\"text_else\":\"senao\",\"text_for\":\"repita_para\",\"text_code_while\":\"repita_enquanto\",\"text_code_do\":\"repita\",\"text_code_do_until\":\"ate_que\",\"text_command_do\":\"repita\",\"text_command_while\":\"repita enquanto\",\"text_command_do_until\":\"até que\",\"text_code_switch\":\"escolha\",\"text_code_case\":\"caso\",\"text_config_programming\":\"Programação\",\"text_config_programming_both\":\"Visual e textual\",\"text_config_programming_textual\":\"Textual\",\"text_config_programming_visual\":\"Visual\",\"text_logic_expression\":\"Lógicos\",\"text_arithmetic_expression\":\"Aritméticos\",\"text_iftrue\":\"Se verdadeiro então\",\"text_message_error_activity_file\":\"Aconteceu um erro ao processar a atividade. <br> Recarregue a página para tentar novamente.\",\"text_message_error_activity_reload\":\"Recarregar\",\"text_repeatNtimes\":\"Repita N vezes\",\"text_receives\":\"recebe\",\"text_whiletrue\":\"Enquanto verdadeiro\",\"text_dowhiletrue\":\"Repita até que verdadeiro\",\"text_switch\":\"Escolha\",\"text_functioncall\":\"Chamada de função\",\"text_value\":\"Valor\",\"text_operator\":\"Operador\",\"text_parentheses\":\"Parênteses\",\"text_change\":\"Alterar\",\"text_teacher_algorithm\":\"Algoritmo\",\"text_teacher_algorithm_include\":\"Incluir o algoritmo abaixo no exercício\",\"text_teacher_test_case\":\"Casos de teste\",\"text_teacher_config\":\"Configurações\",\"text_teacher_data_types\":\"Tipos de dados\",\"text_teacher_commands\":\"Comandos\",\"text_teacher_functions\":\"Funções\",\"text_teacher_create_functions\":\"Criar novas funções\",\"text_teacher_create_movement_functions\":\"Movimentar funções\",\"text_teacher_test_case_input\":\"Entrada\",\"text_teacher_test_case_output\":\"Saída\",\"text_teacher_test_case_actions\":\"Ações\",\"text_teacher_test_case_add\":\"Adicionar caso de teste\",\"text_header_ivprog_functions\":\"Funções do iVProg\",\"text_menu_functions_math\":\"Matemática\",\"text_menu_functions_text\":\"Texto\",\"text_menu_functions_array\":\"Arranjo\",\"text_menu_functions_conversion\":\"Conversão\",\"text_no_variable\":\"Nenhuma variável declarada\",\"text_no_variable_instruction\":\"Antes de utilizar uma variável, é necessário criá-la\",\"text_ivprog_description\":\"Programação Visual interativa na Internet\",\"tooltip_visual\":\"Programação visual\",\"tooltip_textual\":\"Programação textual\",\"tooltip_upload\":\"Upload de código fonte\",\"tooltip_download\":\"Download do código fonte\",\"tooltip_undo\":\"Desfazer\",\"tooltip_redo\":\"Refazer\",\"tooltip_run\":\"Executar o programa\",\"tooltip_evaluate\":\"Avaliar o programa\",\"tooltip_help\":\"Ajuda\",\"tooltip_add_global\":\"Adicionar variável global\",\"tooltip_hide_function\":\"Ocultar os elementos da função\",\"var_menu_select_var\":\"Selecione uma variável\",\"var_menu_select_all\":\"Selecione\",\"var_menu_select_function\":\"Selecione uma função\",\"expression_menu_select\":\"Construir uma expressão lógica\",\"inform_valid_content\":\"Informe o conteúdo!\",\"inform_valid_expression\":\"Construa uma expressão lógica!\",\"tooltip_terminal_clear\":\"Limpa o terminal removendo todos os textos já escritos e os pendentes.\",\"tooltip_terminal_show\":\"Exibe o terminal caso esteja escondido\",\"tooltip_terminal_hide\":\"Esconde o terminal caso não esteja escondido\",\"text_ivprog_version\":\"Versão\",\"text_teacher_filter\":\"Filtro\",\"text_teacher_filter_active\":\"Ativado\",\"text_teacher_filter_help\":\"Ao ativar o filtro, as modificações do iVProg estarão bloqueadas.\",\"text_join_assessment_outputs\":\" ; \",\"assessment-detail-time-label\":\"Duração\",\"assessment-detail-grade-label\":\"Nota\",\"assessment-detail-input-label\":\"Entradas\",\"assessment-detail-output-label\":\"Saídas\",\"assessment-detail-expected-label\":\"Esperava\",\"assessment-detail-generated-label\":\"Gerou\",\"assessment-detail-result-label\":\"Resultado\",\"assessment-detail-title\":\"Caso de Teste $0\",\"text_teacher_generate_outputs\":\"Gerar saídas\",\"text_teacher_generate_outputs_algorithm\":\"Antes de gerar as saídas, elabore um algoritmo!\",\"text_code_for_from\":\"de\",\"text_code_for_to\":\"ate\",\"text_code_for_pass\":\"passo\",\"text_for_from\":\"de\",\"text_for_to\":\"até\",\"text_for_pass\":\"passo\",\"text_relational_expression\":\"Relacionais\",\"initial_program_code\":\"programa {\\\\n\\\\n\\\\t\\\\tfuncao vazio inicio () {\\\\n\\\\t\\\\t\\\\t// Inicie seu codigo aqui!\\\\n\\\\t\\\\t}\\\\n}\"},\"en\":{\"function\":\"function\",\"btn_clear\":\"Clean\",\"btn_function\":\"Function\",\"btn_arithmetic_plus\":\"Addition\",\"btn_arithmetic_minus\":\"Subtraction\",\"btn_arithmetic_multiplication\":\"Multiplication\",\"btn_arithmetic_division\":\"Division\",\"btn_arithmetic_module\":\"Remainder\",\"btn_break\":\"break\",\"btn_case\":\"Case\",\"start\":\"main\",\"type_void\":\"void\",\"type_integer\":\"int\",\"logic_operator_and\":\"AND\",\"logic_operator_or\":\"OR\",\"logic_operator_not\":\"not\",\"type_real\":\"real\",\"program\":\"program\",\"type_text\":\"string\",\"textvar_default_value\":\"text\",\"type_boolean\":\"bool\",\"logic_value_true\":\"true\",\"logic_value_false\":\"false\",\"variable\":\"Variable\",\"command\":\"Command\",\"new_parameter\":\"parameter\",\"new_variable\":\"variable\",\"new_global\":\"global\",\"new_function\":\"new_function\",\"matrix\":\"matrix\",\"vector\":\"vector\",\"text_comment_start\":\"Function initial comment\",\"text_comment_main\":\"This is the main funcion\",\"text_read_var\":\"Input/Read data\",\"text_write_var\":\"Output/Write data\",\"text_command_read\":\"read\",\"text_command_write\":\"write\",\"text_return\":\"return\",\"text_btn_return\":\"Return\",\"text_comment\":\"Comment\",\"string_join_or\":\"or\",\"matrix_info_string\":\"matrix of $0\",\"vector_info_string\":\"vector of $0\",\"text_attribution\":\"Assignment\",\"text_if\":\"if\",\"text_break\":\"break\",\"text_else\":\"else\",\"text_for\":\"repeat_for\",\"text_code_while\":\"repeat_while\",\"text_code_do\":\"repeat\",\"text_code_do_until\":\"until\",\"text_command_do\":\"repeat\",\"text_command_while\":\"repeat while\",\"text_command_do_until\":\"until\",\"text_code_switch\":\"switch\",\"text_code_case\":\"case\",\"text_config_programming\":\"Programming\",\"text_config_programming_both\":\"Visual & Textual\",\"text_config_programming_textual\":\"Textual\",\"text_config_programming_visual\":\"Visual\",\"text_logic_expression\":\"Logic\",\"text_arithmetic_expression\":\"Arithmetics\",\"text_iftrue\":\"If true then\",\"text_message_error_activity_file\":\"There was an error processing the activity.<br> Reload the page to try again.\",\"text_message_error_activity_reload\":\"Reload\",\"text_repeatNtimes\":\"Repeat N times\",\"text_receives\":\"receives\",\"text_whiletrue\":\"While true\",\"text_dowhiletrue\":\"Repeat until true\",\"text_switch\":\"Switch\",\"text_functioncall\":\"Function call\",\"text_value\":\"Value\",\"text_operator\":\"Operator\",\"text_parentheses\":\"Parentheses\",\"text_change\":\"Modify\",\"text_teacher_algorithm\":\"Algorithm\",\"text_teacher_algorithm_include\":\"Include the algorithm below in the activity\",\"text_teacher_test_case\":\"Test cases\",\"text_teacher_config\":\"Configurations\",\"text_teacher_data_types\":\"Data types\",\"text_teacher_commands\":\"Commands\",\"text_teacher_functions\":\"Functions\",\"text_teacher_create_functions\":\"Create new functions\",\"text_teacher_create_movement_functions\":\"Move functions\",\"text_teacher_test_case_input\":\"Input\",\"text_teacher_test_case_output\":\"Output\",\"text_teacher_test_case_actions\":\"Actions\",\"text_teacher_test_case_add\":\"Add test case\",\"text_header_ivprog_functions\":\"iVProg Functions\",\"text_menu_functions_math\":\"Math\",\"text_menu_functions_text\":\"Text\",\"text_menu_functions_array\":\"Array\",\"text_menu_functions_conversion\":\"Conversion\",\"text_no_variable\":\"No variable declared\",\"text_no_variable_instruction\":\"Before using a variable, you need to create it\",\"text_ivprog_description\":\"Interactive and Visual Programming on the Internet\",\"tooltip_visual\":\"Visual programming\",\"tooltip_textual\":\"Textual programming\",\"tooltip_upload\":\"Upload source code\",\"tooltip_download\":\"Download source code\",\"tooltip_undo\":\"Undo\",\"tooltip_redo\":\"Redo\",\"tooltip_run\":\"Run the program\",\"tooltip_evaluate\":\"Evaluate the program\",\"tooltip_help\":\"Help\",\"tooltip_add_global\":\"Add a global variable\",\"tooltip_hide_function\":\"Hide function elements\",\"var_menu_select_var\":\"Select a variable\",\"var_menu_select_all\":\"Select\",\"var_menu_select_function\":\"Select a function\",\"expression_menu_select\":\"Construct a logic expression\",\"inform_valid_content\":\"Provide some data\",\"inform_valid_expression\":\"Construct a logic expression\",\"tooltip_terminal_clear\":\"Clears the terminal by removing all wrriten and pending text.\",\"tooltip_terminal_show\":\"Shows the terminal if it is hidden\",\"tooltip_terminal_hide\":\"Hides the terminal if it is not on display\",\"text_ivprog_version\":\"Version\",\"text_teacher_filter\":\"Filter\",\"text_teacher_filter_active\":\"Activated\",\"text_teacher_filter_help\":\"By activating the filter modifications in iVProg will be blocked\",\"text_join_assessment_outputs\":\" ; \",\"assessment-detail-time-label\":\"Duration\",\"assessment-detail-grade-label\":\"Grade\",\"assessment-detail-input-label\":\"Inputs\",\"assessment-detail-output-label\":\"Outputs\",\"assessment-detail-expected-label\":\"Expected\",\"assessment-detail-generated-label\":\"Generated\",\"assessment-detail-result-label\":\"Result\",\"assessment-detail-title\":\"Test Case $0\",\"text_teacher_generate_outputs\":\"Generate outputs\",\"text_teacher_generate_outputs_algorithm\":\"Before generating the outputs you need to create an algorithm\",\"text_code_for_from\":\"from\",\"text_code_for_to\":\"to\",\"text_code_for_pass\":\"pass\",\"text_for_from\":\"from\",\"text_for_to\":\"to\",\"text_for_pass\":\"pass\",\"text_relational_expression\":\"Relational\",\"initial_program_code\":\"program {\\\\n\\\\n\\\\t\\\\tfunction void main () {\\\\n\\\\t\\\\t\\\\t// Start your code here!\\\\n\\\\t\\\\t}\\\\n}\"},\"es\":{\"function\":\"funccion\",\"btn_clear\":\"\",\"btn_function\":\"\",\"btn_arithmetic_plus\":\"\",\"btn_arithmetic_minus\":\"\",\"btn_arithmetic_multiplication\":\"\",\"btn_arithmetic_division\":\"\",\"btn_arithmetic_module\":\"\",\"btn_break\":\"\",\"btn_case\":\"\",\"start\":\"\",\"type_void\":\"\",\"type_integer\":\"\",\"logic_operator_and\":\"\",\"logic_operator_or\":\"\",\"logic_operator_not\":\"\",\"type_real\":\"\",\"program\":\"\",\"type_text\":\"\",\"textvar_default_value\":\"\",\"type_boolean\":\"\",\"logic_value_true\":\"\",\"logic_value_false\":\"\",\"variable\":\"\",\"command\":\"\",\"new_parameter\":\"\",\"new_variable\":\"\",\"new_global\":\"\",\"new_function\":\"\",\"matrix\":\"\",\"vector\":\"\",\"text_comment_start\":\"\",\"text_comment_main\":\"\",\"text_read_var\":\"\",\"text_write_var\":\"\",\"text_command_read\":\"\",\"text_command_write\":\"\",\"text_return\":\"\",\"text_btn_return\":\"\",\"text_comment\":\"\",\"string_join_or\":\"\",\"matrix_info_string\":\"\",\"vector_info_string\":\"\",\"text_attribution\":\"\",\"text_if\":\"\",\"text_break\":\"\",\"text_else\":\"\",\"text_for\":\"\",\"text_code_while\":\"\",\"text_code_do\":\"\",\"text_code_do_until\":\"\",\"text_command_do\":\"\",\"text_command_while\":\"\",\"text_command_do_until\":\"\",\"text_code_switch\":\"\",\"text_code_case\":\"\",\"text_config_programming\":\"\",\"text_config_programming_both\":\"\",\"text_config_programming_textual\":\"\",\"text_config_programming_visual\":\"\",\"text_logic_expression\":\"\",\"text_arithmetic_expression\":\"\",\"text_iftrue\":\"\",\"text_message_error_activity_file\":\"\",\"text_message_error_activity_reload\":\"\",\"text_repeatNtimes\":\"\",\"text_receives\":\"\",\"text_whiletrue\":\"\",\"text_dowhiletrue\":\"\",\"text_switch\":\"\",\"text_functioncall\":\"\",\"text_value\":\"\",\"text_operator\":\"\",\"text_parentheses\":\"\",\"text_change\":\"\",\"text_teacher_algorithm\":\"\",\"text_teacher_algorithm_include\":\"\",\"text_teacher_test_case\":\"\",\"text_teacher_config\":\"\",\"text_teacher_data_types\":\"\",\"text_teacher_commands\":\"\",\"text_teacher_functions\":\"\",\"text_teacher_create_functions\":\"\",\"text_teacher_create_movement_functions\":\"\",\"text_teacher_test_case_input\":\"\",\"text_teacher_test_case_output\":\"\",\"text_teacher_test_case_actions\":\"\",\"text_teacher_test_case_add\":\"\",\"text_header_ivprog_functions\":\"\",\"text_menu_functions_math\":\"\",\"text_menu_functions_text\":\"\",\"text_menu_functions_array\":\"\",\"text_menu_functions_conversion\":\"\",\"text_no_variable\":\"\",\"text_no_variable_instruction\":\"\",\"text_ivprog_description\":\"\",\"tooltip_visual\":\"\",\"tooltip_textual\":\"\",\"tooltip_upload\":\"\",\"tooltip_download\":\"\",\"tooltip_undo\":\"\",\"tooltip_redo\":\"\",\"tooltip_run\":\"\",\"tooltip_evaluate\":\"\",\"tooltip_help\":\"\",\"tooltip_add_global\":\"\",\"tooltip_hide_function\":\"\",\"var_menu_select_var\":\"\",\"var_menu_select_all\":\"\",\"var_menu_select_function\":\"\",\"expression_menu_select\":\"\",\"inform_valid_content\":\"\",\"inform_valid_expression\":\"\",\"tooltip_terminal_clear\":\"\",\"tooltip_terminal_show\":\"\",\"tooltip_terminal_hide\":\"\",\"text_ivprog_version\":\"\",\"text_teacher_filter\":\"\",\"text_teacher_filter_active\":\"\",\"text_teacher_filter_help\":\"\",\"text_join_assessment_outputs\":\"\",\"assessment-detail-time-label\":\"\",\"assessment-detail-grade-label\":\"\",\"assessment-detail-input-label\":\"\",\"assessment-detail-output-label\":\"\",\"assessment-detail-expected-label\":\"\",\"assessment-detail-generated-label\":\"\",\"assessment-detail-result-label\":\"\",\"assessment-detail-title\":\"\",\"text_teacher_generate_outputs\":\"\",\"text_teacher_generate_outputs_algorithm\":\"\",\"text_code_for_from\":\"\",\"text_code_for_to\":\"\",\"text_code_for_pass\":\"\",\"text_for_from\":\"\",\"text_for_to\":\"\",\"text_for_pass\":\"\",\"text_relational_expression\":\"\",\"initial_program_code\":\"\"}}","import line_i18n from 'line-i18n'\nimport { IVProgProcessor } from \"./../processor/ivprogProcessor\";\nimport { DOMConsole} from \"./../io/domConsole\";\nimport * as LocalizedStringsService from \"../services/localizedStringsService\";\nimport { OutputMatching } from './output_matching/output_matching';\nimport { Config } from '../util/config';\n\n\nconst LocalizedStrings = LocalizedStringsService.getInstance();\n\nconst StringTypes = line_i18n.StringTypes;\n\nconst AssessmentConfig = {\n max_instruction_count: 350250,\n suspend_threshold: 200\n}\n\nexport class IVProgAssessment {\n\n constructor (ast_code, testCases, domConsole) {\n this.ast_code = ast_code;\n this.testCases = testCases;\n this.domConsole = domConsole;\n this.old_config = JSON.parse(JSON.stringify(Config));\n Config.setConfig(AssessmentConfig);\n }\n\n runTest () {\n try {\n // loop test cases and show messages through domconsole\n const partialTests = this.testCases.map( (t, name) => {\n return new OutputMatching(new IVProgProcessor(this.ast_code), t.input, t.output, name);\n });\n const testResult = partialTests.map(om => om.eval());\n return Promise.all(testResult).then(results => {\n let grade = 0;\n for(let i = 0; i < results.length; i += 1) {\n const result = results[i];\n grade += result.grade;\n if(result.grade == 1) {\n this.writeToConsole(DOMConsole.INFO, StringTypes.MESSAGE,'test_case_success',\n result.name + 1, result.generateOutput());\n } else if (result.status == 1) {\n this.writeToConsole(DOMConsole.ERR, StringTypes.ERROR,'test_case_failed_exception',\n result.name + 1, result.error_msg, result.generateOutput());\n } else {\n this.writeToConsole(DOMConsole.ERR, StringTypes.ERROR,'test_case_failed',\n result.name + 1, result.generateOutput());\n }\n }\n grade /= results.length;\n const channel = grade == 1 ? DOMConsole.INFO : DOMConsole.ERR;\n this.writeToConsole(channel, StringTypes.MESSAGE, \"test_suite_grade\", (grade * 100).toFixed(2));\n return grade;\n });\n // return testResult.then(function (total) {\n // const grade = total / this.testCases.length;\n // const channel = grade == 1 ? DOMConsole.INFO : DOMConsole.ERR;\n // this.writeToConsole(channel, StringTypes.MESSAGE, \"test_suite_grade\", (grade * 100).toFixed(2));\n // return Promise.resolve(grade)\n // }).catch(err => {\n // this.domConsole.err(\"Erro inesperado durante o cálculo da nota.\");// try and show error messages through domconsole\n // this.domConsole.err(err.message);\n // return Promise.resolve(0);\n // });\n } catch (error) {\n this.showErrorMessage(DOMConsole.ERR, StringTypes.MESSAGE, \"unexpected_execution_error\");\n this.domConsole.err(error.message);\n return Promise.resolve(0);\n } finally {\n Config.setConfig(this.old_config);\n }\n }\n\n showErrorMessage (errorID, ...args) {\n this.domConsole.err(LocalizedStrings.getError(errorID, args));\n }\n\n showInfoMessage (msgID, ...args) {\n this.domConsole.info(LocalizedStrings.getMessage(msgID, args));\n }\n\n writeToConsole (channel, msgType, msgID, ...args) {\n let msg = LocalizedStrings.getString(msgID, msgType);\n msg = LocalizedStrings.processString(msg, args);\n switch(channel) {\n case DOMConsole.ERR: {\n this.domConsole.err(msg);\n break;\n }\n case DOMConsole.INFO: {\n this.domConsole.info(msg);\n break;\n }\n case DOMConsole.USER: {\n this.domConsole.write(msg);\n break;\n }\n }\n }\n}","import StringDiff from \"./../../util/string_diff\";\nimport { LocalizedStrings } from './../../services/localizedStringsService'\n\nexport class OutputAssessmentResult {\n\n static get PAGE_TEMPLATE () {\n return `<!DOCTYPE html>\n <html>\n <head>\n <meta http-equiv='content-type' content='text/html; charset=UTF-8'>\n <link rel='stylesheet' href='css/ivprog-assessment.css' type='text/css'/>\n </head>\n <body>\n :assessment-result:\n </body>\n </html>`;\n }\n\n static get DETAIL_TEMPLATE () {\n return `<div class='details-body'>\n <div class='details-header'>\n <h2>:test-name:</h2>\n <p>:time-label:: <span>:time:ms</span></p>\n <p>:grade-label:: <span>:grade:%</span></p>\n </div>\n <div>\n <h3>:input-label:</h3>\n <ul>\n <li>:input-list:</li>\n </ul>\n </div>\n <div>\n <h3>:output-label:</h3>\n :output-result:\n </div>\n </div>`;\n }\n\n static get OUPUT_TABLE_TEMPLATE () {\n return `<div class='detaisl-div-table'>\n <table class='assessment-output-table'>\n <tr>\n <th>:expected-label:</th>\n <th>:generated-label:</th>\n <th>:result-label:</th>\n </tr>\n :results:\n </table>\n </div>`;\n }\n\n static get OUTPUT_TEMPLATE () {\n return `<tr><td class=':class-expected:'>$0</td>\n <td class=':class-generated:'>$1</td>\n <td class=':class-result:'>$2</td></tr>`;\n }\n\n static get EMPTY_OUTPUT_TEMPLATE () {\n return `<div class='assessment-popup'><img class='assessment-empty-output' src='img/empty.svg'>\n <span class='assessment-popuptext'>$0</span></div>`;\n }\n\n static get FAILED_TEMPLATE () {\n return `<p class='assessment-failed-execution'><span class='assessment-failed-case'>✗</span>$0</p>`;\n }\n\n static get INPUT_INFO_TEMPLATE () {\n return `<span class='$0'>$1</span>`;\n }\n\n // Status code - it is not grade related!\n // 0 - Succesful execution\n // 1 - failed execution\n constructor (name, status, inputs, result, store, time, error_msg = '') {\n this.name = name;\n this.status = status;\n this.inputs = inputs;\n this.results = result;\n this.store = store;\n this.time = time;\n this.error_msg = error_msg;\n }\n\n get grade () {\n if(this.results == null) {\n return 0;\n }\n return this.results.reduce((prev, val) => prev + val.grade, 0) / this.results.length;\n }\n\n prepareResults () {\n let template = OutputAssessmentResult.DETAIL_TEMPLATE;\n const grade = (this.grade * 100).toFixed(2);\n const time = this.time || \"-\";\n template = template.replace(':test-name:', LocalizedStrings.getUI('assessment-detail-title', [this.name + 1]));\n template = template.replace(':time-label:', LocalizedStrings.getUI('assessment-detail-time-label'));\n template = template.replace(':time:', time);\n template = template.replace(':grade-label:', LocalizedStrings.getUI('assessment-detail-grade-label'));\n template = template.replace(':grade:', grade);\n const input_spans = this.prepareInputList(this.inputs);\n template = template.replace(':input-label:', LocalizedStrings.getUI('assessment-detail-input-label'));\n template = template.replace(':input-list:', input_spans);\n template = template.replace(':output-label:', LocalizedStrings.getUI('assessment-detail-output-label'));\n if(this.status == 0) {\n const output_rows = this.results.map(result => {\n if(result.type == \"string\") {\n return this.formatString(result);\n } else if (result.type == \"number\") {\n return this.formatNumber(result);\n } else {\n return this.formatBool(result);\n }\n }, this);\n template = template.replace(':output-result:', this.prepareOutputTable(output_rows));\n } else {\n let failed_text = OutputAssessmentResult.FAILED_TEMPLATE;\n failed_text = failed_text.replace(\"$0\", this.error_msg);\n template = template.replace(\":output-result:\", failed_text);\n }\n return template;\n }\n\n prepareInputList (input_list) {\n const list = input_list.map(input => {\n let template = OutputAssessmentResult.INPUT_INFO_TEMPLATE;\n template = template.replace(\"$1\", input.value);\n if(input.read) {\n template = template.replace(\"$0\", \"assessment-input-read\");\n } else {\n template = template.replace(\"$0\", \"assessment-input-unread\");\n }\n return template;\n }, this);\n return list.join(LocalizedStrings.getUI('text_join_assessment_outputs'));\n }\n\n prepareOutputTable (output_rows) {\n let template = OutputAssessmentResult.OUPUT_TABLE_TEMPLATE;\n template = template.replace(':expected-label:', LocalizedStrings.getUI('assessment-detail-expected-label'));\n template = template.replace(':generated-label:', LocalizedStrings.getUI('assessment-detail-generated-label'));\n template = template.replace(':result-label:', LocalizedStrings.getUI('assessment-detail-result-label'));\n template = template.replace(':results:', output_rows.join(''));\n return template;\n }\n\n generateOutput () {\n const assessment_result = this.prepareResults();\n let page = OutputAssessmentResult.PAGE_TEMPLATE;\n page = page.replace(':assessment-result:', assessment_result);\n page = page.replace(/(\\r|\\n|\\t)/gm,'').replace(/> *</g, '><');\n return page;\n }\n\n formatNumber (result) {\n const result_class = result.grade == 1 ? 'assessment-number-result' : 'assessment-number-result-failed'; \n let template = this.formatOutput('assessment-number-expected',\n 'assessment-number-generated', result_class, result);\n return template\n }\n\n formatBool (result) {\n const result_class = result.grade == 1 ? 'assessment-bool-result' : 'assessment-bool-result-failed';\n let template = this.formatOutput('assessment-bool-expected',\n 'assessment-bool-generated', result_class, result);\n return template\n }\n\n formatOutput (expected_class, generated_class, result_class, result) {\n let template = OutputAssessmentResult.OUTPUT_TEMPLATE;\n template = template.replace(\":class-expected:\", expected_class);\n template = template.replace(\":class-generated:\", generated_class);\n template = template.replace(\":class-result:\", result_class);\n let expected_tmpl = result.expected;\n let generated_tmpl = result.generated;\n if(expected_tmpl == null) {\n expected_tmpl = OutputAssessmentResult.EMPTY_OUTPUT_TEMPLATE.replace('$0',\n LocalizedStrings.getMessage('assessment-empty-expected-tooltip'));\n } else if(generated_tmpl == null) {\n generated_tmpl = OutputAssessmentResult.EMPTY_OUTPUT_TEMPLATE.replace('$0',\n LocalizedStrings.getMessage('assessment-empty-generated-tooltip'));\n }\n template = template.replace(\"$0\", expected_tmpl);\n template = template.replace(\"$1\", generated_tmpl);\n const final_result = result.grade == 1 ? \"✓\" : \"✗\"\n template = template.replace(\"$2\", final_result);\n return template\n }\n\n formatString (result) {\n const expected_class = 'assessment-string-expected';\n const generated_class = 'assessment-string-generated';\n //const result_class = 'assessment-string-result';\n\n let template = OutputAssessmentResult.OUTPUT_TEMPLATE;\n template = template.replace(\":class-expected:\", expected_class);\n template = template.replace(\":class-generated:\", generated_class);\n //template = template.replace(\":class-result:\", result_class);\n\n const g_string = result.generated || \"\";\n const e_string = result.expected || \"\";\n template = template.replace(\"$0\", result.expected);\n template = template.replace(\"$1\", result.generated);\n if(result.grade == 1) {\n template = template.replace(\"$2\", \"✓\");\n template = template.replace(\":class-result:\", 'assessment-string-result');\n } else {\n const diff = StringDiff(g_string, e_string);\n const diff_vec = diff.map(part => this.getDiffStringStyle(part[1], part[0]), this);\n const diff_string = diff_vec.reduce((prev, actual) => prev + actual, \"\");\n template = template.replace(\"$2\", \"<span class='assessment-failed-case'>✗</span>\" + diff_string);\n template = template.replace(\":class-result:\", \"assessment-string-diff\");\n }\n return template;\n }\n\n getDiffStringStyle (text, action) {\n const template = \"<span class='$0'>$1</span>\"\n switch(action) {\n case StringDiff.INSERT:\n return template.replace(\"$0\", \"stringdiff-insert\").replace(\"$1\", text);\n case StringDiff.DELETE:\n return template.replace(\"$0\", \"stringdiff-delete\").replace(\"$1\", text);\n case StringDiff.EQUAL:\n return template.replace(\"$0\", \"stringdiff-equal\").replace(\"$1\", text);\n }\n }\n}\n","import { Decimal } from 'decimal.js';\nimport { InputAssessment } from \"../../util/input_assessment\";\nimport { OutputTest } from \"../../util/outputTest\";\nimport { Config } from \"../../util/config\";\nimport { levenshteinDistance } from \"../../util/utils\";\nimport { OutputAssessmentResult } from './assessment_result';\nimport * as TypeParser from \"./../../typeSystem/parsers\";\nimport * as LocalizedStringsService from \"../../services/localizedStringsService\";\nimport * as OutputResult from \"./output_result\";\n\nconst LocalizedStrings = LocalizedStringsService.getInstance();\n\nexport class OutputMatching {\n\n static get NUM_REGEX () {\n return /^[+-]?([0-9]+([.][0-9]*)?(e[+-]?[0-9]+)?)$/;\n } \n\n static get NUM_IN_STRING_REGEX () {\n return /[+-]?([0-9]+([.][0-9]*)?(e[+-]?[0-9]+)?)/g;\n }\n\n static get BOOLEAN_REGEX () {\n const str = `^(${LocalizedStrings.getUI(\"logic_value_true\")}|${LocalizedStrings.getUI(\"logic_value_false\")})$`;\n return new RegExp(str);\n }\n\n static get BOOLEAN_IN_STRING_REGEX () {\n const str = `(${LocalizedStrings.getUI(\"logic_value_true\")}|${LocalizedStrings.getUI(\"logic_value_false\")})`;\n return new RegExp(str, 'g');\n }\n \n constructor (program, input_list, expected_output, test_name) {\n this.program = program;\n this.name = test_name;\n this.input_list = input_list;\n this.expected_output = expected_output;\n }\n\n eval () {\n const refThis = this;\n const input = new InputAssessment(this.input_list);\n const gen_output = new OutputTest();\n this.program.registerInput(input);\n this.program.registerOutput(gen_output);\n const start_time = Date.now();\n return this.program.interpretAST().then( sto => {\n const final_time = Date.now() - start_time;\n if(input.isInputAvailable()) {\n return new OutputAssessmentResult(this.name, 1, input.input_list,\n null, sto, final_time, refThis.getErrorMessage('test_case_few_reads', this.name+1))\n }\n const result = gen_output.list.map((g_out, i) => {\n if(i >= this.expected_output.length) {\n return new OutputResult.OutputMatchResult(null, g_out, 0, this.getPotentialOutputType(g_out));\n }\n return this.outputMatch(g_out, this.expected_output[i]);\n }, this);\n if(this.expected_output.length > gen_output.list.length) {\n for(let i = gen_output.list.length; i < this.expected_output.length; ++i) {\n const e_out = this.expected_output[i];\n result.push(new OutputResult.OutputMatchResult(e_out, null, 0, this.getPotentialOutputType(e_out)));\n }\n }\n return new OutputAssessmentResult(this.name, 0, input.input_list, result, sto, final_time);\n }).catch(error => {\n return new OutputAssessmentResult(this.name, 1, input.input_list, null, null,\n null, refThis.getErrorMessage('test_case_exception', this.name + 1, error.message))\n });\n }\n\n getPotentialOutputType (output) {\n if(OutputMatching.NUM_REGEX.test(output)) {\n return \"number\";\n } else if (OutputMatching.BOOLEAN_REGEX.test(output)) {\n return \"bool\";\n } else {\n return \"string\";\n }\n }\n\n outputMatch (g_output, e_output) {\n if(OutputMatching.NUM_REGEX.test(e_output)) {\n if(!OutputMatching.NUM_REGEX.test(g_output)) {\n return this.checkStrings(g_output, e_output);\n }\n const g_num = new Decimal(g_output);\n const e_num = new Decimal(e_output);\n return this.checkNumbers(g_num, e_num);\n } else if (OutputMatching.BOOLEAN_REGEX.test(e_output)) {\n if (!OutputMatching.BOOLEAN_REGEX.test(g_output)) {\n return this.checkStrings(g_output, e_output)\n }\n const g_bool = TypeParser.toBool(g_output);\n const e_bool = TypeParser.toBool(e_output);\n return this.checkBoolean(g_bool, e_bool);\n } else {\n return this.checkStrings(g_output, e_output);\n }\n }\n\n checkNumbers (g_num, e_num) {\n const decimalPlaces = Math.min(e_num.dp(), Config.decimalPlaces);\n g_num = new Decimal(g_num.toFixed(decimalPlaces, Decimal.ROUND_FLOOR));\n e_num = new Decimal(e_num.toFixed(decimalPlaces, Decimal.ROUND_FLOOR));\n const result = g_num.eq(e_num);\n const grade = result ? 1 : 0;\n return OutputResult.createNumberResult(e_num.toNumber(), g_num.toNumber(), grade);\n }\n\n checkBoolean (g_bool, e_bool) {\n const grade = g_bool == e_bool ? 1 : 0;\n const g_bool_text = TypeParser.convertBoolToString(g_bool);\n const e_bool_text = TypeParser.convertBoolToString(e_bool);\n return OutputResult.createBoolResult(e_bool_text, g_bool_text, grade);\n }\n\n checkStrings (g_output, e_ouput) {\n const assessmentList = []\n let e_output_clean = e_ouput;\n let g_output_clean = g_output;\n if (OutputMatching.NUM_IN_STRING_REGEX.test(e_ouput)) {\n const expected_numbers = e_ouput.match(OutputMatching.NUM_IN_STRING_REGEX);\n const generated_numbers = g_output.match(OutputMatching.NUM_IN_STRING_REGEX) || [];\n const result = generated_numbers.map((val, i) => {\n if(i >= expected_numbers.length) {\n return OutputResult.createNumberResult(null, val, 0);\n }\n const g_val = new Decimal(val)\n const e_val = new Decimal(expected_numbers[i]);\n return this.checkNumbers(g_val, e_val);\n }, this);\n if(expected_numbers.length > generated_numbers.length) {\n for(let i = generated_numbers.length; i < expected_numbers.length; ++i) {\n result.push(OutputResult.createNumberResult(expected_numbers[i], null, 0));\n }\n }\n e_output_clean = e_output_clean.replace(OutputMatching.NUM_IN_STRING_REGEX, '').trim();\n g_output_clean = g_output_clean.replace(OutputMatching.NUM_IN_STRING_REGEX, '').trim();\n const numberGrade = result.reduce((prev, r) => prev + r.grade, 0) / result.length;\n assessmentList.push(numberGrade);\n } \n if(OutputMatching.BOOLEAN_IN_STRING_REGEX.test(e_ouput)) {\n const expected_bools = e_ouput.match(OutputMatching.BOOLEAN_IN_STRING_REGEX);\n const generated_bools = g_output.match(OutputMatching.BOOLEAN_IN_STRING_REGEX) || [];\n const result = generated_bools.map((val, i) => {\n if(i >= expected_bools.length) {\n return OutputResult.createBoolResult(null, val, 0);\n }\n const g_bool = TypeParser.toBool(val);\n const e_bool = TypeParser.toBool(expected_bools[i]);\n return this.checkBoolean(g_bool, e_bool );\n }, this);\n if(expected_bools.length > generated_bools.length) {\n for(let i = generated_bools.length; i < expected_bools.length; ++i) {\n result.push(OutputResult.createBoolResult(expected_bools[i], null, 0));\n }\n }\n e_output_clean = e_output_clean.replace(OutputMatching.BOOLEAN_IN_STRING_REGEX, '').trim();\n g_output_clean = g_output_clean.replace(OutputMatching.BOOLEAN_IN_STRING_REGEX, '').trim();\n const boolGrade = result.reduce((prev, r) => prev + r.grade, 0) / result.length;\n assessmentList.push(boolGrade);\n }\n const dist = levenshteinDistance(g_output_clean, e_output_clean);\n let gradeDiff = Math.max(0, e_output_clean.length - dist)/e_output_clean.length;\n gradeDiff = Number.isNaN(gradeDiff) ? 0 : gradeDiff;\n const assessment_size = assessmentList.length + 1;\n const gradeAcc = assessmentList.reduce((prev, val) => prev + val/assessment_size, 0);\n const finalGrade = 1 * (gradeDiff/assessment_size + gradeAcc);\n return OutputResult.createStringResult(e_ouput, g_output, finalGrade);\n }\n \n getErrorMessage (errorID, ...args) {\n return LocalizedStrings.getError(errorID, args);\n }\n}\n","\nexport function createNumberResult (expected, generated, grade) {\n return new OutputMatchResult(expected, generated, grade, \"number\");\n}\n\nexport function createBoolResult (expected, generated, grade) {\n return new OutputMatchResult(expected, generated, grade, \"bool\");\n}\n\nexport function createStringResult (expected, generated, grade) {\n return new OutputMatchResult(expected, generated, grade, \"string\");\n}\n\nexport class OutputMatchResult {\n\n constructor (expected, generated, grade, type) {\n this.expected = expected;\n this.generated = generated;\n this.grade = grade;\n this.type = type;\n }\n}","import { SyntaxErrorFactory } from \"./error/syntaxErrorFactory\";\n\nexport function recover (_) {\n const start = this._tokenStartCharIndex;\n const stop = this._input.index;\n let text = this._input.getText(start, stop);\n text = this.getErrorDisplay(text);\n const line = this._tokenStartLine;\n const column = this._tokenStartColumn;\n throw SyntaxErrorFactory.invalid_character(text, line, column);\n}\n","import { Assign } from './assign';\n\nexport class ArrayIndexAssign extends Assign {\n\n constructor (id, lineExpression, columnExpression, expression) {\n super(id, expression);\n this.line = lineExpression;\n this.column = columnExpression;\n }\n}\n","import { Declaration } from './declaration';\n\nexport class ArrayDeclaration extends Declaration {\n\n constructor (id, type, lines, columns, initial, isConst) {\n super(id, type, initial, isConst);\n this.lines = lines;\n this.columns = columns;\n }\n\n get isVector () {\n return this.columns == null;\n }\n}","import { Command } from './command';\n\nexport class Assign extends Command {\n \n constructor (id, expression) {\n super();\n this.id = id;\n this.expression = expression;\n }\n}","import { Command } from './command';\n\nexport class Break extends Command {\n\n constructor () {\n super();\n }\n}\n","import { Command } from './command';\n\nexport class Case extends Command {\n\n constructor (expression) {\n super();\n this.expression = expression;\n this.commands = [];\n }\n\n setCommands (commands) {\n this.commands = commands;\n }\n\n get isDefault () {\n return this.expression === null;\n }\n}","export class Command {\n\n constructor () {\n this._sourceInfo = null;\n }\n\n set sourceInfo (sourceInfo) {\n this._sourceInfo = sourceInfo;\n }\n\n get sourceInfo () {\n return this._sourceInfo;\n }\n}\n","export class CommandBlock {\n\t\n\tconstructor(variables, commands) {\n\t\tthis.variables = variables;\n\t\tthis.commands = commands;\n\t\tthis._sourceInfo = null;\n\t}\n\n\tset sourceInfo (sourceInfo) {\n\t\tthis._sourceInfo = sourceInfo;\n\t}\n\n\tget sourceInfo () {\n\t\treturn this._sourceInfo;\n\t}\n}","import { Command } from './command';\n\nexport class Declaration extends Command {\n \n constructor (id, type, initial, isConst) {\n super();\n this.id = id;\n this.type = type;\n this.initial = initial;\n this.isConst = isConst;\n }\n}\n","import { Command } from './command';\n\nexport class For extends Command {\n\n constructor (for_id, for_from, for_to, for_pass, commandBlock) {\n super();\n this.for_id = for_id;\n this.for_from = for_from;\n this.for_to = for_to;\n this.for_pass = for_pass;\n this.commandBlock = commandBlock;\n }\n\n get commands () {\n return this.commandBlock.commands;\n }\n}","export class FormalParameter {\n\n constructor (type, id, byRef = false) {\n this.type = type;\n this.id = id;\n this.byRef = byRef;\n this._sourceInfo = null;\n }\n\n set sourceInfo (sourceInfo) {\n\t\tthis._sourceInfo = sourceInfo;\n\t}\n\n\tget sourceInfo () {\n\t\treturn this._sourceInfo;\n\t}\n}","import { Types } from './../../typeSystem/types';\n\nexport class Function {\n\n constructor(name, returnType, formalParameters, commandBlock) {\n this.name = name;\n this.returnType = returnType;\n this.formalParameters = formalParameters;\n this.commandBlock = commandBlock;\n this._sourceInfo = null;\n }\n\n get isMain () {\n return this.name === null && this.returnType.isCompatible(Types.VOID);\n }\n\n get commands () {\n return this.commandBlock.commands;\n }\n\n get variablesDeclarations () {\n return this.commandBlock.variables;\n }\n\n set sourceInfo (sourceInfo) {\n\t\tthis._sourceInfo = sourceInfo;\n\t}\n\n\tget sourceInfo () {\n\t\treturn this._sourceInfo;\n\t}\n}","import { Command } from './command';\n\nexport class IfThenElse extends Command {\n\n constructor (condition, ifTrue, ifFalse) {\n super();\n this.condition = condition;\n this.ifTrue = ifTrue;\n this.ifFalse = ifFalse;\n }\n}","import { Break } from './break';\nimport { Return } from './return';\nimport { Assign } from './assign';\nimport { ArrayIndexAssign } from './arrayAssign';\nimport { Declaration } from './declaration';\nimport { ArrayDeclaration } from './arrayDeclaration';\nimport { While } from './while';\nimport { For } from './for';\nimport { Function } from './function';\nimport { IfThenElse } from './ifThenElse';\nimport { CommandBlock } from './commandBlock';\nimport { RepeatUntil } from './repeatUntil';\nimport { Switch } from './switch';\nimport { Case } from './case';\nimport { SysCall } from './sysCall';\nimport { FormalParameter } from './formalParameter';\nimport { FunctionCall } from './../expressions/functionCall'; //Proxy to expression since they do exatcly the same thing\n\nexport {\n Break,\n Return,\n Assign,\n ArrayIndexAssign,\n Declaration,\n ArrayDeclaration,\n While,\n For,\n Function,\n IfThenElse,\n CommandBlock,\n RepeatUntil,\n Switch,\n Case,\n SysCall,\n FormalParameter,\n FunctionCall\n};","import { While } from './while';\n\nexport class RepeatUntil extends While {\n\n constructor(condition, commandBlock) {\n super(condition, commandBlock);\n }\n\n get testFirst () {\n return false;\n }\n \n}","import { Command } from './command';\n\nexport class Return extends Command {\n\n constructor(expression) {\n super();\n this.expression = expression;\n }\n \n}","import { Command } from './command';\n\nexport class Switch extends Command {\n \n constructor (expression, cases) {\n super();\n this.expression = expression;\n this.cases = cases;\n }\n}","/**\n * This class represents all the language defined functions.\n * The language processor uses the id provided here to properly execute the desired function.\n * The function is actually implemented inside the language processor.\n * All the functions can be found at: js/processor/definedFunctions.js\n */\nexport class SysCall {\n\n constructor (langFunc) {\n this.langFunc = langFunc;\n }\n}","import { Command } from './command';\n\nexport class While extends Command {\n\n constructor (expression, commandBlock) {\n super();\n this.expression = expression;\n this.commandBlock = commandBlock;\n }\n\n get commands () {\n return this.commandBlock.commands;\n }\n\n get testFirst () {\n \treturn true;\n }\n}","export class SyntaxError extends Error {\n\n constructor (...msg) {\n super(...msg);\n if(Error.captureStackTrace)\n Error.captureStackTrace(this, SyntaxError);\n }\n}\n","import * as LocalizedStringsService from './../../services/localizedStringsService';\nimport { SyntaxError } from './syntaxError';\n\nconst LocalizedStrings = LocalizedStringsService.getInstance();\n\nfunction createError (message_id, context = []) {\n return new SyntaxError(LocalizedStrings.getError(message_id, context));\n}\n\nexport const SyntaxErrorFactory = Object.freeze({\n extra_lines: () => new SyntaxError(LocalizedStrings.getError(\"extra_lines\")),\n token_missing_one: (expected, token) => {\n const context = [expected, token.text, token.line, token.column];\n return createError(\"token_missing_one\", context);\n },\n token_missing_list: (expectedList, token) => {\n const line = expectedList.join(LocalizedStrings.getOR());\n return SyntaxErrorFactory.token_missing_one(line, token);\n },\n id_missing: (token) => {\n const context = [token.text, token.line, token.column];\n return createError(\"id_missing\", context);\n },\n eos_missing: (token) => {\n const context = [token.line, token.column];\n return createError(\"eos_missing\", context);\n },\n invalid_array_dimension: (typeName, token) => {\n const context = [token.line, token.column, typeName];\n return createError(\"invalid_array_dimension\", context);\n },\n invalid_array_size: (token) => {\n const context = [token.line];\n return createError(\"invalid_array_size\", context);\n },\n invalid_main_return: (name, typeName, token) => {\n const context = [name, typeName, token.line];\n return createError(\"invalid_main_return\", context);\n },\n invalid_var_declaration: (token) => {\n const context = [token.line];\n return createError(\"invalid_var_declaration\", context);\n },\n invalid_break_command: (cmdName, token) => {\n const context = [token.line, cmdName];\n return createError(\"invalid_break_command\", context);\n },\n invalid_terminal: (token) => {\n const context = [token.text, token.line, token.column];\n return createError('invalid_terminal', context);\n },\n invalid_type: (list, token) => {\n const line = list.join(LocalizedStrings.getOR());\n const context = [token.text, token.line, token.column, line]\n return createError(\"invalid_type\", context);\n },\n const_not_init: (token) => {\n const context = [token.line, token.column];\n return createError(\"const_not_init\", context);\n },\n invalid_id_format: (token) => {\n const context = [token.text, token.line, token.column];\n return createError(\"invalid_id_format\", context);\n },\n duplicate_function: (token) => {\n const context = [token.text, token.line, token.column];\n return createError(\"duplicate_function\", context);\n },\n main_parameters: () => {\n return createError(\"main_parameters\");\n },\n duplicate_variable: (token) => {\n const context = [token.text, token.line, token.column];\n return createError(\"duplicate_variable\", context);\n },\n invalid_character: (text, line, _column) => {\n const context = [text, line];\n return createError(\"invalid_character\", context);\n },\n annonymous_array_literal: (token) => {\n const context = [token.line];\n return createError(\"annonymous_array_literal\", context);\n },\n invalid_matrix_literal_line: (exp, sourceInfo) => {\n const context = [exp, sourceInfo.line];\n return createError(\"invalid_matrix_literal_line\", context);\n },\n cannot_infer_matrix_line: (name, sourceInfo) => {\n const context = [name, sourceInfo.line];\n return createError(\"cannot_infer_matrix_line\", context);\n },\n cannot_infer_matrix_column: (name, sourceInfo) => {\n const context = [name, sourceInfo.line];\n return createError(\"cannot_infer_matrix_column\", context);\n },\n cannot_infer_vector_size: (name, sourceInfo) => {\n const context = [name, sourceInfo.line];\n return createError(\"cannot_infer_vector_size\", context);\n },\n matrix_to_vector_literal_attr: (name, exp, sourceInfo) => {\n const context = [sourceInfo.line, exp, name];\n return createError(\"matrix_to_vector_literal_attr\", context);\n },\n vector_to_matrix_literal_attr: (name, exp, sourceInfo) => {\n const context = [sourceInfo.line, exp, name];\n return createError(\"vector_to_matrix_literal_attr\", context);\n },\n array_init_not_literal: (sourceInfo) => {\n const context = [sourceInfo.line];\n return createError(\"array_init_not_literal\", context);\n },\n array_exceeds_2d: (sourceInfo) => {\n const context = [sourceInfo.line];\n return createError(\"array_exceeds_2d\", context);\n },\n invalid_matrix_id_dimension: (sourceInfo) => {\n const context = [sourceInfo.line];\n return createError(\"invalid_matrix_id_dimension\", context);\n },\n invalid_vector_init: (sourceInfo) => {\n const context = [sourceInfo.line];\n return createError(\"invalid_vector_init\", context);\n },\n invalid_matrix_init: (sourceInfo) => {\n const context = [sourceInfo.line];\n return createError(\"invalid_matrix_init\", context);\n }\n});\n","import { Expression } from './expression';\n\nexport class ArrayAccess extends Expression {\n\t\n\tconstructor (id, line, column) {\n\t\tsuper();\n\t\tthis.id = id;\n\t\tthis.line = line;\n\t\tthis.column = column;\n\t}\n\n\ttoString () {\n\t\tconst strLine = this.line.toString();\n\t\tlet strColumn = null;\n\t\tif(this.column) {\n\t\t\tstrColumn = this.column.toString();\n\t\t}\n\t\tlet text = null;\n\t\tif(strColumn) {\n\t\t\ttext = `${this.id}[${strLine}][${strColumn}]`;\n\t\t} else {\n\t\t\ttext = `${this.id}[${strLine}]`;\n\t\t}\n\t\tif(this.parenthesis ){\n\t\t\treturn `(${text})`\n\t\t} else {\n\t\t\treturn text;\n\t\t}\n\t}\n}","import { Literal } from './literal';\n\nexport class ArrayLiteral extends Literal {\n \n constructor(type, value) {\n super(type);\n this.value = value;\n }\n\n get subtype () {\n const element = this.value[0];\n if (element instanceof ArrayLiteral) {\n return element.value[0].type;\n } else {\n return element.type;\n }\n }\n\n get lines () {\n return this.value.length;\n }\n\n get columns () {\n const element = this.value[0];\n if (!(element instanceof ArrayLiteral)){\n return null;\n } else {\n return element.value.length;\n }\n }\n\n get isVector () {\n return this.columns === null;\n }\n\n get isValid () {\n return this.validateSize() && this.validateType();\n }\n\n validateType () {\n const valid = true;\n // const subtype = this.subtype;\n // if(this.columns !== null) {\n // const len = this.lines;\n // const len2 = this.columns;\n // for (let i = len - 1; i >= 0 && valid; --i) {\n // for (let j = len2 - 1; j >= 0 && valid; --j) {\n // if(!this.value[i].value[j].type.isCompatilbe(subtype)) {\n // valid = false;\n // break;\n // }\n // }\n // }\n // } else {\n // const len = this.lines;\n // for (var i = len - 1; i >= 0 && valid; i--) {\n // if(!this.value[i].type.isCompatilbe(subtype)) {\n // valid = false;\n // break;\n // }\n // }\n // }\n // Cannot validate type since no information on variables literals are available\n return valid;\n }\n\n validateSize () {\n const valid = true;\n // if(this.columns !== null) {\n // const equalityTest = this.value.map(v => v.value.length)\n // .reduce((old, next) => {\n // console.log(next);\n // if (old == null) {\n // return next;\n // } else if (old === next) {\n // return old\n // } else {\n // return -1;\n // }\n // }, null);\n // valid = equalityTest !== -1;\n // }\n // check is now made inside IVProgParser.parseVectorList(...)\n return valid;\n }\n\n toString () {\n const strList = this.value.map(arrayLiteral => arrayLiteral.toString());\n const text = \"{\" + strList.join(',') + \"}\";\n if(this.parenthesis) {\n return `(${text})`;\n } else {\n return text;\n }\n }\n}\n","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\nimport { convertBoolToString } from \"./../../typeSystem/parsers\";\n\nexport class BoolLiteral extends Literal {\n \n constructor(value) {\n super(Types.BOOLEAN);\n this.value = value;\n }\n\n toString () {\n const text = convertBoolToString(this.value);\n if(this.parenthesis) {\n return `(${text})`\n } else {\n return text;\n }\n }\n}","export class Expression {\n\n constructor () {\n\t\tthis._sourceInfo = null;\n\t\tthis._parenthesis = false;\n }\n\n set sourceInfo (sourceInfo) {\n\t\tthis._sourceInfo = sourceInfo;\n\t}\n\n\tget sourceInfo () {\n\t\treturn this._sourceInfo;\n\t}\n\n\tset parenthesis (flag) {\n\t\tthis._parenthesis = flag;\n\t}\n\n\tget parenthesis () {\n\t\treturn this._parenthesis;\n\t}\n}","import { Expression } from './expression';\nimport { LanguageDefinedFunction } from '../../processor/definedFunctions';\n\nexport class FunctionCall extends Expression {\n\n\tconstructor (id, actualParameters) {\n\t\tsuper();\n\t\tthis.id = id;\n\t\tthis.actualParameters = actualParameters;\n\t}\n\n\tget isMainCall () {\n\t\treturn this.id === null;\n\t}\n\n\tget parametersSize () {\n\t\treturn this.actualParameters.length;\n\t}\n\n\ttoString () {\n\t\tlet name = null;\n\t\tif(this.isMainCall) {\n\t\t\tname = LanguageDefinedFunction.getMainFunctionName();\n\t\t} else {\n\t\t\tname = LanguageDefinedFunction.getLocalName(this.id);\n\t\t}\n\t\tlet params = null;\n\t\tif(this.actualParameters.length == 0) {\n\t\t\tparams = \"()\";\n\t\t} else {\n\t\t\tconst strParams = this.actualParameters.map(v => v.toString());\n\t\t\tparams = \"(\" + strParams.join(\",\") + \")\";\n\t\t}\n\t\tif(this.parenthesis) {\n\t\t\treturn `(${name + params})`;\n\t\t} else {\n\t\t\treturn name + params;\n\t\t}\n\t}\n}","import { ArrayAccess } from './arrayAccess';\nimport { FunctionCall } from './functionCall';\nimport { IntLiteral } from './intLiteral';\nimport { RealLiteral } from './realLiteral';\nimport { BoolLiteral } from './boolLiteral';\nimport { StringLiteral } from './stringLiteral';\nimport { ArrayLiteral } from './arrayLiteral';\nimport { VariableLiteral } from './variableLiteral';\nimport { InfixApp } from './infixApp';\nimport { UnaryApp } from './unaryApp';\n\nexport {\n\tArrayAccess,\n\tFunctionCall,\n IntLiteral,\n RealLiteral,\n BoolLiteral,\n StringLiteral,\n ArrayLiteral,\n VariableLiteral,\n InfixApp,\n UnaryApp\n};","import { Expression } from './expression';\n\nexport class InfixApp extends Expression {\n\n constructor(op, left, right) {\n super();\n this.op = op;\n this.left = left;\n this.right = right;\n }\n\n toString () {\n const l = this.left.toString();\n const op = this.op.value;\n const r = this.right.toString();\n if(this.parenthesis) {\n return `(${l + op + r})`;\n } else {\n return l + op + r;\n }\n }\n}","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\nimport { convertToString } from './../../typeSystem/parsers';\n\nexport class IntLiteral extends Literal {\n \n constructor(value) {\n super(Types.INTEGER);\n this.value = value;\n }\n\n toString() {\n const text = convertToString(this.value, this.type);\n if(this.parenthesis) {\n return `(${text})`;\n } else {\n return text;\n }\n }\n}","import { Expression } from './expression';\n\nexport class Literal extends Expression {\n \n constructor (type) {\n super();\n this.type = type;\n }\n}","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\nimport { convertToString } from './../../typeSystem/parsers';\n\nexport class RealLiteral extends Literal {\n \n constructor(value) {\n super(Types.REAL);\n this.value = value;\n }\n\n toString() {\n const text = convertToString(this.value, this.type);\n if (this.parenthesis) {\n return `(${text})`;\n } else {\n return text;\n }\n }\n}","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\n\nexport class StringLiteral extends Literal {\n \n constructor(value) {\n super(Types.STRING);\n this.value = value;\n }\n\n toString() {\n const text = '\"' + this.value + '\"';\n if(this.parenthesis) {\n return `(${text})`;\n } else {\n return text;\n }\n }\n}","import {InfixApp} from './infixApp';\n\nexport class UnaryApp extends InfixApp {\n \n constructor (op, left) {\n super(op, left, null);\n }\n\n toString () {\n const l = this.left.toString();\n const op = this.op.value;\n if(this.parenthesis) {\n return `(${op + l})`;\n } else {\n return op + l;\n }\n }\n}","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\n\nexport class VariableLiteral extends Literal {\n \n constructor(id) {\n super(Types.UNDEFINED);\n this.id = id;\n }\n\n toString () {\n if(this.parenthesis) {\n return `(${this.id})`;\n } else {\n return this.id;\n }\n }\n}","import { CommonTokenStream, InputStream } from 'antlr4/index';\nimport * as Expressions from './expressions';\nimport * as Commands from './commands';\nimport * as AstHelpers from \"./ast_helpers\";\nimport { toInt, toString, toBool, toReal } from '../typeSystem/parsers';\nimport { Types } from \"../typeSystem/types\";\nimport { ArrayType } from \"../typeSystem/array_type\";\nimport { SourceInfo } from './sourceInfo';\nimport { convertFromString } from './operators';\nimport { SyntaxErrorFactory } from './error/syntaxErrorFactory';\nimport { LanguageDefinedFunction } from '../processor/definedFunctions';\nimport { LanguageService } from '../services/languageService';\n\nexport class IVProgParser {\n\n static createParser (input) {\n const lexerClass = LanguageService.getCurrentLexer();\n return new IVProgParser(input, lexerClass);\n }\n\n // <BEGIN scope consts>\n static get BASE () {\n return 0;\n }\n static get FUNCTION () {\n return 1;\n }\n static get COMMAND () {\n return 2;\n }\n static get BREAKABLE () {\n return 4;\n }\n // </ END scope consts>\n\n constructor (input, lexerClass) {\n this.lexerClass = lexerClass;\n this.inputStream = new InputStream(input)\n this.lexer = new lexerClass(this.inputStream);\n this.lexer.recover = AstHelpers.recover.bind(this.lexer);\n this.tokenStream = new CommonTokenStream(this.lexer);\n this.tokenStream.fill();\n this.pos = 1;\n this.variableTypes = [this.lexerClass.RK_INTEGER,\n this.lexerClass.RK_REAL,\n this.lexerClass.RK_BOOLEAN,\n this.lexerClass.RK_STRING\n ];\n this.functionTypes = this.variableTypes.concat(this.lexerClass.RK_VOID);\n this.parsingArrayDimension = 0;\n this.scope = [];\n this.langFuncs = LanguageService.getCurrentLangFuncs();\n this.definedFuncsNameList = [];\n this.definedVariablesStack = [];\n }\n\n parseTree () {\n return this.parseProgram();\n }\n\n getToken (index = this.pos) {\n // if(index === null)\n // index = this.pos;\n return this.tokenStream.LT(index);\n }\n\n insideScope (scope) {\n if(this.scope.length <= 0) {\n return IVProgParser.BASE === scope;\n } else {\n return this.scope[this.scope.length-1] === scope;\n }\n }\n\n pushScope (scope) {\n this.scope.push(scope);\n }\n\n pushVariableStack () {\n this.definedVariablesStack.push([]);\n }\n\n popScope () {\n return this.scope.pop();\n }\n\n popVariableStack () {\n return this.definedVariablesStack.pop();\n }\n\n getCurrentVariableStack () {\n return this.definedVariablesStack[this.definedVariablesStack.length - 1];\n }\n\n isEOF () {\n this.getToken(this.pos);\n return this.tokenStream.fetchedEOF;\n }\n\n parseProgram () {\n this.consumeNewLines();\n const token = this.getToken();\n let globalVars = [];\n let functions = [];\n\n if(this.lexerClass.RK_PROGRAM === token.type) {\n this.pos++;\n this.consumeNewLines();\n this.checkOpenCurly();\n this.pos++;\n this.pushVariableStack();\n for(;;) {\n this.consumeNewLines();\n const token = this.getToken();\n if (token.type === this.lexerClass.RK_CONST || this.isVariableType(token)) {\n globalVars = globalVars.concat(this.parseGlobalVariables());\n } else if (token.type === this.lexerClass.RK_FUNCTION) {\n this.pushVariableStack();\n functions = functions.concat(this.parseFunction());\n this.popVariableStack();\n } else {\n break;\n }\n }\n this.consumeNewLines();\n this.checkCloseCurly();\n this.pos++;\n this.consumeNewLines();\n if(!this.isEOF()) {\n throw SyntaxErrorFactory.extra_lines();\n }\n this.popVariableStack();\n return {global: globalVars, functions: functions};\n } else {\n throw SyntaxErrorFactory.token_missing_one(this.lexer.literalNames[this.lexerClass.RK_PROGRAM], token);\n }\n }\n\n checkOpenCurly (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.OPEN_CURLY !== token.type){\n if(!attempt)\n throw SyntaxErrorFactory.token_missing_one('{', token);\n else\n return false;\n }\n return true;\n }\n\n checkCloseCurly (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.CLOSE_CURLY !== token.type){\n if(!attempt)\n throw SyntaxErrorFactory.token_missing_one('}', token);\n else\n return false;\n }\n return true;\n }\n\n /* It checks if the current token at position pos is a ']'.\n * As a check function it doesn't increment pos.\n *\n * @params bool:attempt, indicates that the token is optional. Defaults: false\n *\n * @returns true if the attempt is true and current token is '[',\n * false is attempt is true and current token is not '['\n **/\n checkOpenBrace (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.OPEN_BRACE !== token.type){\n if (!attempt) {\n throw SyntaxErrorFactory.token_missing_one('[', token);\n } else {\n return false;\n }\n }\n return true;\n }\n\n checkCloseBrace (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.CLOSE_BRACE !== token.type){\n if (!attempt) {\n throw SyntaxErrorFactory.token_missing_one(']', token);\n } else {\n return false;\n }\n }\n return true;\n }\n\n checkOpenParenthesis (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.OPEN_PARENTHESIS !== token.type){\n if (!attempt) {\n throw SyntaxErrorFactory.token_missing_one('(', token);\n } else {\n return false;\n }\n }\n return true;\n }\n\n checkCloseParenthesis (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.CLOSE_PARENTHESIS !== token.type){\n if (!attempt) {\n throw SyntaxErrorFactory.token_missing_one(')', token);\n } else {\n return false;\n }\n }\n return true;\n }\n\n checkEOS (attempt = false) {\n const eosToken = this.getToken();\n if (eosToken.type !== this.lexerClass.EOS) {\n if (!attempt)\n throw SyntaxErrorFactory.eos_missing(eosToken);\n else\n return false;\n }\n return true;\n }\n\n checkFunctionDuplicate (functionID, funcIDToken) {\n const id = functionID === null ? \"$main\" : functionID;\n const index = this.definedFuncsNameList.indexOf(id);\n if(index !== -1) {\n throw SyntaxErrorFactory.duplicate_function(funcIDToken);\n }\n this.definedFuncsNameList.push(id);\n }\n\n checkVariableDuplicate (variableID, sourceInfo) {\n const index = this.getCurrentVariableStack().indexOf(variableID);\n if(index !== -1) {\n throw SyntaxErrorFactory.duplicate_variable(sourceInfo);\n }\n this.getCurrentVariableStack().push(variableID);\n }\n\n consumeForSemiColon () {\n const eosToken = this.getToken();\n if (eosToken.type === this.lexerClass.EOS && eosToken.text.match(';')) {\n this.pos++;\n return; \n }\n throw SyntaxErrorFactory.token_missing_one(';', eosToken);\n }\n\n parseGlobalVariables () {\n const decl = this.parseMaybeConst();\n this.checkEOS();\n this.pos++;\n return decl;\n }\n\n /*\n * Checks if the next token is PR_CONST. It's only available\n * at global variables declaration level\n * @returns Declararion(const, type, id, initVal?)\n **/\n parseMaybeConst () {\n const constToken = this.getToken();\n if(constToken.type === this.lexerClass.RK_CONST) {\n this.pos++;\n const typeString = this.parseType();\n return this.parseDeclaration(typeString, true);\n } else if(this.isVariableType(constToken)) {\n const typeString = this.parseType();\n return this.parseDeclaration(typeString);\n } else {\n throw SyntaxErrorFactory.token_missing_list(\n [this.lexer.literalNames[this.lexerClass.RK_CONST]].concat(this.getTypeArray()), constToken);\n }\n\n }\n\n /*\n * Parses a declarion of the form: type --- id --- (= --- EAnd)?\n * @returns a list of Declararion(const, type, id, initVal?)\n **/\n parseDeclaration (typeString, isConst = false) {\n let initial = null;\n let dim1 = null;\n let dim2 = null;\n let dimensions = 0;\n const sourceInfo = SourceInfo.createSourceInfo(this.getToken())\n const idString = this.parseID();\n this.checkVariableDuplicate(idString, sourceInfo);\n // Check for array or vector\n // ID[int/IDi?][int/IDj?]\n if (this.checkOpenBrace(true)) {\n this.pos += 1; \n this.consumeNewLines();\n dim1 = this.parseArrayDimension();\n this.consumeNewLines();\n this.checkCloseBrace();\n this.pos += 1;\n dimensions += 1\n if(this.checkOpenBrace(true)) {\n this.pos += 1;\n this.consumeNewLines();\n dim2 = this.parseArrayDimension();\n this.consumeNewLines();\n this.checkCloseBrace();\n this.pos += 1;\n dimensions += 1\n }\n return this.parseArrayDeclaration(typeString, isConst, idString, sourceInfo, dimensions, dim1, dim2);\n } else {\n const equalsToken = this.getToken();\n if(isConst && equalsToken.type !== this.lexerClass.EQUAL ) {\n throw SyntaxErrorFactory.const_not_init(sourceInfo);\n }\n if(equalsToken.type === this.lexerClass.EQUAL) {\n this.pos++;\n initial = this.parseExpressionOR();\n }\n const declaration = new Commands.Declaration(idString, typeString, initial, isConst);\n declaration.sourceInfo = sourceInfo;\n const commaToken = this.getToken();\n if(commaToken.type === this.lexerClass.COMMA) {\n this.pos++;\n this.consumeNewLines();\n return [declaration]\n .concat(this.parseDeclaration(typeString, isConst));\n } else {\n return [declaration]\n }\n }\n }\n\n parseArrayDeclaration (typeString, isConst, idString, sourceInfo, dimensions, dim1, dim2) {\n const equalsToken = this.getToken();\n let n_lines = dim1;\n let n_columns = dim2;\n let initial = null;\n let dim_is_id = false;\n if(dim1 instanceof Expressions.VariableLiteral || dim2 instanceof Expressions.VariableLiteral) {\n dim_is_id = true;\n if(dimensions > 1 && (dim1 == null || dim2 == null)) {\n throw SyntaxErrorFactory.invalid_matrix_id_dimension(SourceInfo.createSourceInfo(equalsToken));\n }\n }\n if(isConst && equalsToken.type !== this.lexerClass.EQUAL ) {\n throw SyntaxErrorFactory.const_not_init(sourceInfo);\n }\n if(equalsToken.type === this.lexerClass.EQUAL) {\n if(dim_is_id) {\n if(dimensions == 1) {\n throw SyntaxErrorFactory.invalid_vector_init(SourceInfo.createSourceInfo(equalsToken));\n } else {\n throw SyntaxErrorFactory.invalid_matrix_init(SourceInfo.createSourceInfo(equalsToken));\n }\n }\n this.pos += 1\n initial = this.parseArrayLiteral(typeString);\n }\n if(initial == null && dim1 == null) {\n if(dimensions > 1) {\n throw SyntaxErrorFactory.cannot_infer_matrix_line(idString, sourceInfo);\n }\n throw SyntaxErrorFactory.cannot_infer_vector_size(idString, sourceInfo);\n }\n if(dimensions > 1) {\n if(initial == null && dim2 == null) {\n throw SyntaxErrorFactory.cannot_infer_matrix_column(idString, sourceInfo);\n }\n }\n\n if(dimensions === 1 && initial != null && !initial.isVector) {\n const expString = initial.toString();\n throw SyntaxErrorFactory.matrix_to_vector_literal_attr(idString, expString, initial.sourceInfo);\n } else if (dimensions > 1 && initial != null && initial.isVector) {\n const expString = initial.toString();\n throw SyntaxErrorFactory.vector_to_matrix_literal_attr(idString, expString, initial.sourceInfo);\n }\n\n if(dim1 == null) {\n n_lines = new Expressions.IntLiteral(toInt(initial.lines));\n n_lines.sourceInfo = sourceInfo;\n }\n\n if (dimensions > 1) {\n if(dim2 == null) {\n n_columns = new Expressions.IntLiteral(toInt(initial.columns));\n n_columns.sourceInfo = sourceInfo;\n } \n }\n const declaration = new Commands.ArrayDeclaration(idString,\n new ArrayType(typeString, dimensions), n_lines, n_columns, initial, isConst);\n declaration.sourceInfo = sourceInfo;\n const commaToken = this.getToken();\n if(commaToken.type === this.lexerClass.COMMA) {\n this.pos++;\n this.consumeNewLines();\n return [declaration]\n .concat(this.parseDeclaration(typeString, isConst));\n } else {\n return [declaration]\n }\n }\n\n consumeNewLines () {\n let token = this.getToken();\n while(token.type === this.lexerClass.EOS && token.text.match('[\\r\\n]+')) {\n this.pos++;\n token = this.getToken();\n }\n }\n\n isVariableType (token) {\n return this.variableTypes.find(v => v === token.type);\n }\n\n /*\n * Reads the next token of the stream to check if it is a Integer or an ID.\n * @returns Integer | ID\n **/\n parseArrayDimension () {\n const dimToken = this.getToken();\n if(dimToken.type === this.lexerClass.INTEGER) {\n //parse as int literal\n this.pos++;\n return this.getIntLiteral(dimToken);\n } else if(dimToken.type === this.lexerClass.ID) {\n //parse as variable\n this.pos++;\n return this.parseVariable(dimToken);\n } else if(dimToken.type === this.lexerClass.CLOSE_BRACE) {\n return null;\n } else {\n throw SyntaxErrorFactory.invalid_array_dimension(this.lexer.literalNames[this.lexerClass.RK_INTEGER], dimToken);\n }\n }\n\n /*\n * Returns an object {type: 'int', value: value}.\n * It checks for binary and hexadecimal integers.\n * @returns object with fields type and value\n **/\n getIntLiteral (token) {\n const text = token.text;\n const sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.IntLiteral(toInt(text));\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n getRealLiteral (token) {\n const sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.RealLiteral(toReal(token.text));\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n getStringLiteral (token) {\n const text = token.text;\n const sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.StringLiteral(toString(text));\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n getBoolLiteral (token) {\n const val = toBool(token.text);\n const exp = new Expressions.BoolLiteral(val);\n exp.sourceInfo = SourceInfo.createSourceInfo(token);\n return exp;\n }\n\n parseArrayLiteral (typeString) {\n const openCurly = this.checkOpenCurly(true);\n if(!openCurly) {\n const invalid_token = this.getToken();\n throw SyntaxErrorFactory.array_init_not_literal(SourceInfo.createSourceInfo(invalid_token));\n }\n const beginArray = this.getToken();\n if (this.parsingArrayDimension >= 2) {\n throw SyntaxErrorFactory.array_exceeds_2d(SourceInfo.createSourceInfo(beginArray));\n }\n this.pos += 1;\n this.parsingArrayDimension += 1;\n this.consumeNewLines();\n let data = null;\n const maybeCurlyOpen = this.checkOpenCurly(true);\n if(maybeCurlyOpen) {\n // This is potentially a list of vectors\n data = this.parseVectorList(typeString);\n } else {\n data = this.parseExpressionList();\n }\n this.consumeNewLines();\n this.checkCloseCurly()\n const endArray = this.getToken();\n this.pos += 1;\n this.parsingArrayDimension -= 1;\n const sourceInfo = SourceInfo.createSourceInfoFromList(beginArray, endArray);\n let dataDim = 1;\n if(data[0] instanceof Expressions.ArrayLiteral) {\n dataDim += 1;\n } else if(data.length == 1) {\n console.log(\"Talvez uma variável seja uma melhor opção\");\n }\n const type = new ArrayType(typeString, dataDim);\n const exp = new Expressions.ArrayLiteral(type, data);\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n /** \n * Returns a list of ArrayLiterals. Helper function for parsing matrices\n */\n parseVectorList (typeString) {\n const list = [];\n let lastSize = null;\n for(;;) {\n this.checkOpenCurly();\n const beginArray = this.getToken();\n if (this.parsingArrayDimension >= 2) {\n throw SyntaxErrorFactory.array_exceeds_2d(SourceInfo.createSourceInfo(beginArray));\n }\n this.pos += 1;\n this.parsingArrayDimension += 1;\n this.consumeNewLines();\n const data = this.parseExpressionList();\n this.consumeNewLines();\n this.checkCloseCurly()\n const endArray = this.getToken();\n this.pos += 1;\n this.parsingArrayDimension -= 1;\n const sourceInfo = SourceInfo.createSourceInfoFromList(beginArray, endArray);\n if(lastSize == null) {\n lastSize = data.length;\n } else if (lastSize !== data.length) {\n const expString = this.inputStream.getText(beginArray.start, endArray.stop);\n throw SyntaxErrorFactory.invalid_matrix_literal_line(expString, sourceInfo);\n }\n const type = new ArrayType(typeString, 1);\n const exp = new Expressions.ArrayLiteral(type, data);\n exp.sourceInfo = sourceInfo;\n list.push(exp);\n const commaToken = this.getToken();\n if(commaToken.type !== this.lexerClass.COMMA) {\n break;\n } \n this.pos += 1;\n this.consumeNewLines();\n }\n if(list.length == 1) {\n console.log(\"Talvez um vetor seja uma melhor opção\");\n }\n return list\n }\n\n /*\n * Returns an object {type: 'variable', value: value}.\n * @returns object with fields type and value\n **/\n parseVariable (token) {\n const sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.VariableLiteral(token.text);\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n /*\n * Returns an object representing a function. It has\n * four attributes: returnType, id, formalParams and block.\n * The block object has two attributes: declarations and commands\n **/\n parseFunction () {\n this.pushScope(IVProgParser.FUNCTION);\n let formalParams = [];\n const token = this.getToken();\n if(token.type !== this.lexerClass.RK_FUNCTION) {\n //throw SyntaxError.createError(this.lexer.literalNames[this.lexerClass.PR_FUNCAO], token);\n return null;\n }\n this.pos++;\n const funType = this.parseType();\n let dimensions = 0;\n if(this.checkOpenBrace(true)) {\n this.pos++;\n this.checkCloseBrace();\n this.pos++;\n dimensions++;\n if(this.checkOpenBrace(true)) {\n this.pos++;\n this.checkCloseBrace();\n this.pos++;\n dimensions++;\n }\n }\n const funcIDToken = this.getToken();\n const functionID = this.parseID();\n this.checkFunctionDuplicate(functionID, funcIDToken);\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n if (!this.checkCloseParenthesis(true)) {\n formalParams = this.parseFormalParameters(); // formal parameters \n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n } else {\n this.pos++;\n }\n this.consumeNewLines();\n const commandsBlock = this.parseCommandBlock();\n let returnType = funType;\n if(dimensions > 0) {\n returnType = new ArrayType(funType, dimensions);\n }\n const func = new Commands.Function(functionID, returnType, formalParams, commandsBlock);\n if (functionID === null && !func.isMain) {\n throw SyntaxErrorFactory.invalid_main_return(LanguageDefinedFunction.getMainFunctionName(),\n this.lexer.literalNames[this.lexerClass.RK_VOID],\n token.line);\n } else if (func.isMain && formalParams.length !== 0) {\n throw SyntaxErrorFactory.main_parameters();\n }\n this.popScope();\n return func;\n }\n\n /*\n * Parse the formal parameters of a function.\n * @returns a list of objects with the following attributes: type, id and dimensions.\n **/\n parseFormalParameters () {\n const list = [];\n for(;;) {\n let dimensions = 0;\n let reference = false;\n const typeString = this.parseType();\n let maybeIDToken = this.getToken();\n if(maybeIDToken.type === this.lexerClass.RK_REFERENCE) {\n reference = true;\n this.pos += 1;\n maybeIDToken = this.getToken();\n }\n const idString = this.parseID();\n this.checkVariableDuplicate(idString, maybeIDToken);\n if (this.checkOpenBrace(true)) {\n this.pos += 1;\n dimensions += 1;\n this.checkCloseBrace();\n this.pos += 1;\n if(this.checkOpenBrace(true)) {\n this.pos += 1;\n dimensions += 1;\n this.checkCloseBrace();\n this.pos += 1;\n }\n }\n let type = null;\n if(dimensions > 0) {\n type = new ArrayType(typeString, dimensions);\n } else {\n type = typeString;\n }\n const parameter = new Commands.FormalParameter(type, idString, reference);\n parameter.sourceInfo = SourceInfo.createSourceInfo(maybeIDToken);\n list.push(parameter);\n const commaToken = this.getToken();\n if (commaToken.type !== this.lexerClass.COMMA)\n break;\n this.pos++;\n this.consumeNewLines();\n }\n return list;\n }\n\n parseID () {\n const token = this.getToken();\n if(token.type !== this.lexerClass.ID) {\n throw SyntaxErrorFactory.id_missing(token);\n }\n this.pos++;\n if (this.insideScope(IVProgParser.FUNCTION)) {\n if (token.text === LanguageDefinedFunction.getMainFunctionName()){\n return null;\n }\n }\n return token.text;\n }\n\n parseMaybeLibID () {\n const token = this.getToken();\n if(token.type !== this.lexerClass.ID && token.type !== this.lexerClass.LIB_ID) {\n throw SyntaxErrorFactory.id_missing(token);\n } \n this.pos++;\n return token.text;\n }\n\n parseType () {\n const token = this.getToken();\n if(token.type === this.lexerClass.ID && this.insideScope(IVProgParser.FUNCTION)) {\n return Types.VOID;\n } else if (token.type === this.lexerClass.RK_VOID && this.insideScope(IVProgParser.FUNCTION)) {\n this.pos++;\n return Types.VOID;\n } else if (this.isVariableType(token)) {\n this.pos++;\n switch(token.type) {\n case this.lexerClass.RK_INTEGER:\n return Types.INTEGER;\n case this.lexerClass.RK_BOOLEAN:\n return Types.BOOLEAN;\n case this.lexerClass.RK_REAL:\n return Types.REAL;\n case this.lexerClass.RK_STRING:\n return Types.STRING;\n default:\n break;\n }\n }\n \n throw SyntaxErrorFactory.invalid_type(this.getTypeArray(), token);\n }\n\n parseCommandBlock (optionalCurly = false) {\n let variablesDecl = [];\n const commands = [];\n let hasOpen = false;\n if (this.checkOpenCurly(optionalCurly)) {\n this.pos++;\n hasOpen = true;\n }\n this.consumeNewLines();\n let parsedCommand = false;\n for(;;) {\n\n const cmd = this.parseCommand();\n if (cmd === null)\n break;\n if(cmd !== -1) {\n if (cmd instanceof Array) {\n if(parsedCommand) {\n const lastToken = this.getToken(this.pos - 1);\n throw SyntaxErrorFactory.invalid_var_declaration(lastToken);\n }\n variablesDecl = variablesDecl.concat(cmd);\n } else {\n parsedCommand = true;\n commands.push(cmd);\n }\n }\n }\n this.consumeNewLines();\n if (hasOpen) {\n this.checkCloseCurly()\n this.pos++;\n this.consumeNewLines();\n }\n return new Commands.CommandBlock(variablesDecl, commands);\n }\n\n parseCommand () {\n const token = this.getToken();\n if (this.isVariableType(token)) {\n if(!this.insideScope(IVProgParser.FUNCTION)) {\n throw SyntaxErrorFactory.invalid_var_declaration(token);\n }\n this.pushScope(IVProgParser.BASE);\n const varType = this.parseType();\n this.popScope();\n const cmd = this.parseDeclaration(varType);\n this.checkEOS();\n this.pos++;\n return cmd;\n } else if (token.type === this.lexerClass.ID) {\n return this.parseIDCommand();\n } else if (token.type === this.lexerClass.LIB_ID) {\n return this.parseIDCommand();\n } else if (token.type === this.lexerClass.RK_RETURN) {\n return this.parseReturn();\n } else if (token.type === this.lexerClass.RK_WHILE || token.type === this.lexerClass.RK_WHILE_ALT) {\n return this.parseWhile();\n } else if (token.type === this.lexerClass.RK_FOR || token.type === this.lexerClass.RK_FOR_ALT) {\n return this.parseFor();\n } else if (token.type === this.lexerClass.RK_BREAK ) {\n if(!this.insideScope(IVProgParser.BREAKABLE)) {\n throw SyntaxErrorFactory.invalid_break_command(\n this.lexer.literalNames[this.lexerClass.RK_BREAK],\n token\n );\n }\n return this.parseBreak();\n } else if (token.type === this.lexerClass.RK_SWITCH) {\n return this.parseSwitchCase();\n } else if (token.type === this.lexerClass.RK_DO) {\n return this.parseRepeatUntil();\n } else if (token.type === this.lexerClass.RK_IF) {\n return this.parseIfThenElse();\n } else if (this.checkEOS(true)){\n this.pos++;\n return -1;\n } else {\n return null;\n }\n }\n\n parseSwitchCase () {\n this.pushScope(IVProgParser.BREAKABLE);\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const exp = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n this.consumeNewLines();\n this.checkOpenCurly();\n this.pos++;\n this.consumeNewLines();\n const casesList = this.parseCases();\n this.consumeNewLines();\n this.checkCloseCurly();\n this.pos++;\n this.consumeNewLines();\n\n this.popScope();\n return new Commands.Switch(exp, casesList);\n }\n\n parseRepeatUntil () {\n this.pos++;\n this.consumeNewLines();\n this.pushScope(IVProgParser.BREAKABLE);\n const commandsBlock = this.parseCommandBlock();\n this.consumeNewLines(); //Maybe not...\n const whileToken = this.getToken();\n if (whileToken.type !== this.lexerClass.RK_DO_UNTIL) {\n throw SyntaxErrorFactory.token_missing_one(this.lexer.literalNames[this.lexerClass.RK_DO_UNTIL], whileToken);\n }\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const condition = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n this.checkEOS();\n this.popScope();\n return new Commands.RepeatUntil(condition, commandsBlock);\n }\n\n parseIfThenElse () {\n if(this.insideScope(IVProgParser.BREAKABLE)) {\n this.pushScope(IVProgParser.BREAKABLE);\n } else {\n this.pushScope(IVProgParser.COMMAND);\n }\n const token = this.getToken();\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const logicalExpression = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n this.consumeNewLines();\n const cmdBlocks = this.parseCommandBlock();\n\n const maybeElse = this.getToken();\n if(maybeElse.type === this.lexerClass.RK_ELSE) {\n this.pos++;\n this.consumeNewLines();\n const maybeIf = this.getToken();\n let elseBlock = null;\n if(this.checkOpenCurly(true)) {\n elseBlock = this.parseCommandBlock();\n } else if(maybeIf.type === this.lexerClass.RK_IF) {\n elseBlock = this.parseIfThenElse();\n } else {\n throw SyntaxErrorFactory.token_missing_list([this.lexer.literalNames[this.lexerClass.RK_IF], '{'], maybeIf);\n }\n this.popScope();\n const cmd = new Commands.IfThenElse(logicalExpression, cmdBlocks, elseBlock);\n cmd.sourceInfo = SourceInfo.createSourceInfo(token);\n return cmd;\n }\n this.popScope();\n\n const cmd = new Commands.IfThenElse(logicalExpression, cmdBlocks, null);\n cmd.sourceInfo = SourceInfo.createSourceInfo(token);\n return cmd;\n }\n\n parseFor () {\n this.pushScope(IVProgParser.BREAKABLE);\n const for_token = this.getToken();\n this.pos += 1;\n // parse ID\n const id_token = this.getToken();\n const id = this.parseID();\n const for_id = new Expressions.VariableLiteral(id);\n for_id.sourceInfo = SourceInfo.createSourceInfo(id_token);\n // END parse ID\n const for_from = this.parseForParameters(this.lexerClass.RK_FOR_FROM);\n const for_to = this.parseForParameters(this.lexerClass.RK_FOR_TO);\n const maybePass = this.parseForParameters(this.lexerClass.RK_FOR_PASS);\n this.consumeNewLines();\n const commandsBlock = this.parseCommandBlock();\n this.popScope();\n const cmd = new Commands.For(for_id, for_from, for_to, maybePass, commandsBlock);\n cmd.sourceInfo = SourceInfo.createSourceInfo(for_token);\n return cmd;\n }\n\n parseWhile () {\n this.pushScope(IVProgParser.BREAKABLE);\n const token = this.getToken();\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const logicalExpression = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n this.consumeNewLines();\n const cmdBlocks = this.parseCommandBlock();\n this.popScope();\n const cmd = new Commands.While(logicalExpression, cmdBlocks);\n cmd.sourceInfo = SourceInfo.createSourceInfo(token);\n return cmd;\n }\n\n parseBreak () {\n this.pos++;\n this.checkEOS();\n this.pos++;\n return new Commands.Break();\n }\n\n parseReturn () {\n this.pos++;\n let exp = null;\n if(!this.checkEOS(true)) {\n exp = this.parseExpressionOR();\n this.checkEOS();\n }\n this.pos++;\n return new Commands.Return(exp);\n }\n\n parseIDCommand () {\n const refToken = this.getToken();\n const isID = refToken.type === this.lexerClass.ID;\n const id = this.parseMaybeLibID();\n if(this.checkOpenBrace(true)) {\n this.pos++;\n let lineExpression = null;\n let columnExpression = null;\n this.consumeNewLines();\n lineExpression = this.parseExpression()\n this.consumeNewLines();\n this.checkCloseBrace();\n this.pos++;\n if (this.checkOpenBrace(true)) {\n this.pos++\n this.consumeNewLines();\n columnExpression = this.parseExpression();\n this.consumeNewLines();\n this.checkCloseBrace();\n this.pos++;\n }\n const equalToken = this.getToken();\n if (equalToken.type !== this.lexerClass.EQUAL) {\n throw SyntaxErrorFactory.token_missing_one('=', equalToken);\n }\n this.pos++;\n const exp = this.parseExpressionOR();\n this.checkEOS();\n this.pos++;\n const cmd = new Commands.ArrayIndexAssign(id, lineExpression, columnExpression, exp);\n cmd.sourceInfo = SourceInfo.createSourceInfo(equalToken);\n return cmd;\n }\n const equalOrParenthesis = this.getToken();\n if (isID && equalOrParenthesis.type === this.lexerClass.EQUAL) {\n this.pos++\n const exp = this.parseExpressionOR();\n this.checkEOS();\n this.pos++;\n const cmd = new Commands.Assign(id, exp);\n cmd.sourceInfo = SourceInfo.createSourceInfo(equalOrParenthesis);\n return cmd;\n } else if (equalOrParenthesis.type === this.lexerClass.OPEN_PARENTHESIS) {\n const funcCall = this.parseFunctionCallCommand(id);\n this.checkEOS();\n this.pos++;\n return funcCall;\n } else if (isID) {\n throw SyntaxErrorFactory.token_missing_list(['=','('], equalOrParenthesis);\n } else {\n throw SyntaxErrorFactory.invalid_id_format(refToken);\n }\n }\n\n parseForParameters (keyword_code) {\n if(keyword_code === this.lexerClass.RK_FOR_PASS) {\n if(this.checkOpenCurly(true)) {\n return null;\n }\n }\n const from_token = this.getToken();\n if (from_token.type !== keyword_code) {\n // TODO better error message\n const keyword = this.lexer.literalNames[keyword_code];\n throw new Error(\"Error de sintaxe no comando repita_para: esperava-se \"+keyword+\" mas encontrou \"+from_token.text);\n }\n this.pos += 1;\n let int_or_id = this.getToken();\n let is_unary_op = false;\n let op = null;\n if(int_or_id.type === this.lexerClass.SUM_OP) {\n is_unary_op = true;\n op = int_or_id.text;\n this.pos += 1;\n int_or_id = this.getToken();\n }\n let for_from = null;\n if (int_or_id.type === this.lexerClass.ID) {\n for_from = new Expressions.VariableLiteral(this.parseID());\n for_from.sourceInfo = SourceInfo.createSourceInfo(int_or_id);\n } else if (int_or_id.type === this.lexerClass.INTEGER) {\n this.pos += 1;\n for_from = this.getIntLiteral(int_or_id);\n }\n if (for_from == null) {\n // TODO better error message\n const keyword = this.lexer.literalNames[keyword_code]; \n throw new Error(\"Error de sintaxe no comando repeita_para: \"+ int_or_id.text + \" não é compativel com o esperado para o paramentro \"+ keyword + \". O valor deve ser um inteiro ou variável.\");\n }\n if (is_unary_op) {\n for_from = new Expressions.UnaryApp(convertFromString(op), for_from);\n }\n return for_from;\n }\n\n parseCases () {\n const token = this.getToken();\n if(token.type !== this.lexerClass.RK_CASE) {\n throw SyntaxErrorFactory.token_missing_one(this.lexer.literalNames[this.lexerClass.RK_CASE], token);\n }\n this.pos++;\n const nextToken = this.getToken();\n if(nextToken.type === this.lexerClass.RK_DEFAULT) {\n this.pos++;\n const colonToken = this.getToken();\n if (colonToken.type !== this.lexerClass.COLON) {\n throw SyntaxErrorFactory.token_missing_one(':', colonToken);\n }\n this.pos++;\n this.consumeNewLines();\n const block = this.parseCommandBlock(true);\n const defaultCase = new Commands.Case(null);\n defaultCase.setCommands(block.commands);\n return [defaultCase];\n } else {\n const exp = this.parseExpressionOR();\n const colonToken = this.getToken();\n if (colonToken.type !== this.lexerClass.COLON) {\n throw SyntaxErrorFactory.token_missing_one(':', colonToken);\n }\n this.pos++;\n this.consumeNewLines();\n const block = this.parseCommandBlock(true);\n const aCase = new Commands.Case(exp);\n aCase.setCommands(block.commands);\n const caseToken = this.getToken();\n if(caseToken.type === this.lexerClass.RK_CASE) {\n return [aCase].concat(this.parseCases());\n } else {\n return [aCase];\n }\n }\n }\n\n /*\n * Parses an Expression following the structure:\n *\n * EOR => EAnd ( 'or' EOR)? #expression and\n *\n * EOR => ENot ('and' EOR)? #expression or\n *\n * ENot => 'not'? ER #expression not\n *\n * ER => E ((>=, <=, ==, >, <) E)? #expression relational\n *\n * E => factor ((+, -) E)? #expression\n *\n * factor=> term ((*, /, %) factor)?\n *\n * term => literal || arrayAccess || FuncCall || ID || '('EAnd')'\n **/\n parseExpressionOR () {\n let exp1 = this.parseExpressionAND();\n while (this.getToken().type === this.lexerClass.OR_OPERATOR) {\n const opToken = this.getToken();\n this.pos++;\n const or = convertFromString('or');\n this.consumeNewLines();\n const exp2 = this.parseExpressionAND();\n const finalExp = new Expressions.InfixApp(or, exp1, exp2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(opToken);\n exp1 = finalExp\n }\n return exp1;\n }\n\n parseExpressionAND () {\n let exp1 = this.parseExpressionNot();\n while (this.getToken().type === this.lexerClass.AND_OPERATOR) {\n const opToken = this.getToken();\n this.pos++;\n const and = convertFromString('and');\n this.consumeNewLines();\n const exp2 = this.parseExpressionNot();\n const finalExp = new Expressions.InfixApp(and, exp1, exp2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(opToken);\n exp1 = finalExp;\n }\n return exp1;\n }\n\n parseExpressionNot () {\n const maybeNotToken = this.getToken();\n if (maybeNotToken.type === this.lexerClass.NOT_OPERATOR) {\n const opToken = this.getToken();\n this.pos++;\n const not = convertFromString('not');\n const exp1 = this.parseExpressionRel();\n const finalExp = new Expressions.UnaryApp(not, exp1);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(opToken);\n return finalExp;\n \n } else {\n return this.parseExpressionRel();\n }\n }\n\n parseExpressionRel () {\n let exp1 = this.parseExpression();\n while (this.getToken().type === this.lexerClass.RELATIONAL_OPERATOR) {\n const relToken = this.getToken();\n this.pos++;\n const rel = convertFromString(relToken.text);\n const exp2 = this.parseExpression();\n const finalExp = new Expressions.InfixApp(rel, exp1, exp2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(relToken);\n exp1 = finalExp;\n }\n return exp1;\n }\n\n parseExpression () {\n let factor = this.parseFactor();\n while (this.getToken().type === this.lexerClass.SUM_OP) {\n const sumOpToken = this.getToken();\n this.pos++;\n const op = convertFromString(sumOpToken.text);\n const factor2 = this.parseFactor();\n const finalExp = new Expressions.InfixApp(op, factor, factor2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(sumOpToken);\n factor = finalExp;\n }\n return factor;\n }\n\n parseFactor () {\n let term = this.parseTerm();\n while (this.getToken().type === this.lexerClass.MULTI_OP) {\n const multOpToken = this.getToken();\n this.pos++;\n const op = convertFromString(multOpToken.text);\n const term2 =this.parseTerm();\n const finalExp = new Expressions.InfixApp(op, term, term2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(multOpToken);\n term = finalExp;\n }\n return term;\n }\n\n parseTerm () {\n const token = this.getToken();\n let sourceInfo = null;\n let exp = null;\n switch(token.type) {\n case this.lexerClass.SUM_OP:\n this.pos++;\n sourceInfo = SourceInfo.createSourceInfo(token);\n exp = new Expressions.UnaryApp(convertFromString(token.text), this.parseTerm());\n exp.sourceInfo = sourceInfo;\n return exp;\n case this.lexerClass.INTEGER:\n this.pos++;\n return this.getIntLiteral(token);\n case this.lexerClass.REAL:\n this.pos++;\n return this.getRealLiteral(token);\n case this.lexerClass.STRING:\n this.pos++;\n return this.getStringLiteral(token);\n case this.lexerClass.RK_TRUE:\n case this.lexerClass.RK_FALSE:\n this.pos++;\n return this.getBoolLiteral(token);\n case this.lexerClass.OPEN_CURLY:\n // No more annonymous array\n // return this.parseArrayLiteral();\n throw SyntaxErrorFactory.annonymous_array_literal(token);\n case this.lexerClass.ID:\n case this.lexerClass.LIB_ID:\n return this.parseIDTerm();\n case this.lexerClass.OPEN_PARENTHESIS:\n return this.parseParenthesisExp();\n default:\n throw SyntaxErrorFactory.invalid_terminal(token);\n }\n }\n\n parseIDTerm () {\n const tokenA = this.getToken();\n const id = this.parseMaybeLibID();\n const isID = tokenA.type === this.lexerClass.ID;\n if(isID && this.checkOpenBrace(true)) {\n let tokenB = null;\n this.pos++;\n const firstIndex = this.parseExpression();\n let secondIndex = null;\n this.consumeNewLines();\n this.checkCloseBrace();\n tokenB = this.getToken();\n this.pos++;\n if(this.checkOpenBrace(true)){\n this.pos++;\n secondIndex = this.parseExpression();\n this.consumeNewLines();\n this.checkCloseBrace();\n tokenB = this.getToken();\n this.pos++;\n }\n const sourceInfo = SourceInfo.createSourceInfoFromList(tokenA, tokenB); \n const exp = new Expressions.ArrayAccess(id, firstIndex, secondIndex);\n exp.sourceInfo = sourceInfo;\n return exp;\n\n } else if (this.checkOpenParenthesis(true)) {\n return this.parseFunctionCallExpression(id);\n } else if (isID) {\n const sourceInfo = SourceInfo.createSourceInfo(tokenA);\n const exp = new Expressions.VariableLiteral(id);\n exp.sourceInfo = sourceInfo;\n return exp;\n } else {\n throw SyntaxErrorFactory.invalid_id_format(tokenA);\n }\n }\n\n getFunctionName (id) {\n const name = LanguageDefinedFunction.getInternalName(id);\n if (name === null) {\n if (id === LanguageDefinedFunction.getMainFunctionName()) {\n return null;\n }\n return id;\n } else {\n return name;\n }\n }\n\n parseFunctionCallExpression (id) {\n const tokenA = this.getToken(this.pos - 1);\n const actualParameters = this.parseActualParameters();\n const tokenB = this.getToken(this.pos - 1);\n const funcName = this.getFunctionName(id);\n const sourceInfo = SourceInfo.createSourceInfoFromList(tokenA, tokenB);\n const cmd = new Expressions.FunctionCall(funcName, actualParameters);\n cmd.sourceInfo = sourceInfo;\n return cmd;\n }\n\n parseFunctionCallCommand (id) {\n return this.parseFunctionCallExpression(id);\n }\n\n parseParenthesisExp () {\n this.checkOpenParenthesis();\n const tokenA = this.getToken();\n this.pos += 1;\n this.consumeNewLines();\n const exp = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n const tokenB = this.getToken();\n this.pos += 1;\n exp.sourceInfo = SourceInfo.createSourceInfoFromList(tokenA, tokenB);\n exp.parenthesis = true;\n return exp;\n }\n\n parseActualParameters () {\n this.checkOpenParenthesis();\n this.pos++;\n if(this.checkCloseParenthesis(true)) {\n this.pos++;\n return [];\n }\n this.consumeNewLines();\n const list = this.parseExpressionList();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n return list;\n }\n\n parseExpressionList () {\n const list = [];\n for(;;) {\n const exp = this.parseExpressionOR();\n list.push(exp);\n const maybeToken = this.getToken();\n if (maybeToken.type !== this.lexerClass.COMMA) {\n break;\n } else {\n this.pos++;\n this.consumeNewLines();\n }\n }\n return list;\n }\n\n getTypeArray () {\n const types = this.insideScope(IVProgParser.FUNCTION) ? this.functionTypes : this.variableTypes;\n return types.map( x => this.lexer.literalNames[x]);\n }\n}\n","export const Operators = Object.freeze({\n ADD: {ord: 0, value: \"+\"},\n SUB: {ord: 1, value: \"-\"},\n MULT: {ord: 2, value: '*'},\n DIV: {ord: 3, value: '/'},\n MOD: {ord: 4, value: '%'},\n GT: {ord: 5, value: '>'},\n GE: {ord: 6, value: '>='},\n LT: {ord: 7, value: '<'},\n LE: {ord: 8, value: '<='},\n EQ: {ord: 9, value: '=='},\n NEQ: {ord: 10, value: '!='},\n AND: {ord: 11, value: 'and'},\n OR: {ord: 12, value: 'or'},\n NOT: {ord: 13, value: 'not'}\n});\n\nexport function convertFromString (op) {\n switch (op) {\n case '+' : return Operators.ADD;\n case '-' : return Operators.SUB;\n case '*' : return Operators.MULT;\n case '/' : return Operators.DIV;\n case '%' : return Operators.MOD;\n case '>' : return Operators.GT;\n case '>=' : return Operators.GE;\n case '<' : return Operators.LT;\n case '<=' : return Operators.LE;\n case '==' : return Operators.EQ;\n case '!=' : return Operators.NEQ;\n case 'and' : return Operators.AND;\n case 'or' : return Operators.OR;\n case 'not' : return Operators.NOT;\n }\n}","export class SourceInfo {\n\n static createSourceInfo (token) {\n return new SourceInfo(token.line, token.column, token.text, token.text.length);\n }\n\n static createSourceInfoFromList (tokenA, tokenB) {\n const line = tokenA.line;\n const column = tokenA.column;\n // adapted from https://github.com/UNIVALI-LITE/Portugol-Studio/blob/master/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/Portugol.g\n // No idea why...\n const size = tokenB.tokenIndex + 1 - tokenA.tokenIndex\n return new SourceInfo(line, column, \"\", size);\n }\n\n constructor (line, column, text, size) {\n this.line = line;\n this.column = column;\n this.text = text;\n this.size = size;\n }\n\n}","import { LocalizedStrings } from \"./../services/localizedStringsService\";\nimport { isElementInViewport } from \"./../util/utils\";\nimport { Config } from \"./../util/config\";\n\nexport class DOMConsole {\n\n static get BASH_TEMPLATE () {\n return `\n <div class=\"bash-title\">\n <i id=\"ivprog-console-clearbtn\" class=\"icon eraser\" style=\"float:left;padding-left: 5px\"></i>\n <span>Terminal</span>\n <i id=\"ivprog-console-showbtn\" class=\"icon window maximize outline\" style=\"float:right\"></i>\n <i id=\"ivprog-console-hidebtn\" class=\"icon window minimize outline\" style=\"float:right\"></i>\n </div>\n <div id='ivprog-term' class=\"bash-body\"></div>`;\n }\n\n static get INPUT_CARET_TEMPLATE () {\n return `\n <div id=\"cmd\">\n <span></span>\n <div id=\"cursor\"></div>\n </div>`;\n }\n\n static get USER () {\n return 0;\n }\n\n static get INFO () {\n return 1;\n }\n\n static get ERR () {\n return 2;\n }\n\n static get INPUT () {\n return 3;\n }\n\n constructor (elementID, disableMarginTop = false) {\n this.disableMarginTop = disableMarginTop;\n this.input = null;\n this.cursorInterval = null;\n this.idleInterval = null;\n this.inputDiv = null;\n this.inputCMD = null;\n this.inputSpan = null;\n this.cursorRef = null;\n this.needInput = false;\n this.clearBtn = null;\n this.hideBtn = null;\n this.showBtn = null;\n this.termDiv = null;\n this.anyKey = false;\n let actualID = elementID\n if (elementID[0] === '#') {\n actualID = elementID.substring(1);\n }\n this.parent = document.getElementById(actualID)\n this.setup();\n this.inputListeners = [];\n this.hideInput();\n this.pending_writes = [];\n this.last_clear = -1;\n }\n\n setup () {\n this._setupDom();\n this._setupEvents();\n }\n\n _setupEvents () {\n this.input.addEventListener('keydown', this.registerInput.bind(this));\n this.clearBtn.addEventListener('click', this.clearBtnClick.bind(this));\n this.hideBtn.addEventListener('click', this.hideBtnClick.bind(this));\n this.showBtn.addEventListener('click', this.showBtnClick.bind(this));\n }\n\n registerInput (event) {\n if (!this.needInput) {\n return;\n }\n const keyCode = event.which;\n if (keyCode === 13 || this.anyKey) {\n if(this.idleInterval != null) {\n clearInterval(this.idleInterval);\n this.idleInterval = null;\n }\n let text = this.input.value;\n text = text.replace('[\\n\\r]+', '');\n this.notifyListeners(text);\n this._appendUserInput(text);\n this.input.value = '';\n this.inputSpan.innerHTML = '';\n }\n }\n\n _setupDom () {\n const bashNode = document.createElement('div');\n bashNode.classList.add('bash');\n bashNode.innerHTML = DOMConsole.BASH_TEMPLATE;\n this.termDiv = bashNode.querySelector(\"#ivprog-term\");\n this.termDiv.classList.add(\"ivprog-term-div\");\n this.inputDiv = document.createElement(\"div\");\n this.inputDiv.id = \"ivprog-terminal-inputdiv\";\n this.inputDiv.innerHTML = DOMConsole.INPUT_CARET_TEMPLATE;\n this.input = document.createElement(\"input\");\n this.input.setAttribute(\"name\", \"command\");\n this.input.setAttribute(\"value\", \"\");\n this.input.setAttribute(\"type\", \"text\");\n this.inputDiv.append(this.input);\n this.termDiv.append(this.inputDiv);\n bashNode.append(this.termDiv);\n this.parent.append(bashNode);\n this.inputCMD = this.inputDiv.querySelector(\"#cmd\");\n this.cursorRef = this.inputCMD.querySelector(\"#cursor\");\n this.inputSpan = this.inputCMD.querySelector('span');\n this.clearBtn = bashNode.querySelector('#ivprog-console-clearbtn');\n this.hideBtn = bashNode.querySelector('#ivprog-console-hidebtn');\n this.showBtn = bashNode.querySelector('#ivprog-console-showbtn');\n this._setupCursor();\n //Jquery tooltips....\n window.$(this.clearBtn).popup({content:LocalizedStrings.getUI(\"tooltip_terminal_clear\")});\n window.$(this.showBtn).popup({content:LocalizedStrings.getUI(\"tooltip_terminal_show\")});\n window.$(this.hideBtn).popup({content:LocalizedStrings.getUI(\"tooltip_terminal_hide\")});\n }\n\n _setupCursor () {\n this.inputCMD.addEventListener('click', this.blinkCaretAndFocus.bind(this));\n //this.inputCMD.click();\n \n this.input.addEventListener('keyup', this.updateSpanText.bind(this));\n this.input.addEventListener('blur', this.stopBlinkCaret.bind(this));\n }\n\n blinkCaretAndFocus () {\n if(this.cursorInterval != null) {\n return;\n }\n this.input.focus();\n this.cursorInterval = window.setInterval(() => {\n if (this.cursorRef.style.visibility === 'visible') {\n this.cursorRef.style.visibility = 'hidden';\n } else {\n this.cursorRef.style.visibility = 'visible';\n }\n }, 500);\n }\n\n updateSpanText () {\n this.inputSpan.innerHTML = this.input.value;\n if(this.idleInterval != null)\n window.clearInterval(this.idleInterval);\n this.scheduleNotify()\n }\n\n stopBlinkCaret () {\n clearInterval(this.cursorInterval);\n this.cursorInterval = null;\n this.cursorRef.style.visibility = 'visible';\n }\n\n notifyListeners (text) {\n this.inputListeners.forEach(resolve => resolve(text));\n this.inputListeners.splice(0, this.inputListeners.length);\n this.hideInput();\n this.anyKey = false;\n }\n\n write (text) {\n this._appendText(text, DOMConsole.USER);\n }\n\n info (text) {\n this._appendText(text, DOMConsole.INFO);\n }\n\n err (text) {\n this._appendText(text, DOMConsole.ERR);\n }\n\n _appendText (text, type) {\n const write_time = Date.now();\n const pending_write = setTimeout(() => {\n this.pending_writes.shift();\n if(this.last_clear >= write_time) {\n return;\n }\n const divClass = this.getClassForType(type);\n const textDiv = document.createElement('div');\n textDiv.classList.add(divClass);\n textDiv.innerHTML = this.getOutputText(text);\n this.termDiv.insertBefore(textDiv, this.inputDiv);\n this.scrollTerm();\n }, 5);\n this.pending_writes.push(pending_write);\n }\n\n _appendUserInput (text) {\n const write_time = Date.now();\n const pending_write = setTimeout(() => {\n this.pending_writes.shift();\n if(this.last_clear >= write_time) {\n return;\n }\n const divClass = this.getClassForType(DOMConsole.INPUT);\n const textDiv = document.createElement('div');\n textDiv.innerHTML = this.getUserInputText(text);\n textDiv.classList.add(divClass);\n this.termDiv.insertBefore(textDiv, this.inputDiv);\n this.scrollTerm();\n }, 5);\n this.pending_writes.push(pending_write);\n }\n\n getOutputText (text) {\n if(text.trim().length == 0) {\n text = \" \";\n }\n return `<span>${text}</span>`;\n }\n\n getUserInputText (text) {\n if(text.trim().length == 0) {\n text = \" \";\n }\n return `<i class=\"icon keyboard outline\" style=\"float:left\"></i><span>${text}</span>`;\n }\n\n scrollTerm () {\n //scrollIt(this.inputDiv.previousSibling,200);\n this.termDiv.scrollTop = this.termDiv.scrollHeight;\n }\n\n focus () {\n this.termDiv.style.display = 'block';\n // Is in draggable mode?\n if(!this.disableMarginTop && this.parent.style.top.length == 0) {\n this.parent.style.marginTop = \"-160px\";\n }\n if(this.needInput) {\n this.showInput();\n this.scheduleNotify();\n }\n if(!isElementInViewport(this.termDiv))\n this.termDiv.scrollIntoView(false);\n this.scrollTerm();\n }\n\n hide () {\n if(this.needInput) {\n clearInterval(this.idleInterval);\n this.hideInput();\n this.needInput = true;\n }\n // Is in draggable mode?\n if(!this.disableMarginTop && this.parent.style.top.length == 0) {\n this.parent.style.marginTop = \"0\";\n }\n this.termDiv.style.display = 'none';\n }\n\n getClassForType (type) {\n switch (type) {\n case DOMConsole.INPUT:\n return \"ivprog-term-userInput\";\n case DOMConsole.USER:\n return \"ivprog-term-userText\";\n case DOMConsole.INFO:\n return \"ivprog-term-info\";\n case DOMConsole.ERR:\n return \"ivprog-term-error\";\n }\n }\n\n dispose () {\n this.input.removeEventListener('keyup', this.updateSpanText.bind(this));\n this.input.removeEventListener('blur', this.stopBlinkCaret.bind(this));\n this.input.removeEventListener('keydown', this.registerInput.bind(this));\n this.inputCMD.removeEventListener('click', this.blinkCaretAndFocus.bind(this));\n this.clearBtn.removeEventListener('click', this.clearBtnClick.bind(this));\n this.hideBtn.removeEventListener('click', this.hideBtnClick.bind(this));\n this.showBtn.removeEventListener('click', this.showBtnClick.bind(this));\n this.input = null;\n this.inputCMD = null;\n this.inputDiv = null;\n this.termDiv = null;\n this.inputSpan = null;\n this.cursorRef = null;\n this.clearBtn = null;\n this.hideBtn = null;\n this.showBtn = null;\n const cNode = this.parent.cloneNode(false);\n this.parent.parentNode.replaceChild(cNode, this.parent);\n if(this.cursorInterval != null) {\n clearInterval(this.cursorInterval);\n }\n if(this.idleInterval != null) {\n clearInterval(this.idleInterval);\n }\n }\n\n showInput () {\n this.needInput = true;\n this.inputDiv.style.display = 'block';\n this.inputCMD.click();\n //this.inputCMD.scrollIntoView();\n this.scrollTerm();\n }\n\n hideInput () {\n this.needInput = false;\n this.inputDiv.style.display = ' none';\n clearInterval(this.cursorInterval);\n this.cursorInterval = null;\n }\n\n requestInput (callback, anyKey = false) {\n this.inputListeners.push(callback);\n this.anyKey = anyKey;\n if(this.idleInterval == null)\n this.scheduleNotify();\n this.showInput();\n }\n\n sendOutput (text) {\n const output = \"\"+text;\n output.split(\"\\n\").forEach(t => {\n t = t.replace(/\\t/g,' ');\n t = t.replace(/\\s/g,\" \");\n this.write(t)\n });\n }\n\n clearPendingWrites () {\n this.last_clear = Date.now();\n for(const id in this.pending_writes) {\n clearTimeout(id);\n }\n }\n\n clear () {\n this.clearPendingWrites();\n this.pending_writes = [];\n while(this.inputDiv.parentElement.childNodes.length > 1) {\n this.inputDiv.parentElement.removeChild(this.inputDiv.parentElement.firstChild);\n }\n this.input.value = \"\";\n this.inputSpan.innerHTML = '';\n }\n\n clearBtnClick () {\n this.clear();\n }\n\n showBtnClick () {\n this.focus();\n }\n\n hideBtnClick () {\n this.hide();\n }\n\n notifyIdle () {\n this.info(LocalizedStrings.getMessage('awaiting_input_message'));\n this.inputCMD.click();\n }\n \n scheduleNotify () {\n this.idleInterval = window.setInterval(this.notifyIdle.bind(this), Config.idle_input_interval);\n }\n\n cancelPendingInputRequests () {\n this.inputListeners.forEach(resolve => resolve(''));\n this.inputListeners.splice(0, this.inputListeners.length);\n if(this.idleInterval != null) {\n clearInterval(this.idleInterval);\n this.idleInterval = null;\n }\n this.input.value = '';\n this.inputSpan.innerHTML = '';\n this.hideInput();\n this.anyKey = false;\n }\n}","export class Input {\n\n requestInput (callback) {\n throw new Error(\"Must be implemented\");\n }\n\n cancelPendingInputRequests () {\n throw new Error(\"Must be implemented\");\n }\n}","export class Output {\n\n sendOutput (text) {\n throw new Error(\"Must be implemented\");\n }\n}","import { runner } from './runner';\nimport { initVisualUI, addFunctionChangeListener,\n addGlobalChangeListener, removeFunctionListener,\n removeGlobalListener, getTestCases } from './visualUI/functions';\nimport * as LocalizedStringsService from './services/localizedStringsService';\nimport { i18nHelper } from \"./services/i18nHelper\";\nimport { ActionTypes, getLogs, getLogsAsString, registerClick, registerUserEvent, parseLogs } from \"./services/userLog\";\nimport { prepareActivityToStudentHelper, autoEval } from \"./util/iassignHelpers\";\nimport { openAssessmentDetail } from \"./util/utils\";\nimport * as CodeEditorAll from \"./visualUI/text_editor\";\nimport {autoGenerateTestCaseOutput} from './util/auto_gen_output';\n\nconst CodeEditor = {\n initTextEditor: CodeEditorAll.initTextEditor,\n setCode: CodeEditorAll.setCode,\n getCode: CodeEditorAll.getCode,\n updateEditor: CodeEditorAll.updateEditor,\n disable: CodeEditorAll.disable\n};\n\nconst i18n = i18nHelper.i18n\nconst LocalizedStrings = LocalizedStringsService.getInstance();\n\nexport {\n runner,\n initVisualUI,\n addFunctionChangeListener,\n addGlobalChangeListener,\n removeFunctionListener,\n removeGlobalListener,\n getTestCases,\n autoEval,\n prepareActivityToStudentHelper,\n LocalizedStrings,\n i18n,\n getLogs,\n getLogsAsString,\n registerClick,\n registerUserEvent,\n parseLogs,\n ActionTypes,\n CodeEditor,\n openAssessmentDetail,\n autoGenerateTestCaseOutput\n}","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass Address {\n /**\n *\n * @param {Number} id the address id\n * @param {*} value the value stored at this address\n */\n constructor(id, value) {\n this.id = id;\n this.value = value;\n }\n}\nexports.Address = Address;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst address_1 = require(\"./address\");\nclass LocationHolder {\n constructor() {\n this.data = [];\n this.address_id = 0;\n }\n /**\n *\n * @param {*} value the value to be allocated\n * @returns {Number} - the address id\n */\n allocate(value) {\n const id = this.address_id;\n // console.log(\"Allocation address \"+ id);\n const address = new address_1.Address(id, value);\n this.data.push(address);\n this.address_id += 1;\n return id;\n }\n /**\n *\n * @param {Number} id\n */\n deallocate(id) {\n const index = this.findIndex(id);\n // console.log(\"Deallocation address \"+ id);\n if (index !== -1) {\n this.data.splice(index, 1);\n return true;\n }\n return false;\n }\n /**\n *\n * @param {Number} id\n * @returns {Address} the address identified by id\n */\n find(id) {\n let beg = 0;\n let end = this.data.length;\n // console.log(\"Finding address \"+id);\n while (beg < end) {\n const med = Math.floor((beg + end) / 2);\n const address = this.getAddressAt(med);\n if (address.id === id) {\n return address;\n }\n else if (id > address.id) {\n beg = med;\n }\n else {\n end = med;\n }\n }\n return undefined;\n }\n getAddressAt(pos) {\n return this.data[pos];\n }\n /**\n *\n * @param {Number} id address id\n * @returns {Number} the index of the address identified by id\n */\n findIndex(id) {\n let beg = 0;\n let end = this.data.length;\n while (beg < end) {\n const med = Math.floor((beg + end) / 2);\n const address = this.getAddressAt(med);\n if (address.id === id) {\n return med;\n }\n else if (id > address.id) {\n beg = med;\n }\n else {\n end = med;\n }\n }\n return -1;\n }\n updateAddress(id, value) {\n const index = this.findIndex(id);\n if (index === -1) {\n throw new Error(\"Invalid address...\" + id);\n }\n this.data[index].value = value;\n }\n clear() {\n for (let i = 0; i < this.data.length; i += 1) {\n delete this.data[i];\n }\n this.data = [];\n this.address_id = 0;\n }\n}\nconst inner_ref = new LocationHolder();\nexports.Location = Object.freeze({\n allocate: inner_ref.allocate.bind(inner_ref),\n deallocate: inner_ref.deallocate.bind(inner_ref),\n find: inner_ref.find.bind(inner_ref),\n updateAddress: inner_ref.updateAddress.bind(inner_ref),\n clear: inner_ref.clear.bind(inner_ref),\n size: () => inner_ref.data.length\n});\n","import { Types } from './../typeSystem/types';\nimport { Operators } from './../ast/operators';\nimport { MultiType } from '../typeSystem/multiType';\nimport { Config } from '../util/config';\n\nfunction buildInfixAddTable () {\n const table = [[], [], [], []];\n\n table[Types.INTEGER.ord][Types.INTEGER.ord] = Types.INTEGER;\n table[Types.INTEGER.ord][Types.REAL.ord] = Types.REAL;\n table[Types.INTEGER.ord][Types.STRING.ord] = Types.STRING;\n\n table[Types.REAL.ord][Types.INTEGER.ord] = Types.REAL;\n table[Types.REAL.ord][Types.REAL.ord] = Types.REAL;\n table[Types.REAL.ord][Types.STRING.ord] = Types.STRING;\n\n table[Types.STRING.ord][Types.INTEGER.ord] = Types.STRING;\n table[Types.STRING.ord][Types.REAL.ord] = Types.STRING;\n table[Types.STRING.ord][Types.STRING.ord] = Types.STRING;\n table[Types.STRING.ord][Types.BOOLEAN.ord] = Types.STRING;\n\n return table;\n}\n\nfunction buildInfixMultiDivSubTable () {\n const table = [[], [], [], []];\n\n table[Types.INTEGER.ord][Types.INTEGER.ord] = Types.INTEGER;\n table[Types.INTEGER.ord][Types.REAL.ord] = Types.REAL;\n\n table[Types.REAL.ord][Types.INTEGER.ord] = Types.REAL;\n table[Types.REAL.ord][Types.REAL.ord] = Types.REAL;\n\n return table;\n}\n\nfunction buildInfixEqualityInequalityTable () {\n const table = [[], [], [], []];\n\n table[Types.INTEGER.ord][Types.INTEGER.ord] = Types.BOOLEAN;\n\n table[Types.REAL.ord][Types.REAL.ord] = Types.BOOLEAN;\n\n table[Types.BOOLEAN.ord][Types.BOOLEAN.ord] = Types.BOOLEAN;\n\n table[Types.STRING.ord][Types.STRING.ord] = Types.BOOLEAN;\n\n return table;\n}\n\nfunction buildInfixRelationalTable () {\n const table = [[], [], [], []];\n\n table[Types.INTEGER.ord][Types.INTEGER.ord] = Types.BOOLEAN;\n\n table[Types.REAL.ord][Types.REAL.ord] = Types.BOOLEAN;\n\n table[Types.STRING.ord][Types.STRING.ord] = Types.BOOLEAN;\n\n return table;\n}\n\nfunction buildInfixAndOrTable () {\n const table = [[], [], [], []];\n\n table[Types.BOOLEAN.ord][Types.BOOLEAN.ord] = Types.BOOLEAN;\n\n return table;\n}\n\nfunction buildInfixModTable () {\n const table = [[], [], [], []];\n\n table[Types.INTEGER.ord][Types.INTEGER.ord] = Types.INTEGER;\n\n return table;\n}\n\nfunction buildUnarySumSubList () {\n const list = [];\n\n list[Types.INTEGER.ord] = Types.INTEGER;\n\n list[Types.REAL.ord] = Types.REAL;\n\n return list;\n}\n\nfunction buildUnaryNegList () {\n const list = [];\n\n list[Types.BOOLEAN.ord] = Types.BOOLEAN;\n\n return list;\n}\n\nfunction buildInfixCompatibilityTable () {\n const compatibilityMap = new WeakMap();\n compatibilityMap.set(Operators.ADD, buildInfixAddTable());\n compatibilityMap.set(Operators.SUB, buildInfixMultiDivSubTable());\n compatibilityMap.set(Operators.MULT, buildInfixMultiDivSubTable());\n compatibilityMap.set(Operators.DIV, buildInfixMultiDivSubTable());\n compatibilityMap.set(Operators.EQ, buildInfixEqualityInequalityTable());\n compatibilityMap.set(Operators.NEQ, buildInfixEqualityInequalityTable());\n compatibilityMap.set(Operators.GE, buildInfixRelationalTable());\n compatibilityMap.set(Operators.GT, buildInfixRelationalTable());\n compatibilityMap.set(Operators.LE, buildInfixRelationalTable());\n compatibilityMap.set(Operators.LT, buildInfixRelationalTable());\n compatibilityMap.set(Operators.OR, buildInfixAndOrTable());\n compatibilityMap.set(Operators.AND, buildInfixAndOrTable());\n compatibilityMap.set(Operators.MOD, buildInfixModTable());\n return compatibilityMap;\n}\n\nfunction buildUnaryCompatibilityTable () {\n const compatibilityMap = new WeakMap();\n compatibilityMap.set(Operators.ADD, buildUnarySumSubList());\n compatibilityMap.set(Operators.SUB, buildUnarySumSubList());\n compatibilityMap.set(Operators.NOT, buildUnaryNegList());\n return compatibilityMap;\n}\n\nconst infixMap = buildInfixCompatibilityTable();\nconst unaryMap = buildUnaryCompatibilityTable();\n\nexport function resultTypeAfterInfixOp (operator, leftExpressionType, rightExpressionType) {\n try {\n if(leftExpressionType instanceof MultiType && rightExpressionType instanceof MultiType) {\n let newMulti = [];\n for (let i = 0; i < leftExpressionType.types.length; ++i) {\n const typeA = leftExpressionType.types[i];\n for(let j = 0; j < rightExpressionType.types.length; ++i) {\n const typeB = rightExpressionType.types[j];\n newMulti.push(resultTypeAfterInfixOp(operator, typeA, typeB));\n }\n }\n newMulti = newMulti.filter(x => !x.isCompatible(Types.UNDEFINED));\n if(newMulti.length <= 0) {\n if(Config.enable_type_casting) {\n if(leftExpressionType.isCompatible(Types.INTEGER) || leftExpressionType.isCompatible(Types.REAL)) {\n if(rightExpressionType.isCompatible(Types.INTEGER) || rightExpressionType.isCompatible(Types.REAL)) {\n return new MultiType([Types.INTEGER, Types.REAL]);\n }\n }\n }\n return Types.UNDEFINED;\n } else {\n return new MultiType(newMulti)\n }\n } else if(leftExpressionType instanceof MultiType) {\n if(leftExpressionType.isCompatible(rightExpressionType)) {\n return resultTypeAfterInfixOp(operator, rightExpressionType, rightExpressionType);\n } else {\n if(Config.enable_type_casting) {\n if(leftExpressionType.isCompatible(Types.INTEGER) || leftExpressionType.isCompatible(Types.REAL)) {\n if(rightExpressionType.isCompatible(Types.INTEGER) || rightExpressionType.isCompatible(Types.REAL)) {\n return rightExpressionType;\n }\n }\n }\n return Types.UNDEFINED;\n }\n } else if(rightExpressionType instanceof MultiType) {\n if(rightExpressionType.isCompatible(leftExpressionType)) {\n return resultTypeAfterInfixOp(operator, leftExpressionType, leftExpressionType);\n } else {\n if(Config.enable_type_casting) {\n if(leftExpressionType.isCompatible(Types.INTEGER) || leftExpressionType.isCompatible(Types.REAL)) {\n if(rightExpressionType.isCompatible(Types.INTEGER) || rightExpressionType.isCompatible(Types.REAL)) {\n return leftExpressionType;\n }\n }\n }\n return Types.UNDEFINED;\n }\n }\n const resultType = infixMap.get(operator)[leftExpressionType.ord][rightExpressionType.ord];\n if (resultType === null || resultType === undefined) {\n if(Config.enable_type_casting) {\n if(leftExpressionType.isCompatible(Types.INTEGER) || leftExpressionType.isCompatible(Types.REAL)) {\n if(rightExpressionType.isCompatible(Types.INTEGER) || rightExpressionType.isCompatible(Types.REAL)) {\n if(operator === Operators.MOD) {\n return Types.INTEGER;\n } else if (operator.ord >= 5 && operator.ord <= 10){\n return Types.BOOLEAN;\n }\n }\n }\n }\n return Types.UNDEFINED\n }\n return resultType;\n } catch (e) {\n if (e instanceof TypeError) {\n return Types.UNDEFINED;\n } else {\n throw e;\n }\n }\n}\n\nexport function resultTypeAfterUnaryOp (operator, leftExpressionType) {\n try {\n if(leftExpressionType instanceof MultiType){\n return leftExpressionType;\n }\n const resultType = unaryMap.get(operator)[leftExpressionType.ord];\n if (resultType == null) {\n return Types.UNDEFINED;\n }\n return resultType;\n } catch (e) {\n if (e instanceof TypeError) {\n return Types.UNDEFINED;\n } else {\n throw e;\n } \n }\n}","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Context = Object.freeze({\n BASE: Symbol('context:base'),\n BREAKABLE: Symbol('context:breakable'),\n FUNCTION: Symbol('context:function')\n});\n","import { LanguageService } from '../services/languageService';\nimport {createInputFun, createOutputFun} from './lib/io';\nimport {createLengthFun, createLowercaseFun,\n createrCharAtFun, createSubstringFun,\n createUppercaseFun} from './lib/strings';\nimport {createMatrixColumnsFun, createMatrixLinesFun,\n createNumElementsFun} from './lib/arrays';\nimport {createCastBoolFun, createCastIntFun,\n createCastRealFun, createCastStringFun,\n createIsBoolFun, createIsIntFun,\n createIsRealFun} from './lib/lang';\nimport {createAbsFun, createCosFun,\n createInvertFun, createLogFun,\n createMaxFun, createMinFun,\n createNegateFun, createPowFun,\n createSinFun, createSqrtFun,\n createTanFun, createRandFun} from './lib/math';\n\nfunction valueToKey (value, object) {\n for (const key in object) {\n if(Object.prototype.hasOwnProperty.call(object, key)){\n if (object[key] === value) {\n return key;\n }\n }\n }\n return null;\n}\n\nfunction concatObjects (...objs) {\n let result = {};\n for (let i = 0; i < objs.length; i++) {\n const obj = objs[i];\n for(const key in obj) {\n if(Object.prototype.hasOwnProperty.call(obj, key)) {\n result[key] = obj[key];\n }\n }\n }\n return result;\n}\n\nconst libsObject = {\n $mathLib: {\n $sin: createSinFun(),\n $cos: createCosFun(),\n $tan: createTanFun(),\n $sqrt: createSqrtFun(),\n $pow: createPowFun(),\n $log: createLogFun(),\n $abs: createAbsFun(),\n $negate: createNegateFun(),\n $invert: createInvertFun(),\n $max: createMaxFun(),\n $min: createMinFun(),\n $rand: createRandFun()\n },\n $ioLib: {\n $read: createInputFun(),\n $write: createOutputFun()\n },\n $strLib: {\n $substring: createSubstringFun(),\n $length: createLengthFun(),\n $uppercase: createUppercaseFun(),\n $lowercase: createLowercaseFun(),\n $charAt: createrCharAtFun(),\n },\n $arrayLib: {\n $numElements: createNumElementsFun(),\n $matrixLines: createMatrixLinesFun(),\n $matrixColumns: createMatrixColumnsFun()\n },\n $langLib: {\n $isReal: createIsRealFun(),\n $isInt: createIsIntFun(),\n $isBool: createIsBoolFun(),\n $castReal: createCastRealFun(),\n $castInt: createCastIntFun(),\n $castBool: createCastBoolFun(),\n $castString: createCastStringFun()\n }\n}\n\nconst funcsObject = concatObjects(libsObject.$ioLib, libsObject.$langLib,\n libsObject.$strLib, libsObject.$arrayLib);\n\nexport const LanguageDefinedFunction = Object.freeze({\n getMainFunctionName: () => LanguageService.getCurrentLangFuncs().main_function,\n getInternalName: (localName) => {\n if (localName.indexOf(\".\") !== -1) {\n const names = localName.split(\".\");\n const lib = valueToKey(names[0], LanguageService.getCurrentLangLibs());\n const internalName = valueToKey(names[1], LanguageService.getCurrentLangFuncs());\n if (lib === null || internalName === null) {\n return null;\n }\n return lib + \".\" + internalName;\n }\n const funcName = valueToKey(localName, LanguageService.getCurrentLangFuncs());\n if(funcName !== null) {\n if(funcsObject[funcName]) {\n return funcName;\n }\n }\n return null;\n },\n getFunction: (internalName) => {\n if (internalName.indexOf(\".\") !== -1) {\n const names = internalName.split(\".\");\n const libName = names[0];\n const funName = names[1];\n return libsObject[libName][funName];\n }\n return funcsObject[internalName];\n },\n getLocalName: (internalName) => {\n if (internalName.indexOf(\".\") !== -1) {\n const names = internalName.split(\".\");\n const libName = LanguageService.getCurrentLangLibs()[names[0]];\n const funName = LanguageService.getCurrentLangFuncs()[names[1]];\n return `${libName}.${funName}`;\n } else if (LanguageService.getCurrentLangFuncs()[internalName]) {\n return LanguageService.getCurrentLangFuncs()[internalName];\n } else { \n return internalName\n }\n }\n});","import { RuntimeError } from './runtimeError';\nimport { SemanticError } from './semanticError';\nimport * as LocalizedStringsService from './../../services/localizedStringsService';\nimport { LanguageDefinedFunction } from '../definedFunctions';\n\nconst LocalizedStrings = LocalizedStringsService.getInstance();\n\nfunction createRuntimeError (i18n_id, context = []) {\n return new RuntimeError(LocalizedStrings.getError(i18n_id, context))\n}\n\nfunction createSemanticError (i18n_id, context = []) {\n return new SemanticError(LocalizedStrings.getError(i18n_id, context))\n}\n\nexport const ProcessorErrorFactory = Object.freeze({\n symbol_not_found_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [id, sourceInfo.line, sourceInfo.column];\n return createSemanticError(\"symbol_not_found_full\", context);\n } else {\n return ProcessorErrorFactory.symbol_not_found(id);\n }\n },\n symbol_not_found: (id) => {\n const context = [id];\n return createSemanticError(\"symbol_not_found\", context);\n },\n function_missing_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [id, sourceInfo.line, sourceInfo.column];\n return createSemanticError(\"function_missing_full\", context);\n } else {\n return ProcessorErrorFactory.function_missing(id);\n }\n },\n function_missing: (id) => {\n const context = [id];\n return createSemanticError(\"function_missing\", context);\n },\n main_missing: () => {\n return createSemanticError(\"main_missing\");\n },\n array_dimension_not_int_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return createSemanticError(\"array_dimension_not_int_full\", context);\n } else {\n return ProcessorErrorFactory.array_dimension_not_int();\n }\n },\n array_dimension_not_int: () => {\n return createSemanticError(\"array_dimension_not_int\");\n },\n unknown_command_full: (sourceInfo)=> {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return createRuntimeError(\"unknown_command_full\", context);\n } else {\n return ProcessorErrorFactory.unknown_command();\n }\n \n },\n unknown_command: ()=> {\n return createRuntimeError(\"unknown_command\");\n },\n incompatible_types_full: (left_type, left_dim, right_type, right_dim, exp, source_info) => {\n if(source_info) {\n const context = [LocalizedStrings.translateType(left_type, left_dim), exp, source_info.line,\n LocalizedStrings.translateType(right_type, right_dim)];\n return createSemanticError(\"incompatible_types_full\", context);\n } else {\n return ProcessorErrorFactory.incompatible_types(left_type, left_dim, right_type, right_dim, exp);\n }\n },\n incompatible_types: (left_type, left_dim, right_type, right_dim, exp) => {\n const context = [LocalizedStrings.translateType(left_type, left_dim), exp,\n LocalizedStrings.translateType(right_type, right_dim)];\n return createSemanticError(\"incompatible_types\", context);\n },\n incompatible_types_array_full: (exp, type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [exp, LocalizedStrings.translateType(type, dim), sourceInfo.line, sourceInfo.column];\n return createSemanticError(\"incompatible_types_array_full\", context);\n } else {\n return ProcessorErrorFactory.incompatible_types_array(exp, type, dim);\n }\n },\n incompatible_types_array: (exp, type, dim) => {\n const context = [exp, LocalizedStrings.translateType(type, dim)];\n return createSemanticError(\"incompatible_types_array\", context);\n },\n loop_condition_type_full: (exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, sourceInfo.column, exp];\n return createSemanticError(\"loop_condition_type_full\", context);\n } else {\n return ProcessorErrorFactory.loop_condition_type(exp);\n }\n },\n loop_condition_type: (exp) => {\n const context = [exp];\n return createSemanticError(\"loop_condition_type\", context);\n },\n /**\n * @deprecated 01/10/2019\n */\n endless_loop_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return createSemanticError(\"endless_loop_full\", context);\n } else {\n return ProcessorErrorFactory.endless_loop();\n }\n },\n endless_loop: () => {\n return createSemanticError(\"endless_loop\");\n },\n if_condition_type_full: (exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, sourceInfo.column, exp];\n return createSemanticError(\"if_condition_type_full\", context);\n } else {\n return ProcessorErrorFactory.if_condition_type(exp);\n }\n },\n if_condition_type: (exp) => {\n const context = [exp];\n return createSemanticError(\"if_condition_type\", context);\n },\n invalid_global_var: () => {\n return createRuntimeError(\"invalid_global_var\")\n },\n not_implemented: (id) => {\n const context = [id]\n return createRuntimeError(\"not_implemented\", context)\n },\n invalid_case_type_full: (exp, type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [exp, LocalizedStrings.translateType(type, dim), sourceInfo.line, sourceInfo.column];\n return createSemanticError(\"invalid_case_type_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_case_type(exp, type, dim);\n }\n },\n invalid_case_type: (exp, type, dim) => {\n const context = [exp, LocalizedStrings.translateType(type, dim)];\n return createSemanticError(\"invalid_case_type\", context);\n },\n void_in_expression_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, sourceInfo.column, id];\n return createSemanticError(\"void_in_expression_full\", context);\n } else {\n return ProcessorErrorFactory.void_in_expression(id);\n }\n },\n void_in_expression: (id) => {\n const context = [id];\n return createSemanticError(\"void_in_expression\", context);\n },\n invalid_array_access_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [id, sourceInfo.line, sourceInfo.column];\n return createSemanticError(\"invalid_array_access_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_array_access(id);\n }\n },\n invalid_array_access: (id) => {\n const context = [id];\n return createSemanticError(\"invalid_array_access\", context);\n },\n invalid_matrix_access_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [id, sourceInfo.line, sourceInfo.column];\n return createSemanticError(\"invalid_matrix_access_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_matrix_access(id);\n }\n },\n invalid_matrix_access: (id) => {\n const context = [id];\n return createSemanticError(\"invalid_matrix_access\", context);\n },\n matrix_column_outbounds_full: (id, value, columns, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, value, id, columns];\n return createRuntimeError(\"matrix_column_outbounds_full\", context);\n } else {\n return ProcessorErrorFactory.matrix_column_outbounds(id, value, columns);\n }\n },\n matrix_column_outbounds: (id, value, columns) => {\n const context = [value, id, columns];\n return createRuntimeError(\"matrix_column_outbounds\", context);\n },\n matrix_line_outbounds_full: (id, value, lines, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, value, id, lines];\n return createRuntimeError(\"matrix_line_outbounds_full\", context);\n } else {\n return ProcessorErrorFactory.matrix_line_outbounds(id, value, lines);\n }\n },\n matrix_line_outbounds: (id, value, lines) => {\n const context = [value, id, lines];\n return createRuntimeError(\"matrix_line_outbounds\", context);\n },\n vector_line_outbounds_full: (id, value, lines, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, value, id, lines];\n return createRuntimeError(\"vector_line_outbounds_full\", context);\n } else {\n return ProcessorErrorFactory.vector_line_outbounds(id, value, lines);\n }\n },\n vector_line_outbounds: (id, value, lines) => {\n const context = [value, id, lines];\n return createRuntimeError(\"vector_line_outbounds\", context);\n },\n vector_not_matrix_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, id];\n return createRuntimeError(\"vector_not_matrix_full\", context);\n } else {\n return ProcessorErrorFactory.vector_not_matrix(id);\n }\n },\n vector_not_matrix: (id) => {\n const context = [id];\n return createRuntimeError(\"vector_not_matrix\", context);\n },\n function_no_return: (id) => {\n const context = [id];\n return createSemanticError(\"function_no_return\", context);\n },\n invalid_void_return_full: (id, type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, id, LocalizedStrings.translateType(type, dim)];\n return createSemanticError(\"invalid_void_return_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_void_return(id, type, dim);\n }\n },\n invalid_void_return: (id, type, dim) => {\n const context = [id, LocalizedStrings.translateType(type, dim)];\n return createSemanticError(\"invalid_void_return_full\", context);\n },\n invalid_return_type_full: (id, type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, id, LocalizedStrings.translateType(type, dim)];\n return createSemanticError(\"invalid_return_type_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_return_type(id, type, dim);\n }\n },\n invalid_return_type: (id, type, dim) => {\n const context = [id, LocalizedStrings.translateType(type, dim)];\n return createSemanticError(\"invalid_return_type\", context);\n },\n invalid_parameters_size_full: (id, expected, actual, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, id, expected, actual];\n return createSemanticError(\"invalid_parameters_size_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_parameters_size(id, expected, actual);\n }\n },\n invalid_parameters_size: (id, expected, actual) => {\n const context = [id, expected, actual];\n return createSemanticError(\"invalid_parameters_size\", context);\n },\n invalid_parameter_type_full: (fun_name, exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [exp, LanguageDefinedFunction.getLocalName(fun_name), sourceInfo.line];\n return createSemanticError(\"invalid_parameter_type_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_parameter_type(fun_name, exp);\n }\n },\n invalid_parameter_type: (fun_name, exp) => {\n const context = [exp, LanguageDefinedFunction.getLocalName(fun_name)];\n return createSemanticError(\"invalid_parameter_type_full\", context);\n },\n invalid_ref_full: (id, exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [exp, id , sourceInfo.line];\n return createSemanticError(\"invalid_ref_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_ref(id, exp);\n }\n },\n invalid_ref: (id, exp) => {\n const context = [exp, id];\n return createSemanticError(\"invalid_ref\", context);\n },\n unexpected_break_command_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return createRuntimeError(\"unexpected_break_command_full\", context);\n } else {\n return ProcessorErrorFactory.unexpected_break_command();\n }\n },\n unexpected_break_command: () => {\n return createRuntimeError(\"unexpected_break_command\");\n },\n invalid_array_literal_type_full: (exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, exp];\n return createRuntimeError(\"invalid_array_literal_type_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_array_literal_type(exp);\n }\n },\n invalid_array_literal_type: (exp) => {\n const context = [exp];\n return createRuntimeError(\"invalid_array_literal_type\", context);\n },\n invalid_array_literal_line_full: (expected, actual, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, expected, actual];\n return createRuntimeError(\"invalid_array_literal_line_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_array_literal_type(expected, actual);\n }\n },\n invalid_array_literal_line: (expected, actual) => {\n const context = [expected, actual];\n return createRuntimeError(\"invalid_array_literal_line\", context);\n },\n invalid_array_literal_column_full: (expected, actual, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, expected, actual];\n return createRuntimeError(\"invalid_array_literal_column_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_array_literal_column(expected, actual);\n }\n },\n invalid_array_literal_column: (expected, actual) => {\n const context = [expected, actual];\n return createRuntimeError(\"invalid_array_literal_column\", context);\n },\n invalid_unary_op_full: (expString, opName, type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, expString, LocalizedStrings.translateOp(opName), LocalizedStrings.translateType(type, dim)];\n return createRuntimeError(\"invalid_unary_op_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_unary_op(opName, type, dim);\n }\n },\n invalid_unary_op: (expString, opName, type, dim) => {\n const context = [expString, LocalizedStrings.translateOp(opName), LocalizedStrings.translateType(type, dim)];\n return createRuntimeError(\"invalid_unary_op\", context);\n },\n invalid_infix_op_full: (expString, opName, typeLeft, dimLeft, typeRight, dimRight, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, expString, LocalizedStrings.translateOp(opName), LocalizedStrings.translateType(typeLeft, dimLeft), LocalizedStrings.translateType(typeRight, dimRight)];\n return createRuntimeError(\"invalid_infix_op_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_infix_op(opName, typeLeft, dimLeft, typeRight, dimRight);\n }\n },\n invalid_infix_op: (expString, opName, typeLeft, dimLeft, typeRight, dimRight) => {\n const context = [expString, LocalizedStrings.translateOp(opName), LocalizedStrings.translateType(typeLeft, dimLeft), LocalizedStrings.translateType(typeRight, dimRight)];\n return createRuntimeError(\"invalid_infix_op\", context);\n },\n array_dimension_not_positive_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return createSemanticError(\"array_dimension_not_positive_full\", context);\n } else {\n return ProcessorErrorFactory.array_dimension_not_positive();\n }\n },\n array_dimension_not_positive: () => {\n return createSemanticError(\"array_dimension_not_positive\");\n },\n invalid_type_conversion: (value, type, dim) => {\n const context = [value, LocalizedStrings.translateType(type, dim)];\n return createRuntimeError(\"invalid_type_conversion\", context);\n },\n invalid_read_type: (exp, type, dim, name, source_info) => {\n const context = [source_info.line, exp, LocalizedStrings.translateType(type, dim), name];\n return createRuntimeError(\"invalid_read_type\", context)\n },\n invalid_read_type_array: (exp, typePos, dimPos, name, typeArray, dimArray, sourceInfo) => {\n const context = [sourceInfo.line, exp, LocalizedStrings.translateType(typePos, dimPos), name,LocalizedStrings.translateType(typeArray, dimArray)];\n return createRuntimeError(\"invalid_read_type_array\", context)\n },\n invalid_const_ref_full: (fun_name, exp, sourceInfo)=> {\n if(sourceInfo) {\n const context = [exp, LanguageDefinedFunction.getLocalName(fun_name), sourceInfo.line];\n return createSemanticError(\"invalid_const_ref_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_const_ref(fun_name, exp);\n }\n },\n invalid_const_ref: (fun_name, exp) => {\n const context = [exp, LanguageDefinedFunction.getLocalName(fun_name)];\n return createSemanticError(\"invalid_const_ref\", context);\n },\n invalid_const_assignment_full: (var_id, source_info) => {\n if(source_info) {\n const context = [source_info.line, var_id];\n return createSemanticError(\"invalid_const_assignment_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_const_assignment(var_id);\n }\n },\n invalid_const_assignment: (var_id) => {\n const context = [var_id];\n return createSemanticError(\"invalid_const_assignment\", context);\n },\n invalid_vector_assignment_full: (left_id, left_size, right_id, right_size, source_info) => {\n if(source_info) {\n const context = [source_info.line, left_id, left_size, right_id, right_size]\n return createRuntimeError(\"invalid_vector_assignment_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_vector_assignment(left_id, left_size, right_id, right_size);\n }\n },\n invalid_vector_assignment: (left_id, left_size, right_id, right_size) => {\n const context = [left_id, left_size, right_id, right_size]\n return createRuntimeError(\"invalid_vector_assignment\", context);\n },\n invalid_matrix_assignment_full: (left_id, left_line, left_column, right_id, right_line, right_column, source_info) => {\n if(source_info) {\n const context = [source_info.line, left_id, left_line, left_column, right_id, right_line, right_column]\n return createRuntimeError(\"invalid_matrix_assignment_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_matrix_assignment(left_id, left_line, left_column, right_id, right_line, right_column);\n }\n },\n invalid_matrix_assignment: (left_id, left_line, left_column, right_id, right_line, right_column) => {\n const context = [left_id, left_line, left_column, right_id, right_line, right_column]\n return createRuntimeError(\"invalid_matrix_assignment\", context);\n },\n matrix_to_vector_attr: (left_id, right_id, source_info) => {\n // SourceInfo have to be valid...\n const context = [source_info.line, right_id, left_id];\n return createSemanticError(\"matrix_to_vector_attr\", context);\n },\n vector_to_matrix_attr: (left_id, right_id, source_info) => {\n // SourceInfo have to be valid...\n const context = [source_info.line, right_id, left_id];\n return createSemanticError(\"vector_to_matrix_attr\", context);\n },\n invalid_matrix_index_assign_full: (mat_id, mat_line, mat_size, exp, exp_size, source_info) => {\n if(source_info){\n const context = [source_info.line, mat_line, mat_id, mat_size, exp, exp_size];\n return createRuntimeError(\"invalid_matrix_index_assign_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_matrix_index_assign(mat_id, mat_line, mat_size, exp, exp_size)\n }\n },\n invalid_matrix_index_assign: (mat_id, mat_line, mat_size, exp, exp_size) =>{\n const context = [mat_line, mat_id, mat_size, exp, exp_size];\n return createRuntimeError(\"invalid_matrix_index_assign\", context);\n },\n invalid_number_elements_vector: (expected_num, exp, actual_num, source_info) => {\n // SourceInfo have to be valid...\n const context = [expected_num, source_info.line, exp, actual_num];\n return createRuntimeError(\"invalid_number_elements_vector\", context);\n },\n invalid_number_lines_matrix: (expected_num, exp, actual_num, source_info) => {\n // SourceInfo have to be valid...\n const context = [expected_num, source_info.line, exp, actual_num];\n return createRuntimeError(\"invalid_number_lines_matrix\", context);\n },\n divsion_by_zero_full: (exp, source_info) => {\n if(source_info) {\n const context = [source_info.line, exp];\n return createRuntimeError(\"divsion_by_zero_full\", context);\n } else {\n return ProcessorErrorFactory.divsion_by_zero(exp);\n }\n },\n divsion_by_zero: (exp) => {\n const context = [exp];\n return createRuntimeError(\"divsion_by_zero\", context);\n },\n undefined_tanget_value: (value, source_info) => {\n const context = [source_info.line, value];\n return createRuntimeError(\"undefined_tanget_value\", context);\n },\n negative_log_value: (source_info) => {\n return createRuntimeError(\"negative_log_value\",[source_info.line]);\n },\n invalid_string_index: (index, str, source_info) => {\n const local_fun_name = LanguageDefinedFunction.getLocalName(\"$charAt\");\n const context = [source_info.line, local_fun_name, index, str, str.length - 1];\n return createRuntimeError(\"invalid_string_index\", context);\n },\n negative_sqrt_value: (source_info) => {\n return createRuntimeError(\"negative_sqrt_value\",[source_info.line]);\n },\n /**\n * @deprecated 01/10/2019\n */\n exceeded_recursive_calls: (source_info) => {\n const context = [source_info.line];\n return createRuntimeError(\"exceeded_recursive_calls\", context);\n },\n invalid_for_variable: (id, source_info) => {\n const context = [source_info.line, id];\n return createSemanticError(\"invalid_for_variable\", context);\n },\n invalid_for_from: (exp, source_info) => {\n const context = [source_info.line, exp];\n return createSemanticError(\"invalid_for_from\", context);\n },\n invalid_for_to: (exp, source_info) => {\n const context = [source_info.line, exp];\n return createSemanticError(\"invalid_for_to\", context);\n },\n invalid_for_pass: (exp, source_info) => {\n const context = [source_info.line, exp];\n return createSemanticError(\"invalid_for_pass\", context);\n },\n exceed_max_instructions: () => {\n return createRuntimeError('exceed_max_instructions');\n }\n});","export class RuntimeError extends Error {\n\n constructor (...msg) {\n super(...msg);\n if(Error.captureStackTrace)\n Error.captureStackTrace(this, RuntimeError);\n }\n}","export class SemanticError extends Error {\n\n constructor (...msg) {\n super(...msg);\n if(Error.captureStackTrace)\n Error.captureStackTrace(this, SemanticError);\n }\n}","import { Store } from './store/store';\nimport { Modes } from './modes';\nimport { Context } from './context';\nimport { Types } from './../typeSystem/types';\nimport { Operators } from './../ast/operators';\nimport { LanguageDefinedFunction } from './definedFunctions';\nimport { resultTypeAfterInfixOp, resultTypeAfterUnaryOp } from './compatibilityTable';\nimport * as Commands from './../ast/commands/';\nimport * as Expressions from './../ast/expressions/';\nimport { ArrayType } from './../typeSystem/array_type';\nimport { convertToString, toInt } from '../typeSystem/parsers';\nimport { Config } from '../util/config';\nimport { ProcessorErrorFactory } from './error/processorErrorFactory';\nimport { RuntimeError } from './error/runtimeError';\nimport { Location } from '../memory/location';\nimport { StoreValue } from './store/value/store_value';\nimport { StoreValueRef } from './store/value/store_value_ref';\nimport { ArrayStoreValue } from './store/value/array_store_value';\nimport { ArrayStoreValueRef } from './store/value/array_store_value_ref';\nimport { StoreValueAddress } from './store/value/store_value_address';\nimport { LocalizedStrings } from '../services/localizedStringsService';\n\nexport class IVProgProcessor {\n\n static get MAIN_INTERNAL_ID () {\n return \"$main\";\n }\n\n constructor (ast) {\n this.ast = ast;\n this.globalStore = new Store(\"$global\");\n this.stores = [this.globalStore];\n this.context = [Context.BASE];\n this.input = null;\n this.forceKill = false;\n this.output = null;\n this.mode = Modes.RUN;\n /**\n * Stores the sourceInfo of every function call, command or expression\n */\n this.function_call_stack = [];\n this.instruction_count = 0;\n this.function_call_count = 0;\n }\n\n registerInput (input) {\n if(this.input !== null)\n this.input = null;\n this.input = input;\n }\n\n registerOutput (output) {\n if(this.output !== null)\n this.output = null;\n this.output = output;\n }\n\n checkContext(context) {\n return this.context[this.context.length - 1] === context;\n }\n\n ignoreSwitchCases (store) {\n if (store.mode === Modes.RETURN) {\n return true;\n } else if (store.mode === Modes.BREAK) {\n return true;\n } else {\n return false;\n }\n }\n\n prepareState () {\n if(this.stores !== null) {\n for (let i = 0; i < this.stores.length; i++) {\n delete this.stores[i];\n }\n this.stores = null;\n }\n if(this.globalStore !== null)\n this.globalStore = null;\n this.globalStore = new Store(\"$global\");\n this.stores = [this.globalStore];\n this.context = [Context.BASE];\n this.instruction_count = 0;\n this.mode = Modes.RUN;\n }\n\n interpretAST () {\n this.prepareState();\n Location.clear();\n return this.initGlobal().then( _ => {\n const mainFunc = this.findMainFunction();\n if(mainFunc === null) {\n return Promise.reject(ProcessorErrorFactory.main_missing())\n }\n return this.runFunction(mainFunc, [], this.globalStore);\n });\n }\n\n initGlobal () {\n if(!this.checkContext(Context.BASE)) {\n return Promise.reject(ProcessorErrorFactory.invalid_global_var())\n }\n return this.executeCommands(this.globalStore, this.ast.global);\n }\n\n findMainFunction () {\n return this.ast.functions.find(v => v.isMain);\n }\n\n findFunction (name) {\n if(name.match(/^\\$.+$/)) {\n if(name === IVProgProcessor.MAIN_INTERNAL_ID) {\n return this.findMainFunction();\n }\n const fun = LanguageDefinedFunction.getFunction(name);\n if(!fun) {\n throw ProcessorErrorFactory.not_implemented(name);\n }\n return fun;\n } else {\n const val = this.ast.functions.find( v => v.name === name);\n if (!val) {\n throw ProcessorErrorFactory.function_missing(name);\n }\n return val;\n }\n }\n\n runFunction (func, actualParameters, store) {\n const funcName = func.isMain ? IVProgProcessor.MAIN_INTERNAL_ID : func.name;\n const funcStore = new Store(funcName);\n funcStore.extendStore(this.globalStore);\n return new Promise((resolve, reject) => {\n const run_lambda = () => {\n const newFuncStore$ = this.associateParameters(func.formalParameters, actualParameters, store, funcStore);\n newFuncStore$.then(sto => {\n this.context.push(Context.FUNCTION);\n this.stores.push(sto);\n return this.executeCommands(sto, func.variablesDeclarations)\n .then(stoWithVars => this.executeCommands(stoWithVars, func.commands)).then(finalSto => {\n this.stores.pop();\n this.context.pop();\n return finalSto;\n });\n }).then(resolve)\n .catch(reject);\n }\n run_lambda();\n });\n \n }\n\n associateParameters (formal_params, effective_params, caller_store, callee_store) {\n const funcName = callee_store.name === IVProgProcessor.MAIN_INTERNAL_ID ? \n LanguageDefinedFunction.getMainFunctionName() : callee_store.name;\n\n if (formal_params.length != effective_params.length) {\n return Promise.reject(ProcessorErrorFactory.invalid_parameters_size(funcName, formal_params.length, effective_params.length))\n }\n const promises$ = effective_params.map(actual_param => this.evaluateExpression(caller_store, actual_param));\n return Promise.all(promises$).then(values => {\n for (let i = 0; i < values.length; i++) {\n const sto_value = values[i];\n // console.log(callee_store.name);\n // console.log(sto_value);\n const exp = effective_params[i];\n let shouldTypeCast = false;\n const formalParameter = formal_params[i];\n if(!formalParameter.type.isCompatible(sto_value.type)) {\n if (Config.enable_type_casting && !formalParameter.byRef\n && Store.canImplicitTypeCast(formalParameter.type, sto_value.type)) {\n shouldTypeCast = true;\n } else {\n return Promise.reject(ProcessorErrorFactory.invalid_parameter_type(funcName, exp.toString()))\n }\n }\n\n if(formalParameter.byRef && !sto_value.inStore()) {\n return Promise.reject(ProcessorErrorFactory.invalid_ref(funcName, exp.toString()))\n }\n\n if(formalParameter.byRef) {\n const realObj = caller_store.getStoreObject(sto_value.id);\n let ref = null;\n if(sto_value instanceof ArrayStoreValue) {\n // it's a vector or matrix...\n const values = sto_value.get();\n const array_type = sto_value.type;\n const addresses = values.map( v => realObj.getLocAddressOf(v.line, v.column));\n const columns = sto_value.isVector() ? 0 : sto_value.columns;\n ref = new ArrayStoreValueRef(array_type, values, addresses, sto_value.lines, columns, realObj.id);\n } else {\n if(sto_value instanceof StoreValueAddress) {\n const line = sto_value.line;\n const column = sto_value.column;\n ref = new StoreValueRef(sto_value.type, sto_value.get(),\n realObj.getLocAddressOf(line, column), realObj.id);\n ref.setReferenceDimension(realObj.type.dimensions);\n } else {\n ref = new StoreValueRef(sto_value.type, sto_value.get(), realObj.locAddress, realObj.id);\n }\n }\n callee_store.insertStore(formalParameter.id, ref);\n } else {\n let realValue = sto_value;\n if (shouldTypeCast) {\n realValue = Store.doImplicitCasting(formalParameter.type, realValue);\n }\n callee_store.insertStore(formalParameter.id, realValue);\n }\n }\n return callee_store;\n });\n }\n\n executeCommands (store, cmds) {\n // helper to partially apply a function, in this case executeCommand\n const partial = (fun, cmd) => (sto) => fun(sto, cmd);\n return cmds.reduce((lastCommand, next) => {\n const nextCommand = partial(this.executeCommand.bind(this), next);\n return lastCommand.then(nextCommand);\n }, Promise.resolve(store));\n }\n\n executeCommand (store, cmd) {\n this.instruction_count += 1;\n return new Promise((resolve, reject) => {\n const command_lambda = () => {\n if(this.instruction_count >= Config.max_instruction_count) {\n return reject(ProcessorErrorFactory.exceed_max_instructions());\n } else if(this.forceKill) {\n return reject(\"FORCED_KILL!\");\n } else if (store.mode === Modes.PAUSE) {\n return resolve(this.executeCommand(store, cmd));\n } else if(store.mode === Modes.RETURN) {\n return resolve(store);\n } else if(this.checkContext(Context.BREAKABLE) && store.mode === Modes.BREAK) {\n return resolve(store);\n } else if (this.mode === Modes.ABORT) {\n return reject(LocalizedStrings.getMessage('aborted_execution'));\n }\n if (cmd instanceof Commands.Declaration) {\n return resolve(this.executeDeclaration(store, cmd));\n } else if (cmd instanceof Commands.ArrayIndexAssign) {\n return resolve(this.executeArrayIndexAssign(store, cmd));\n } else if (cmd instanceof Commands.Assign) {\n return resolve(this.executeAssign(store, cmd));\n } else if (cmd instanceof Commands.Break) {\n return resolve(this.executeBreak(store, cmd));\n } else if (cmd instanceof Commands.Return) {\n return resolve(this.executeReturn(store, cmd));\n } else if (cmd instanceof Commands.IfThenElse) {\n return resolve(this.executeIfThenElse(store, cmd));\n } else if (cmd instanceof Commands.RepeatUntil) {\n return resolve(this.executeRepeatUntil(store, cmd));\n } else if (cmd instanceof Commands.While) {\n return resolve(this.executeWhile(store, cmd));\n } else if (cmd instanceof Commands.For) {\n return resolve(this.executeFor(store, cmd));\n } else if (cmd instanceof Commands.Switch) {\n return resolve(this.executeSwitch(store, cmd));\n } else if (cmd instanceof Expressions.FunctionCall) {\n return resolve(this.executeFunctionCall(store, cmd)); \n } else if (cmd instanceof Commands.SysCall) {\n return resolve(this.executeSysCall(store, cmd));\n } else {\n return reject(ProcessorErrorFactory.unknown_command(cmd.sourceInfo))\n }\n };\n if(this.instruction_count % Config.suspend_threshold == 0) {\n //every 100th command should briefly delay its execution in order to allow the browser to process other things\n setTimeout(command_lambda, 5);\n } else {\n command_lambda();\n }\n })\n }\n\n executeSysCall (store, cmd) {\n const func = cmd.langFunc.bind(this);\n return func(store, cmd);\n }\n\n executeFunctionCall (store, cmd) {\n let func = null;\n if(cmd.isMainCall) {\n func = this.findMainFunction();\n } else {\n func = this.findFunction(cmd.id);\n }\n // if(this.function_call_stack.length >= Config.max_call_stack) {\n // return Promise.reject(ProcessorErrorFactory.exceeded_recursive_calls(cmd.sourceInfo));\n // }\n this.function_call_stack.push(cmd.sourceInfo);\n return this.runFunction(func, cmd.actualParameters, store)\n .then(sto => {\n sto.destroy();\n if(!Types.VOID.isCompatible(func.returnType) && sto.mode !== Modes.RETURN) {\n const funcName = func.name === IVProgProcessor.MAIN_INTERNAL_ID ? \n LanguageDefinedFunction.getMainFunctionName() : func.name;\n return Promise.reject(ProcessorErrorFactory.function_no_return(funcName));\n } else {\n this.function_call_stack.pop();\n return store;\n }\n });\n }\n\n executeSwitch (store, cmd) {\n this.context.push(Context.BREAKABLE);\n const caseSequence = cmd.cases.reduce( (prev,next) => {\n return prev.then( tuple => {\n if(this.ignoreSwitchCases(tuple[1])) {\n return Promise.resolve(tuple);\n } else if(tuple[0] || next.isDefault) {\n return this.executeCommands(tuple[1], next.commands)\n .then(nSto => Promise.resolve([true, nSto]));\n } else {\n const equalityInfixApp = new Expressions.InfixApp(Operators.EQ, cmd.expression, next.expression);\n equalityInfixApp.sourceInfo = next.sourceInfo;\n return this.evaluateExpression(tuple[1],equalityInfixApp).then(stoObj => stoObj.get())\n .then(isEqual => {\n if (isEqual) {\n return this.executeCommands(tuple[1], next.commands)\n .then(nSto => Promise.resolve([true, nSto]));\n } else {\n return Promise.resolve(tuple);\n }\n });\n }\n });\n }, Promise.resolve([false, store]));\n return caseSequence.then(tuple => {\n this.context.pop();\n const newStore = tuple[1];\n if (newStore.mode === Modes.BREAK) {\n newStore.mode = Modes.RUN;\n }\n return newStore;\n });\n }\n\n /**\n * \n * @param {Store} store \n * @param {Commands.For} cmd \n */\n executeFor (store, cmd) {\n //BEGIN for -> while rewrite\n const initCmd = new Commands.Assign(cmd.for_id.id, cmd.for_from);\n initCmd.sourceInfo = cmd.sourceInfo;\n const is_forward_exp = new Expressions.InfixApp(Operators.GE, cmd.for_to, cmd.for_from);\n return this.evaluateExpression(store, is_forward_exp).then (result => {\n const is_forward = result.value;\n let condition = null;\n if (is_forward) {\n condition = new Expressions.InfixApp(Operators.LE, cmd.for_id, cmd.for_to);\n } else {\n condition = new Expressions.InfixApp(Operators.GE, cmd.for_id, cmd.for_to);\n }\n condition.sourceInfo = cmd.sourceInfo;\n let pass_value = cmd.for_pass;\n if(pass_value == null) {\n if(is_forward) {\n pass_value = new Expressions.IntLiteral(toInt(1));\n } else {\n pass_value = new Expressions.IntLiteral(toInt(-1));\n }\n }\n const increment = new Commands.Assign(cmd.for_id.id,\n new Expressions.InfixApp(Operators.ADD, cmd.for_id, pass_value));\n increment.sourceInfo = cmd.sourceInfo;\n const whileBlock = new Commands.CommandBlock([],\n cmd.commands.concat(increment));\n const forAsWhile = new Commands.While(condition, whileBlock);\n forAsWhile.sourceInfo = cmd.sourceInfo;\n //END for -> while rewrite\n const newCmdList = [initCmd,forAsWhile];\n return this.executeCommands(store, newCmdList);\n }).catch(error => Promise.reject(error));\n }\n\n executeRepeatUntil (store, cmd) {\n try {\n this.context.push(Context.BREAKABLE);\n const $newStore = this.executeCommands(store, cmd.commands);\n return $newStore.then(sto => {\n if(sto.mode === Modes.BREAK) {\n this.context.pop();\n sto.mode = Modes.RUN;\n return sto;\n }\n const $value = this.evaluateExpression(sto, cmd.expression);\n return $value.then(vl => {\n if (!vl.type.isCompatible(Types.BOOLEAN)) {\n return Promise.reject(ProcessorErrorFactory.loop_condition_type_full(cmd.sourceInfo));\n }\n if (!vl.get()) {\n this.context.pop();\n return this.executeCommand(sto, cmd);\n } else {\n this.context.pop();\n return sto;\n }\n })\n })\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeWhile (store, cmd) {\n try {\n this.context.push(Context.BREAKABLE);\n const $value = this.evaluateExpression(store, cmd.expression);\n return $value.then(vl => {\n if(vl.type.isCompatible(Types.BOOLEAN)) {\n if(vl.get()) {\n const $newStore = this.executeCommands(store, cmd.commands);\n return $newStore.then(sto => {\n this.context.pop();\n if (sto.mode === Modes.BREAK) {\n sto.mode = Modes.RUN;\n return sto;\n }\n return this.executeCommand(sto, cmd);\n });\n } else {\n this.context.pop();\n return store;\n }\n } else {\n return Promise.reject(ProcessorErrorFactory.loop_condition_type_full(cmd.expression.toString(), cmd.sourceInfo));\n }\n })\n \n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeIfThenElse (store, cmd) {\n try {\n const $value = this.evaluateExpression(store, cmd.condition);\n return $value.then(vl => {\n if(vl.type.isCompatible(Types.BOOLEAN)) {\n if(vl.get()) {\n return this.executeCommands(store, cmd.ifTrue.commands);\n } else if( cmd.ifFalse !== null){\n if(cmd.ifFalse instanceof Commands.IfThenElse) {\n return this.executeCommand(store, cmd.ifFalse);\n } else {\n return this.executeCommands(store, cmd.ifFalse.commands);\n }\n } else {\n return Promise.resolve(store);\n }\n } else {\n return Promise.reject(ProcessorErrorFactory.if_condition_type_full(cmd.condition.toString(), cmd.sourceInfo));\n }\n });\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeReturn (store, cmd) {\n try {\n const funcName = store.name === IVProgProcessor.MAIN_INTERNAL_ID ? \n LanguageDefinedFunction.getMainFunctionName() : store.name;\n // console.log(funcName, store.name === IVProgProcessor.MAIN_INTERNAL_ID);\n const func = this.findFunction(store.name);\n const funcType = func.returnType;\n const $value = this.evaluateExpression(store, cmd.expression);\n \n return $value.then(value => {\n\n let real_value = value;\n if(value === null && funcType.isCompatible(Types.VOID)) {\n store.mode = Modes.RETURN;\n return Promise.resolve(store);\n }\n\n if (value === null || !funcType.isCompatible(value.type)) {\n if(!Config.enable_type_casting || !Store.canImplicitTypeCast(funcType, value.type)) {\n const stringInfo = funcType.stringInfo();\n const info = stringInfo[0];\n return Promise.reject(ProcessorErrorFactory.invalid_return_type_full(funcName, info.type, info.dim, cmd.sourceInfo));\n }\n real_value = Store.doImplicitCasting(funcType, value);\n } else {\n store.insertStore('$', real_value);\n store.mode = Modes.RETURN;\n return Promise.resolve(store);\n }\n });\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeBreak (store, cmd) {\n if(this.checkContext(Context.BREAKABLE)) {\n store.mode = Modes.BREAK;\n return Promise.resolve(store);\n } else {\n return Promise.reject(ProcessorErrorFactory.unexpected_break_command_full(cmd.sourceInfo));\n }\n }\n\n executeAssign (store, cmd) {\n try {\n const inStore = store.applyStore(cmd.id);\n if(inStore.isConst) {\n return Promise.reject(ProcessorErrorFactory.invalid_const_assignment_full(cmd.id, cmd.sourceInfo))\n }\n const $value = this.evaluateExpression(store, cmd.expression);\n return $value.then( vl => {\n let realValue = vl;\n if(!inStore.type.isCompatible(realValue.type)) {\n if(Config.enable_type_casting && Store.canImplicitTypeCast(inStore.type, vl.type)) {\n realValue = Store.doImplicitCasting(inStore.type, realValue);\n } else {\n const stringInfo = inStore.type.stringInfo()\n const info = stringInfo[0]\n const exp_type_string_info = vl.type.stringInfo();\n const exp_type_info = exp_type_string_info[0];\n const exp = cmd.expression.toString();\n return Promise.reject(ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, exp_type_info.type, exp_type_info.dim, exp, cmd.sourceInfo));\n }\n }\n\n if(inStore instanceof ArrayStoreValue) {\n const columns = realValue.columns == null ? 0 : realValue.columns;\n if(inStore.lines !== realValue.lines || inStore.columns !== columns){\n const exp = cmd.expression.toString();\n if(inStore.isVector()) {\n return Promise.reject(ProcessorErrorFactory.invalid_vector_assignment_full(cmd.id, inStore.lines, exp, realValue.lines, cmd.sourceInfo));\n } else {\n return Promise.reject(ProcessorErrorFactory.invalid_matrix_assignment_full(cmd.id, inStore.lines, inStore.columns, exp, realValue.lines, realValue.columns, cmd.sourceInfo));\n } \n }\n }\n \n store.updateStore(cmd.id, realValue) \n return store;\n });\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeArrayIndexAssign (store, cmd) {\n const mustBeArray = store.applyStore(cmd.id);\n let used_dims = 0;\n if(mustBeArray.isConst) {\n return Promise.reject(ProcessorErrorFactory.invalid_const_assignment_full(cmd.id, cmd.sourceInfo))\n }\n if(!(mustBeArray.type instanceof ArrayType)) {\n return Promise.reject(ProcessorErrorFactory.invalid_array_access_full(cmd.id, cmd.sourceInfo));\n }\n const line$ = this.evaluateExpression(store, cmd.line);\n const column$ = this.evaluateExpression(store, cmd.column);\n const value$ = this.evaluateExpression(store, cmd.expression);\n return Promise.all([line$, column$, value$]).then(([line_sv, column_sv, value]) => {\n if(!Types.INTEGER.isCompatible(line_sv.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo));\n }\n const line = line_sv.get().toNumber();\n used_dims += 1;\n let column = undefined;\n if (column_sv != null) {\n if(!Types.INTEGER.isCompatible(column_sv.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo));\n }\n column = column_sv.get().toNumber();\n used_dims += 1;\n }\n let actualValue = value;\n if (line >= mustBeArray.lines) {\n if(mustBeArray.isVector) {\n return Promise.reject(ProcessorErrorFactory.vector_line_outbounds_full(cmd.id, line, mustBeArray.lines, cmd.sourceInfo));\n } else {\n return Promise.reject(ProcessorErrorFactory.matrix_line_outbounds_full(cmd.id, line, mustBeArray.lines, cmd.sourceInfo));\n }\n } else if (line < 0) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_positive_full(cmd.sourceInfo))\n }\n if (column != null && mustBeArray.columns === 0 ){\n return Promise.reject(ProcessorErrorFactory.vector_not_matrix_full(cmd.id, cmd.sourceInfo));\n }\n if(column != null ) {\n if (column >= mustBeArray.columns) {\n return Promise.reject(ProcessorErrorFactory.matrix_column_outbounds_full(cmd.id, column,mustBeArray.columns, cmd.sourceInfo));\n } else if (column < 0) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_positive_full(cmd.sourceInfo))\n }\n }\n\n if (!mustBeArray.type.canAccept(value.type, used_dims)) {\n if(!Config.enable_type_casting || !Store.canImplicitTypeCast(mustBeArray.type.innerType, value.type)) {\n const type = mustBeArray.type.innerType;\n const stringInfo = type.stringInfo();\n const info = stringInfo[0];\n const exp_type_string_info = value.type.stringInfo();\n const exp_type_info = exp_type_string_info[0];\n const exp = cmd.expression.toString();\n return Promise.reject(ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, exp_type_info.type, exp_type_info.dim, exp, cmd.sourceInfo));\n }\n actualValue = Store.doImplicitCasting(mustBeArray.type.innerType, value);\n }\n\n const current_value = mustBeArray.getAt(line, column);\n if(current_value instanceof ArrayStoreValue) {\n if(current_value.lines !== actualValue.lines || current_value.columns !== actualValue.columns){\n const exp = cmd.expression.toString();\n return Promise.reject(ProcessorErrorFactory.invalid_matrix_index_assign_full(cmd.id, line, current_value.lines, exp, actualValue.lines, cmd.sourceInfo))\n }\n }\n\n // mustBeArray.setAt(actualValue, line, column);\n // store.updateStore(cmd.id, mustBeArray);\n return store.updateStoreArray(cmd.id, actualValue, line, column);\n });\n }\n\n /**\n * \n * @param {Store} store \n * @param {Commands.Declaration} cmd \n */\n executeDeclaration (store, cmd) {\n try {\n let $value = Promise.resolve(null);\n if(cmd instanceof Commands.ArrayDeclaration) {\n return this.executeArrayDeclaration(store, cmd);\n } else {\n if(cmd.initial !== null) {\n $value = this.evaluateExpression(store, cmd.initial);\n }\n return $value.then(vl => {\n let realValue = vl;\n let temp = null;\n if (vl !== null) {\n if(!vl.type.isCompatible(cmd.type)) {\n if(Config.enable_type_casting && Store.canImplicitTypeCast(cmd.type, vl.type)) {\n realValue = Store.doImplicitCasting(cmd.type, realValue);\n } else {\n const stringInfo = vl.type.stringInfo();\n const info = stringInfo[0];\n const exp_type_string_info = vl.type.stringInfo();\n const exp_type_info = exp_type_string_info[0];\n const exp = cmd.expression.toString();\n return Promise.reject(ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, exp_type_info.type, exp_type_info.dim, exp, cmd.sourceInfo));\n }\n }\n temp = new StoreValue(cmd.type, realValue.get(), null, cmd.isConst);\n } else {\n temp = new StoreValue(cmd.type, null, null, cmd.isConst);\n }\n store.insertStore(cmd.id, temp);\n return store;\n });\n }\n } catch (e) {\n return Promise.reject(e);\n }\n }\n\n /**\n * \n * @param {Store} store \n * @param {Commands.ArrayDeclaration} cmd \n */\n executeArrayDeclaration (store, cmd) {\n const $lines = this.evaluateExpression(store, cmd.lines);\n const $columns = cmd.columns === null ? null: this.evaluateExpression(store, cmd.columns);\n return Promise.all([$lines, $columns]).then(([line_sv, column_sv]) => {\n if(!Types.INTEGER.isCompatible(line_sv.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo));\n }\n const line = line_sv.get().toNumber();\n if(line < 0) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_positive_full(cmd.sourceInfo));\n }\n let column = null\n if (column_sv !== null) {\n if(!Types.INTEGER.isCompatible(column_sv.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo));\n }\n column = column_sv.get().toNumber();\n if(column < 0) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_positive_full(cmd.sourceInfo));\n }\n }\n let $value = Promise.resolve(null);\n if(cmd.initial !== null) {\n // array can only be initialized by a literal....\n $value = this.evaluateArrayLiteral(store, cmd.initial, cmd.type, line, column);\n }\n return $value.then(vector_list => {\n let temp = null;\n if (vector_list !== null) {\n temp = new ArrayStoreValue(cmd.type, vector_list, line, column, null, cmd.isConst);\n } else {\n temp = new ArrayStoreValue(cmd.type, [], line, column, null, cmd.isConst);\n }\n store.insertStore(cmd.id, temp);\n return store;\n })\n });\n }\n\n evaluateExpression (store, exp) {\n this.instruction_count += 1;\n return new Promise((resolve, reject) => {\n const expression_lambda = () => {\n if (this.mode === Modes.ABORT) {\n return reject(LocalizedStrings.getMessage('aborted_execution'));\n }\n if(this.instruction_count >= Config.max_instruction_count) {\n return reject(new Error(\"Número de instruções excedeu o limite definido. Verifique se seu código não possui laços infinitos ou muitas chamadas de funções recursivas.\"))\n }\n if (exp instanceof Expressions.UnaryApp) {\n return resolve(this.evaluateUnaryApp(store, exp));\n } else if (exp instanceof Expressions.InfixApp) {\n return resolve(this.evaluateInfixApp(store, exp));\n } else if (exp instanceof Expressions.ArrayAccess) {\n return resolve(this.evaluateArrayAccess(store, exp));\n } else if (exp instanceof Expressions.VariableLiteral) {\n return resolve(this.evaluateVariableLiteral(store, exp));\n } else if (exp instanceof Expressions.IntLiteral) {\n return resolve(this.evaluateLiteral(store, exp));\n } else if (exp instanceof Expressions.RealLiteral) {\n return resolve(this.evaluateLiteral(store, exp));\n } else if (exp instanceof Expressions.BoolLiteral) {\n return resolve(this.evaluateLiteral(store, exp));\n } else if (exp instanceof Expressions.StringLiteral) {\n return resolve(this.evaluateLiteral(store, exp));\n } else if (exp instanceof Expressions.ArrayLiteral) {\n return reject(new Error(\"Internal Error: The system should not eval an array literal.\"))\n } else if (exp instanceof Expressions.FunctionCall) {\n return resolve(this.evaluateFunctionCall(store, exp));\n }\n return resolve(null);\n };\n if(this.instruction_count % Config.suspend_threshold == 0) {\n //every 100th command should briefly delay its execution in order to allow the browser to process other things\n setTimeout(expression_lambda, 5);\n } else {\n expression_lambda();\n }\n });\n \n }\n\n evaluateFunctionCall (store, exp) {\n if(exp.isMainCall) {\n return Promise.reject(ProcessorErrorFactory.void_in_expression_full(LanguageDefinedFunction.getMainFunctionName(), exp.sourceInfo));\n }\n const func = this.findFunction(exp.id);\n if(Types.VOID.isCompatible(func.returnType)) {\n return Promise.reject(ProcessorErrorFactory.void_in_expression_full(exp.id, exp.sourceInfo));\n }\n if(this.function_call_stack.length >= Config.max_call_stack) {\n return Promise.reject(ProcessorErrorFactory.exceeded_recursive_calls(exp.sourceInfo));\n }\n this.function_call_stack.push(exp.sourceInfo);\n const $newStore = this.runFunction(func, exp.actualParameters, store);\n return $newStore.then( sto => {\n if(sto.mode !== Modes.RETURN) {\n return Promise.reject(new Error(\"!!!Internal error: the function that was called did not have a return command or did not set the store mode properly -> \"+exp.id));\n }\n const val = sto.applyStore('$');\n sto.destroy();\n this.function_call_stack.pop();\n return Promise.resolve(val);\n });\n }\n\n /**\n * \n * @param {Store} store \n * @param {Expressions.ArrayLiteral} exp \n * @param {ArrayType} type \n */\n evaluateArrayLiteral (store, exp, type, lines, columns) {\n if(!exp.isVector) {\n if(columns == null) {\n return Promise.reject(new Error(\"This should never happen: Vector cannot be initialized by a matrix\"));\n }\n const $matrix = this.evaluateMatrix(store, exp, type, lines, columns);\n return Promise.all($matrix).then(vectorList => {\n const values = vectorList.reduce((prev, next) => prev.concat(next), []);\n return Promise.resolve(values);\n });\n } else {\n if(columns != null) {\n return Promise.reject(new Error(\"This should never happen: Matrix cannot be initialized by a vector\"));\n }\n return this.evaluateVector(store, exp, type, lines).then(list => {\n return Promise.resolve(list);\n });\n }\n }\n\n /**\n * Evalautes a list of literals and expression composing the vector\n * @param {Store} store \n * @param {Expressions.ArrayLiteral} exps \n * @param {ArrayType} type\n * @param {number} n_elements\n * @returns {Promise<StoreValue[]>} store object list\n */\n evaluateVector (store, exps, type, n_elements) {\n const values = exps.value;\n if(n_elements !== values.length) {\n return Promise.reject(ProcessorErrorFactory.invalid_number_elements_vector(n_elements, exps.toString(), values.length, exps.sourceInfo));\n }\n const actual_values = Promise.all(values.map( exp => this.evaluateExpression(store, exp)));\n return actual_values.then( values => {\n return values.map((v, index) => {\n if(!type.canAccept(v.type, 1)) {\n if (!Config.enable_type_casting || !Store.canImplicitTypeCast(type.innerType, v.type)) {\n // const stringInfo = v.type.stringInfo();\n // const info = stringInfo[0];\n const exp_str = values[index].toString();\n // TODO - fix error message\n return Promise.reject(ProcessorErrorFactory.invalid_array_literal_type_full(exp_str, values[index].sourceInfo));\n }\n const new_value = Store.doImplicitCasting(type.innerType, v);\n return new_value;\n }\n return v;\n });\n });\n }\n\n /**\n * Evaluates a list of array literals composing the matrix\n * @param {Store} store \n * @param {Expressions.ArrayLiteral} exps \n * @param {ArrayType} type\n * @returns {Promise<StoreValue[]>[]}\n */\n evaluateMatrix (store, exps, type, lines, columns) {\n const values = exps.value;\n if(values.length !== lines) {\n return Promise.reject(ProcessorErrorFactory.invalid_number_lines_matrix(lines,exps.toString(),values.length, exps.sourceInfo));\n }\n return values.map( vector => {\n const vec_type = new ArrayType(type.innerType, 1);\n return this.evaluateVector(store, vector, vec_type, columns);\n });\n }\n\n evaluateLiteral (_, exp) {\n return Promise.resolve(new StoreValue(exp.type, exp.value));\n }\n\n evaluateVariableLiteral (store, exp) {\n try {\n const val = store.applyStore(exp.id);\n return Promise.resolve(val);\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n evaluateArrayAccess (store, exp) {\n const mustBeArray = store.getStoreObject(exp.id);\n if (!(mustBeArray.type instanceof ArrayType)) {\n return Promise.reject(ProcessorErrorFactory.invalid_array_access_full(exp.id, exp.sourceInfo));\n }\n const $line = this.evaluateExpression(store, exp.line);\n const $column = this.evaluateExpression(store, exp.column);\n return Promise.all([$line, $column]).then(([line_sv, column_sv]) => {\n if(!Types.INTEGER.isCompatible(line_sv.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(exp.sourceInfo));\n }\n const line = line_sv.get().toNumber();\n let column = null;\n if(column_sv !== null) {\n if(!Types.INTEGER.isCompatible(column_sv.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(exp.sourceInfo));\n }\n column = column_sv.get().toNumber();\n }\n\n if (line >= mustBeArray.lines) {\n if(mustBeArray.isVector) {\n return Promise.reject(ProcessorErrorFactory.vector_line_outbounds_full(exp.id, line, mustBeArray.lines, exp.sourceInfo));\n } else {\n return Promise.reject(ProcessorErrorFactory.matrix_line_outbounds_full(exp.id, line, mustBeArray.lines, exp.sourceInfo));\n }\n } else if (line < 0) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_positive_full(exp.sourceInfo));\n }\n if (column !== null && mustBeArray.columns === 0 ){\n return Promise.reject(ProcessorErrorFactory.vector_not_matrix_full(exp.id, exp.sourceInfo));\n }\n if(column !== null ) {\n if (column >= mustBeArray.columns) {\n return Promise.reject(ProcessorErrorFactory.matrix_column_outbounds_full(exp.id, column,mustBeArray.columns, exp.sourceInfo));\n } else if (column < 0) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_positive_full(exp.sourceInfo));\n }\n }\n const result = mustBeArray.getAt(line, column);\n const type = mustBeArray.type.innerType;\n if(Array.isArray(result)) {\n const values = result.map((v, c) => {\n return new StoreValueAddress(type, v, line, c, mustBeArray.id, mustBeArray.readOnly);\n });\n return Promise.resolve(new ArrayStoreValue(new ArrayType(type, 1),\n values, mustBeArray.columns, null, mustBeArray.id, mustBeArray.readOnly))\n } else {\n return Promise.resolve(new StoreValueAddress(type, result, line, column, mustBeArray.id, mustBeArray.readOnly));\n }\n });\n }\n\n evaluateUnaryApp (store, unaryApp) {\n const $left = this.evaluateExpression(store, unaryApp.left);\n return $left.then( left => {\n const resultType = resultTypeAfterUnaryOp(unaryApp.op, left.type);\n if (Types.UNDEFINED.isCompatible(resultType)) {\n const stringInfo = left.type.stringInfo();\n const info = stringInfo[0];\n return Promise.reject(ProcessorErrorFactory.invalid_unary_op_full(unaryApp.op, info.type, info.dim, unaryApp.sourceInfo));\n }\n switch (unaryApp.op.ord) {\n case Operators.ADD.ord:\n return new StoreValue(resultType, left.get());\n case Operators.SUB.ord:\n return new StoreValue(resultType, left.get().negated());\n case Operators.NOT.ord:\n return new StoreValue(resultType, !left.get());\n default:\n return Promise.reject(new RuntimeError('!!!Critical Invalid UnaryApp '+ unaryApp.op));\n }\n });\n }\n\n evaluateInfixApp (store, infixApp) {\n const $left = this.evaluateExpression(store, infixApp.left);\n const $right = this.evaluateExpression(store, infixApp.right);\n return Promise.all([$left, $right]).then(values => {\n let shouldImplicitCast = false;\n const left = values[0];\n const right = values[1];\n let resultType = resultTypeAfterInfixOp(infixApp.op, left.type, right.type);\n if (Types.UNDEFINED.isCompatible(resultType)) {\n if (Config.enable_type_casting && Store.canImplicitTypeCast(left.type, right.type)) {\n shouldImplicitCast = true;\n } else {\n const stringInfoLeft = left.type.stringInfo();\n const infoLeft = stringInfoLeft[0];\n const stringInfoRight = right.type.stringInfo();\n const infoRight = stringInfoRight[0];\n return Promise.reject(ProcessorErrorFactory.invalid_infix_op_full(infixApp.op, infoLeft.type, infoLeft.dim,\n infoRight.type,infoRight.dim,infixApp.sourceInfo));\n }\n }\n let result = null;\n switch (infixApp.op.ord) {\n case Operators.ADD.ord: {\n if(Types.STRING.isCompatible(left.type)) {\n const rightStr = convertToString(right.get(), right.type);\n return new StoreValue(resultType, (left.get() + rightStr));\n } else if (Types.STRING.isCompatible(right.type)) {\n const leftStr = convertToString(left.get(), left.type);\n return new StoreValue(resultType, (leftStr + right.get()));\n } else {\n return new StoreValue(resultType, (left.get().plus(right.get())));\n }\n }\n case Operators.SUB.ord:\n return new StoreValue(resultType, (left.get().minus(right.get())));\n case Operators.MULT.ord: {\n result = left.get().times(right.get());\n return new StoreValue(resultType, result);\n }\n case Operators.DIV.ord: {\n if(right.get() == 0) {\n return Promise.reject(ProcessorErrorFactory.divsion_by_zero_full(infixApp.toString(), infixApp.sourceInfo));\n }\n if (Types.INTEGER.isCompatible(resultType))\n result = left.get().divToInt(right.get());\n else\n result = left.get().div(right.get());\n return new StoreValue(resultType, (result));\n }\n case Operators.MOD.ord: {\n let leftValue = left.get();\n let rightValue = right.get();\n if(shouldImplicitCast) {\n resultType = Types.INTEGER;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.modulo(rightValue);\n return new StoreValue(resultType, (result));\n } \n case Operators.GT.ord: {\n let leftValue = left.get();\n let rightValue = right.get();\n if (Types.STRING.isCompatible(left.type)) {\n result = leftValue.length > rightValue.length;\n } else {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.gt(rightValue);\n }\n return new StoreValue(resultType, result);\n }\n case Operators.GE.ord: {\n let leftValue = left.get();\n let rightValue = right.get();\n if (Types.STRING.isCompatible(left.type)) {\n result = leftValue.length >= rightValue.length;\n } else {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.gte(rightValue);\n }\n return new StoreValue(resultType, result);\n }\n case Operators.LT.ord: {\n let leftValue = left.get();\n let rightValue = right.get();\n if (Types.STRING.isCompatible(left.type)) {\n result = leftValue.length < rightValue.length;\n } else {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.lt(rightValue);\n }\n return new StoreValue(resultType, (result));\n }\n case Operators.LE.ord: {\n let leftValue = left.get();\n let rightValue = right.get();\n if (Types.STRING.isCompatible(left.type)) {\n result = leftValue.length <= rightValue.length;\n } else {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.lte(rightValue);\n }\n return new StoreValue(resultType, result);\n }\n case Operators.EQ.ord: {\n let leftValue = left.get();\n let rightValue = right.get();\n if (Types.INTEGER.isCompatible(left.type) || Types.REAL.isCompatible(left.type)) {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.eq(rightValue);\n } else {\n result = leftValue === rightValue;\n }\n return new StoreValue(resultType, result);\n }\n case Operators.NEQ.ord: {\n let leftValue = left.get();\n let rightValue = right.get();\n if (Types.INTEGER.isCompatible(left.type) || Types.REAL.isCompatible(left.type)) {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = !leftValue.eq(rightValue);\n } else {\n result = leftValue !== rightValue;\n }\n return new StoreValue(resultType, result);\n }\n case Operators.AND.ord:\n return new StoreValue(resultType, (left.get() && right.get()));\n case Operators.OR.ord:\n return new StoreValue(resultType, (left.get() || right.get()));\n default:\n return Promise.reject(new RuntimeError('!!!Critical Invalid InfixApp '+ infixApp.op));\n }\n });\n }\n\n}","import * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport { toInt } from \"./../../typeSystem/parsers\";\nimport { ArrayType } from '../../typeSystem/array_type';\nimport { Modes } from '../modes';\nimport { StoreValue } from '../store/value/store_value';\n\n/**\n * num_elements\n * matrix_lines\n * matrix_columns\n */\n\nexport function createNumElementsFun () {\n const numElementsFun = (sto, _) => {\n const vector = sto.applyStore(\"vector\");\n const temp = new StoreValue(Types.INTEGER, toInt(vector.lines));\n sto.mode = Modes.RETURN;\n sto.insertStore(\"$\", temp);\n return Promise.resolve(sto);\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(numElementsFun)]);\n const func = new Commands.Function('$numElements', Types.INTEGER,\n [new Commands.FormalParameter(new ArrayType(Types.ALL, 1), 'vector', false)],\n block);\n return func;\n }\n\nexport function createMatrixLinesFun () {\n const matrixLinesFun = (sto, _) => {\n const matrix = sto.applyStore(\"matrix\");\n const temp = new StoreValue(Types.INTEGER, toInt(matrix.lines));\n sto.mode = Modes.RETURN;\n sto.insertStore(\"$\", temp);\n return Promise.resolve(sto);\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(matrixLinesFun)]);\n const func = new Commands.Function('$matrixLines', Types.INTEGER,\n [new Commands.FormalParameter(new ArrayType(Types.ALL, 2), 'matrix', false)],\n block);\n return func;\n }\n\nexport function createMatrixColumnsFun () {\n const matrixColumnsFun = (sto, _) => {\n const matrix = sto.applyStore(\"matrix\");\n const temp = new StoreValue(Types.INTEGER, toInt(matrix.columns));\n sto.mode = Modes.RETURN;\n sto.insertStore(\"$\", temp);\n return Promise.resolve(sto);\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(matrixColumnsFun)]);\n const func = new Commands.Function('$matrixColumns', Types.INTEGER,\n [new Commands.FormalParameter(new ArrayType(Types.ALL, 2), 'matrix', false)],\n block);\n return func;\n }\n ","import * as Commands from './../../ast/commands';\nimport { Modes } from '../modes';\nimport {toInt, toString, toBool, toReal, convertToString} from './../../typeSystem/parsers';\nimport { Types } from './../../typeSystem/types';\nimport { ProcessorErrorFactory } from \"./../error/processorErrorFactory\";\nimport { StoreValue } from '../store/value/store_value';\n\nexport function createOutputFun () {\n const writeFunction = function (store, _) {\n const val = store.applyStore('p1');\n this.output.sendOutput(convertToString(val.get(), val.type));\n store.mode = Modes.RETURN;\n return Promise.resolve(store);\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(writeFunction)]);\n const func = new Commands.Function('$write', Types.VOID,\n [new Commands.FormalParameter(Types.ALL, 'p1', false)],\n block);\n return func;\n}\n\nexport function createInputFun () {\n const readFunction = function (store, _) {\n const request = new Promise((resolve, _) => {\n this.input.requestInput(resolve);\n });\n return request.then(text => {\n const typeToConvert = store.applyStore('p1').type;\n let type = null\n let result = null;\n try {\n if (typeToConvert.isCompatible(Types.INTEGER)) {\n result = toInt(text).trunc();\n type = Types.INTEGER;\n } else if (typeToConvert.isCompatible(Types.REAL)) {\n result = toReal(text)\n type = Types.REAL;\n } else if (typeToConvert.isCompatible(Types.BOOLEAN)) {\n result = toBool(text)\n type = Types.BOOLEAN;\n } else if (typeToConvert.isCompatible(Types.STRING)) {\n result = toString(text)\n type = Types.STRING;\n } else {\n return Promise.reject(new Error(\"!!!!Critical error: Unknown type in readFunction!!!!\"));\n }\n } catch (_) {\n if(this.mode == Modes.ABORT) {\n store.mode = Modes.RETURN;\n return Promise.resolve(store);\n }\n const stringInfo = typeToConvert.stringInfo()[0]\n const realObject = store.getStoreObject(\"p1\");\n if (realObject.getReferenceDimension() > 0) {\n const arrayInfo = realObject.type.stringInfo()[0];\n const dim = realObject.getReferenceDimension();\n const error = ProcessorErrorFactory.invalid_read_type_array(text, stringInfo.type, stringInfo.dim, realObject.getRefObj(), arrayInfo.type, dim, this.function_call_stack.pop());\n return Promise.reject(error);\n }\n const error = ProcessorErrorFactory.invalid_read_type(text, stringInfo.type, stringInfo.dim, realObject.getRefObj(), this.function_call_stack.pop());\n return Promise.reject(error);\n }\n const stoValue = new StoreValue(type, result);\n store.updateStore('p1', stoValue);\n store.mode = Modes.RETURN;\n return Promise.resolve(store);\n });\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(readFunction)]);\n const func = new Commands.Function('$read', Types.VOID,\n [new Commands.FormalParameter(Types.ALL, 'p1', true)],\n block);\n return func;\n}","import * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport { toReal, convertToString } from \"./../../typeSystem/parsers\";\nimport { IVProgParser } from '../../ast/ivprogParser';\nimport { RealLiteral, IntLiteral, BoolLiteral } from '../../ast/expressions';\nimport { Modes } from '../modes';\nimport { MultiType } from '../../typeSystem/multiType';\nimport { ProcessorErrorFactory } from '../error/processorErrorFactory';\nimport { StoreValue } from '../store/value/store_value';\n\n/**\n * \n * is_real\n * is_int\n * is_bool\n * cast_real\n * cast_int\n * cast_bool\n * cast_string\n */\n\nexport function createIsRealFun () {\n const isRealFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const parser = IVProgParser.createParser(str.get());\n let result = false;\n try {\n const val = parser.parseTerm();\n if (val instanceof RealLiteral) {\n result = true;\n }\n } catch (error) {\n // ignore\n }\n const temp = new StoreValue(Types.BOOLEAN, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(isRealFun)]);\n const func = new Commands.Function('$isReal', Types.BOOLEAN,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createIsIntFun () {\n const isIntFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const parser = IVProgParser.createParser(str.get());\n let result = false;\n try {\n const val = parser.parseTerm();\n if (val instanceof IntLiteral) {\n result = true;\n }\n } catch { \n // ignore\n }\n const temp = new StoreValue(Types.BOOLEAN, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(isIntFun)]);\n const func = new Commands.Function('$isInt', Types.BOOLEAN,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createIsBoolFun () {\n const isBoolFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const parser = IVProgParser.createParser(str.get());\n let result = false;\n try {\n const val = parser.parseTerm();\n if (val instanceof BoolLiteral) {\n result = true;\n }\n } catch (error) { \n // ignore\n }\n const temp = new StoreValue(Types.BOOLEAN, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(isBoolFun)]);\n const func = new Commands.Function('$isBool', Types.BOOLEAN,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createCastRealFun () {\n const castRealFun = (sto, _) => {\n const val = sto.applyStore(\"val\");\n let value = val.get();\n switch (val.type.ord) {\n case Types.INTEGER.ord: {\n value = value.toNumber();\n const temp = new StoreValue(Types.REAL, toReal(value));\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n }\n case Types.STRING.ord: {\n const parser = IVProgParser.createParser(value);\n try {\n const result = parser.parseTerm();\n if (result instanceof RealLiteral) {\n const temp = new StoreValue(Types.REAL, result.value);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n }\n } catch (error) {\n // ignore\n }\n }\n }\n const typeStringInfoArray = Types.REAL.stringInfo();\n const typeInfo = typeStringInfoArray[0];\n return Promise.reject(ProcessorErrorFactory.invalid_type_conversion(value, typeInfo.type, typeInfo.dim));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(castRealFun)]);\n const func = new Commands.Function('$castReal', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.STRING]), 'val', false)],\n block);\n return func;\n}\n\nexport function createCastIntFun () {\n const castIntFun = (sto, _) => {\n const val = sto.applyStore(\"val\");\n let value = val.get();\n switch (val.type.ord) {\n case Types.REAL.ord: {\n value = value.toNumber();\n const temp = new StoreValue(Types.INTEGER, Math.floor(value));\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n }\n case Types.STRING.ord: {\n const parser = IVProgParser.createParser(value);\n try {\n const result = parser.parseTerm();\n if (result instanceof IntLiteral) {\n const temp = new StoreValue(Types.INTEGER, result.value);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n }\n } catch (error) { \n // ignore\n }\n }\n }\n const typeStringInfoArray = Types.INTEGER.stringInfo();\n const typeInfo = typeStringInfoArray[0];\n return Promise.reject(ProcessorErrorFactory.invalid_type_conversion(value, typeInfo.type, typeInfo.dim));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(castIntFun)]);\n const func = new Commands.Function('$castInt', Types.INTEGER,\n [new Commands.FormalParameter(new MultiType([Types.REAL, Types.STRING]), 'val', false)],\n block);\n return func;\n}\n\nexport function createCastBoolFun () {\n const castBoolFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const value = str.get(); \n const parser = IVProgParser.createParser(value);\n try {\n const val = parser.parseTerm();\n if (val instanceof BoolLiteral) {\n const temp = new StoreValue(Types.BOOLEAN, val.value);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n }\n } catch (error) { \n // ignore\n }\n const typeStringInfoArray = Types.BOOLEAN.stringInfo();\n const typeInfo = typeStringInfoArray[0];\n return Promise.reject(ProcessorErrorFactory.invalid_type_conversion(value, typeInfo.type, typeInfo.dim));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(castBoolFun)]);\n const func = new Commands.Function('$castBool', Types.BOOLEAN,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createCastStringFun () {\n const castStringFun = function (store, _) {\n const val = store.applyStore('str');\n const result = convertToString(val.get(), val.type);\n const temp = new StoreValue(Types.STRING, result);\n store.insertStore(\"$\", temp);\n store.mode = Modes.RETURN;\n return Promise.resolve(store);\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(castStringFun)]);\n const func = new Commands.Function('$castString', Types.STRING,\n [new Commands.FormalParameter(Types.ALL, 'str', false)],\n block);\n return func;\n}","import * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport { toReal } from \"./../../typeSystem/parsers\";\nimport { Decimal } from 'decimal.js';\nimport { MultiType } from '../../typeSystem/multiType';\nimport { ArrayType } from '../../typeSystem/array_type';\nimport { Modes } from '../modes';\nimport { StoreValue } from '../store/value/store_value';\nimport { ProcessorErrorFactory } from '../error/processorErrorFactory';\n\n/**\n * sin\n * cos\n * tan\n * sqrt\n * pow\n * log\n * abs\n * negate\n * invert\n * max\n * min\n */\n\nfunction convertToRadians (degrees) {\n return degrees.times(Decimal.acos(-1)).div(180);\n}\n\nexport function createSinFun () {\n const sinFun = (sto, _) => {\n const x = sto.applyStore('x');\n const angle = x.get().mod(360);\n let result = null;\n if(angle.eq(90)) {\n result = new Decimal(1);\n } else if (angle.eq(180)) {\n result = new Decimal(0);\n } else if (angle.eq(270)) {\n result = new Decimal(-1);\n } else {\n result = Decimal.sin(convertToRadians(angle));\n }\n const temp = new StoreValue(Types.REAL, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(sinFun)]);\n const func = new Commands.Function('$sin', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createCosFun () {\n const cosFun = (sto, _) => {\n const x = sto.applyStore('x');\n const angle = x.get().mod(360);\n let result = null;\n if(angle.eq(90)) {\n result = new Decimal(0);\n } else if (angle.eq(180)) {\n result = new Decimal(-1);\n } else if (angle.eq(270)) {\n result = new Decimal(0)\n }\n result = Decimal.cos(convertToRadians(angle));\n const temp = new StoreValue(Types.REAL, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(cosFun)]);\n const func = new Commands.Function('$cos', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createTanFun () {\n const tanFun = function (sto, _) {\n const x = sto.applyStore('x');\n const angle = x.get().mod(360);\n if(angle.eq(90) || angle.eq(270)) {\n return Promise.reject(ProcessorErrorFactory.undefined_tanget_value(x.get().toNumber(), this.function_call_stack.pop()));\n }\n const result = Decimal.tan(convertToRadians(angle));\n const temp = new StoreValue(Types.REAL, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(tanFun)]);\n const func = new Commands.Function('$tan', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createSqrtFun () {\n const sqrtFun = function (sto, _) {\n const x = sto.applyStore('x');\n if(x.get().isNeg()) {\n return Promise.reject(ProcessorErrorFactory.negative_sqrt_value(this.function_call_stack.pop()));\n }\n const result = x.get().sqrt();\n const temp = new StoreValue(Types.REAL, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(sqrtFun)]);\n const func = new Commands.Function('$sqrt', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createPowFun () {\n const powFun = (sto, _) => {\n const x = sto.applyStore('x');\n const y = sto.applyStore('y');\n const result = x.get().pow(y.get());\n const temp = new StoreValue(Types.REAL, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(powFun)]);\n const func = new Commands.Function('$pow', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false),\n new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'y', false)],\n block);\n return func;\n}\n\nexport function createLogFun () {\n const logFun = function (sto, _) {\n const x = sto.applyStore('x');\n if (x.get().isNegative()) {\n return Promise.reject(ProcessorErrorFactory.negative_log_value(this.function_call_stack.pop()));\n }\n const result = Decimal.log10(x.get());\n const temp = new StoreValue(Types.REAL, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(logFun)]);\n const func = new Commands.Function('$log', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createAbsFun () {\n const absFun = (sto, _) => {\n const x = sto.applyStore('x');\n const result = x.get().abs();\n const temp = new StoreValue(x.type, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(absFun)]);\n const func = new Commands.Function('$abs', new MultiType([Types.INTEGER, Types.REAL]),\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createNegateFun () {\n const negateFun = (sto, _) => {\n const x = sto.applyStore('x');\n const result = x.get().negated();\n const temp = new StoreValue(x.type, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(negateFun)]);\n const func = new Commands.Function('$negate', new MultiType([Types.INTEGER, Types.REAL]),\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createInvertFun () {\n const invertFun = (sto, _) => {\n const x = sto.applyStore('x');\n const result = toReal(1).dividedBy(x.get());\n const temp = new StoreValue(Types.REAL, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(invertFun)]);\n const func = new Commands.Function('$invert', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createMaxFun () {\n const maxFun = (sto, _) => {\n const x = sto.applyStore('x');\n const numbers = x.get().map(sto_addrs => sto_addrs.get());\n const result = Decimal.max(...numbers);\n const temp = new StoreValue(x.type.innerType, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n };\n const paramType = new ArrayType(new MultiType([Types.INTEGER, Types.REAL]), 1);\n const block = new Commands.CommandBlock([], [new Commands.SysCall(maxFun)]);\n const func = new Commands.Function('$max', new MultiType([Types.INTEGER, Types.REAL]),\n [new Commands.FormalParameter(paramType, 'x', false)],\n block);\n return func;\n}\n\nexport function createMinFun () {\n const minFun = (sto, _) => {\n const x = sto.applyStore('x');\n const numbers = x.get().map(sto_addrs => sto_addrs.get());\n const result = Decimal.min(...numbers);\n const temp = new StoreValue(x.type.innerType, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n };\n const paramType = new ArrayType(new MultiType([Types.INTEGER, Types.REAL]), 1);\n const block = new Commands.CommandBlock([], [new Commands.SysCall(minFun)]);\n const func = new Commands.Function('$min', new MultiType([Types.INTEGER, Types.REAL]),\n [new Commands.FormalParameter(paramType, 'x', false)],\n block);\n return func;\n}\n\nexport function createRandFun () {\n const randFun = (sto, _) => {\n const val = Math.random();\n const temp = new StoreValue(Types.REAL, new Decimal(val));\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n };\n const block = new Commands.CommandBlock([], [new Commands.SysCall(randFun)]);\n const func = new Commands.Function('$rand', Types.REAL, [], block);\n return func;\n}\n","import * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport { toInt } from \"./../../typeSystem/parsers\";\nimport { Modes } from '../modes';\nimport { StoreValue } from '../store/value/store_value';\nimport { ProcessorErrorFactory } from '../error/processorErrorFactory';\n\n/*\n* substring\n* length\n* uppercase\n* lowercase\n* charAt\n**/\n\nexport function createSubstringFun () {\n const substringFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const start = sto.applyStore(\"start\");\n const end = sto.applyStore(\"end\");\n const result = str.get().substring(start.get(), end.get());\n const temp = new StoreValue(Types.STRING, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(substringFun)]);\n const func = new Commands.Function('$substring', Types.STRING,\n [new Commands.FormalParameter(Types.STRING, 'str', false),\n new Commands.FormalParameter(Types.INTEGER, 'start', false),\n new Commands.FormalParameter(Types.INTEGER, 'end', false)],\n block);\n return func;\n}\n\nexport function createLengthFun () {\n const lengthFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const temp = new StoreValue(Types.INTEGER, toInt(str.value.length));\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(lengthFun)]);\n const func = new Commands.Function('$length', Types.INTEGER,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createUppercaseFun () {\n const uppercaseFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const temp = new StoreValue(Types.STRING, str.get().toUpperCase());\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(uppercaseFun)]);\n const func = new Commands.Function('$uppercase', Types.STRING,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createLowercaseFun () {\n const lowercaseFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const temp = new StoreValue(Types.STRING, str.get().toLowerCase());\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(lowercaseFun)]);\n const func = new Commands.Function('$lowercase', Types.STRING,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createrCharAtFun () {\n const charAtFun = function (sto, _) {\n const str = sto.applyStore(\"str\");\n const idx = sto.applyStore(\"index\");\n if (idx.get().toNumber() < 0 || idx.get().toNumber() >= str.get().length) {\n return Promise.reject(ProcessorErrorFactory.invalid_string_index(idx.get().toNumber(), str.get(), this.function_call_stack.pop()));\n }\n const temp = new StoreValue(Types.STRING, str.get().charAt(idx.get().toNumber()));\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(charAtFun)]);\n const func = new Commands.Function('$charAt', Types.STRING,\n [new Commands.FormalParameter(Types.STRING, 'str', false),\n new Commands.FormalParameter(Types.INTEGER, 'index', false)],\n block);\n return func;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Modes = Object.freeze({\n RETURN: Symbol('mode:return'),\n BREAK: Symbol('mode:break'),\n PAUSE: Symbol('mode:pause'),\n RUN: Symbol('mode:run'),\n ABORT: Symbol('mode:abort')\n});\n","import { ProcessorErrorFactory } from './../error/processorErrorFactory';\nimport { LanguageDefinedFunction } from './../definedFunctions';\nimport { LanguageService } from './../../services/languageService';\nimport { ArrayDeclaration, While, For, Switch, Assign, Break, IfThenElse, Return, ArrayIndexAssign } from '../../ast/commands';\nimport { InfixApp, UnaryApp, FunctionCall, IntLiteral, RealLiteral, StringLiteral, BoolLiteral, VariableLiteral, ArrayAccess } from '../../ast/expressions';\nimport { Literal } from '../../ast/expressions/literal';\nimport { resultTypeAfterInfixOp, resultTypeAfterUnaryOp } from '../compatibilityTable';\nimport { Types } from '../../typeSystem/types';\nimport { ArrayType } from '../../typeSystem/array_type';\nimport { MultiType } from '../../typeSystem/multiType';\nimport { Config } from '../../util/config';\nimport { Store } from '../store/store';\nimport { IVProgParser } from '../../ast/ivprogParser';\n\nexport class SemanticAnalyser {\n\n static analyseFromSource (stringCode) {\n const parser = IVProgParser.createParser(stringCode);\n const semantic = new SemanticAnalyser(parser.parseTree());\n return semantic.analyseTree();\n }\n\n constructor(ast) {\n this.ast = ast;\n this.lexerClass = LanguageService.getCurrentLexer();\n const lexer = new this.lexerClass(null);\n this.literalNames = lexer.literalNames;\n this.symbolMap = null;\n this.currentFunction = null;\n }\n\n pushMap () {\n if(this.symbolMap === null) {\n this.symbolMap = {map:{}, next: null};\n } else {\n const n = {map:{}, next: this.symbolMap};\n this.symbolMap = n;\n }\n }\n\n popMap () {\n if(this.symbolMap !== null) {\n this.symbolMap = this.symbolMap.next;\n }\n }\n\n insertSymbol (id, typeInfo) {\n this.symbolMap.map[id] = typeInfo;\n }\n\n findSymbol (id, symbol_map) {\n if(!symbol_map.map[id]) {\n if(symbol_map.next) {\n return this.findSymbol(id, symbol_map.next);\n }\n return null;\n } else {\n return symbol_map.map[id];\n }\n }\n\n getMainFunction () {\n return this.ast.functions.find(v => v.isMain);\n }\n\n findFunction (name) {\n if(name.match(/^\\$.+$/)) {\n const fun = LanguageDefinedFunction.getFunction(name);\n if(!fun) {\n throw ProcessorErrorFactory.not_implemented(name);\n }\n return fun;\n } else {\n const val = this.ast.functions.find( v => v.name === name);\n if (!val) {\n return null;\n }\n return val;\n }\n }\n\n analyseTree () {\n const globalVars = this.ast.global;\n this.pushMap();\n this.assertDeclarations(globalVars);\n const functions = this.ast.functions;\n const mainFunc = functions.filter((f) => f.name === null);\n if (mainFunc.length <= 0) {\n throw ProcessorErrorFactory.main_missing();\n }\n for (let i = 0; i < functions.length; i++) {\n const fun = functions[i];\n this.assertFunction(fun);\n }\n return this.ast;\n }\n\n assertDeclarations (list) {\n for (let i = 0; i < list.length; i++) {\n this.assertDeclaration(list[i]);\n }\n }\n\n assertDeclaration (declaration) {\n if (declaration instanceof ArrayDeclaration) {\n this.assertArrayDeclaration(declaration);\n this.insertSymbol(declaration.id, {id: declaration.id, lines: declaration.lines,\n columns: declaration.columns, type: declaration.type, isConst: declaration.isConst});\n\n } else {\n if(declaration.initial === null) {\n this.insertSymbol(declaration.id, {id: declaration.id, type: declaration.type, isConst: declaration.isConst});\n return;\n }\n const resultType = this.evaluateExpressionType(declaration.initial);\n if(resultType instanceof MultiType) {\n if(!resultType.isCompatible(declaration.type)) {\n const stringInfo = declaration.type.stringInfo();\n const info = stringInfo[0];\n const result_string_info = resultType.stringInfo();\n const result_info = result_string_info[0];\n const exp = declaration.initial;\n throw ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, result_info.type, result_info.dim, exp.toString(), declaration.sourceInfo);\n }\n this.insertSymbol(declaration.id, {id: declaration.id, type: declaration.type, isConst: declaration.isConst})\n } else if((!declaration.type.isCompatible(resultType) && !Config.enable_type_casting)\n || (!declaration.type.isCompatible(resultType) && Config.enable_type_casting\n && !Store.canImplicitTypeCast(declaration.type, resultType))) {\n const stringInfo = declaration.type.stringInfo();\n const info = stringInfo[0];\n const result_string_info = resultType.stringInfo();\n const result_info = result_string_info[0];\n const exp = declaration.initial;\n throw ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, result_info.type, result_info.dim, exp.toString(), declaration.sourceInfo);\n } else {\n this.insertSymbol(declaration.id, {id: declaration.id, type: declaration.type, isConst: declaration.isConst});\n }\n }\n }\n\n assertArrayDeclaration (declaration) {\n if(declaration.initial === null) {\n const lineType = this.evaluateExpressionType(declaration.lines);\n if (!lineType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(declaration.sourceInfo);\n }\n if (declaration.columns !== null) {\n const columnType = this.evaluateExpressionType(declaration.columns);\n if (!columnType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(declaration.sourceInfo);\n }\n } \n } else {\n this.evaluateArrayLiteral(declaration);\n }\n this.insertSymbol(declaration.id, {id: declaration.id, lines: declaration.lines, columns: declaration.columns, type: declaration.type});\n return;\n }\n\n evaluateExpressionType (expression) {\n // TODO: Throw operator error in case type == UNDEFINED\n if(expression instanceof UnaryApp) {\n const op = expression.op;\n const resultType = this.evaluateExpressionType(expression.left);\n const finalResult = resultTypeAfterUnaryOp(op, resultType);\n if (Types.UNDEFINED.isCompatible(finalResult)) {\n const stringInfo = resultType.stringInfo();\n const info = stringInfo[0];\n const expString = expression.toString();\n throw ProcessorErrorFactory.invalid_unary_op_full(expString, op, info.type, info.dim, expression.sourceInfo);\n }\n return finalResult;\n } else if (expression instanceof InfixApp) {\n const op = expression.op;\n const resultTypeLeft = this.evaluateExpressionType(expression.left);\n const resultTypeRight = this.evaluateExpressionType(expression.right);\n const finalResult = resultTypeAfterInfixOp(op, resultTypeLeft, resultTypeRight);\n if (Types.UNDEFINED.isCompatible(finalResult)) {\n const stringInfoLeft = resultTypeLeft.stringInfo();\n const infoLeft = stringInfoLeft[0];\n const stringInfoRight = resultTypeRight.stringInfo();\n const infoRight = stringInfoRight[0];\n const expString = expression.toString();\n throw ProcessorErrorFactory.invalid_infix_op_full(expString,op, infoLeft.type, infoLeft.dim, infoRight.type, infoRight.dim, expression.sourceInfo);\n }\n return finalResult;\n } else if (expression instanceof Literal) {\n return this.evaluateLiteralType(expression);\n } else if (expression instanceof FunctionCall) {\n if (expression.isMainCall) {\n throw ProcessorErrorFactory.void_in_expression_full(LanguageDefinedFunction.getMainFunctionName(), expression.sourceInfo);\n }\n const fun = this.findFunction(expression.id);\n if(fun === null) {\n throw ProcessorErrorFactory.function_missing_full(expression.id, expression.sourceInfo);\n }\n if (fun.returnType.isCompatible(Types.VOID)) {\n throw ProcessorErrorFactory.void_in_expression_full(expression.id, expression.sourceInfo);\n }\n this.assertParameters(fun, expression.actualParameters);\n return fun.returnType;\n } else if (expression instanceof ArrayAccess) {\n const arrayTypeInfo = this.findSymbol(expression.id, this.symbolMap);\n if(arrayTypeInfo === null) {\n throw ProcessorErrorFactory.symbol_not_found_full(expression.id, expression.sourceInfo);\n }\n if (!(arrayTypeInfo.type instanceof ArrayType)) {\n throw ProcessorErrorFactory.invalid_array_access_full(expression.id, expression.sourceInfo);\n }\n const lineType = this.evaluateExpressionType(expression.line);\n if (!lineType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(expression.sourceInfo);\n }\n if (expression.column !== null) {\n if (arrayTypeInfo.columns === null) {\n throw ProcessorErrorFactory.invalid_matrix_access_full(expression.id, expression.sourceInfo);\n }\n const columnType = this.evaluateExpressionType(expression.column);\n if(!columnType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(expression.sourceInfo);\n }\n }\n const arrType = arrayTypeInfo.type;\n if(expression.column !== null) {\n // indexing matrix\n return arrType.innerType;\n } else {\n if(arrayTypeInfo.columns === null) {\n return arrType.innerType;\n }\n return new ArrayType(arrType.innerType, 1);\n }\n }\n }\n\n evaluateLiteralType (literal) {\n if(literal instanceof IntLiteral) {\n return literal.type;\n } else if (literal instanceof RealLiteral) {\n return literal.type;\n } else if (literal instanceof StringLiteral) {\n return literal.type;\n } else if (literal instanceof BoolLiteral) {\n return literal.type;\n } else if (literal instanceof VariableLiteral) {\n const typeInfo = this.findSymbol(literal.id, this.symbolMap);\n if(typeInfo === null) {\n throw ProcessorErrorFactory.symbol_not_found_full(literal.id, literal.sourceInfo);\n }\n if (typeInfo.type instanceof ArrayType) {\n return typeInfo.type;\n }\n return typeInfo.type;\n } else {\n // console.warn(\"Evaluating type only for an array literal...\");\n let last = null;\n if(literal.value.length === 1) {\n last = this.evaluateExpressionType(literal.value[0]);\n } else {\n for (let i = 0; i < literal.value.length; i++) {\n const e = this.evaluateExpressionType(literal.value[i]);\n if(last === null) {\n last = e;\n } else if(!last.isCompatible(e)) {\n const strInfo = last.stringInfo();\n const info = strInfo[0];\n const strExp = literal.toString();\n throw ProcessorErrorFactory.incompatible_types_array_full(strExp,info.type, info.dim, literal.sourceInfo);\n }\n }\n }\n if(last instanceof ArrayType) {\n return new ArrayType(last.innerType, last.dimensions + 1);\n }\n return new ArrayType(last, 1);\n }\n }\n\n evaluateArrayLiteral (arrayDeclaration) {\n const type = arrayDeclaration.type;\n const literal = arrayDeclaration.initial;\n // console.log(arrayDeclaration);\n if(arrayDeclaration.isVector) {\n this.evaluateVectorLiteralType(literal, type);\n } else {\n // TODO matrix type check\n for(let i = 0; i < literal.lines; ++i) {\n const line_literal = literal.value[i];\n this.evaluateVectorLiteralType(line_literal, new ArrayType(type.innerType, 1));\n }\n }\n return true;\n }\n\n assertFunction (fun) {\n this.pushMap();\n this.currentFunction = fun;\n fun.formalParameters.forEach(formalParam => {\n if(formalParam.type instanceof ArrayType) {\n if(formalParam.type.dimensions > 1) {\n this.insertSymbol(formalParam.id, {id: formalParam.id, lines: -1, columns: -1, type: formalParam.type});\n } else {\n this.insertSymbol(formalParam.id, {id: formalParam.id, lines: -1, columns: null, type: formalParam.type});\n }\n } else {\n this.insertSymbol(formalParam.id, {id: formalParam.id, type: formalParam.type});\n }\n })\n this.assertDeclarations(fun.variablesDeclarations);\n const optional = fun.returnType.isCompatible(Types.VOID);\n const valid = this.assertReturn(fun, optional);\n if (!valid) {\n throw ProcessorErrorFactory.function_no_return(fun.name);\n }\n this.popMap();\n }\n\n assertReturn (fun, optional) {\n return fun.commands.reduce(\n (last, next) => this.checkCommand(fun.returnType, next, optional) || last, optional\n );\n }\n\n checkCommand (type, cmd, optional) {\n if (cmd instanceof While) {\n const resultType = this.evaluateExpressionType(cmd.expression);\n if (!resultType.isCompatible(Types.BOOLEAN)) {\n throw ProcessorErrorFactory.loop_condition_type_full(cmd.expression.toString(), cmd.sourceInfo);\n }\n this.checkCommands(type, cmd.commands, optional);\n return false;\n } else if (cmd instanceof For) {\n const var_type = this.evaluateExpressionType(cmd.for_id);\n if (!var_type.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.invalid_for_variable(cmd.for_id, cmd.sourceInfo);\n }\n const from_type = this.evaluateExpressionType(cmd.for_from);\n if (!from_type.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.invalid_for_from(cmd.for_from, cmd.sourceInfo);\n }\n const to_type = this.evaluateExpressionType(cmd.for_to);\n if (!to_type.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.invalid_for_to(cmd.for_to, cmd.sourceInfo);\n }\n if (cmd.for_pass != null) {\n const pass_type = this.evaluateExpressionType(cmd.for_pass);\n if (!pass_type.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.invalid_for_pass(cmd.for_pass, cmd.sourceInfo);\n }\n }\n this.checkCommands(type, cmd.commands, optional);\n return false;\n } else if (cmd instanceof Switch) {\n const sType = this.evaluateExpressionType(cmd.expression);\n let result = optional;\n let hasDefault = false;\n for (let i = 0; i < cmd.cases.length; i++) {\n const aCase = cmd.cases[i];\n if (aCase.expression !== null) {\n const caseType = this.evaluateExpressionType(aCase.expression);\n if (!sType.isCompatible(caseType)) {\n const strInfo = sType.stringInfo();\n const info = strInfo[0];\n const strExp = aCase.expression.toString();\n throw ProcessorErrorFactory.invalid_case_type_full(strExp, info.type, info.dim, aCase.sourceInfo);\n }\n } else {\n hasDefault = true;\n }\n result = result && this.checkCommands(type, aCase.commands, result); \n }\n return result && hasDefault;\n\n } else if (cmd instanceof ArrayIndexAssign) {\n // TODO - rework!!!!!\n let used_dims = 0;\n const typeInfo = this.findSymbol(cmd.id, this.symbolMap);\n if(typeInfo === null) {\n throw ProcessorErrorFactory.symbol_not_found_full(cmd.id, cmd.sourceInfo);\n }\n if(typeInfo.isConst) {\n throw ProcessorErrorFactory.invalid_const_assignment_full(cmd.id, cmd.sourceInfo);\n }\n if(!(typeInfo.type instanceof ArrayType)) {\n throw ProcessorErrorFactory.invalid_array_access_full(cmd.id, cmd.sourceInfo);\n }\n const exp = cmd.expression;\n const lineExp = cmd.line;\n const lineType = this.evaluateExpressionType(lineExp);\n if (!lineType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo);\n }\n used_dims += 1;\n const columnExp = cmd.column;\n if (typeInfo.columns === null && columnExp !== null) {\n throw ProcessorErrorFactory.invalid_matrix_access_full(cmd.id, cmd.sourceInfo);\n } else if (columnExp !== null) {\n const columnType = this.evaluateExpressionType(columnExp);\n if (!columnType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo);\n }\n used_dims += 1;\n }\n // exp a single value exp or an array access\n const exp_type = this.evaluateExpressionType(exp);\n const access_type = typeInfo.type;\n\n let compatible = false;\n if(exp_type instanceof MultiType) {\n let type = access_type;\n if(access_type.dimensions - used_dims == 0) {\n type = access_type.innerType\n } else {\n type = new ArrayType(access_type.innerType, Math.max(0, access_type.dimensions - used_dims));\n }\n compatible = exp_type.isCompatible(type);\n } else {\n compatible = access_type.canAccept(exp_type, used_dims);\n }\n if(!compatible) {\n if(!Config.enable_type_casting || !Store.canImplicitTypeCast(access_type, exp_type)) {\n const access_type_string_info = access_type.stringInfo();\n const access_type_info = access_type_string_info[0];\n const exp_type_string_info = exp_type.stringInfo();\n const exp_type_info = exp_type_string_info[0];\n throw ProcessorErrorFactory.incompatible_types_full(access_type_info.type, access_type_info.dim - used_dims, exp_type_info.type, exp_type_info.dim, exp.toString(), cmd.sourceInfo);\n }\n }\n return optional;\n } else if (cmd instanceof Assign) {\n // TODO - rework since there is no literal array assignment\n const typeInfo = this.findSymbol(cmd.id, this.symbolMap);\n if(typeInfo === null) {\n throw ProcessorErrorFactory.symbol_not_found_full(cmd.id, cmd.sourceInfo);\n }\n if(typeInfo.isConst) {\n throw ProcessorErrorFactory.invalid_const_assignment_full(cmd.id, cmd.sourceInfo);\n }\n const exp = cmd.expression;\n const exp_type = this.evaluateExpressionType(exp);\n if(exp_type instanceof ArrayType) {\n if(!(typeInfo.type instanceof ArrayType)) {\n // TODO better error message\n throw new Error(\"Cannot assign an array to a non-array variable \");\n } \n // Both are arrays...\n // if both don't have same dimensions and type, cannot perform assignment\n if(!exp_type.isCompatible(typeInfo.type)) {\n if(exp_type.dimensions === typeInfo.type.dimensions && !exp_type.innerType.isCompatible(typeInfo.type.innerType)) {\n if(!Config.enable_type_casting || !Store.canImplicitTypeCast(typeInfo.type.innerType, exp_type.innerType)) {\n const stringInfo = typeInfo.type.stringInfo();\n const info = stringInfo[0];\n const exp_type_string_info = exp_type.stringInfo();\n const exp_type_info = exp_type_string_info[0];\n throw ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, exp_type_info.type, exp_type_info.dim, exp.toString(), cmd.sourceInfo);\n }\n } else {\n switch(exp_type.dimensions) {\n case 1: {\n throw ProcessorErrorFactory.vector_to_matrix_attr(cmd.id, exp.toString(),cmd.sourceInfo);\n }\n case 2: {\n throw ProcessorErrorFactory.matrix_to_vector_attr(cmd.id, exp.toString(),cmd.sourceInfo);\n }\n }\n }\n }\n } else if(!exp_type.isCompatible(typeInfo.type)) {\n if(!Config.enable_type_casting || !Store.canImplicitTypeCast(typeInfo.type, exp_type)) {\n const stringInfo = typeInfo.type.stringInfo();\n const info = stringInfo[0];\n const exp_type_string_info = exp_type.stringInfo();\n const exp_type_info = exp_type_string_info[0];\n throw ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, exp_type_info.type, exp_type_info.dim, exp.toString(), cmd.sourceInfo);\n }\n }\n return optional;\n } else if (cmd instanceof Break) {\n return optional;\n } else if (cmd instanceof IfThenElse) {\n const resultType = this.evaluateExpressionType(cmd.condition);\n if (!resultType.isCompatible(Types.BOOLEAN)) {\n throw ProcessorErrorFactory.if_condition_type_full(cmd.condition.toString(), cmd.sourceInfo);\n }\n if(cmd.ifFalse instanceof IfThenElse) {\n return this.checkCommands(type, cmd.ifTrue.commands, optional) && this.checkCommand(type, cmd.ifFalse, optional);\n } else if(cmd.ifFalse != null) {\n return this.checkCommands(type, cmd.ifTrue.commands, optional) && this.checkCommands(type, cmd.ifFalse.commands,optional);\n } else {\n return this.checkCommands(type, cmd.ifTrue.commands, optional);\n }\n\n } else if (cmd instanceof FunctionCall) {\n let fun = null;\n if (cmd.isMainCall) {\n fun = this.getMainFunction();\n } else {\n fun = this.findFunction(cmd.id);\n }\n if(fun === null) {\n throw ProcessorErrorFactory.function_missing_full(cmd.id, cmd.sourceInfo);\n }\n this.assertParameters(fun, cmd.actualParameters);\n return optional;\n } else if (cmd instanceof Return) {\n const funcName = this.currentFunction.isMain ? LanguageDefinedFunction.getMainFunctionName() : this.currentFunction.name\n if (cmd.expression === null && !type.isCompatible(Types.VOID)) {\n const stringInfo = type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.invalid_void_return_full(funcName, info.type, info.dim, cmd.sourceInfo);\n } else if (cmd.expression !== null) {\n const resultType = this.evaluateExpressionType(cmd.expression);\n if (!type.isCompatible(resultType)) {\n const stringInfo = type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.invalid_return_type_full(funcName, info.type, info.dim, cmd.sourceInfo);\n } else {\n return true;\n }\n } else {\n return true;\n }\n }\n }\n\n checkCommands (type, cmds, optional) {\n return cmds.reduce(\n (last, next) => this.checkCommand(type, next, optional) || last, optional\n );\n }\n\n assertParameters (fun, actualParametersList) {\n if (fun.formalParameters.length !== actualParametersList.length) {\n throw ProcessorErrorFactory.invalid_parameters_size_full(fun.name, actualParametersList.length, fun.formalParameters.length, null);\n }\n for (let i = 0; i < actualParametersList.length; ++i) {\n const param = actualParametersList[i];\n const formalParam = fun.formalParameters[i];\n // const id = formalParam.id;\n if(formalParam.byRef) {\n if(param instanceof VariableLiteral) {\n const variable = this.findSymbol(param.id, this.symbolMap);\n if (variable.isConst) {\n throw ProcessorErrorFactory.invalid_const_ref_full(fun.name, param.toString(), param.sourceInfo); \n }\n } else if (!(param instanceof VariableLiteral || param instanceof ArrayAccess)) {\n throw ProcessorErrorFactory.invalid_parameter_type_full(fun.name, param.toString(), param.sourceInfo);\n }\n }\n const resultType = this.evaluateExpressionType(param);\n if(resultType instanceof MultiType && formalParam.type instanceof MultiType) {\n let shared = 0\n for (let j = 0; j < resultType.types.length; ++j) {\n const element = resultType.types[j];\n if(formalParam.type.types.indexOf(element) !== -1) {\n shared += 1;\n }\n }\n if(shared <= 0) {\n if(Config.enable_type_casting && !formalParam.byRef) {\n if(resultType.isCompatible(Types.INTEGER) || resultType.isCompatible(Types.REAL)) {\n if(formalParam.type.isCompatible(Types.INTEGER) || formalParam.type.isCompatible(Types.REAL)) {\n continue;\n }\n }\n }\n throw ProcessorErrorFactory.invalid_parameter_type_full(fun.name, param.toString(), param.sourceInfo);\n }\n } else if (resultType instanceof MultiType) {\n if(!resultType.isCompatible(formalParam.type)) {\n if(Config.enable_type_casting && !formalParam.byRef) {\n if(resultType.isCompatible(Types.INTEGER) || resultType.isCompatible(Types.REAL)) {\n if(formalParam.type.isCompatible(Types.INTEGER) || formalParam.type.isCompatible(Types.REAL)) {\n continue;\n }\n }\n }\n throw ProcessorErrorFactory.invalid_parameter_type_full(fun.name, param.toString(), param.sourceInfo);\n }\n } else if(!formalParam.type.isCompatible(resultType)) {\n if(Config.enable_type_casting && !formalParam.byRef) {\n if (Store.canImplicitTypeCast(formalParam.type, resultType)) {\n continue;\n }\n }\n throw ProcessorErrorFactory.invalid_parameter_type_full(fun.name, param.toString(), param.sourceInfo);\n }\n\n }\n }\n\n evaluateVectorLiteralType (literal, type) {\n // console.log(literal);\n for(let i = 0; i < literal.value.length; i+=1) {\n const exp = literal.value[i];\n const expType = this.evaluateExpressionType(exp);\n let compatible = false;\n if(expType instanceof MultiType) {\n compatible = expType.isCompatible(type.innerType);\n } else {\n compatible = type.canAccept(expType, 1);\n }\n if(!compatible) {\n if(!Config.enable_type_casting || !Store.canImplicitTypeCast(type.innerType, expType)) {\n const stringInfo = type.stringInfo();\n const info = stringInfo[0];\n const result_string_info = expType.stringInfo();\n const result_info = result_string_info[0];\n throw ProcessorErrorFactory.incompatible_types_full(info.type, 0, result_info.type, result_info.dim, exp.toString(), literal.sourceInfo);\n }\n }\n }\n return type;\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst modes_1 = require(\"../modes\");\nconst types_1 = require(\"../../typeSystem/types\");\nconst storeObject_1 = require(\"./storeObject\");\nconst storeObjectRef_1 = require(\"./storeObjectRef\");\nconst array_type_1 = require(\"../../typeSystem/array_type\");\nconst array_store_value_1 = require(\"./value/array_store_value\");\nconst location_1 = require(\"../../memory/location\");\nconst storeObjectArray_1 = require(\"./storeObjectArray\");\nconst store_value_1 = require(\"./value/store_value\");\nconst store_value_address_1 = require(\"./value/store_value_address\");\nconst store_value_ref_1 = require(\"./value/store_value_ref\");\nconst array_store_value_ref_1 = require(\"./value/array_store_value_ref\");\nconst store_object_array_ref_1 = require(\"./store_object_array_ref\");\nclass Store {\n constructor(name) {\n this.name = name;\n this.store = new Map();\n this.mode = modes_1.Modes.RUN;\n }\n static canImplicitTypeCast(castType, sourceType) {\n if (castType.isCompatible(types_1.Types.INTEGER) || castType.isCompatible(types_1.Types.REAL)) {\n if (sourceType.isCompatible(types_1.Types.INTEGER) || sourceType.isCompatible(types_1.Types.REAL)) {\n return true;\n }\n }\n return false;\n }\n static doImplicitCasting(castType, stoObj) {\n if (!Store.canImplicitTypeCast(castType, stoObj.type)) {\n throw new Error(\"!!!Critical error: attempted to type cast invalid types\");\n }\n if (castType.isCompatible(types_1.Types.INTEGER)) {\n return new store_value_1.StoreValue(types_1.Types.INTEGER, stoObj.get().trunc());\n }\n else {\n return new store_value_1.StoreValue(types_1.Types.REAL, stoObj.get());\n }\n }\n extendStore(nextStore) {\n this.nextStore = nextStore;\n }\n applyStore(id) {\n if (!this.store.has(id)) {\n if (this.nextStore != null) {\n return this.nextStore.applyStore(id);\n }\n else {\n throw new Error(`Variable ${id} not found.`);\n }\n }\n const val = this.store.get(id);\n let result = null;\n if (val.type instanceof array_type_1.ArrayType) {\n const array = val;\n const array_type = array.type;\n let l = 0, c = 0;\n const values = array.value.map(v => {\n if (array.isVector) {\n return new store_value_address_1.StoreValueAddress(array_type.innerType, v, l++, undefined, array.id, array.readOnly);\n }\n else {\n if (c >= array.columns) {\n c = 0;\n l += 1;\n }\n return new store_value_address_1.StoreValueAddress(array_type.innerType, v, l, c++, array.id, array.readOnly);\n }\n });\n result = new array_store_value_1.ArrayStoreValue(array_type, values, array.lines, array.columns, val.id, val.readOnly);\n }\n else {\n result = new store_value_1.StoreValue(val.type, val.value, val.id, val.readOnly);\n }\n return result;\n }\n updateStore(id, stoValue) {\n if (!this.store.has(id)) {\n if (this.nextStore != null) {\n this.nextStore.updateStore(id, stoValue);\n return this;\n }\n else {\n // TODO: better error message\n throw new Error(`Variable ${id} not found.`);\n }\n }\n else {\n const oldObj = this.store.get(id);\n if (oldObj.readOnly) {\n // TODO: better error message\n throw new Error(\"Cannot change value of a read only variable: \" + id);\n }\n if (oldObj instanceof storeObjectArray_1.StoreObjectArray) {\n const array_value = stoValue;\n if (oldObj.isCompatible(array_value)) {\n if (oldObj.isVector) {\n array_value.get().forEach((val, index) => {\n oldObj.setAt(val, index, undefined);\n });\n }\n else {\n let line = 0;\n let column = 0;\n array_value.get().forEach((val) => {\n oldObj.setAt(val, line, column);\n column += 1;\n if (column >= oldObj.columns) {\n line += 1;\n column = 0;\n }\n });\n }\n return this;\n }\n }\n else if (oldObj.isCompatible(stoValue)) {\n const loc_address = oldObj.locAddress;\n location_1.Location.updateAddress(loc_address, stoValue.get());\n return this;\n }\n const oldType = oldObj.type;\n const stoType = stoValue.type;\n // TODO: better error message\n throw new Error(`${oldType.value} is not compatible with type ${stoType.value} given`);\n }\n }\n /**\n * Method used to update regions of an array (vector or matrix). The should only be used when update an specific\n * possition since it will only update the required addresses.\n * @param {string} id the variable id to be updated\n * @param {IStoreValue} sto_value the value to be used in the update process\n * @param {number} line the line address of the vector/matrix\n * @param {number} column the matrix column, which can be undefined\n */\n updateStoreArray(id, sto_value, line, column) {\n if (!this.store.has(id)) {\n if (this.nextStore != null) {\n this.nextStore.updateStoreArray(id, sto_value, line, column);\n return this;\n }\n else {\n // TODO: better error message\n throw new Error(`Variable ${id} not found.`);\n }\n }\n else {\n const oldObj = this.store.get(id);\n if (oldObj.readOnly) {\n // TODO: better error message\n throw new Error(\"Cannot change value of a read only variable: \" + id);\n }\n if (oldObj instanceof storeObjectArray_1.StoreObjectArray) {\n if (sto_value instanceof array_store_value_1.ArrayStoreValue) {\n // this must be a vector or matrix line update\n const actual_values = sto_value.get();\n if (oldObj.isVector && sto_value.isVector()) {\n for (let i = 0; i < sto_value.lines; i += 1) {\n const val = actual_values[i];\n oldObj.setAt(val, i, undefined);\n }\n }\n else if (!oldObj.isVector && column == null && sto_value.isVector()) {\n for (let i = 0; i < oldObj.columns; i += 1) {\n const val = actual_values[i];\n oldObj.setAt(val, line, i);\n }\n }\n else {\n // TODO: better error message\n throw new Error(`Attempting to assign an invalid value to array ${id}`);\n }\n }\n else {\n if (!oldObj.isVector && column == null) {\n // TODO: better error message\n throw new Error(`Attempting to assign an invalid value to array ${id}`);\n }\n oldObj.setAt(sto_value, line, column);\n }\n }\n else {\n throw new Error(\"Cannot update a non-array variable using updateStoreArray\");\n }\n // const oldType = oldObj.type;\n // const stoType = sto_value.type;\n // // TODO: better error message\n // throw new Error(`${oldType.value} is not compatible with type ${stoType.value} given`);\n return this;\n }\n }\n /**\n * Inserts a new variable into the Store. This method should be used when declaring a new variable,\n * including the special return variable $.\n * @param id variable id\n * @param stoValue the value to be used as the initial value of id\n */\n insertStore(id, stoValue) {\n if (this.store.has(id)) {\n // TODO: better error message\n throw new Error(`${id} is already defined`);\n }\n // TODO check for array....\n let newObj;\n if (stoValue instanceof store_value_ref_1.StoreValueRef) {\n newObj = new storeObjectRef_1.StoreObjectRef(stoValue);\n }\n else if (stoValue instanceof array_store_value_ref_1.ArrayStoreValueRef) {\n newObj = new store_object_array_ref_1.StoreObjectArrayRef(stoValue, stoValue.lines, stoValue.columns);\n }\n else if (stoValue instanceof array_store_value_1.ArrayStoreValue) {\n const columns = stoValue.isVector() ? 0 : stoValue.columns;\n const addresses = [];\n const all_values = stoValue.get();\n if (all_values.length > 0) {\n for (let i = 0; i < stoValue.get().length; i += 1) {\n const val = all_values[i].get();\n addresses.push(location_1.Location.allocate(val));\n }\n }\n else {\n let total = stoValue.lines;\n total = stoValue.isVector() ? total : total * columns;\n for (let i = 0; i < total; i += 1) {\n addresses.push(location_1.Location.allocate(null));\n }\n }\n newObj = new storeObjectArray_1.StoreObjectArray(stoValue.type, stoValue.lines, columns, addresses, stoValue.isConst);\n }\n else {\n const loc_address = location_1.Location.allocate(stoValue.get());\n newObj = new storeObject_1.StoreObject(stoValue.type, loc_address, stoValue.isConst);\n }\n newObj.setID(id);\n this.store.set(id, newObj);\n return this;\n }\n /**\n * Helper function similar to applyStore. But it returns the actual object in the store be it ref or not\n * applyStore will return the refferenced object if the object in the store is a ref\n */\n getStoreObject(id) {\n if (!this.store.has(id)) {\n if (this.nextStore != null) {\n return this.nextStore.getStoreObject(id);\n }\n else {\n throw new Error(`Variable ${id} not found.`);\n }\n }\n return this.store.get(id);\n }\n destroy() {\n this.store.forEach(sto => sto.destroy(), this);\n }\n}\nexports.Store = Store;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst location_1 = require(\"../../memory/location\");\nclass StoreObject {\n /**\n *\n * @param {Type} type\n * @param {Number} loc_address\n * @param {Boolean} readOnly\n */\n constructor(type, loc_address, readOnly = false) {\n this._loc_address = loc_address;\n this._type = type;\n this._readOnly = readOnly;\n this._id = undefined;\n }\n setID(id) {\n this._id = id;\n }\n get id() {\n return this._id;\n }\n get inStore() {\n return this.id !== null;\n }\n get type() {\n return this._type;\n }\n /**\n * Returns the actual value stored at the loccation address present in this object.\n * The returned value is compatible with @prop{StoreObject.type}\n */\n get value() {\n const address = location_1.Location.find(this._loc_address);\n if (address != null) {\n return address.value;\n }\n else {\n throw new Error(\"!!!Critical Error: variable \" + this.id + \" does not have a valid address. Loc-Address \" + this.locAddress);\n }\n }\n get number() {\n throw new Error(\"DOT NOT USE THIS PROPERTY!\");\n }\n get readOnly() {\n return this._readOnly;\n }\n set readOnly(value) {\n this._readOnly = value;\n }\n isCompatible(another) {\n return this.type.isCompatible(another.type);\n }\n destroy() {\n return location_1.Location.deallocate(this._loc_address);\n }\n get locAddress() {\n return this._loc_address;\n }\n}\nexports.StoreObject = StoreObject;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst storeObject_1 = require(\"./storeObject\");\nconst array_store_value_1 = require(\"./value/array_store_value\");\nconst location_1 = require(\"../../memory/location\");\nclass StoreObjectArray extends storeObject_1.StoreObject {\n constructor(type, _lines, _columns, loc_addresses, readOnly = false) {\n super(type, -1, readOnly);\n this._lines = _lines;\n this._columns = _columns;\n this.loc_addresses = loc_addresses;\n }\n get lines() {\n return this._lines;\n }\n get columns() {\n return this._columns;\n }\n isCompatible(another) {\n if (another instanceof array_store_value_1.ArrayStoreValue) {\n const cols = another.columns == null ? 0 : another.columns;\n if (this.lines === another.lines && this.columns === cols) {\n return super.isCompatible(another);\n }\n }\n return false;\n }\n get isVector() {\n return this.type.dimensions === 1;\n }\n /**@override\n * Returns the list of values stored by this array.\n * All returned values are compatible with @prop{StoreObject.type}\n */\n get value() {\n const values = [];\n for (let i = 0; i < this.addresses.length; i += 1) {\n const address = location_1.Location.find(this.addresses[i]);\n if (address != null) {\n values.push(address.value);\n }\n else {\n throw new Error(\"!!!Critical Error: variable \" + this.id + \" does not have a valid address. Loc-Address \" + this.locAddress);\n }\n }\n return values;\n }\n destroy() {\n let bool = true;\n for (let i = 0; i < this.addresses.length; i += 1) {\n bool = bool && location_1.Location.deallocate(this.addresses[i]);\n }\n return bool;\n }\n /**\n * @override\n *\n * Returns the address that contains a list of all addresses of the values present in the array\n */\n get locAddress() {\n throw new Error(\"!!!Internal Error: Cannot invoke locAddress on StoreObjectArray\");\n }\n get addresses() {\n return this.loc_addresses;\n }\n getAt(line, column) {\n if (this.isVector) {\n if (column != null) {\n throw new Error(this.id + \" is not a matrix!\");\n }\n column = line;\n line = 0;\n }\n else if (column == null) {\n // this is a whole line...\n const values = [];\n for (let col = 0; col < this.columns; col += 1) {\n const index = this.getIndexOf(line, col);\n const address = location_1.Location.find(this.addresses[index]);\n values.push(address.value);\n }\n return values;\n }\n const index = this.getIndexOf(line, column);\n const address = location_1.Location.find(this.addresses[index]);\n return address.value;\n }\n setAt(value, line, column) {\n let used_dims = 1;\n if (column != null) {\n used_dims += 1;\n }\n if (!this.type.canAccept(value.type, used_dims)) {\n throw new Error(\"!!!Internal Error: Attempting to insert an invalid value inside array \" + this.id);\n }\n if (this.isVector) {\n if (column != null) {\n throw new Error(this.id + \" is not a matrix!\");\n }\n column = line;\n line = 0;\n }\n else if (column == null) {\n throw new Error(\"!!!Internal Error: Attempting to insert a line into matrix \" + this.id);\n }\n const pos = this.getIndexOf(line, column);\n location_1.Location.updateAddress(this.addresses[pos], value.get());\n }\n getIndexOf(line, column) {\n return line * this.columns + column;\n }\n getLocAddressOf(line, column) {\n if (this.isVector) {\n if (column != null) {\n throw new Error(this.id + \" is not a matrix!\");\n }\n column = line;\n line = 0;\n }\n else if (column == null) {\n // this is a whole line...\n const values = [];\n for (let col = 0; col < this.columns; col += 1) {\n const index = this.getIndexOf(line, col);\n values.push(this.addresses[index]);\n }\n return values;\n }\n const index = this.getIndexOf(line, column);\n return this.addresses[index];\n }\n}\nexports.StoreObjectArray = StoreObjectArray;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst storeObject_1 = require(\"./storeObject\");\nclass StoreObjectRef extends storeObject_1.StoreObject {\n /**\n *\n * @param {StoreObject} stoValue\n */\n constructor(stoValue) {\n super(stoValue.type, stoValue.getRefAddress(), false);\n this.refObj = stoValue.id;\n this.reference_dimension = stoValue.getReferenceDimension();\n }\n get isRef() {\n return true;\n }\n getRefObj() {\n return this.refObj;\n }\n getReferenceDimension() {\n return this.reference_dimension;\n }\n destroy() {\n return false;\n }\n}\nexports.StoreObjectRef = StoreObjectRef;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst storeObjectArray_1 = require(\"./storeObjectArray\");\nclass StoreObjectArrayRef extends storeObjectArray_1.StoreObjectArray {\n constructor(stoValue, lines, columns) {\n super(stoValue.type, lines, columns, stoValue.getAddresses(), false);\n this.refObj = stoValue.id;\n }\n get isRef() {\n return true;\n }\n getRefObj() {\n return this.refObj;\n }\n destroy() {\n return false;\n }\n}\nexports.StoreObjectArrayRef = StoreObjectArrayRef;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst array_type_1 = require(\"../../../typeSystem/array_type\");\nconst store_value_address_1 = require(\"./store_value_address\");\nclass ArrayStoreValue {\n constructor(type, values, lines, columns, id, isConst = false) {\n this.type = type;\n this.id = id;\n this.isConst = isConst;\n this.values = values;\n this.lines = lines;\n this.columns = columns;\n }\n get() {\n return this.values;\n }\n /**\n * @deprecated\n * Potential not necessary since array access is occuring directly in the StoreObject\n * @param line\n * @param column\n */\n getAt(line, column) {\n console.log(\"Column \", column);\n if (this.isVector()) {\n if (column != null) {\n throw new Error(this.id + \" is not a matrix!\");\n }\n column = line;\n line = 0;\n }\n else if (column == null) {\n const values = [];\n for (let col = 0; col < this.columns; col += 1) {\n const index = line * this.lines + col;\n values.push(this.values[index]);\n }\n const array_type = this.type;\n const vector_type = new array_type_1.ArrayType(array_type.innerType, array_type.dimensions - 1);\n return new ArrayStoreValue(vector_type, values, this.columns, 0, this.id, this.isConst);\n }\n const index = line * this.lines + column;\n console.log(\"Get at: \", index);\n return this.values[index];\n }\n setAt(value, line, column) {\n let used_dims = 1;\n if (column != null) {\n used_dims += 1;\n }\n let actual_line = line;\n let actual_column = column;\n if (!this.type.canAccept(value.type, used_dims)) {\n throw new Error(\"!!!Internal Error: Attempting to insert an invalid value inside array \" + this.id);\n }\n if (this.isVector) {\n if (column != null) {\n throw new Error(this.id + \" is not a matrix!\");\n }\n actual_column = actual_line;\n actual_line = 0;\n }\n else if (column == null) {\n if (!(value instanceof ArrayStoreValue)) {\n throw new Error(\"Attempting to insert a single value as a line of matrix \" + this.id);\n }\n const actual_values = value.get();\n for (let i = 0; i < this.columns; i += 1) {\n const pos = actual_line * this.columns + i;\n const val = actual_values[i];\n this.values[pos] = new store_value_address_1.StoreValueAddress(value.type, val.get(), actual_line, i, this.id, this.isConst);\n }\n }\n const columns = this.columns == null ? 0 : this.columns;\n const pos = actual_line * columns + actual_column;\n this.values[pos] = new store_value_address_1.StoreValueAddress(value.type, value.get(), line, column, this.id, this.isConst);\n }\n inStore() {\n return this.id != null;\n }\n isVector() {\n return this.type.dimensions == 1;\n }\n}\nexports.ArrayStoreValue = ArrayStoreValue;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass ArrayStoreValueRef {\n constructor(type, values, addresses, lines, columns, id) {\n this.type = type;\n this.values = values;\n this.addresses = addresses;\n this.lines = lines;\n this.columns = columns;\n this.id = id;\n this.isConst = false;\n }\n get() {\n return this.values;\n }\n getAddresses() {\n return this.addresses;\n }\n inStore() {\n return this.id != null;\n }\n}\nexports.ArrayStoreValueRef = ArrayStoreValueRef;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass StoreValue {\n constructor(type, value, id, isConst = false) {\n this.type = type;\n this.id = id;\n this.isConst = isConst;\n this.value = value;\n }\n get() {\n return this.value;\n }\n inStore() {\n return this.id != null;\n }\n}\nexports.StoreValue = StoreValue;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst store_value_1 = require(\"./store_value\");\nclass StoreValueAddress extends store_value_1.StoreValue {\n constructor(type, value, line, column, id, isConst = false) {\n super(type, value, id, isConst);\n this.line = line;\n this.column = column;\n }\n}\nexports.StoreValueAddress = StoreValueAddress;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass StoreValueRef {\n constructor(type, value, loc_address, id) {\n this.type = type;\n this.value = value;\n this.loc_address = loc_address;\n this.id = id;\n this.isConst = false;\n this.reference_dimesion = 0;\n }\n get() {\n return this.value;\n }\n getRefAddress() {\n return this.loc_address;\n }\n inStore() {\n return this.id != null;\n }\n getReferenceDimension() {\n return this.reference_dimesion;\n }\n setReferenceDimension(dimension) {\n this.reference_dimesion = dimension;\n }\n}\nexports.StoreValueRef = StoreValueRef;\n","import { IVProgParser } from './ast/ivprogParser';\nimport { IVProgProcessor } from './processor/ivprogProcessor';\nimport {DOMConsole} from './io/domConsole';\nimport { LanguageService } from './services/languageService';\nimport { SemanticAnalyser } from './processor/semantic/semanticAnalyser';\nimport { Location } from \"./memory/location\";\n\nexport function runner () {\nconst ivprogLexer = LanguageService.getCurrentLexer();\n\n\n// const lexer = new ivprogLexer(new InputStream(input));\n// const stream = new CommonTokenStream(lexer);\n// stream.fill();\n// let i = 1;\n// let token = null;\n// while ((token = stream.LT(i)).type !== ivprogLexer.EOF && token.type !== ivprogLexer.WHITESPACE) {\n// console.log(`${token.type}-${token.text}`);\n// console.log('\\n')\n// i++;\n// }\n// const anaSin = new IVProgParser(input, ivprogLexer);\nconst editor = new window.JsonEditor('#json-renderer', {});\nconst domConsole = new DOMConsole(\"#console\", true);\ndomConsole.hide();\n// proc.interpretAST().then( sto => {\n// console.log(sto.applyStore('a'));\n// }).catch(e => console.log(e));\ntry {\n window.$('#btn').click( () => {\n const input = window.$('#input').val();\n const analiser = new IVProgParser(input, ivprogLexer);\n try {\n const data = analiser.parseTree();\n const semAna = new SemanticAnalyser(data);\n const proc = new IVProgProcessor(semAna.analyseTree());\n proc.registerInput(domConsole);\n domConsole.clear();\n proc.registerOutput(domConsole);\n proc.interpretAST().then(sto => {\n console.log(sto);\n editor.load(sto.store);\n console.log(Location.size());\n }).catch( e => {\n alert(e);\n console.log(e);\n console.log(Location.size());\n });\n } catch (error) {\n alert(error);\n console.log(error);\n console.log(Location.size());\n }\n \n });\n} catch(a) {\n console.log(a);\n}\n}\n","import line_i18n from \"line-i18n\";\nimport { LocalizedStrings } from \"./localizedStringsService\";\n\nconst StringTypes = line_i18n.StringTypes;\n\nexport const i18nHelper = Object.freeze({\n i18n: (identifier) => {\n var opts = identifier.split(':');\n var type = opts[0].toLowerCase();\n var id = opts[1];\n if (StringTypes.ERROR === type) {\n return LocalizedStrings.getError(id);\n } else if (StringTypes.MESSAGE === type) {\n return LocalizedStrings.getMessage(id); \n } else if (StringTypes.UI === type) {\n return LocalizedStrings.getUI(id);\n } else {\n console.warn(\"A string has been passed to the i18n helper function that was not in the form type:id -> \" + identifier);\n return LocalizedStrings.getString(identifier, type);\n }\n }\n});","import Lexers from './../../grammar/';\nimport line_i18n from 'line-i18n';\nimport { Config } from \"./../util/config\";\n\nclass LanguageServiceExtended extends line_i18n.LanguageServiceNoLS {\n\n constructor () {\n super(typeof(iLMparameters) === 'undefined' ? Config.default_lang : iLMparameters.lang);\n }\n\n getDefaultLang () {\n return \"pt\";\n }\n\n getCurrentLexer () {\n const langInfo = Lexers[this.getLang()];\n if(langInfo === null || langInfo === undefined) {\n return Lexers[this.getDefaultLang()].lexer;\n } else {\n return langInfo.lexer;\n }\n }\n\n getCurrentLangFuncs () {\n const langInfo = Lexers[this.getLang()];\n if(langInfo === null || langInfo === undefined) {\n return Lexers[this.getDefaultLang()].langFuncs;\n } else {\n return langInfo.langFuncs;\n }\n }\n\n getCurrentLangLibs () {\n const langInfo = Lexers[this.getLang()];\n if(langInfo === null || langInfo === undefined) {\n return Lexers[this.getDefaultLang()].langLibs;\n }\n return langInfo.langLibs;\n }\n}\n\nexport const LanguageService = new LanguageServiceExtended();\n","import line_i18n from 'line-i18n';\nimport { LanguageService } from \"./languageService\";\nimport { LanguageDefinedFunction } from \"./../processor/definedFunctions\";\nimport Langs from './../../i18n';\nimport { Operators } from \"./../ast/operators\";\n\nclass IVProgLocalizedStrings extends line_i18n.LocalizedStrings {\n\n constructor(langService, langsJsons, shouldListenToChange = false) {\n super(langService, langsJsons, shouldListenToChange);\n }\n\n translateType (type, dim) {\n const type_string = this.getUI(`type_${type}`);\n switch (dim) {\n case 0:\n return type_string;\n default:\n if(dim > 1)\n return this.getUI(\"matrix_info_string\", [type_string])\n else\n return this.getUI(\"vector_info_string\", [type_string])\n }\n }\n \n translateOp (op) {\n switch(op.ord) {\n case Operators.AND.ord:\n case Operators.OR.ord:\n case Operators.NOT.ord:\n return this.getUI(`logic_operator_${op.value}`);\n default:\n return op.value;\n }\n }\n\n translateInternalFunction (name, category = null) {\n if (category == null) {\n return LanguageDefinedFunction.getLocalName(name);\n } else {\n return LanguageDefinedFunction.getLocalName(`${category}.${name}`);\n }\n }\n}\n\nexport const LocalizedStrings = Object.freeze(new IVProgLocalizedStrings(LanguageService, Langs, true));\n\nlet _instance = null;\n\nexport function getInstance () {\n if(_instance == null) {\n _instance = new IVProgLocalizedStrings(LanguageService, Langs);\n }\n return _instance;\n}\n","let clicks = [];\nlet inRebuildMode = false;\n\nexport const ActionTypes = Object.freeze({\n // registerUserEvent payload:\n // (function_name, insert action)\n INSERT_FUNCTION:\"INSERT_FUNCTION\",\n // (function_name, remove action)\n REMOVE_FUNCTION:\"REMOVE_FUNCTION\",\n // (var_name,insert action, type, dim)\n INSERT_GLOBAL_VAR:\"INSERT_GLOBAL_VAR\",\n // (var name, remove action)\n REMOVE_GLOBAL_VAR:\"REMOVE_GLOBAL_VAR\",\n // (old function name, rename action, new function name)\n RENAME_FUNCTION:\"RENAME_FUNCTION\",\n // (old var name, rename action. new var name)\n RENAME_GLOBAL_VAR:\"RENAME_GLOBAL_VAR\",\n // (var name, set const action)\n SET_GLOBAL_CONST:\"SET_GLOBAL_CONST\",\n // (function name, change return action, type, dim)\n CHANGE_FUNCTION_RETURN:\"CHANGE_FUNCTION_RETURN\",\n // (var name, change type action, type, dim, rows?, columns?)\n CHANGE_GLOBAL_TYPE:\"CHANGE_GLOBAL_TYPE\",\n // (var name, change value action, value)\n CHANGE_GLOBAL_VALUE:\"CHANGE_GLOBAL_VALUE\",\n // (function name, insert param action, param varname, type, dim)\n INSERT_FUNCTION_PARAM:\"INSERT_FUNCTION_PARAM\",\n // (function name, remove param action, param varname)\n REMOVE_FUNCTION_PARAM:\"REMOVE_FUNCTION_PARAM\",\n // (function name, change param type action, type, dim)\n CHANGE_PARAM_TYPE:\"CHANGE_PARAM_TYPE\",\n // (function name, rename param action, old param name, new param name)\n RENAME_FUNCTION_PARAM:\"RENAME_FUNCTION_PARAM\",\n // (function name, insert var action, var name, type, dim)\n INSERT_FUNCTION_VAR:\"INSERT_FUCNTION_VAR\",\n // (function name, remove var action, var name)\n REMOVE_FUNCTION_VAR:\"REMOVE_FUNCTION_VAR\",\n // (function name, rename var action, old var name, new var name)\n RENAME_FUNCTION_VAR:\"RENAME_FUNCTION_VAR\",\n // (function name, change var type action, var name, type, dim, rows?, columns?)\n CHANGE_VAR_TYPE:\"CHANGE_VAR_TYPE\",\n // (function name, change var value action, var name, value)\n CHANGE_VAR_VALUE:\"CHANGE_VAR_VALUE\",\n // (function name, insert command action, command, path)\n INSERT_COMMAND:\"INSERT_COMMAND\",\n // (function name, remove command action, path)\n REMOVE_COMMAND:\"REMOVE_COMMAND\",\n // (function name, change command exp action, path, exp)\n CHANGE_COMMAND_EXP:\"CHANGE_COMMAND_EXP\",\n // (function name, change attrib exp action, path, exp)\n CHANGE_ATTRIB_EXP:\"CHANGE_ATTRIB_EXP\",\n // (function name, change attrib var action, path, var name, row_exp?, column_exp?)\n CHANGE_ATTRIB_VAR:\"CHANGE_ATTRIB_VAR\",\n // (function name, move command action, old path, new path)\n MOVE_COMMAND:\"MOVE_COMMAND\",\n // (function name, enter change name action, var name)\n ENTER_CHANGE_VAR_NAME:'ENTER_CHANGE_VAR_NAME',\n // (function name, enter change value action, var name)\n ENTER_CHANGE_VAR_VALUE:'ENTER_CHANGE_VAR_VALUE',\n // (var name, enter change name action)\n ENTER_CHANGE_GLOBAL_NAME:'ENTER_CHANGE_GLOBAL_NAME',\n // (var name, enter change value action)\n ENTER_CHANGE_GLOBAL_VALUE:'ENTER_CHANGE_GLOBAL_VALUE',\n // (function name, enter change name action, param name)\n ENTER_CHANGE_PARAM_NAME:'ENTER_CHANGE_PARAM_NAME',\n});\n\nexport function registerClick (x, y, details) {\n if (inRebuildMode) {\n return;\n }\n clicks.push([x, y, Date.now(), details]);\n}\n\nexport function registerUserEvent (command, action, ...params) {\n registerEvent('user_event', command, action, params);\n}\n\nexport function registerSystemEvent (command, action, ...params) {\n registerEvent('system_event', command, action, params);\n}\n\nfunction registerEvent (tag, command, action, params) {\n if (inRebuildMode) {\n return;\n }\n const event = {context: command, action: action, params:params};\n clicks.push([tag, Date.now(), event]);\n}\n\nexport function getLogs () {\n return clicks;\n}\n\nexport function setRebuildMode (flag) {\n inRebuildMode = flag;\n}\n\nexport function getLogsAsString () {\n return JSON.stringify(clicks);\n}\n\nexport function parseLogs (logData) {\n clicks = JSON.parse(logData);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass ArrayType {\n constructor(type, dimensions) {\n this.dimensions = dimensions;\n this.innerType = type;\n }\n get isVector() {\n return this.dimensions == 1;\n }\n isCompatible(another) {\n if (another instanceof ArrayType) {\n if (this.dimensions !== another.dimensions) {\n return false;\n }\n return this.innerType.isCompatible(another.innerType);\n }\n return false;\n }\n stringInfo() {\n const list = this.innerType.stringInfo();\n list.forEach(v => {\n v.dim = this.dimensions;\n });\n return list;\n }\n get value() {\n return undefined;\n }\n get ord() {\n return undefined;\n }\n canAccept(another, used_dims) {\n const free_dims = this.dimensions - used_dims;\n if (another instanceof ArrayType) {\n return free_dims == another.dimensions && this.innerType.isCompatible(another.innerType);\n }\n else {\n return free_dims == 0 && this.innerType.isCompatible(another);\n }\n }\n}\nexports.ArrayType = ArrayType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass MultiType {\n constructor(types) {\n this.types = types;\n }\n get value() {\n return undefined;\n }\n get ord() {\n return undefined;\n }\n stringInfo() {\n let list = [];\n for (let i = 0; i < this.types.length; i++) {\n const t = this.types[i];\n list = list.concat(t.stringInfo());\n }\n return list;\n }\n isCompatible(another) {\n for (let i = 0; i < this.types.length; i++) {\n const t = this.types[i];\n if (another.isCompatible(t)) {\n return true;\n }\n }\n return false;\n }\n}\nexports.MultiType = MultiType;\n","import { LanguageService } from \"../services/languageService\";\nimport { Types } from \"./types\";\nimport Decimal from \"decimal.js\";\nimport { Config } from \"../util/config\";\n\nexport function toInt (str) {\n return new Decimal(str);\n}\n\nexport function toString (str) {\n let value = str.replace(/^\"/, '');\n value = value.replace(/\"$/, '');\n value = value.replace(/\\\\b/g, \"\\b\");\n value = value.replace(/\\\\t/g, \"\\t\");\n value = value.replace(/\\\\n/g, \"\\n\");\n value = value.replace(/\\\\r/g, \"\\r\");\n value = value.replace(/\\\\\"/g, \"\\\"\");\n value = value.replace(/\\\\'/g, '\\'');\n value = value.replace(/\\\\\\\\/g, \"\\\\\");\n return value;\n}\n\nexport function toReal (value) {\n return new Decimal(value);\n}\n\nexport function toBool (str) {\n const val = \"'\" + str + \"'\";\n const lexer = LanguageService.getCurrentLexer();\n const instance = new lexer(null);\n if (instance.literalNames[lexer.RK_TRUE] === val) {\n return true;\n } else if (instance.literalNames[lexer.RK_FALSE] === val) {\n return false;\n } else {\n // TODO: better error message\n throw new Error(str + \"not a valid boolean\");\n }\n}\n\nexport function convertBoolToString (bool) {\n const lexer = LanguageService.getCurrentLexer();\n const instance = new lexer(null);\n let result = null;\n if (bool) {\n result = instance.literalNames[lexer.RK_TRUE];\n } else {\n result = instance.literalNames[lexer.RK_FALSE];\n }\n return result.replace(/'/g,\"\");\n}\n\nexport function convertToString(value, type) {\n switch (type.ord) {\n case Types.INTEGER.ord:\n return value.toString();\n case Types.REAL.ord: {\n if (value.dp() <= 0) {\n return value.toFixed(1); \n } else {\n return value.toFixed(Config.decimalPlaces);\n }\n }\n case Types.BOOLEAN.ord:\n return convertBoolToString(value);\n default:\n return value;\n }\n}","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass Type {\n constructor(value, ord) {\n this.value = value;\n this.ord = ord;\n }\n stringInfo() {\n return [{ type: this.value, dim: 0 }];\n }\n isCompatible(another) {\n return this.value === another.value && this.ord === another.ord;\n }\n}\nexports.Type = Type;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst type_1 = require(\"./type\");\nconst multiType_1 = require(\"./multiType\");\nconst maybe_1 = require(\"../util/maybe\");\nconst INTEGER = new type_1.Type(\"integer\", 0);\nconst REAL = new type_1.Type(\"real\", 1);\nconst STRING = new type_1.Type(\"text\", 2);\nconst BOOLEAN = new type_1.Type(\"boolean\", 3);\nconst VOID = new type_1.Type(\"void\", 4);\nconst UNDEFINED = new type_1.Type(\"undefined\", 5);\nconst ALL = new multiType_1.MultiType([INTEGER, REAL, STRING, BOOLEAN]);\nexports.Types = Object.freeze({\n INTEGER: INTEGER,\n REAL: REAL,\n STRING: STRING,\n BOOLEAN: BOOLEAN,\n VOID: VOID,\n UNDEFINED: UNDEFINED,\n ALL: ALL\n});\nfunction fromOrdToType(ord) {\n const typeMap = exports.Types;\n for (let t in typeMap) {\n if (typeMap[t].ord === ord) {\n return maybe_1.Maybe.some(typeMap[t]);\n }\n }\n return maybe_1.Maybe.none();\n}\nexports.fromOrdToType = fromOrdToType;\n","import {SemanticAnalyser} from './../processor/semantic/semanticAnalyser';\nimport {IVProgProcessor} from './../processor/ivprogProcessor';\nimport { InputTest } from './inputTest';\nimport { OutputTest } from './outputTest';\nimport { LocalizedStrings } from './../services/localizedStringsService'\n\nexport function autoGenerateTestCaseOutput (program_text, testCases) {\n let copyTestCases = testCases.map((test) => Object.assign({}, test));\n try {\n const program = SemanticAnalyser.analyseFromSource(program_text);\n const resultList = testCases.map((test, id) => {\n const input = new InputTest(test.input);\n const output = new OutputTest();\n const exec = new IVProgProcessor(program);\n exec.registerInput(input);\n exec.registerOutput(output);\n return exec.interpretAST().then(_ => {\n return {id: id, program: exec};\n });\n });\n return Promise.all(resultList).then(result_final => {\n for(let i = 0; i < result_final.length; ++i) {\n const result = result_final[i];\n const output = result.program.output.list;\n const input = result.program.input;\n if(input.index != input.inputList.length) {\n window.showAlert(LocalizedStrings.getMessage(\"testcase_autogen_unused_input\", [result.id+1]));\n return Promise.resolve(false);\n }\n if(output.length == 0) {\n window.showAlert(LocalizedStrings.getMessage(\"testcase_autogen_empty\", [result.id+1]));\n }\n copyTestCases[result.id].output = output;\n }\n window.outputGenerated(copyTestCases);\n return Promise.resolve(true);\n });\n }catch (error) {\n return Promise.reject(error)\n }\n}","class ConfigObject {\n\n constructor () {\n this.decimalPlaces = 8;\n this.intConvertRoundMode = 2;\n this.default_lang = 'pt';\n this.enable_type_casting = true;\n this.idle_input_interval = 5000;\n this.suspend_threshold = 100;\n // this.max_instruction_count = 350250; - automated evaluation limit\n this.max_instruction_count = Number.MAX_SAFE_INTEGER;\n }\n\n setConfig (opts) {\n for (const key in opts) {\n if(Object.prototype.hasOwnProperty.call(this, key)){\n this[key] = opts[key];\n }\n }\n }\n}\nconst config = new ConfigObject();\nexport const Config = config;","import { getCodeEditorModeConfig } from \"./utils\";\n\n/**\n * Source: https://raw.githubusercontent.com/codemirror/CodeMirror/master/mode/clike/clike.js\n * @author arijn Haverbeke and others\n * @author Lucas de Souza\n * @param {CodeMirror} CodeMirror \n */\nexport function CodeEditorMode (CodeMirror) {\n \"use strict\";\n\n function Context(indented, column, type, info, align, prev) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.info = info;\n this.align = align;\n this.prev = prev;\n }\n\n function pushContext(state, col, type, info) {\n let indent = state.indented;\n if (state.context && state.context.type == \"statement\" && type != \"statement\")\n indent = state.context.indented;\n return state.context = new Context(indent, col, type, info, null, state.context);\n }\n \n function popContext(state) {\n const t = state.context.type;\n if (t == \")\" || t == \"]\" || t == \"}\")\n state.indented = state.context.indented;\n return state.context = state.context.prev;\n }\n\n function typeBefore(stream, state, pos) {\n if (state.prevToken == \"variable\" || state.prevToken == \"type\") return true;\n if (/\\S(?:[^- ]>|[*\\]])\\s*$|\\*$/.test(stream.string.slice(0, pos))) return true;\n if (state.typeAtEndOfLine && stream.column() == stream.indentation()) return true;\n }\n\n function isTopScope(context) {\n for (; ;) {\n if (!context || context.type == \"top\") return true;\n if (context.type == \"}\" && context.prev.info != \"namespace\") return false;\n context = context.prev;\n }\n }\n\n function contains(words, word) {\n if (typeof words === \"function\") {\n return words(word);\n } else {\n return Object.propertyIsEnumerable.call(words, word);\n }\n }\n\n function tokenComment(stream, state) {\n let maybeEnd = false, ch;\n while ((ch = stream.next())) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return \"comment\";\n }\n\n CodeMirror.defineMode(\"ivprog\", function (config, parserConfig) {\n const indentUnit = config.indentUnit,\n statementIndentUnit = parserConfig.statementIndentUnit || indentUnit,\n dontAlignCalls = parserConfig.dontAlignCalls,\n keywords = parserConfig.keywords || {},\n switchKeyword = parserConfig.switchKeyword,\n caseKeyword = parserConfig.caseKeyword,\n defaultKeyword = parserConfig.defaultKeyword,\n caseRegex = new RegExp(`^\\\\s*(?:${caseKeyword} .*?:|${defaultKeyword}:|\\\\{\\\\}?|\\\\})$`),////,\n types = parserConfig.types || {},\n builtin = parserConfig.builtin || {},\n blockKeywords = parserConfig.blockKeywords || {},\n defKeywords = parserConfig.defKeywords || {},\n atoms = parserConfig.atoms || {},\n hooks = parserConfig.hooks || {},\n multiLineStrings = parserConfig.multiLineStrings,\n indentStatements = false,\n namespaceSeparator = null,\n isPunctuationChar = /[[\\]{}(),;:\\n]/,\n numberStart = /[\\d.]/,\n number = /^(?:0x[a-f\\d]+|0b[01]+|(?:\\d+\\.?\\d*|\\.\\d+)(?:e[-+]?\\d+)?)$/i,\n isOperatorChar = /[+\\-*%=<>!/&]/,\n isIdentifierChar = /[a-zA-Z0-9_]/,\n // An optional function that takes a {string} token and returns true if it\n // should be treated as a builtin.\n isReservedIdentifier = parserConfig.isReservedIdentifier || false;\n\n let curPunc, isDefKeyword;\n let tokenString = function () { /*SKIP*/};\n function tokenBase(stream, state) {\n const ch = stream.next();\n if (hooks[ch]) {\n const result = hooks[ch](stream, state);\n if (result !== false) return result;\n }\n if (ch == '\"') {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n }\n if (isPunctuationChar.test(ch)) {\n curPunc = ch;\n return null;\n }\n if (numberStart.test(ch)) {\n stream.backUp(1)\n if (stream.match(number)) return \"number\"\n stream.next()\n }\n if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n }\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return \"comment\";\n }\n }\n if (isOperatorChar.test(ch)) {\n while (!stream.match(/^\\/[/*]/, false) && stream.eat(isOperatorChar)) { /* SKIP */}\n return \"operator\";\n }\n stream.eatWhile(isIdentifierChar);\n if (namespaceSeparator) while (stream.match(namespaceSeparator))\n stream.eatWhile(isIdentifierChar);\n\n const cur = stream.current();\n if (contains(keywords, cur)) {\n if (contains(blockKeywords, cur)) curPunc = \"newstatement\";\n if (contains(defKeywords, cur)) isDefKeyword = true;\n return \"keyword\";\n }\n if (contains(types, cur)) return \"type\";\n if (contains(builtin, cur)\n || (isReservedIdentifier && isReservedIdentifier(cur))) {\n if (contains(blockKeywords, cur)) curPunc = \"newstatement\";\n return \"builtin\";\n }\n if (contains(atoms, cur)) return \"atom\";\n return \"variable\";\n }\n\n tokenString = function (quote) {\n return function (stream, state) {\n let escaped = false, next, end = false;\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) { end = true; break; }\n escaped = !escaped && next == \"\\\\\";\n }\n if (end || !(escaped || multiLineStrings))\n state.tokenize = null;\n return \"string\";\n };\n }\n\n function maybeEOL(stream, state) {\n if (parserConfig.typeFirstDefinitions && stream.eol() && isTopScope(state.context))\n state.typeAtEndOfLine = typeBefore(stream, state, stream.pos)\n }\n\n // Interface\n\n return {\n startState: function (basecolumn) {\n return {\n tokenize: null,\n context: new Context((basecolumn || 0) - indentUnit, 0, \"top\", null, false),\n indented: 0,\n startOfLine: true,\n prevToken: null\n };\n },\n\n token: function (stream, state) {\n let ctx = state.context;\n if (stream.sol()) {\n if (ctx.align == null) ctx.align = false;\n state.indented = stream.indentation();\n state.startOfLine = true;\n }\n if (stream.eatSpace()) { maybeEOL(stream, state); return null; }\n curPunc = isDefKeyword = null;\n let style = (state.tokenize || tokenBase)(stream, state);\n if (style == \"comment\" || style == \"meta\") return style;\n if (ctx.align == null) ctx.align = true;\n\n if (curPunc == \";\" || curPunc == \":\" || (curPunc == \",\" && stream.match(/^\\s*(?:\\/\\/.*)?$/, false)))\n while (state.context.type == \"statement\") popContext(state);\n else if (curPunc == \"{\") pushContext(state, stream.column(), \"}\");\n else if (curPunc == \"[\") pushContext(state, stream.column(), \"]\");\n else if (curPunc == \"(\") pushContext(state, stream.column(), \")\");\n else if (curPunc == \"}\") {\n while (ctx.type == \"statement\") ctx = popContext(state);\n if (ctx.type == \"}\") ctx = popContext(state);\n while (ctx.type == \"statement\") ctx = popContext(state);\n }\n else if (curPunc == ctx.type) popContext(state);\n else if (indentStatements &&\n (((ctx.type == \"}\" || ctx.type == \"top\") && curPunc != \";\") ||\n (ctx.type == \"statement\" && curPunc == \"newstatement\"))) {\n pushContext(state, stream.column(), \"statement\", stream.current());\n }\n\n if (style == \"variable\" &&\n ((state.prevToken == \"def\" ||\n (parserConfig.typeFirstDefinitions && typeBefore(stream, state, stream.start) &&\n isTopScope(state.context) && stream.match(/^\\s*\\(/, false)))))\n style = \"def\";\n\n if (hooks.token) {\n const result = hooks.token(stream, state, style);\n if (result !== undefined) style = result;\n }\n\n if (style == \"def\" && parserConfig.styleDefs === false) style = \"variable\";\n\n state.startOfLine = false;\n state.prevToken = isDefKeyword ? \"def\" : style || curPunc;\n maybeEOL(stream, state);\n return style;\n },\n\n indent: function (state, textAfter) {\n if (state.tokenize != tokenBase && state.tokenize != null || state.typeAtEndOfLine) return CodeMirror.Pass;\n let ctx = state.context;\n const firstChar = textAfter && textAfter.charAt(0)\n const closing = firstChar == ctx.type;\n if (ctx.type == \"statement\" && firstChar == \"}\") ctx = ctx.prev;\n if (parserConfig.dontIndentStatements)\n while (ctx.type == \"statement\" && parserConfig.dontIndentStatements.test(ctx.info))\n ctx = ctx.prev\n if (hooks.indent) {\n const hook = hooks.indent(state, ctx, textAfter, indentUnit);\n if (typeof hook == \"number\") return hook\n }\n const switchBlock = ctx.prev && ctx.prev.info == switchKeyword;\n if (parserConfig.allmanIndentation && /[{(]/.test(firstChar)) {\n while (ctx.type != \"top\" && ctx.type != \"}\") ctx = ctx.prev\n return ctx.indented\n }\n if (ctx.type == \"statement\")\n return ctx.indented + (firstChar == \"{\" ? 0 : statementIndentUnit);\n if (ctx.align && (!dontAlignCalls || ctx.type != \")\"))\n return ctx.column + (closing ? 0 : 1);\n if (ctx.type == \")\" && !closing)\n return ctx.indented + statementIndentUnit;\n const caseTestRegex = new RegExp(`^(?:${caseKeyword}|${defaultKeyword})\\b`)\n return ctx.indented + (closing ? 0 : indentUnit) +\n (!closing && switchBlock && !caseTestRegex.test(textAfter) ? indentUnit : 0);\n },\n\n electricInput: caseRegex,\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: \"//\",\n fold: \"brace\"\n };\n });\n\n function words(str) {\n const obj = {}, words = str.split(\" \");\n for (let i = 0; i < words.length; ++i) obj[words[i]] = true;\n return obj;\n }\n \n const codeConfig = getCodeEditorModeConfig();\n\n const ivprogKeywords = codeConfig.keywords.join(\" \");\n\n const basicTypes = words(codeConfig.types.join(\" \"));\n\n function ivprogTypes(identifier) {\n return contains(basicTypes, identifier);\n }\n\n const ivprogBlockKeywords = codeConfig.blocks.join(\" \");\n const ivprogDefKeywords = \"funcao const\";\n\n function def(mimes, mode) {\n if (typeof mimes == \"string\") mimes = [mimes];\n const words = [];\n function add(obj) {\n if (obj) {\n for (const prop in obj) if (Object.hasOwnProperty.call(obj, prop)) {\n words.push(prop);\n }\n }\n }\n add(mode.keywords);\n add(mode.types);\n add(mode.builtin);\n add(mode.atoms);\n if (words.length) {\n mode.helperType = mimes[0];\n CodeMirror.registerHelper(\"hintWords\", mimes[0], words);\n }\n\n for (let i = 0; i < mimes.length; ++i)\n CodeMirror.defineMIME(mimes[i], mode);\n }\n \n def([\"text/x-ivprog\"], {\n name: \"ivprog\",\n keywords: words(ivprogKeywords),\n types: ivprogTypes,\n blockKeywords: words(ivprogBlockKeywords),\n defKeywords: words(ivprogDefKeywords),\n typeFirstDefinitions: true,\n atoms: words(codeConfig.atoms.join(\" \")),\n switchKeyword: codeConfig.switchString,\n caseKeyword: codeConfig.case_default[0],\n defaultKeyword: codeConfig.case_default[1],\n modeProps: { fold: [\"brace\"] }\n });\n\n}\n","import { setTestCases, getTestCases } from \"../visualUI/functions\";\nimport { generate } from \"../visualUI/code_generator\";\nimport { IVProgAssessment } from \"../assessment/ivprogAssessment\";\nimport { TestConsole } from \"./testConsole\";\nimport { parseLogs } from \"./../services/userLog\";\nimport { SemanticAnalyser } from \"../processor/semantic/semanticAnalyser\";\nimport { Maybe } from \"./maybe\";\n\nfunction parseActivityData (data) {\n let algorithm_in_ilm = null;\n if (data.split('\\n::algorithm::')[1]) {\n algorithm_in_ilm = data.split('\\n::algorithm::')[1].split('\\n::logs::')[0];\n const logs = data.split('\\n::algorithm::')[1].split('\\n::logs::')[1];\n if (logs != null) {\n parseLogs(logs);\n }\n }\n let content;\n try {\n content = JSON.parse(data.split('\\n::algorithm::')[0]);\n content['algorithm_in_ilm'] = algorithm_in_ilm;\n } catch (e) {\n console.error(e);\n return Maybe.none();\n }\n return Maybe.some(content);\n}\n\nexport function prepareActivityToStudentHelper (ilm_cont) {\n const maybe_content = parseActivityData(ilm_cont);\n return maybe_content.map(content => {\n const testCases = content.testcases;\n setTestCases(testCases);\n\n let prog_type = null;\n if (content.settings_programming_type) {\n prog_type = content.settings_programming_type[0].value;\n } else {\n prog_type = \"visual\";\n }\n\n return {\n settingsProgrammingType: prog_type,\n settingsDataTypes: content.settings_data_types,\n settingsCommands: content.settings_commands,\n settingsFunctions: content.settings_functions,\n algorithmInIlm: content.algorithm_in_ilm,\n settingsFilter: content.settings_filter\n }\n });\n}\n\nfunction compareArray (a, b) {\n for (let i = 0; i < a.length; ++i) {\n const elementA = a[i];\n const elementB = b[i];\n if (elementA != elementB) {\n return false;\n }\n }\n return true;\n}\n\nfunction compareTestcases (original, student) {\n if (original.length != student.length) {\n return false;\n }\n for (let i = 0; i < original.length; ++i) {\n const elementO = original[i];\n const elementS = student[i];\n if(!compareArray(elementO.input, elementS.input)) {\n return false;\n }\n if(!compareArray(elementO.output, elementS.output)) {\n return false;\n }\n }\n return true;\n}\n\nexport function autoEval (originalData, callback) {\n const code = generate();\n const original = parseActivityData(originalData).getOrElse(undefined);\n if(original == null) {\n alert(\"iAssign did not provide the original activity data!\");\n return callback(null);\n }\n if (code == null) {\n return callback(-1); // @FeedbackConvention Casos de teste vazios\n } else {\n if (!compareTestcases(original.testcases, getTestCases())) {\n return callback(-2); // @FeedbackConvention Casos de teste alterados pelo aluno\n }\n const ast_code = SemanticAnalyser.analyseFromSource(code);\n const autoAssessment = new IVProgAssessment(ast_code, getTestCases(), new TestConsole([]));\n autoAssessment.runTest().then( grade => callback(grade)).catch(err => {\n console.log(err);\n callback(0);\n });\n }\n}\n","import { Input } from './../io/input';\nimport { LocalizedStrings } from '../services/localizedStringsService';\n\nexport class InputTest extends Input {\n\n constructor (inputList) {\n super();\n this.index = 0;\n this.inputList = inputList;\n }\n\n requestInput (callback) {\n if(this.index < this.inputList.length) { \n callback(this.inputList[this.index]);\n this.index++;\n } else {\n throw new Error(LocalizedStrings.getError(\"exceeded_input_request\"));\n }\n }\n}","import { Input } from './../io/input';\nimport { LocalizedStrings } from '../services/localizedStringsService';\n\nexport class InputAssessment extends Input {\n\n constructor (input_list) {\n super();\n this.index = 0;\n this.input_list = input_list.map((val) => {\n return {\"value\": val, \"read\": false};\n });\n }\n\n requestInput (callback) {\n if(this.index < this.input_list.length) {\n const input = this.input_list[this.index];\n input.read = true;\n this.index += 1;\n callback(input.value);\n } else {\n throw new Error(LocalizedStrings.getError(\"exceeded_input_request\"));\n }\n }\n\n isInputAvailable () {\n return this.index < this.input_list.length;\n }\n}","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n*\n* Maybe Monad\n* @Source: https://codewithstyle.info/advanced-functional-programming-in-typescript-maybe-monad/\n* @Modified by: @lucascalion - 28/08/2019\n*\n**/\nclass Maybe {\n constructor(value) {\n this.value = value;\n }\n static some(value) {\n if (!value) {\n throw Error(\"Provided value must not be empty\");\n }\n return new Maybe(value);\n }\n static none() {\n return new Maybe(null);\n }\n static fromValue(value) {\n return value ? Maybe.some(value) : Maybe.none();\n }\n getOrElse(defaultValue) {\n return this.value === null ? defaultValue : this.value;\n }\n map(f) {\n if (this.value === null) {\n return Maybe.none();\n }\n else {\n return Maybe.fromValue(f(this.value));\n }\n }\n}\nexports.Maybe = Maybe;\n","import { Output } from './../io/output';\n\nexport class OutputTest extends Output {\n\n constructor () {\n super();\n this.list = [];\n }\n\n sendOutput (text) {\n const output = ''+text;\n output.split(\"\\n\").forEach(t => {\n t = t.replace(/\\t/g,' ');\n t = t.replace(/\\s/g,\" \");\n this.list.push(t);\n },this);\n \n }\n}","/**\n * Author: @jhchen - https://github.com/jhchen\n * Modified by: @lucascalion - 23/07/2019\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nconst DIFF_DELETE = -1;\nconst DIFF_INSERT = 1;\nconst DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int|Object} [cursor_pos] Edit position in text1 or object with more info\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos, _fix_unicode) {\n // Check for equality\n if (text1 === text2) {\n if (text1) {\n return [[DIFF_EQUAL, text1]];\n }\n return [];\n }\n\n if (cursor_pos != null) {\n const editdiff = find_cursor_edit_diff(text1, text2, cursor_pos);\n if (editdiff) {\n return editdiff;\n }\n }\n\n // Trim off common prefix (speedup).\n let commonlength = diff_commonPrefix(text1, text2);\n const commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\n commonlength = diff_commonSuffix(text1, text2);\n const commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n\n // Compute the diff on the middle block.\n const diffs = diff_compute_(text1, text2);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift([DIFF_EQUAL, commonprefix]);\n }\n if (commonsuffix) {\n diffs.push([DIFF_EQUAL, commonsuffix]);\n }\n diff_cleanupMerge(diffs, _fix_unicode);\n return diffs;\n}\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n let diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [[DIFF_INSERT, text2]];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [[DIFF_DELETE, text1]];\n }\n\n const longtext = text1.length > text2.length ? text1 : text2;\n const shorttext = text1.length > text2.length ? text2 : text1;\n const i = longtext.indexOf(shorttext);\n if (i !== -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [\n [DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]\n ];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length === 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n }\n\n // Check to see if the problem can be split in two.\n var hm = diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = diff_main(text1_a, text2_a);\n var diffs_b = diff_main(text1_b, text2_b);\n // Merge the results.\n return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n }\n\n return diff_bisect_(text1, text2);\n}\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n const text1_length = text1.length;\n const text2_length = text2.length;\n const max_d = Math.ceil((text1_length + text2_length) / 2);\n const v_offset = max_d;\n const v_length = 2 * max_d;\n const v1 = new Array(v_length);\n const v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n const delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n const front = (delta % 2 !== 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n let k1start = 0;\n let k1end = 0;\n let k2start = 0;\n let k2end = 0;\n for (let d = 0; d < max_d; d++) {\n // Walk the front path one step.\n for (let k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n const k1_offset = v_offset + k1;\n let x1;\n if (k1 === -d || (k1 !== d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n let y1 = x1 - k1;\n while (\n x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) === text2.charAt(y1)\n ) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n const k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] !== -1) {\n // Mirror x2 onto top-left coordinate system.\n const x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detfrontected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (let k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n const k2_offset = v_offset + k2;\n let x2;\n if (k2 === -d || (k2 !== d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n let y2 = x2 - k2;\n while (\n x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) === text2.charAt(text2_length - y2 - 1)\n ) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n const k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] !== -1) {\n const x1 = v1[k1_offset];\n const y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n}\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n const text1a = text1.substring(0, x);\n const text2a = text2.substring(0, y);\n const text1b = text1.substring(x);\n const text2b = text2.substring(y);\n\n // Compute both diffs serially.\n const diffs = diff_main(text1a, text2a);\n const diffsb = diff_main(text1b, text2b);\n\n return diffs.concat(diffsb);\n}\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\nfunction diff_commonPrefix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) !== text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n let pointermin = 0;\n let pointermax = Math.min(text1.length, text2.length);\n let pointermid = pointermax;\n let pointerstart = 0;\n while (pointermin < pointermid) {\n if (\n text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)\n ) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n\n if (is_surrogate_pair_start(text1.charCodeAt(pointermid - 1))) {\n pointermid--;\n }\n\n return pointermid;\n}\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.slice(-1) !== text2.slice(-1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n let pointermin = 0;\n let pointermax = Math.min(text1.length, text2.length);\n let pointermid = pointermax;\n let pointerend = 0;\n while (pointermin < pointermid) {\n if (\n text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)\n ) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n\n if (is_surrogate_pair_end(text1.charCodeAt(text1.length - pointermid))) {\n pointermid--;\n }\n\n return pointermid;\n}\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.<string>} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n const longtext = text1.length > text2.length ? text1 : text2;\n const shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.<string>} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n const seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n let j = -1;\n let best_common = '';\n let best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) !== -1) {\n const prefixLength = diff_commonPrefix(\n longtext.substring(i), shorttext.substring(j));\n const suffixLength = diff_commonSuffix(\n longtext.substring(0, i), shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(\n j - suffixLength, j) + shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [\n best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common\n ];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n const hm1 = diff_halfMatchI_(longtext, shorttext, Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n const hm2 = diff_halfMatchI_(longtext, shorttext, Math.ceil(longtext.length / 2));\n let hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n let text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n const mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n}\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n * @param {boolean} fix_unicode Whether to normalize to a unicode-correct diff\n */\nfunction diff_cleanupMerge(diffs, fix_unicode) {\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n let pointer = 0;\n let count_delete = 0;\n let count_insert = 0;\n let text_delete = '';\n let text_insert = '';\n let commonlength;\n let previous_equality;\n while (pointer < diffs.length) {\n if (pointer < diffs.length - 1 && !diffs[pointer][1]) {\n diffs.splice(pointer, 1);\n continue;\n }\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n previous_equality = pointer - count_insert - count_delete - 1;\n if (fix_unicode) {\n // prevent splitting of unicode surrogate pairs. when fix_unicode is true,\n // we assume that the old and new text in the diff are complete and correct\n // unicode-encoded JS strings, but the tuple boundaries may fall between\n // surrogate pairs. we fix this by shaving off stray surrogates from the end\n // of the previous equality and the beginning of this equality. this may create\n // empty equalities or a common prefix or suffix. for example, if AB and AC are\n // emojis, `[[0, 'A'], [-1, 'BA'], [0, 'C']]` would turn into deleting 'ABAC' and\n // inserting 'AC', and then the common suffix 'AC' will be eliminated. in this\n // particular case, both equalities go away, we absorb any previous inequalities,\n // and we keep scanning for the next equality before rewriting the tuples.\n if (previous_equality >= 0 && ends_with_pair_start(diffs[previous_equality][1])) {\n const stray = diffs[previous_equality][1].slice(-1);\n diffs[previous_equality][1] = diffs[previous_equality][1].slice(0, -1);\n text_delete = stray + text_delete;\n text_insert = stray + text_insert;\n if (!diffs[previous_equality][1]) {\n // emptied out previous equality, so delete it and include previous delete/insert\n diffs.splice(previous_equality, 1);\n pointer--;\n var k = previous_equality - 1;\n if (diffs[k] && diffs[k][0] === DIFF_INSERT) {\n count_insert++;\n text_insert = diffs[k][1] + text_insert;\n k--;\n }\n if (diffs[k] && diffs[k][0] === DIFF_DELETE) {\n count_delete++;\n text_delete = diffs[k][1] + text_delete;\n k--;\n }\n previous_equality = k;\n }\n }\n if (starts_with_pair_end(diffs[pointer][1])) {\n const stray = diffs[pointer][1].charAt(0);\n diffs[pointer][1] = diffs[pointer][1].slice(1);\n text_delete += stray;\n text_insert += stray;\n }\n }\n if (pointer < diffs.length - 1 && !diffs[pointer][1]) {\n // for empty equality not at end, wait for next equality\n diffs.splice(pointer, 1);\n break;\n }\n if (text_delete.length > 0 || text_insert.length > 0) {\n // note that diff_commonPrefix and diff_commonSuffix are unicode-aware\n if (text_delete.length > 0 && text_insert.length > 0) {\n // Factor out any common prefixes.\n commonlength = diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if (previous_equality >= 0) {\n diffs[previous_equality][1] += text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL, text_insert.substring(0, commonlength)]);\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixes.\n commonlength = diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] =\n text_insert.substring(text_insert.length - commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length - commonlength);\n text_delete = text_delete.substring(0, text_delete.length - commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n const n = count_insert + count_delete;\n if (text_delete.length === 0 && text_insert.length === 0) {\n diffs.splice(pointer - n, n);\n pointer = pointer - n;\n } else if (text_delete.length === 0) {\n diffs.splice(pointer - n, n, [DIFF_INSERT, text_insert]);\n pointer = pointer - n + 1;\n } else if (text_insert.length === 0) {\n diffs.splice(pointer - n, n, [DIFF_DELETE, text_delete]);\n pointer = pointer - n + 1;\n } else {\n diffs.splice(pointer - n, n, [DIFF_DELETE, text_delete], [DIFF_INSERT, text_insert]);\n pointer = pointer - n + 2;\n }\n }\n if (pointer !== 0 && diffs[pointer - 1][0] === DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n let changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] === DIFF_EQUAL &&\n diffs[pointer + 1][0] === DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) === diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n diff_cleanupMerge(diffs, fix_unicode);\n }\n}\n\nfunction is_surrogate_pair_start(charCode) {\n return charCode >= 0xD800 && charCode <= 0xDBFF;\n}\n\nfunction is_surrogate_pair_end(charCode) {\n return charCode >= 0xDC00 && charCode <= 0xDFFF;\n}\n\nfunction starts_with_pair_end(str) {\n return is_surrogate_pair_end(str.charCodeAt(0));\n}\n\nfunction ends_with_pair_start(str) {\n return is_surrogate_pair_start(str.charCodeAt(str.length - 1));\n}\n\nfunction remove_empty_tuples(tuples) {\n const ret = [];\n for (let i = 0; i < tuples.length; i++) {\n if (tuples[i][1].length > 0) {\n ret.push(tuples[i]);\n }\n }\n return ret;\n}\n\nfunction make_edit_splice(before, oldMiddle, newMiddle, after) {\n if (ends_with_pair_start(before) || starts_with_pair_end(after)) {\n return null;\n }\n return remove_empty_tuples([\n [DIFF_EQUAL, before],\n [DIFF_DELETE, oldMiddle],\n [DIFF_INSERT, newMiddle],\n [DIFF_EQUAL, after]\n ]);\n}\n\nfunction find_cursor_edit_diff(oldText, newText, cursor_pos) {\n // note: this runs after equality check has ruled out exact equality\n const oldRange = typeof cursor_pos === 'number' ?\n { index: cursor_pos, length: 0 } : cursor_pos.oldRange;\n const newRange = typeof cursor_pos === 'number' ?\n null : cursor_pos.newRange;\n // take into account the old and new selection to generate the best diff\n // possible for a text edit. for example, a text change from \"xxx\" to \"xx\"\n // could be a delete or forwards-delete of any one of the x's, or the\n // result of selecting two of the x's and typing \"x\".\n const oldLength = oldText.length;\n const newLength = newText.length;\n if (oldRange.length === 0 && (newRange === null || newRange.length === 0)) {\n // see if we have an insert or delete before or after cursor\n const oldCursor = oldRange.index;\n const oldBefore = oldText.slice(0, oldCursor);\n const oldAfter = oldText.slice(oldCursor);\n const maybeNewCursor = newRange ? newRange.index : null;\n editBefore: {\n // is this an insert or delete right before oldCursor?\n const newCursor = oldCursor + newLength - oldLength;\n if (maybeNewCursor !== null && maybeNewCursor !== newCursor) {\n break editBefore;\n }\n if (newCursor < 0 || newCursor > newLength) {\n break editBefore;\n }\n const newBefore = newText.slice(0, newCursor);\n const newAfter = newText.slice(newCursor);\n if (newAfter !== oldAfter) {\n break editBefore;\n }\n const prefixLength = Math.min(oldCursor, newCursor);\n const oldPrefix = oldBefore.slice(0, prefixLength);\n const newPrefix = newBefore.slice(0, prefixLength);\n if (oldPrefix !== newPrefix) {\n break editBefore;\n }\n const oldMiddle = oldBefore.slice(prefixLength);\n const newMiddle = newBefore.slice(prefixLength);\n return make_edit_splice(oldPrefix, oldMiddle, newMiddle, oldAfter);\n }\n editAfter: {\n // is this an insert or delete right after oldCursor?\n if (maybeNewCursor !== null && maybeNewCursor !== oldCursor) {\n break editAfter;\n }\n const cursor = oldCursor;\n const newBefore = newText.slice(0, cursor);\n const newAfter = newText.slice(cursor);\n if (newBefore !== oldBefore) {\n break editAfter;\n }\n const suffixLength = Math.min(oldLength - cursor, newLength - cursor);\n const oldSuffix = oldAfter.slice(oldAfter.length - suffixLength);\n const newSuffix = newAfter.slice(newAfter.length - suffixLength);\n if (oldSuffix !== newSuffix) {\n break editAfter;\n }\n const oldMiddle = oldAfter.slice(0, oldAfter.length - suffixLength);\n const newMiddle = newAfter.slice(0, newAfter.length - suffixLength);\n return make_edit_splice(oldBefore, oldMiddle, newMiddle, oldSuffix);\n }\n }\n if (oldRange.length > 0 && newRange && newRange.length === 0) {\n replaceRange: {\n // see if diff could be a splice of the old selection range\n const oldPrefix = oldText.slice(0, oldRange.index);\n const oldSuffix = oldText.slice(oldRange.index + oldRange.length);\n const prefixLength = oldPrefix.length;\n const suffixLength = oldSuffix.length;\n if (newLength < prefixLength + suffixLength) {\n break replaceRange;\n }\n const newPrefix = newText.slice(0, prefixLength);\n const newSuffix = newText.slice(newLength - suffixLength);\n if (oldPrefix !== newPrefix || oldSuffix !== newSuffix) {\n break replaceRange;\n }\n const oldMiddle = oldText.slice(prefixLength, oldLength - suffixLength);\n const newMiddle = newText.slice(prefixLength, newLength - suffixLength);\n return make_edit_splice(oldPrefix, oldMiddle, newMiddle, oldSuffix);\n }\n }\n\n return null;\n}\n\nfunction diff(text1, text2, cursor_pos) {\n // only pass fix_unicode=true at the top level, not when diff_main is\n // recursively invoked\n return diff_main(text1, text2, cursor_pos, true);\n}\n\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nexport default diff;\n","import { DOMConsole } from \"../io/domConsole\";\nimport { getInstance } from \"../services/localizedStringsService\";\n\nconst LocalizedStrings = getInstance();\n\nexport class TestConsole {\n\n\n constructor (inputList) {\n this.index = 0;\n this.inputList = inputList;\n this.list = [];\n }\n\n write (text) {\n this._appendText(text, DOMConsole.USER);\n }\n\n info (text) {\n this._appendText(text, DOMConsole.INFO);\n }\n\n err (text) {\n this._appendText(text, DOMConsole.ERR);\n }\n\n _appendText (text) {\n this.list.push(text);\n }\n\n\n getClassForType (type) {\n switch (type) {\n case DOMConsole.USER:\n return \"ivprog-term-userText\";\n case DOMConsole.INFO:\n return \"ivprog-term-info\";\n case DOMConsole.ERR:\n return \"ivprog-term-error\";\n }\n }\n\n requestInput (callback) {\n if(this.index < this.inputList.length) { \n callback(this.inputList[this.index]);\n this.index++;\n } else {\n throw new Error(LocalizedStrings.getError(\"exceeded_input_request\"));\n }\n }\n\n sendOutput (text) {\n const output = \"\"+text;\n output.split(\"\\n\").forEach(t => {\n t = t.replace(/\\t/g,'	');\n this.write(t)\n });\n }\n}","import { LanguageService } from \"./../services/languageService\";\nimport { LocalizedStrings } from \"./../services/localizedStringsService\";\nimport { Operators } from \"./../ast/operators\";\n\n/** \n * source: https://pawelgrzybek.com/page-scroll-in-vanilla-javascript/ \n * \n*/\nexport function scrollIt (destination, duration = 200, easing = 'linear', callback = null) {\n\n const easings = {\n linear(t) {\n return t;\n },\n easeInQuad(t) {\n return t * t;\n },\n easeOutQuad(t) {\n return t * (2 - t);\n },\n easeInOutQuad(t) {\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n },\n easeInCubic(t) {\n return t * t * t;\n },\n easeOutCubic(t) {\n return (--t) * t * t + 1;\n },\n easeInOutCubic(t) {\n return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;\n },\n easeInQuart(t) {\n return t * t * t * t;\n },\n easeOutQuart(t) {\n return 1 - (--t) * t * t * t;\n },\n easeInOutQuart(t) {\n return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * (--t) * t * t * t;\n },\n easeInQuint(t) {\n return t * t * t * t * t;\n },\n easeOutQuint(t) {\n return 1 + (--t) * t * t * t * t;\n },\n easeInOutQuint(t) {\n return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * (--t) * t * t * t * t;\n }\n };\n\n const start = window.pageYOffset;\n const startTime = 'now' in window.performance ? performance.now() : new Date().getTime();\n\n const documentHeight = Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight);\n const windowHeight = window.innerHeight || document.documentElement.clientHeight || document.getElementsByTagName('body')[0].clientHeight;\n const destinationOffset = typeof destination === 'number' ? destination : destination.offsetTop;\n const destinationOffsetToScroll = Math.round(documentHeight - destinationOffset < windowHeight ? documentHeight - windowHeight : destinationOffset);\n\n if ('requestAnimationFrame' in window === false) {\n window.scroll(0, destinationOffsetToScroll);\n if (callback) {\n callback();\n }\n return;\n }\n\n function scroll() {\n const now = 'now' in window.performance ? performance.now() : new Date().getTime();\n const time = Math.min(1, ((now - startTime) / duration));\n const timeFunction = easings[easing](time);\n window.scroll(0, Math.ceil((timeFunction * (destinationOffsetToScroll - start)) + start));\n\n if (window.pageYOffset === destinationOffsetToScroll) {\n if (callback) {\n callback();\n }\n return;\n }\n\n requestAnimationFrame(scroll);\n }\n\n scroll();\n}\n\n/**\n * \n * source: https://stackoverflow.com/a/16270434\n */\nexport function isElementInViewport (el) {\n const rect = el.getBoundingClientRect();\n\n return rect.bottom > 0 &&\n rect.right > 0 &&\n rect.left < (window.innerWidth || document.documentElement.clientWidth) &&\n rect.top < (window.innerHeight || document.documentElement.clientHeight);\n}\n\nlet cacheMainList = null;\nlet cacheOp = null;\n\nfunction fillCache () {\n if(cacheMainList == null) {\n cacheMainList = [];\n const mainList = [\"RK_PROGRAM\",\"RK_REAL\",\"RK_VOID\",\"RK_BOOLEAN\",\"RK_STRING\",\n \"RK_INTEGER\",\"RK_CHARACTER\",\"RK_SWITCH\",\"RK_CASE\",\"RK_DEFAULT\",\"RK_CONST\",\n \"RK_FUNCTION\",\"RK_RETURN\",\"RK_FOR\",\"RK_BREAK\",\"RK_DO\",\"RK_WHILE\",\"RK_IF\",\n \"RK_ELSE\",\"RK_FALSE\",\"RK_TRUE\"];\n const lexerClass = LanguageService.getCurrentLexer();\n const nullLexer = new lexerClass();\n for (let key = 0; key < mainList.length; ++key) {\n const word = mainList[key];\n const keyword = nullLexer.literalNames[lexerClass[word]];\n cacheMainList.push(keyword.substring(1, keyword.length-1));\n }\n }\n if(cacheOp == null) {\n cacheOp = []\n const logicOpList = [Operators.AND.value, Operators.OR.value, Operators.NOT.value];\n for (let op = 0; op < logicOpList.length; ++op) {\n const lOp = `logic_operator_${logicOpList[op]}`;\n cacheOp.push(LocalizedStrings.getUI(lOp))\n }\n }\n}\n\nexport function isKeyword (text) {\n fillCache();\n for (let key = 0; key < cacheMainList.length; ++key) {\n const keyword = cacheMainList[key];\n if(keyword == text) {\n return true;\n }\n }\n // not in main list, check op\n for (let op = 0; op < cacheOp.length; op++) {\n const lOp = cacheOp[op];\n if(lOp == text) {\n return true;\n }\n }\n return false;\n}\n\nexport function isValidIdentifier (identifier_str) {\n const validRegex = /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(identifier_str);\n if(!validRegex) {\n return false;\n }\n\treturn !isKeyword(identifier_str);\n}\n\nexport function getCodeEditorModeConfig () {\n const blockList = [\"RK_SWITCH\", \"RK_PROGRAM\",\"RK_CASE\",\"RK_DEFAULT\",\"RK_FOR\",\"RK_FOR_ALT\",\n \"RK_FUNCTION\",\"RK_DO\",\"RK_WHILE\",\"RK_WHILE_ALT\",\"RK_IF\",\"RK_ELSE\"]\n const keywordsList = [\"RK_CONST\",\"RK_RETURN\",\"RK_BREAK\",\"RK_FOR_FROM\",\"RK_FOR_TO\",\"RK_FOR_PASS\",\"RK_DO_UNTIL\"];\n const typeList = [\"RK_REAL\",\"RK_VOID\",\"RK_BOOLEAN\",\"RK_STRING\",\"RK_INTEGER\"];\n const atomList = [\"RK_FALSE\", \"RK_TRUE\"];\n\n const case_default = [];\n const blocks = [];\n const keywords = [];\n const types = [];\n const atoms = []\n let switchString = \"\";\n\n cacheMainList = [];\n const lexerClass = LanguageService.getCurrentLexer();\n const nullLexer = new lexerClass();\n blockList.forEach( v => {\n const keyword = nullLexer.literalNames[lexerClass[v]];\n const value = keyword.substring(1, keyword.length-1);\n cacheMainList.push(value);\n keywords.push(value);\n blocks.push(value);\n if(v == \"RK_SWITCH\") {\n switchString = value;\n } else if (v == \"RK_CASE\" || v == \"RK_DEFAULT\") {\n case_default.push(value);\n }\n });\n keywordsList.forEach( v => {\n const keyword = nullLexer.literalNames[lexerClass[v]];\n const value = keyword.substring(1, keyword.length-1);\n cacheMainList.push(value);\n keywords.push(value);\n });\n typeList.forEach(v => {\n const keyword = nullLexer.literalNames[lexerClass[v]];\n const value = keyword.substring(1, keyword.length-1);\n cacheMainList.push(value);\n types.push(value);\n })\n atomList.forEach( v => {\n const keyword = nullLexer.literalNames[lexerClass[v]];\n const value = keyword.substring(1, keyword.length-1);\n cacheMainList.push(value);\n atoms.push(value);\n })\n \n cacheOp = []\n const logicOpList = [Operators.AND.value, Operators.OR.value, Operators.NOT.value];\n for (let op = 0; op < logicOpList.length; ++op) {\n const lOp = `logic_operator_${logicOpList[op]}`;\n const value = LocalizedStrings.getUI(lOp);\n cacheOp.push(value)\n keywords.push(value);\n }\n return {\n case_default: case_default,\n atoms: atoms,\n keywords: keywords,\n switchString: switchString,\n types: types,\n blocks: blocks\n }\n}\n\n/**\n * Source: https://gist.github.com/andrei-m/982927\n * @param {string} a \n * @param {string} b \n */\nexport function levenshteinDistance (a, b) {\n if(a.length == 0) return b.length; \n if(b.length == 0) return a.length; \n\n const matrix = [];\n\n // increment along the first column of each row\n let i;\n for(i = 0; i <= b.length; i++){\n matrix[i] = [i];\n }\n\n // increment each column in the first row\n let j;\n for(j = 0; j <= a.length; j++){\n matrix[0][j] = j;\n }\n\n // Fill in the rest of the matrix\n for(i = 1; i <= b.length; i++){\n for(j = 1; j <= a.length; j++){\n if(b.charCodeAt(i-1) == a.charCodeAt(j-1)){\n matrix[i][j] = matrix[i-1][j-1];\n } else {\n matrix[i][j] = Math.min(matrix[i-1][j-1] + 1, // substitution\n Math.min(matrix[i][j-1] + 1, // insertion\n matrix[i-1][j] + 1)); // deletion\n }\n }\n }\n return matrix[b.length][a.length];\n}\n\nlet win = null\nexport function openAssessmentDetail (event) {\n event.preventDefault();\n const page_code = event.currentTarget.dataset.page;\n if(win != null) {\n win.close()\n }\n win = window.open(\"\", \"DetailWindow\", \"width=550,height=600\");\n win.document.open();\n win.document.write(page_code);\n win.document.close();\n}\n\nexport function range (size, startAt = 0) {\n return [...Array(size).keys()].map(i => i + startAt);\n}\n","import * as GlobalsManagement from './globals';\nimport * as FunctionsManagement from './functions';\n\nwindow.block_render = false;\n\nexport function renderAlgorithm () {\n\tif (window.block_render) {\n\t\treturn;\n\t}\n\tif (window.draging) {\n\t\treturn;\n\t}\n\twindow.block_render = true;\n\tconsole.log('rendering algorithm');\n\n \t$('.all_functions').children().off();\n\t$('.all_functions').empty();\n\n\t$('.list_globals').children().off();\n\t$('.list_globals').empty();\t\n\n\tfor (var i = 0; i < window.program_obj.functions.length; i++) {\n\t\tFunctionsManagement.renderFunction(window.program_obj.functions[i]);\n\t}\n\n\tfor (var i = 0; i < window.program_obj.globals.length; i++) {\n\t\tGlobalsManagement.renderGlobal(window.program_obj.globals[i]);\n\t}\t\n\n\tsetTimeout(function(){ window.block_render = false; }, 100);\n\tconsole.log('fim do render');\n\n\tif (settingsFilter && settingsFilter[0]) {\n blockAllEditingOptions();\n } \n}","import { Types } from './types';\nimport * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as Utils from './utils';\n\nexport function generate () {\n\n\t$('.ivprog_visual_panel').find('.error_icon').remove();\n\n\tvar code = LocalizedStrings.getUI('program') + ' { ';\n\n\tcode += globalsCode();\n\n\tcode += '\\n';\n\n\tvar has_error = false;\n\n\tfor (var i = 0; i < window.program_obj.functions.length; i ++) {\n\t\tvar n_code = functionsCode(window.program_obj.functions[i]);\n\t\tif (n_code == null) {\n\t\t\thas_error = true;\n\t\t}\n\t\tcode += n_code;\n\t\tcode += '\\n';\n\n\t}\n\n\tcode += '\\n}';\n\n\tif (has_error) {\n\t\treturn null;\n\t} else {\n\t\treturn code;\n\t}\n}\n\nfunction functionsCode (function_obj) {\n\tvar ret = '\\n\\t' + LocalizedStrings.getUI('function') + ' ';\n\n\tvar has_error = false;\n\n\tswitch (function_obj.return_type) {\n\t\tcase Types.INTEGER:\n\t\t\tret += LocalizedStrings.getUI('type_integer');\n\t\t\tbreak;\n\t\tcase Types.REAL:\n\t\t\tret += LocalizedStrings.getUI('type_real');\n\t\t\tbreak;\n\t\tcase Types.TEXT:\n\t\t\tret += LocalizedStrings.getUI('type_text');\n\t\t\tbreak;\n\t\tcase Types.BOOLEAN:\n\t\t\tret += LocalizedStrings.getUI('type_boolean');\n\t\t\tbreak;\n\t\tcase Types.VOID:\n\t\t\tret += LocalizedStrings.getUI('type_void');\n\t\t\tbreak;\n\t}\n\tret += ' ';\n\n\tif (function_obj.return_dimensions == 1) {\n\t\tret += '[] '\n\t} else if (function_obj.return_dimensions == 2) {\n\t\tret += '[][] '\n\t}\n\n\tret += function_obj.name + ' ( ';\n\n\tfor (var j = 0; j < function_obj.parameters_list.length; j++) {\n\t\tret += parametersCode(function_obj.parameters_list[j]);\n\t\tif ((j + 1) < function_obj.parameters_list.length) {\n\t\t\tret += ', ';\n\t\t}\n\t}\n\n\tret += ' ) {';\n\n\tfor (var j = 0; j < function_obj.variables_list.length; j++) {\n\t\tret += variablesCode(function_obj.variables_list[j]);\n\t}\n\n\tfor (var j = 0; j < function_obj.commands.length; j++) {\n\t\t//try {\n\t\t\tret += commandsCode(function_obj.commands[j]);\n\t\t/*} catch (err) {\n\n\t\t\thas_error = true;\n\n\t\t\tconsole.error(err.message);\n\n\t\t\tvar todos = $('body').find('.command_container');\n\n\t\t\tfor (var i = 0; i < todos.length; i++) {\n\t\t\t\tif ($(todos[i]).data('command') == function_obj.commands[j]) {\n\t\t\t\t\t$( todos[i] ).prepend( ' <i class=\"ui icon red exclamation triangle error_icon\"></i> ' );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}*/\n\t\t\n\t}\n\n\tret += '\\n\\t}';\n\n\tif (has_error) {\n\t\treturn null;\n\t} else {\n\t\treturn ret;\n\t}\n}\n\nfunction commandsCode (command_obj, indentation = 2) {\n\tswitch (command_obj.type) {\n\t\tcase Models.COMMAND_TYPES.break:\n\t\t\treturn breaksCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.comment:\n\t\t\treturn commentsCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.reader:\n\t\t\treturn readersCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.writer:\n\t\t\treturn writersCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.functioncall:\n\t\t\treturn functioncallsCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.attribution:\n\t\t\treturn attributionsCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.whiletrue:\n\t\t\treturn whiletruesCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.dowhiletrue:\n\t\t\treturn doWhilesCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.iftrue:\n\t\t\treturn iftruesCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.repeatNtimes:\n\t\t\treturn repeatNtimesCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.switch:\n\t\t\treturn switchsCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.return:\n\t\t\treturn returnsCode(command_obj, indentation);\n\t}\n}\n\nfunction returnsCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_return');\n\n\tif (command_obj.variable_value_menu) {\n\t\ttry {\n\t\t\tret += ' ' + elementExpressionCode(command_obj.variable_value_menu);\n\t\t\t//ret += ' ' + variableValueMenuCode(command_obj.variable_value_menu, true);\n\t\t} catch(err) {}\n\t}\n\n\treturn ret;\n}\n\nfunction breaksCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_break');\n\n\treturn ret;\n}\n\nfunction switchsCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_code_switch') + ' ( ';\n\n\tret += variableValueMenuCode(command_obj.variable);\n\n\tret += ' ) { ';\n\n\tif (command_obj.cases) {\n\t\tfor (var i = 0; i < command_obj.cases.length; i++) {\n\t\t\tret += switchcasesCode(command_obj.cases[i], (indentation + 1));\n\t\t}\n\t}\n\n\tret += '\\n';\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\tret += '} ';\n\n\treturn ret;\n}\n\nfunction switchcasesCode (switchcase, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_code_case') + ' ';\n\tret += variableValueMenuCode(switchcase.variable_value_menu);\n\tret += ' :';\n\n\tif (switchcase.commands_block) {\n\t\tfor (var i = 0; i < switchcase.commands_block.length; i++) {\n\t\t\tret += commandsCode(switchcase.commands_block[i], (indentation + 1));\n\t\t}\n\t}\n\n\treturn ret;\n\n}\n\nfunction repeatNtimesCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_for') + ' ';\n\n\tif (command_obj.var_attribution) {\n\t\tret += variableValueMenuCode(command_obj.var_attribution);\n\t\tret += ` ${LocalizedStrings.getUI('text_code_for_from')} `;\n\t\tret += variableValueMenuCode(command_obj.expression1);\n\t}\n\n\tif (command_obj.expression2) {\n\t\tret += ` ${LocalizedStrings.getUI('text_code_for_to')} `;\n\t\tret += variableValueMenuCode(command_obj.expression2);\n\t}\n\n\tif (command_obj.expression3) {\n\t\tret += ` ${LocalizedStrings.getUI('text_code_for_pass')} `;\n\t\tswitch (command_obj.expression3.itens[1]) {\n\t\t\tcase Models.ARITHMETIC_TYPES.plus:\n\t\t\t\tret += ' +';\n\t\t\t\tbreak;\n\t\t\tcase Models.ARITHMETIC_TYPES.minus:\n\t\t\t\tret += ' -';\n\t\t\t\tbreak;\n\t\t}\n\t\tret += variableValueMenuCode(command_obj.expression3.itens[2]);\n\t}\n\n\t/*if (command_obj.var_incrementation) {\n\t\tret += variableValueMenuCode(command_obj.var_incrementation);\n\t\tret += ' <- ';\n\t\tret += variableValueMenuCode(command_obj.expression3.itens[0]);\n\n\t\tswitch (command_obj.expression3.itens[1]) {\n\t\t\tcase Models.ARITHMETIC_TYPES.plus:\n\t\t\t\tret += ' + ';\n\t\t\t\tbreak;\n\t\t\tcase Models.ARITHMETIC_TYPES.minus:\n\t\t\t\tret += ' - ';\n\t\t\t\tbreak;\n\t\t\tcase Models.ARITHMETIC_TYPES.multiplication:\n\t\t\t\tret += ' * ';\n\t\t\t\tbreak;\n\t\t\tcase Models.ARITHMETIC_TYPES.division:\n\t\t\t\tret += ' / ';\n\t\t\t\tbreak;\n\t\t\tcase Models.ARITHMETIC_TYPES.module:\n\t\t\t\tret += ' % ';\n\t\t\t\tbreak;\n\t\t}\n\n\t\tret += variableValueMenuCode(command_obj.expression3.itens[2]);\t\t\n\t}*/\n\n\tret += ' { ';\n\n\tif (command_obj.commands_block) {\n\t\tfor (var i = 0; i < command_obj.commands_block.length; i++) {\n\t\t\tret += commandsCode(command_obj.commands_block[i], (indentation + 1));\n\t\t}\n\t}\n\n\tret += '\\n';\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += '}';\n\treturn ret;\n}\n\nfunction iftruesCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_if');\n\n\tif (!command_obj.expression) {\n\t\tUtils.renderErrorMessage(command_obj.expression.dom_object, LocalizedStrings.getUI('inform_valid_expression'));\n\t} else {\n\t\tret += ' ( ';\n\t\tret += elementExpressionCode(command_obj.expression);\n\t\tret += ' ) ';\n\t}\n\n\t/*switch (command_obj.expression.expression.type) {\n\t\tcase Models.EXPRESSION_TYPES.exp_logic:\n\t\t\tret += logicExpressionCode(command_obj.expression.expression);\n\t\t\tbreak;\n\t\tcase Models.EXPRESSION_TYPES.exp_arithmetic:\n\t\t\tret += arithmeticExpressionCode(command_obj.expression.expression);\n\t\t\tbreak;\n\t}*/\n\n\tret += ' { ';\n\n\tif (command_obj.commands_block) {\n\t\tfor (var i = 0; i < command_obj.commands_block.length; i++) {\n\t\t\tret += commandsCode(command_obj.commands_block[i], (indentation + 1));\n\t\t}\n\t}\n\n\tret += '\\n';\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += '} ' + LocalizedStrings.getUI('text_else') + ' {';\n\n\tif (command_obj.commands_else) {\n\t\tfor (var i = 0; i < command_obj.commands_else.length; i++) {\n\t\t\tret += commandsCode(command_obj.commands_else[i], (indentation + 1));\n\t\t}\n\t}\n\n\tret += '\\n';\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += '}';\n\n\treturn ret;\n}\n\n\nfunction doWhilesCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_code_do') + ' { ';\n\n\tif (command_obj.commands_block) {\n\t\tfor (var i = 0; i < command_obj.commands_block.length; i++) {\n\t\t\tret += commandsCode(command_obj.commands_block[i], (indentation + 1));\n\t\t}\n\t}\n\n\tret += '\\n';\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += '} ' + LocalizedStrings.getUI('text_code_do_until');\n\n\tif (!command_obj.expression) {\n\t\tUtils.renderErrorMessage(command_obj.expression.dom_object, LocalizedStrings.getUI('inform_valid_expression'));\n\t}\n\n\t/*switch (command_obj.expression.expression.type) {\n\t\tcase Models.EXPRESSION_TYPES.exp_logic:\n\t\t\tret += logicExpressionCode(command_obj.expression.expression);\n\t\t\tbreak;\n\t\tcase Models.EXPRESSION_TYPES.exp_arithmetic:\n\t\t\tret += arithmeticExpressionCode(command_obj.expression.expression);\n\t\t\tbreak;\n\t}*/\n\n\tif (command_obj.expression) {\n\t\tret += ' ( ';\n\t\tret += elementExpressionCode(command_obj.expression);\n\t\tret += ' ) ';\n\t}\n\n\treturn ret;\n}\n\n\nfunction whiletruesCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_code_while');\n\n\tif (!command_obj.expression) {\n\t\tUtils.renderErrorMessage(command_obj.expression.dom_object, LocalizedStrings.getUI('inform_valid_expression'));\n\t}\n\n\t/*switch (command_obj.expression.expression.type) {\n\t\tcase Models.EXPRESSION_TYPES.exp_logic:\n\t\t\tret += logicExpressionCode(command_obj.expression.expression);\n\t\t\tbreak;\n\t\tcase Models.EXPRESSION_TYPES.exp_arithmetic:\n\t\t\tret += arithmeticExpressionCode(command_obj.expression.expression);\n\t\t\tbreak;\n\t}*/\n\tif (command_obj.expression) {\n\t\tret += ' ( ';\n\t\tret += elementExpressionCode(command_obj.expression);\n\t\tret += ' ) ';\n\t}\n\n\tret += ' { ';\n\n\tif (command_obj.commands_block) {\n\t\tfor (var i = 0; i < command_obj.commands_block.length; i++) {\n\t\t\tret += commandsCode(command_obj.commands_block[i], (indentation + 1));\n\t\t}\n\t}\n\n\tret += '\\n';\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += '}';\n\n\treturn ret;\n}\n\nfunction logicExpressionCode (expression) {\n\tvar ret = ' ( ';\n\n\tif (expression.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\tret += logicExpressionCode(expression.first_operand);\n\t} else if (expression.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\tret += arithmeticExpressionCode(expression.first_operand);\n\t} else {\n\t\tret += variableValueMenuCode(expression.first_operand);\n\t}\n\n\tif (expression.operator) {\n\t\tswitch (expression.operator) {\n\t case Models.LOGIC_COMPARISON.equals_to:\n\t \tret += ' == ';\n\t \tbreak;\n\t case Models.LOGIC_COMPARISON.not_equals_to:\n\t \tret += ' != ';\n\t \tbreak;\n\t case Models.LOGIC_COMPARISON.and:\n\t \tret += ' && ';\n\t \tbreak;\n\t case Models.LOGIC_COMPARISON.or:\n\t \tret += ' || ';\n\t \tbreak;\n\t\t}\n\n\t\tif (expression.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\t\tret += logicExpressionCode(expression.second_operand);\n\t\t} else if (expression.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\t\tret += arithmeticExpressionCode(expression.second_operand);\n\t\t} else {\n\t\t\tret += variableValueMenuCode(expression.second_operand);\n\t\t}\n\n\t}\n\n\tret += ' ) ';\n\n\treturn ret;\n}\n\nfunction arithmeticExpressionCode (expression) {\n\tvar ret = ' ( ';\n\n\tif (expression.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\tret += logicExpressionCode(expression.first_operand);\n\t} else if (expression.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\tret += arithmeticExpressionCode(expression.first_operand);\n\t} else {\n\t\tret += variableValueMenuCode(expression.first_operand);\n\t}\n\n\tswitch (expression.operator) {\n case Models.ARITHMETIC_COMPARISON.greater_than:\n \tret += ' > ';\n \tbreak;\n case Models.ARITHMETIC_COMPARISON.less_than:\n \tret += ' < ';\n \tbreak;\n case Models.ARITHMETIC_COMPARISON.equals_to:\n \tret += ' == ';\n \tbreak;\n case Models.ARITHMETIC_COMPARISON.not_equals_to:\n \tret += ' != ';\n \tbreak;\n case Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to:\n \tret += ' >= ';\n \tbreak;\n case Models.ARITHMETIC_COMPARISON.less_than_or_equals_to:\n \tret += ' <= ';\n \tbreak;\n\t}\n\n\tif (expression.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\tret += logicExpressionCode(expression.second_operand);\n\t} else if (expression.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\tret += arithmeticExpressionCode(expression.second_operand);\n\t} else {\n\t\tret += variableValueMenuCode(expression.second_operand);\n\t}\n\n\tret += ' ) ';\n\n\treturn ret;\n}\n\nfunction attributionsCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += variableValueMenuCode(command_obj.variable) + ' <- ';\n\n\t/*for (var i = 0; i < command_obj.expression.length; i++) {\n\t\tret += elementExpressionCode(command_obj.expression[i]);\n\t}*/\n\tret += elementExpressionCode(command_obj.expression);\n\n\treturn ret;\n}\n\nfunction elementExpressionCode (expression_obj) {\n\n\tvar ret = ''; \n\n\tfor (var i = 0; i < expression_obj.length; i++) {\n\n\n\t\tif (expression_obj[i].type) {\n\n\t\t\tret += variableValueMenuCode(expression_obj[i]);\n\n\t\t} else if (expression_obj[i].type_op) {\n\n\t\t\tswitch(expression_obj[i].item) {\n\n\t\t\t\tcase Models.ARITHMETIC_TYPES.plus:\n\t\t\t\t\tret += ' + ';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.minus:\n\t\t\t\t\tret += ' - ';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.multiplication:\n\t\t\t\t\tret += ' * ';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.division:\n\t\t\t\t\tret += ' / ';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.module:\n\t\t\t\t\tret += ' % ';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase Models.LOGIC_COMPARISON.equals_to:\n\t\t\t\t\tret += ' == ';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase Models.LOGIC_COMPARISON.not_equals_to:\n\t\t\t\t\tret += ' != ';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase Models.LOGIC_COMPARISON.and:\n\t\t\t\t\tret += ' ' + LocalizedStrings.getUI('logic_operator_and') + ' ';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase Models.LOGIC_COMPARISON.or:\n\t\t\t\t\tret += ' ' + LocalizedStrings.getUI('logic_operator_or') + ' ';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase Models.LOGIC_COMPARISON.not:\n\t\t\t\t\tret += ' ' + LocalizedStrings.getUI('logic_operator_not') + ' ';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase Models.ARITHMETIC_COMPARISON.greater_than:\n\t\t\t\t\tret += ' > ';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase Models.ARITHMETIC_COMPARISON.less_than:\n\t\t\t\t\tret += ' < ';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to:\n\t\t\t\t\tret += ' >= ';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase Models.ARITHMETIC_COMPARISON.less_than_or_equals_to:\n\t\t\t\t\tret += ' <= ';\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tret += ' ' + expression_obj[i] + ' ';\n\t\t\t\n\t\t}\n\n\t}\n\n\treturn ret;\n\n}\n\nfunction functioncallsCode (command_obj, indentation) {\n\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\t\n\tret += variableValueMenuCode(command_obj.function_called);\n\n\treturn ret;\n}\n\nfunction readersCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\t\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_command_read') + ' ( ';\n\n\tret += variableValueMenuCode(command_obj.variable_value_menu);\n\n\tret += ' ) ';\n\treturn ret;\n}\n\nfunction variableValueMenuCode (variable_obj, is_return = false) {\n\tvar ret = '';\n\ttry {\n\t\tif (variable_obj.function_called) {\n\n\t\t\tif (variable_obj.function_called.name) {\n\t\t\t\tret += variable_obj.function_called.name + ' ( ';\n\t\t\t} else {\n\t\t\t\tret += LocalizedStrings.translateInternalFunction(variable_obj.function_called.identifier,variable_obj.function_called.category) + ' ( ';\n\t\t\t}\n\n\t\t\tif (variable_obj.parameters_list) {\n\t\t\t\tfor (var i = 0; i < variable_obj.parameters_list.length; i++) {\n\t\t\t\t\tret += variableValueMenuCode(variable_obj.parameters_list[i]);\n\t\t\t\t\tif ((i + 1) < variable_obj.parameters_list.length) {\n\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tret += ' )';\n\t\t} else if (variable_obj.content.type) {\n\n\t\t\tret += variable_obj.content.name;\n\n\t\t\tif (variable_obj.content.dimensions == 1 && variable_obj.dimensions != 1) {\n\t\t\t\tret += ' [ ' + variableValueMenuCode(variable_obj.column) + ' ] ';\n\t\t\t}\n\n\t\t\tif (variable_obj.content.dimensions == 2 && variable_obj.dimensions != 2) {\n\t\t\t\tret += ' [ ' + variableValueMenuCode(variable_obj.row) + ' ] ';\n\t\t\t\tret += ' [ ' + variableValueMenuCode(variable_obj.column) + ' ] ';\n\t\t\t}\n\n\n\t\t} else {\n\t\t\tif (isNaN(variable_obj.content)) {\n\t\t\t\tret += '\"' + variable_obj.content + '\"';\n\t\t\t} else {\n\t\t\t\tret += variable_obj.content;\n\t\t\t}\n\t\t}\n\t} catch (err) {\n\n\t\tif (!is_return) {\n\t\t\tUtils.renderErrorMessage(variable_obj.dom_object, LocalizedStrings.getUI('inform_valid_content'));\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\treturn ret;\n\n}\n\nfunction writersCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\t\n\tret += LocalizedStrings.getUI('text_command_write') + ' ( ';\n\n\t/*for (var i = 0; i < command_obj.content.length; i++) {\n\t\tret += variableValueMenuCode(command_obj.content[i]);\n\n\t\tif ((i + 1) < command_obj.content.length) {\n\t\t\tret += ' + ';\n\t\t}\n\t}*/\n\n\tret += elementExpressionCode(command_obj.content);\n\n\tret += ' ) ';\n\treturn ret;\n}\n\nfunction commentsCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += '// ';\n\n\tret += command_obj.comment_text.content;\n\treturn ret;\n}\n\nfunction parametersCode (parameter_obj) {\n\tvar ret = '';\n\tswitch (parameter_obj.type) {\n\t\tcase Types.INTEGER:\n\t\t\tret += ' '+LocalizedStrings.getUI('type_integer')+' ';\n\t\t\tbreak;\n\t\tcase Types.REAL:\n\t\t\tret += ' '+LocalizedStrings.getUI('type_real')+' ';\n\t\t\tbreak;\n\t\tcase Types.TEXT:\n\t\t\tret += ' '+LocalizedStrings.getUI('type_text')+' ';\n\t\t\tbreak;\n\t\tcase Types.BOOLEAN:\n\t\t\tret += ' '+LocalizedStrings.getUI('type_boolean')+' ';\n\t\t\tbreak;\n\t}\n\tret += parameter_obj.name + '';\n\n\tif (parameter_obj.dimensions == 1) {\n\t\tret += ' []'\n\t} else if (parameter_obj.dimensions == 2) {\n\t\tret += ' [][]'\n\t}\n\treturn ret;\n}\n\nfunction variablesCode (variable_obj) {\n\tvar ret = '';\n\n\tvar temp = variable_obj;\n\n\tret += '\\n\\t\\t';\n\n\tif (temp.is_constant) {\n\t\tret += 'const ';\n\t}\n\tswitch (temp.type) {\n\t\tcase Types.INTEGER:\n\t\t\tret += LocalizedStrings.getUI('type_integer')+' ';\n\t\t\tbreak;\n\t\tcase Types.REAL:\n\t\t\tret += LocalizedStrings.getUI('type_real')+' ';\n\t\t\tbreak;\n\t\tcase Types.TEXT:\n\t\t\tret += LocalizedStrings.getUI('type_text')+' ';\n\t\t\tbreak;\n\t\tcase Types.BOOLEAN:\n\t\t\tret += LocalizedStrings.getUI('type_boolean')+' ';\n\t\t\tbreak;\n\t}\n\tret += temp.name + ' ';\n\n\tif (temp.dimensions == 1) {\n\t\tret += '[' + temp.columns + '] ';\n\n\t\tswitch (temp.type) {\n\t\t\tcase Types.INTEGER:\n\t\t\t\tret += '<- {';\n\t\t\t\tfor (var j = 0; j < temp.value.length; j++) {\n\t\t\t\t\tret += temp.value[j];\n\t\t\t\t\tif ((j + 1) < temp.value.length) {\n\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tret += '}';\n\t\t\t\tbreak;\n\t\t\tcase Types.REAL:\n\t\t\t\tret += '<- {';\n\t\t\t\tfor (var j = 0; j < temp.value.length; j++) {\n\t\t\t\t\tret += temp.value[j].toFixed(2);\n\t\t\t\t\tif ((j + 1) < temp.value.length) {\n\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tret += '}';\n\t\t\t\tbreak;\n\t\t\tcase Types.TEXT:\n\t\t\t\tret += '<- {';\n\t\t\t\tfor (var j = 0; j < temp.value.length; j++) {\n\t\t\t\t\tret += '\"'+temp.value[j]+'\"';\n\t\t\t\t\tif ((j + 1) < temp.value.length) {\n\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tret += '}';\n\t\t\t\tbreak;\n\t\t\tcase Types.BOOLEAN:\n\t\t\t\tret += '<- {';\n\t\t\t\tfor (var j = 0; j < temp.value.length; j++) {\n\t\t\t\t\tif (temp.value[j]) {\n\t\t\t\t\t\tret += LocalizedStrings.getUI('logic_value_true');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret += LocalizedStrings.getUI('logic_value_false');\n\t\t\t\t\t}\n\t\t\t\t\tif ((j + 1) < temp.value.length) {\n\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tret += '}';\n\t\t\t\tbreak;\n\t\t}\n\n\t} else if (temp.dimensions == 2) {\n\t\tret += '[' + temp.rows + '][' + temp.columns + '] ';\n\n\t\tswitch (temp.type) {\n\t\t\tcase Types.INTEGER:\n\t\t\t\tret += '<- {';\n\n\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\tret += '{';\n\n\t\t\t\t\tfor (var k = 0; k < temp.columns; k++) {\n\t\t\t\t\t\tret += temp.value[j][k];\n\n\t\t\t\t\t\tif ((k + 1) < temp.columns) {\n\t\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tret += '}';\n\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tret += '}';\n\t\t\t\tbreak;\n\t\t\tcase Types.REAL:\n\t\t\t\tret += '<- {';\n\n\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\tret += '{';\n\n\t\t\t\t\tfor (var k = 0; k < temp.columns; k++) {\n\t\t\t\t\t\tret += temp.value[j][k].toFixed(2);\n\n\t\t\t\t\t\tif ((k + 1) < temp.columns) {\n\t\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tret += '}';\n\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tret += '}';\n\t\t\t\tbreak;\n\t\t\tcase Types.TEXT:\n\t\t\t\tret += '<- {';\n\n\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\tret += '{';\n\n\t\t\t\t\tfor (var k = 0; k < temp.columns; k++) {\n\t\t\t\t\t\tret += '\"' + temp.value[j][k] + '\"';\n\n\t\t\t\t\t\tif ((k + 1) < temp.columns) {\n\t\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tret += '}';\n\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tret += '}';\n\t\t\t\tbreak;\n\t\t\tcase Types.BOOLEAN:\n\t\t\t\tret += '<- {';\n\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\tret += '{';\n\n\t\t\t\t\tfor (var k = 0; k < temp.columns; k++) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (temp.value[j][k]) {\n\t\t\t\t\t\t\tret += LocalizedStrings.getUI('logic_value_true');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tret += LocalizedStrings.getUI('logic_value_false');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ((k + 1) < temp.columns) {\n\t\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tret += '}';\n\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tret += '}';\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\n\t\tswitch (temp.type) {\n\t\t\tcase Types.INTEGER:\n\t\t\t\tret += '<- ' + temp.value;\n\t\t\t\tbreak;\n\t\t\tcase Types.REAL:\n\t\t\t\tret += '<- ' + temp.value.toFixed(2);\n\t\t\t\tbreak;\n\t\t\tcase Types.TEXT:\n\t\t\t\tret += '<- \"' + temp.value + '\"';\n\t\t\t\tbreak;\n\t\t\tcase Types.BOOLEAN:\n\t\t\t\tret += '<- ';\n\t\t\t\tif (temp.value) {\n\t\t\t\t\tret += LocalizedStrings.getUI('logic_value_true');\n\t\t\t\t} else {\n\t\t\t\t\tret += LocalizedStrings.getUI('logic_value_false');\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t}\n\n\treturn ret;\n\n}\n\nfunction globalsCode () {\n\tvar ret = '';\n\n\tif (window.program_obj.globals) {\n\t\tfor (var i = 0; i < window.program_obj.globals.length; i++) {\n\t\t\tvar temp = window.program_obj.globals[i];\n\n\t\t\tret += '\\n\\t';\n\n\t\t\tif (temp.is_constant) {\n\t\t\t\tret += 'const ';\n\t\t\t}\n\t\t\tswitch (temp.type) {\n\t\t\t\tcase Types.INTEGER:\n\t\t\t\t\tret += LocalizedStrings.getUI('type_integer');\n\t\t\t\t\tbreak;\n\t\t\t\tcase Types.REAL:\n\t\t\t\t\tret += LocalizedStrings.getUI('type_real');\n\t\t\t\t\tbreak;\n\t\t\t\tcase Types.TEXT:\n\t\t\t\t\tret += LocalizedStrings.getUI('type_text');\n\t\t\t\t\tbreak;\n\t\t\t\tcase Types.BOOLEAN:\n\t\t\t\t\tret += LocalizedStrings.getUI('type_boolean');\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tret += ' ' + temp.name + ' ';\n\n\t\t\tif (temp.dimensions == 1) {\n\t\t\t\tret += '[' + temp.columns + '] ';\n\n\t\t\t\tswitch (temp.type) {\n\t\t\t\t\tcase Types.INTEGER:\n\t\t\t\t\t\tret += '<- {';\n\t\t\t\t\t\tfor (var j = 0; j < temp.value.length; j++) {\n\t\t\t\t\t\t\tret += temp.value[j];\n\t\t\t\t\t\t\tif ((j + 1) < temp.value.length) {\n\t\t\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.REAL:\n\t\t\t\t\t\tret += '<- {';\n\t\t\t\t\t\tfor (var j = 0; j < temp.value.length; j++) {\n\t\t\t\t\t\t\tret += temp.value[j].toFixed(2);\n\t\t\t\t\t\t\tif ((j + 1) < temp.value.length) {\n\t\t\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.TEXT:\n\t\t\t\t\t\tret += '<- {';\n\t\t\t\t\t\tfor (var j = 0; j < temp.value.length; j++) {\n\t\t\t\t\t\t\tret += '\"'+temp.value[j]+'\"';\n\t\t\t\t\t\t\tif ((j + 1) < temp.value.length) {\n\t\t\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.BOOLEAN:\n\t\t\t\t\t\tret += '<- {';\n\t\t\t\t\t\tfor (var j = 0; j < temp.value.length; j++) {\n\t\t\t\t\t\t\tif (temp.value[j]) {\n\t\t\t\t\t\t\t\tret += LocalizedStrings.getUI('logic_value_true');\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tret += LocalizedStrings.getUI('logic_value_false');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ((j + 1) < temp.value.length) {\n\t\t\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t} else if (temp.dimensions == 2) {\n\t\t\t\tret += '[' + temp.rows + '][' + temp.columns + '] ';\n\n\t\t\t\tswitch (temp.type) {\n\t\t\t\t\tcase Types.INTEGER:\n\t\t\t\t\t\tret += '<- {';\n\n\t\t\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\t\t\tret += '{';\n\n\t\t\t\t\t\t\tfor (var k = 0; k < temp.columns; k++) {\n\t\t\t\t\t\t\t\tret += temp.value[j][k];\n\n\t\t\t\t\t\t\t\tif ((k + 1) < temp.columns) {\n\t\t\t\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.REAL:\n\t\t\t\t\t\tret += '<- {';\n\n\t\t\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\t\t\tret += '{';\n\n\t\t\t\t\t\t\tfor (var k = 0; k < temp.columns; k++) {\n\t\t\t\t\t\t\t\tret += temp.value[j][k].toFixed(2);\n\n\t\t\t\t\t\t\t\tif ((k + 1) < temp.columns) {\n\t\t\t\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.TEXT:\n\t\t\t\t\t\tret += '<- {';\n\n\t\t\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\t\t\tret += '{';\n\n\t\t\t\t\t\t\tfor (var k = 0; k < temp.columns; k++) {\n\t\t\t\t\t\t\t\tret += '\"' + temp.value[j][k] + '\"';\n\n\t\t\t\t\t\t\t\tif ((k + 1) < temp.columns) {\n\t\t\t\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.BOOLEAN:\n\t\t\t\t\t\tret += '<- {';\n\t\t\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\t\t\tret += '{';\n\n\t\t\t\t\t\t\tfor (var k = 0; k < temp.columns; k++) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif (temp.value[j][k]) {\n\t\t\t\t\t\t\t\t\tret += LocalizedStrings.getUI('logic_value_true');\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tret += LocalizedStrings.getUI('logic_value_false');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif ((k + 1) < temp.columns) {\n\t\t\t\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tswitch (temp.type) {\n\t\t\t\t\tcase Types.INTEGER:\n\t\t\t\t\t\tret += '<- ' + temp.value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.REAL:\n\t\t\t\t\t\tret += '<- ' + temp.value.toFixed(2);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.TEXT:\n\t\t\t\t\t\tret += '<- \"' + temp.value + '\"';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.BOOLEAN:\n\t\t\t\t\t\tret += '<- ';\n\t\t\t\t\t\tif (temp.value) {\n\t\t\t\t\t\t\tret += LocalizedStrings.getUI('logic_value_true');;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tret += LocalizedStrings.getUI('logic_value_false');;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t\n\n\t\t}\n\t}\n\n\treturn ret;\n}","import * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as CommentsManagement from './commands/comment';\nimport * as ReadersManagement from './commands/reader';\nimport * as WritersManagement from './commands/writer';\nimport * as AttributionsManagement from './commands/attribution';\nimport * as IftruesManagement from './commands/iftrue';\nimport * as RepeatNtimesManagement from './commands/repeatNtimes';\nimport * as WhiletruesManagement from './commands/whiletrue';\nimport * as DowhiletruesManagement from './commands/dowhiletrue';\nimport * as SwitchesManagement from './commands/switch';\nimport * as FunctioncallsManagement from './commands/functioncall';\nimport * as VariableValueMenuManagement from './commands/variable_value_menu';\nimport * as BreaksManagement from './commands/break';\nimport * as ReturnsManagement from './commands/return';\nimport { registerUserEvent, ActionTypes } from \"./../services/userLog\";\n\n// let has_element_created_draged = false;\n// let which_element_is_draged = null;\n\nexport function removeCommand (command, function_obj, dom_obj) {\n\n\tregisterUserEvent(function_obj.name, ActionTypes.REMOVE_COMMAND, command.type, '/', 0);\n\n\tif (function_obj.commands.indexOf(command) > -1) {\n\t\tfunction_obj.commands.splice(function_obj.commands.indexOf(command), 1);\n\t\treturn true;\n\t}\n\n\t// Utilize dois parantNode, pois o primeiro é o div de comandos\n\ttry {\n\t\tif (dom_obj.parent().parent().data('command').commands_block.indexOf(command) > -1) {\n\t\t\tdom_obj.parent().parent().data('command').commands_block.splice\n\t\t\t(dom_obj.parent().parent().data('command').commands_block.indexOf(command), 1);\n\t\t\treturn true;\n\t\t}\t\n\t} catch (err) {}\n\t\n\ttry {\n\t\tif (dom_obj.parent().parent().data('command').type == Models.COMMAND_TYPES.iftrue) {\n\t\t\tif (dom_obj.parent().parent().data('command').commands_else.indexOf(command) > -1) {\n\t\t\t\tdom_obj.parent().parent().data('command').commands_else.splice\n\t\t\t\t(dom_obj.parent().parent().data('command').commands_else.indexOf(command), 1);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t} catch (err) {}\n\n\tif (dom_obj.parent().data('switchcase')) {\n\t\tconsole.log(\"o que encontrei: \");\n\t\tconsole.log(dom_obj.parent().data('switchcase'));\n\t\tdom_obj.parent().data('switchcase').commands_block.splice(dom_obj.parent().data('switchcase').commands_block.indexOf(command), 1);\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nwindow.function_container_active = null;\n\nexport function createFloatingCommand (function_obj, function_container, command_type, mouse_event) {\n\n\tvar floatingObject;\n\n\tswitch (command_type) {\n\t\tcase Models.COMMAND_TYPES.break:\n\t\t\tfloatingObject = BreaksManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.comment:\n\t\t\tfloatingObject = CommentsManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.reader:\n\t\t\tfloatingObject = ReadersManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.writer:\n\t\t\tfloatingObject = WritersManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.attribution:\n\t\t\tfloatingObject = AttributionsManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.iftrue:\n\t\t\tfloatingObject = IftruesManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.repeatNtimes:\n\t\t\tfloatingObject = RepeatNtimesManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.whiletrue:\n\t\t\tfloatingObject = WhiletruesManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.dowhiletrue:\n\t\t\tfloatingObject = DowhiletruesManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.switch:\n\t\t\tfloatingObject = SwitchesManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.functioncall:\n\t\t\tfloatingObject = FunctioncallsManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.return:\n\t\t\tfloatingObject = ReturnsManagement.createFloatingCommand();\n\t\t\tbreak;\n\t}\n\n\tfloatingObject.draggable().appendTo(\"body\");\n\n\t$('body').mouseup(function(evt) {\n\t manageCommand(function_obj, function_container, evt, command_type);\n\t $('body').off('mouseup');\n\t $('body').off('mouseover');\n\t});\n\n\tif (!function_container.hasClass('function_div') || function_container.length < 1) {\n\t\twindow.mouse_event = mouse_event;\n\t\tfunction_container = $(mouse_event.originalEvent.srcElement.closest('.function_div'));\n\t}\n\n\tconsole.log('function_container', function_container);\n\n\tfunction_container_active = function_container;\n\n\tfunction_container.find('.commands_list_div').on('mousemove', function(evt) {\n\t addGhostDiv(evt);\n\t});\n\tfunction_container.find('.commands_list_div').find(\"*\").on('mousemove', function(evt) {\n\t addGhostDiv(evt);\n\t});\n\n\tfunction_container.on('mouseout', function(event) {\n\t\tvar el = $(document.elementFromPoint(event.clientX, event.clientY));\n\t\tif (el.closest('.commands_list_div').length < 1) {\n\t\t\twindow.ghostDiv.remove();\n\t\t}\n\t});\n\t\n\tfloatingObject.css(\"position\", \"absolute\");\n\tmouse_event.type = \"mousedown.draggable\";\n\tmouse_event.target = floatingObject[0];\n\tfloatingObject.css(\"left\", mouse_event.pageX - window.divx);\n\tfloatingObject.css(\"top\", mouse_event.pageY);\n\tfloatingObject.trigger(mouse_event);\n}\n\nwindow.divx = 100;\nwindow.ghostDiv = $('<div class=\"ghost_div\">');\nwindow.active_container = null;\n\nfunction addGhostToEmptyBlock (element, evt) {\n\n\t$('.ghost_div').remove();\n\n\tvar container = element.closest('.command_container');\n\n\tif (container.hasClass('switch')) {\n\t\tcontainer = $(evt.target).closest('.case_div');\t\t\n\t}\n\n\tif (!container.hasClass('dowhiletrue') && !container.hasClass('iftrue') && !container.hasClass('repeatNtimes') \n\t\t\t\t&& !container.hasClass('case_div') && !container.hasClass('whiletrue')) {\n\t\taddGhostToNotEmptyBlock(element, evt);\n\t\treturn;\n\t}\n\n\tif (window.active_container != null) {\n\t\tif (window.active_container.is(container)) {\n\t\t\tconsole.log('é o mesmo, não mudou!');\n\t\t} else {\n\t\t\tif (container.length < 1) {\n\t\t\t\tcontainer = element.closest('.commands_list_div');\n\t\t\t\tif (window.active_container.is(container)) {\n\t\t\t\t\tconsole.log('é o mesmo command list');\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log('mudou para um command list');\n\t\t\t\t\twindow.active_container = container;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsole.log('mudou para um outro container?');\n\t\t\t}\n\t\t}\n\t}\n\n\twindow.active_container = container;\n\tif (container.hasClass('iftrue')) {\n\t\tvar containerIf = container.find('.commands_if').get(0);\n\t\tvar containerElse = container.find('.commands_else').get(0);\n\t\tvar topIfDistance = Math.abs(evt.clientY - containerIf.getBoundingClientRect().top);\n\t\tvar bottomIfDistance = Math.abs(containerIf.getBoundingClientRect().top + containerIf.getBoundingClientRect().height - evt.clientY);\n\t\tvar topElseDistance = Math.abs(evt.clientY - containerElse.getBoundingClientRect().top);\n\t\tvar bottomElseDistance = Math.abs(containerElse.getBoundingClientRect().top + containerElse.getBoundingClientRect().height - evt.clientY);\n\n\t\tif (topIfDistance < topElseDistance && topIfDistance < bottomElseDistance) {\n\t\t\t$(containerIf).append(window.ghostDiv);\n\t\t} else {\n\t\t\t$(containerElse).append(window.ghostDiv);\n\t\t}\n\t} else if (container.hasClass('case_div')) {\n\t\tcontainer.find('.case_commands_block').append(window.ghostDiv);\n\t} else {\n\t\tcontainer.find('.block_commands').append(window.ghostDiv);\n\t}\n\t\n}\n\nfunction addGhostToNotEmptyBlock (element, evt) {\n\n\t$('.ghost_div').remove();\n\n\tvar container = element.closest('.dowhiletrue, .iftrue, .repeatNtimes, .case_div, .whiletrue');\n\n\t//console.log(\"\\n\\nNOT EMPTY: \", container);\n\n\t//if (window.active_container != null) {\n\t\t\n\t\t\n\t//}\n\n\tif (container.length < 1) {\n\t\tcontainer = element.closest('.commands_list_div');\n\t\twindow.active_container = container;\n\t\taddGhostToFunctionArea(element, evt);\n\t} else {\n\t\t//console.log('mudou para um outro container?');\n\t}\n\n\twindow.active_container = container;\n\n\t// quem está mais próximo? // Essa regra se aplica somente quando o over está sobre um comando\n\tvar allfilhos;\n\tconsole.log('olha o container: ', container);\n\tif (container.hasClass('iftrue')) {\n\t\t\n\t\tif ($(evt.target).closest('.data_block_if').length > 0) {\n\t\t\tallfilhos = container.find('.commands_if').children('.command_container');\n\t\t} else if ($(evt.target).closest('.data_block_else').length > 0) {\n\t\t\tallfilhos = container.find('.commands_else').children('.command_container');\n\t\t} else {\n\n\t\t\tvar containerIf = container.find('.commands_if').get(0);\n\t\t\tvar containerElse = container.find('.commands_else').get(0);\n\t\t\tvar topIfDistance = Math.abs(evt.clientY - containerIf.getBoundingClientRect().top);\n\t\t\tvar bottomIfDistance = Math.abs(containerIf.getBoundingClientRect().top + containerIf.getBoundingClientRect().height - evt.clientY);\n\t\t\tvar topElseDistance = Math.abs(evt.clientY - containerElse.getBoundingClientRect().top);\n\t\t\tvar bottomElseDistance = Math.abs(containerElse.getBoundingClientRect().top + containerElse.getBoundingClientRect().height - evt.clientY);\n\n\t\t\tif (topIfDistance < topElseDistance && topIfDistance < bottomElseDistance) {\n\t\t\t\tallfilhos = $(containerIf).children('.command_container');\n\t\t\t} else {\n\t\t\t\tallfilhos = $(containerElse).children('.command_container');\n\t\t\t}\n\t\t}\n\t} else if (container.hasClass('case_div')) {\n\t\tallfilhos = container.children('.case_commands_block').children('.command_container');\n\t} else if (container.hasClass('commands_list_div')) {\n\t\tallfilhos = container.children('.command_container');\n\t} else {\n\t\tallfilhos = container.children('.block_commands').children('.command_container');\n\t}\n\n\tvar topDistances = [];\n\tvar bottomDistances = [];\n\n\tfor (var i = 0; i < allfilhos.length; i++) {\n\t\tvar topD = Math.abs(evt.clientY - allfilhos.get(i).getBoundingClientRect().top);\n\t\ttopDistances.push(topD);\n\t\tvar botD = Math.abs(allfilhos.get(i).getBoundingClientRect().top + allfilhos.get(i).getBoundingClientRect().height - evt.clientY);\n\t\tbottomDistances.push(botD);\n\t}\n\n\tconsole.log('topDistances\\n', topDistances, '\\nbottomDistances\\n', bottomDistances)\n\n\tvar menorTop = Math.min.apply(null, topDistances);\n\tvar indiceTop = topDistances.indexOf(menorTop);\n\n\tvar menorBot = Math.min.apply(null, bottomDistances);\n\tvar indiceBot = bottomDistances.indexOf(menorBot);\n\n\tif (menorTop < menorBot) {\n\t\twindow.ghostDiv.insertBefore($(allfilhos.get(indiceTop)));\n\t} else {\n\t\twindow.ghostDiv.insertAfter($(allfilhos.get(indiceBot)));\n\t}\n\n\tconsole.log('distancias: menorTop ', menorTop, ' menorBot ', menorBot);\n}\n\nfunction addGhostToFunctionArea (undermouse, evt) {\n\t$('.ghost_div').remove();\n\tvar allfilhos = undermouse.closest('.commands_list_div').children('.command_container');\n\n\tvar topDistances = [];\n\tvar bottomDistances = [];\n\n\tfor (var i = 0; i < allfilhos.length; i++) {\n\t\tvar topD = Math.abs(evt.clientY - allfilhos.get(i).getBoundingClientRect().top);\n\t\ttopDistances.push(topD);\n\t\tvar botD = Math.abs(allfilhos.get(i).getBoundingClientRect().top + allfilhos.get(i).getBoundingClientRect().height - evt.clientY);\n\t\tbottomDistances.push(botD);\n\t}\n\n\tvar menorTop = Math.min.apply(null, topDistances);\n\tvar indiceTop = topDistances.indexOf(menorTop);\n\n\tvar menorBot = Math.min.apply(null, bottomDistances);\n\tvar indiceBot = bottomDistances.indexOf(menorBot);\n\n\tif (menorTop < menorBot) {\n\t\twindow.ghostDiv.insertBefore($(allfilhos.get(indiceTop)));\n\t} else {\n\t\twindow.ghostDiv.insertAfter($(allfilhos.get(indiceBot)));\n\t}\n\n}\n\nfunction addGhostDiv (evt) {\n\n\tvar undermouse = $(evt.target);\n\n\tif (undermouse.hasClass('ghost_div')) {\n\t\treturn;\n\t} else if (undermouse.hasClass('commands_list_div')) {\n\t\taddGhostToFunctionArea(undermouse, evt);\n\t\treturn;\n\t} else if (undermouse.hasClass('block_commands')) {\n\t\tif (undermouse.find('.command_container').length > 0) {\n\t\t\taddGhostToNotEmptyBlock(undermouse, evt);\n\t\t} else {\n\t\t\taddGhostToEmptyBlock(undermouse, evt);\n\t\t}\n\t} else if (undermouse.hasClass('case_div')) {\n\t\tif (undermouse.find('.case_commands_block').find('.command_container').length > 0) {\n\t\t\taddGhostToNotEmptyBlock(undermouse, evt);\n\t\t} else {\n\t\t\taddGhostToEmptyBlock(undermouse, evt);\n\t\t}\n\t} else {\n\t\t\n\t\taddGhostToNotEmptyBlock(undermouse, evt);\n\t\t\n\t} \n}\n\nfunction borderMouseDragCommand (function_obj, function_container, evt) {\n\n\tfunction_container.find('.over_command_drag').each(function( index ) {\n\t\t$(this).removeClass('over_command_drag');\n\t});\n\n\tvar prev = null;\n\n\tfunction_container.find('.commands_list_div').each(function( index ) { \n\t\tprev = $(this);\n\t\tif (prev) {\n\t\t\tvar objLeft = prev.offset().left;\n\t var objTop = prev.offset().top;\n\t var objRight = objLeft + prev.width();\n\t var objBottom = objTop + prev.height();\n\t if (evt.pageX > objLeft && evt.pageX < objRight && evt.pageY > objTop && evt.pageY < objBottom) {\n\t \tprev.addClass(\"over_command_drag\"); \n\t }\n\t }\n\t});\n\n\tfunction_container.find('.command_container').each(function( index ) { \n\t\tvar obj = $(this);\n\t\tvar objLeft = obj.offset().left;\n var objTop = obj.offset().top;\n var objRight = objLeft + obj.width();\n var objBottom = objTop + obj.height();\n if (evt.pageX > objLeft && evt.pageX < objRight && evt.pageY > objTop && evt.pageY < objBottom) {\n \tif (prev) {\n \t\tprev.removeClass('over_command_drag');\n \t}\n \tobj.addClass(\"over_command_drag\"); \n \treturn;\n }\n\t});\n}\n\n// before_after_inside: 1 -> before, 2 -> after, 3 -> inside\nexport function renderCommand (command, element_reference, before_after_inside, function_obj) {\n\tvar createdElement;\n\tswitch (command.type) {\n\t\tcase Models.COMMAND_TYPES.comment:\n\t\t\tcreatedElement = CommentsManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.break:\n\t\t\tcreatedElement = BreaksManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.reader:\n\t\t\tcreatedElement = ReadersManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.writer:\n\t\t\tcreatedElement = WritersManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.attribution:\n\t\t\tcreatedElement = AttributionsManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.functioncall:\n\t\t\tcreatedElement = FunctioncallsManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.iftrue:\n\t\t\tcreatedElement = IftruesManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.repeatNtimes:\n\t\t\tcreatedElement = RepeatNtimesManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.whiletrue:\n\t\t\tcreatedElement = WhiletruesManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.dowhiletrue:\n\t\t\tcreatedElement = DowhiletruesManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.switch:\n\t\t\tcreatedElement = SwitchesManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.return:\n\t\t\tcreatedElement = ReturnsManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\t}\n\tswitch (before_after_inside) {\n\t\tcase 1:\n\t\t\tcreatedElement.insertBefore(element_reference);\n\t\t\tbreak;\n\n\t\tcase 2:\n\t\t\tcreatedElement.insertAfter(element_reference);\n\t\t\tbreak;\n\n\t\tcase 3: \n\t\t\telement_reference.append(createdElement);\n\t\t\tbreak;\n\t}\n\n}\n\nexport function genericCreateCommand (command_type) {\n\n\tswitch (command_type) {\n\n\t\tcase Models.COMMAND_TYPES.break:\n\t\t\treturn new Models.Break();\n\n\t\tcase Models.COMMAND_TYPES.comment:\n\t\t\treturn new Models.Comment(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_value, LocalizedStrings.getUI('text_comment'), null, null, false));\n\n\t\tcase Models.COMMAND_TYPES.reader:\n\t\t\treturn new Models.Reader(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_variable, null, null, null, false));\n\n\t\tcase Models.COMMAND_TYPES.writer:\n\t\t\treturn new Models.Writer([new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\tcase Models.COMMAND_TYPES.attribution:\n\t\t\treturn new Models.Attribution(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_variable, null, null, null, false), \n\t\t\t\t[]);\n \n\t\tcase Models.COMMAND_TYPES.functioncall:\n\t\t\treturn new Models.FunctionCall(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_function, null, null, null, false), null);\n\n\t\tcase Models.COMMAND_TYPES.iftrue:\n\t\t\treturn new Models.IfTrue([new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n//(var_attribution, var_incrementation, expression1, expression2, expression3, commands_block)\n\t\tcase Models.COMMAND_TYPES.repeatNtimes:\n\t\t\treturn new Models.RepeatNTimes(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_variable, null, null, null, false), \n\t\t\t\t\t\t\t\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_variable, null, null, null, false),\n\t\t\t\t\t\t\t\t\t\t null, new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true), null, null);\n\n\t\tcase Models.COMMAND_TYPES.whiletrue:\n\t\t\treturn new Models.WhileTrue([new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)], null);\n\n\t\tcase Models.COMMAND_TYPES.dowhiletrue:\n\t\t\treturn new Models.DoWhileTrue([new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)], null);\n\n\t\tcase Models.COMMAND_TYPES.switch:\n\n\t\t\tvar sc = [new Models.SwitchCase(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true))];\n\n\t\t\treturn new Models.Switch(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.variable_and_function, null, null, null, true), sc);\n\n\t\tcase Models.COMMAND_TYPES.return:\n\t\t\treturn new Models.Return([new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\t}\n}\n\nfunction dragTrash (event) {\n\n\t$('.ghost_div').remove();\n\n\tvar trash = $('<i class=\"ui icon trash alternate outline\"></i>');\n\t$('body').append(trash);\n\ttrash.css('position', 'absolute');\n\ttrash.css('top', event.clientY);\n\ttrash.css('left', event.clientX - 20);\n\ttrash.css('font-size', '3em');\n\ttrash.css('display', 'none');\n\n\tfunction_container_active.find('.commands_list_div').off('mousemove');\n\tfunction_container_active.find('.commands_list_div').find(\"*\").off('mousemove');\n\n\ttrash.fadeIn( 200, function() {\n\t\ttrash.fadeOut( 200, function() {\n\t\t\ttrash.remove();\n\t\t} );\n });\n}\n\nfunction findSingleElement (searching, query) {\n\n\tif (!searching || !query) {\n\t\treturn '';\n\t}\n\n\tif (searching.type == Models.COMMAND_TYPES.repeatNtimes || \n\t\tsearching.type == Models.COMMAND_TYPES.whiletrue ||\n\t\tsearching.type == Models.COMMAND_TYPES.dowhiletrue) {\n\n\t\tif (searching.commands_block) {\n\t\t\treturn '' + searching.commands_block.indexOf(query);\n\t\t} else {\n\t\t\treturn '0';\n\t\t}\n\n\t} else if (searching.type == Models.COMMAND_TYPES.iftrue) {\n\n\t\tif (searching.commands_block == null) {\n\t\t\tsearching.commands_block = [];\n\t\t}\n\t\tif (searching.commands_else == null) {\n\t\t\tsearching.commands_else = [];\n\t\t}\n\n\t\tconsole.log('\\n\\nveja onde: ', searching.commands_block, ' \\n\\nquery: ', query);\n\n\t\tif (searching.commands_block.indexOf(query) >= 0) {\n\t\t\treturn 'if[' + searching.commands_block.indexOf(query) + ']';\n\t\t} else {\n\t\t\treturn 'else[' + searching.commands_else.indexOf(query) + ']';\n\t\t}\n\n\t} else if (searching.type == Models.COMMAND_TYPES.switch) {\n\n\t\tfor (var i = 0; i < searching.cases.length; i++) {\n\t\t\tif (searching.cases[i].commands_block.indexOf(query) >= 0) {\n\t\t\t\treturn 'case[' + searching.cases[i].commands_block.indexOf(query) + ']';\n\t\t\t}\n\t\t}\n\n\t}\n\n}\n\nfunction findPathRecursive (starter_index, hierarquia_bottom_up, function_obj, index_command = -1, actual = null) {\n\tvar full_path = '';\n\t\n\tfor (var i = 0; i <= hierarquia_bottom_up.length; i ++) {\n\n\t\tconsole.log('\\n\\n:: ', i, ':\\n', hierarquia_bottom_up[i]);\n\n\t\tfull_path += findSingleElement(hierarquia_bottom_up[i], hierarquia_bottom_up[i + 1]) + '-';\n\t}\n\n\treturn full_path;\n}\n\nfunction manageCommand (function_obj, function_container, event, command_type) {\n\n\t$( \".created_element\" ).each(function( index ) { \n\t\t$(this).remove();\n\t});\n\n\tvar el = $(document.elementFromPoint(event.clientX, event.clientY));\n\n\tif (el.hasClass('ghost_div')) {\n\t\tif (el.closest('.command_container').length < 1) {\n\t\t\t\n\n\t\t\tconsole.log('\\n\\nvou tentar!!!!');\n\n\t\t\tconsole.log(el.closest('.commands_list_div'), '\\n\\n');\n\n\t\t\tel.closest('.commands_list_div').css('height', el.closest('.commands_list_div').css('height') + 30);\n\t\t\t\n\t\t\t//$('.ghost_div').remove();\n\n\t\t\tel = el.closest('.commands_list_div');\n\t\t}\n\t}\n\n\tconsole.log('soltou no: ');\n\tconsole.log(el);\n\tconsole.log(el.data('fun'));\n\n\t// Primeiro verificar se ele soltou no espaço da função correta:\n\tvar hier = el.parentsUntil(\".all_functions\");\n\tvar esta_correto = false;\n\tvar esta_na_div_correta = false;\n\tif (el.hasClass(\"commands_list_div\")) {\n\t\testa_na_div_correta = true;\n\t} \n\tfor (var i = 0; i < hier.length; i++) {\n\t\tvar temp = $(hier[i]);\n\t\tif (temp.hasClass(\"commands_list_div\")) {\n\t\t\testa_na_div_correta = true;\n\t\t} \n\t\tif (temp.data('fun') == function_obj) {\n\t\t\testa_correto = true;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (!esta_correto) {\n\t\t// has_element_created_draged = false;\n\t\t// which_element_is_draged = null;\n\t\tdragTrash(event);\n\t\treturn;\n\t} else {\n\t\tif (!esta_na_div_correta) {\n\t\t\t// has_element_created_draged = false;\n\t\t\t// which_element_is_draged = null;\n\t\t\tdragTrash(event);\n\t\t\treturn;\n\t\t}\n\t}\n\tvar hierarquia_bottom_up = null;\n\t// Agora é descobrir qual o escopo para adicionar o comando:\n\tconsole.log('ev0');\n\t// Se o elemento clicado possuir o atributo \"fun\", então, é direto na div dos comandos:\n\tif (typeof el.data('fun') !== 'undefined') {\n\n\t\t// Se a lista de comandos estiver vazia, então é o primeiro.\n\t\t// Portanto, ele deve soltar o elemento obrigatoriamente no objeto vazio\n\t\tif ((el.data('fun').commands == null) || (el.data('fun').commands.length == 0)) {\n\t\t\t\t// pode adicionar \n\t\t\t\tel.data('fun').commands = [];\n\n\t\t\t\tvar new_cmd = genericCreateCommand(command_type);\n\t\t\t\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, command_type, '/', 0);\n\n\t\t\t\tel.data('fun').commands.push(new_cmd);\n\n\t\t\t\trenderCommand(new_cmd, $(function_container).find('.commands_list_div'), 3, function_obj);\n\t\t\t\n\t\t} else { // Entra nesse else, caso já existam outros comandos no bloco:\n\n\t\t\tfindNearbyCommandToAddInFunctionScope(el, event, $(function_container).find('.commands_list_div'), function_obj, command_type);\n\t\t}\n\n\t} else {\n\t\tconsole.log(\"soltou em um comando\");\n\t\t// descobrir em qual comando ele soltou: \n\t\tvar hier_find = el.parentsUntil(\".commands_list_div\");\n\t\thierarquia_bottom_up = [];\n\t\tif (typeof el.data('command') !== 'undefined') {\n\t\t\thierarquia_bottom_up.push(el.data('command'));\n\t\t}\n\t\tfor (var i = 0; i < hier_find.length; i++) {\n\t\t\tif (typeof $(hier_find[i]).data('command') !== 'undefined') {\n\t\t\t\thierarquia_bottom_up.push($(hier_find[i]).data('command'));\n\t\t\t}\n\t\t}\n\t\tconsole.log(\"comando em que soltou: \");\n\t\tconsole.log(hierarquia_bottom_up[0]);\n\t\tconsole.log(\"hierarquia de baixo para cima na árvore, de onde ele soltou: \");\n\t\tfor (var i = 0; i < hierarquia_bottom_up.length; i++) {\n\t\t\tconsole.log(hierarquia_bottom_up[i]);\n\t\t}\n\n\t\t// Se for do tipo break, verificar se está no contexto correto: \n\t\t// Caso não esteja no contexto, apenas retorna sem dar continuidade:\n\t\tvar is_correct_context = false;\n\t\tif (command_type == Models.COMMAND_TYPES.break) {\n\t\t\tfor (var i = 0; i < hierarquia_bottom_up.length; i++) {\n\t\t\t\tif ((hierarquia_bottom_up[i].type == Models.COMMAND_TYPES.repeatNtimes)\n\t\t\t\t\t|| (hierarquia_bottom_up[i].type == Models.COMMAND_TYPES.whiletrue)\n\t\t\t\t\t|| (hierarquia_bottom_up[i].type == Models.COMMAND_TYPES.dowhiletrue)\n\t\t\t\t\t|| (hierarquia_bottom_up[i].type == Models.COMMAND_TYPES.switch)) {\n\n\t\t\t\t\tis_correct_context = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!is_correct_context) {\n\t\t\t\tconsole.error(\"Context not allowed to insert BREAK COMMAND!\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// se a hierarquia possuir apenas um elemento, então está na raiz dos comandos: \n\t\tif (hierarquia_bottom_up.length == 1) {\n\t\t\tconsole.log('QQ1');\n\t\t\tvar sub_elemento = false;\n\t\t\tfor (var i = 0; i < hier_find.length; i++) {\n\t\t\t\tif (typeof $(hier_find[i]).data('command') !== 'undefined') {\n\t\t\t\t\tconsole.log('QQ2');\n\t\t\t\t\tfindBeforeOrAfterCommandToAdd(hier_find[i], event, function_obj, command_type);\n\t\t\t\t\tsub_elemento = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!sub_elemento) {\n\t\t\t\tconsole.log('QQ3');\n\t\t\t\tfindBeforeOrAfterCommandToAdd(el[0], event, function_obj, command_type);\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.log('QQ4');\n\t\t\t// caso exista mais de um elemento na hierarquia:\n\t\t\tif (typeof $(el).data('command') !== 'undefined') {\n\t\t\t\tconsole.log('QQ5');\n\t\t\t\tconsole.log(\"PPP1\");\n\t\t\t\tinsertCommandInBlockHierar(el[0], event, function_obj, command_type, hier_find, hierarquia_bottom_up);\n\t\t\t} else {\n\t\t\t\tconsole.log('QQ6');\n\t\t\t\tvar sub_elemento = false;\n\t\t\t\tfor (var i = 0; i < hier_find.length; i++) {\n\t\t\t\t\tif (typeof $(hier_find[i]).data('command') !== 'undefined') {\n\t\t\t\t\t\tconsole.log('QQ7');\n\t\t\t\t\t\tinsertCommandInBlockHierar(hier_find[i], event, function_obj, command_type, hier_find, hierarquia_bottom_up);\n\t\t\t\t\t\tsub_elemento = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t}\n\t\n\t// has_element_created_draged = false;\n\t// which_element_is_draged = null;\n\n\tif (hierarquia_bottom_up) {\n\t\tconsole.log('\\n\\n:::índices::\\n\\n');\n\t\tvar i = hierarquia_bottom_up.length - 1;\n\t\tvar starter_index = window.program_obj.functions[window.program_obj.functions.indexOf(function_obj)].commands.indexOf(hierarquia_bottom_up[i]);\n\t\tvar all_str_path = starter_index + '-' + findPathRecursive(starter_index, hierarquia_bottom_up, function_obj);\n\t\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, command_type, '/' , all_str_path);\n\t\tconsole.log('\\n\\nfull path: \\n\\n', all_str_path);\n\t\tconsole.log('fim dos índices');\n\t}\n\n\trenderAlgorithm();\n}\n\nfunction insertCommandInBlockHierar (el, event, function_obj, command_type, hier_dom, hier_obj) {\n\tvar el_jq = $(el);\n\tvar command_parent = el_jq.data('command');\n\t\n\tif ((el_jq.data('command').type == Models.COMMAND_TYPES.repeatNtimes) ||\n\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.whiletrue) ||\n\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.dowhiletrue) ||\n\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.switch) ) {\n\n\t\tconsole.log('QQ17');\n\n\t\tif ((el_jq.data('command').type == Models.COMMAND_TYPES.repeatNtimes) ||\n\t\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.whiletrue) ||\n\t\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.dowhiletrue) ) {\n\n\t\t\tconsole.log('QQ18');\n\n\t\t\t// Se não tiver outro comando ainda no bloco, só adiciona: \n\t\t\tif (command_parent.commands_block == null || command_parent.commands_block.length == 0) {\n\t\t\t\tcommand_parent.commands_block = [];\n\n\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\tcommand_parent.commands_block.push(recentComand);\n\t\t\t\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, command_type, '/' + el_jq.data('command').type, 0);\n\n\t\t\t\trenderCommand(recentComand, el_jq.find('.block_commands'), 3, function_obj);\n\t\t\t} else { // Se já tem algum comando no bloco:\n\t\t\t\tfindNearbyCommandToAddInBlockScope(el, event, el, function_obj, command_type, command_parent);\n\t\t\t}\n\n\t\t} else {\n\t\t\t// QUANDO FOR BLOCO DO TIPO IF OU SWITCH/CASE:\n\t\t\taddCommandToSwitchCase(event, function_obj, command_type);\n\t\t}\n\n\t} else {\n\t\tconsole.log('QQ19');\n\t\t// entra neste bloco, se soltou o comando sobre outro comando dentro de um subbloco:\n\t\tfindBeforeOrAfterCommandToAddInsertBlock(el, event, function_obj, command_type);\n\t}\n}\n\nfunction findNearbyCommandToAddInBlockScope (el, event, node_list_commands, function_obj, command_type, command_parent) {\n\n\tconsole.log(\"\\n\\n\\n::COMANDOS:\\n\\n\", el, event, node_list_commands, function_obj, command_type, command_parent);\n\n\tvar all_sub = $(node_list_commands).find('div.command_container');\n\n\tvar menor_distancia = 999999999;\n\tvar elemento_menor_distancia = null;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\t// Descobrindo o elemento mais próximo:\n\tfor (var i = 0; i < all_sub.length; i++) {\n\t\n\t\tt_top = all_sub[i].getBoundingClientRect().top;\n\t\tt_bot = all_sub[i].getBoundingClientRect().top + all_sub[i].getBoundingClientRect().height;\n\n\t\tif ((t_top - event.clientY) < menor_distancia) {\n\t\t\tmenor_distancia = event.clientY - t_top;\n\t\t\telemento_menor_distancia = all_sub[i];\n\t\t}\n\t}\n\n\tvar borda_inferior = elemento_menor_distancia.parentNode.getBoundingClientRect().top + elemento_menor_distancia.parentNode.getBoundingClientRect().height;\n\t\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\tif ((borda_inferior - event.clientY) < menor_distancia) {\n\t\t\n\t\tvar recentComand = genericCreateCommand(command_type);\n\t\tcommand_parent.commands_block.push(recentComand);\n\t\t//\n\t\trenderCommand(recentComand, node_list_commands, 3, function_obj);\n\n\t} else {\n\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar index = command_parent.commands_block.indexOf($(elemento_menor_distancia).data('command'));\n\n\t\tif (index > -1) {\n\t\t command_parent.commands_block.splice(index, 0, recentComand);\n\t\t}\n\n\t\trenderCommand(recentComand, elemento_menor_distancia, 1, function_obj);\n\t}\n}\n\nfunction findBeforeOrAfterCommandToAddInsertBlock (el, event, function_obj, command_type) {\n\n\tvar el_jq = $(el);\n\tvar command_parent = $(el.parentNode.parentNode).data('command');\n\tvar command_target = el_jq.data('command');\n\tvar temp_parent = $(el.parentNode.parentNode);\n\n\tvar is_in_else = false;\n\n\tif (!command_parent) {\n\t\tcommand_parent = el_jq.data('command');\n\t\ttemp_parent = el_jq;\n\t\tvar hier = el_jq.parentsUntil(\".command_container\");\n\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tvar temp = $(hier[i]);\n\t\t\tif (typeof temp.data('else') != 'undefined') {\n\t\t\t\tis_in_else = true;\n\t\t\t}\n\t\t\tif (typeof temp.data('command') != 'undefined') {\n\t\t\t\tcommand_parent = temp.data('command');\n\t\t\t\ttemp_parent = temp;\n\t\t\t}\n\t\t}\n\t}\n\n\n\tvar hier = el_jq.parentsUntil(\".command_container\");\n\tfor (var i = 0; i < hier.length; i++) {\n\t\tvar temp = $(hier[i]);\n\t\tif (typeof temp.data('else') != 'undefined') {\n\t\t\tis_in_else = true;\n\t\t}\n\t}\n\n\tif (command_parent == command_target) {\n\t\tvar hier = el_jq.parentsUntil(\".command_container\");\n\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tvar temp = $(hier[i]);\n\t\t\tif (typeof temp.data('else') !== 'undefined') {\n\t\t\t\tis_in_else = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ((command_parent.type != Models.COMMAND_TYPES.iftrue) && (command_parent.type != Models.COMMAND_TYPES.switch)) {\n\t\tvar hier = temp_parent.parentsUntil(\".all_cases_div\");\n\t\tconsole.log(\"vou procurar!!\");\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tconsole.log(\"estou vasculhando...\");\n\t\t\tvar temp = $(hier[i]);\n\t\t\tif (typeof temp.data('switchcase') !== 'undefined') {\n\t\t\t\tconsole.log(\"encontrei\");\n\t\t\t\tcommand_parent = temp.data('switchcase');\n\t\t\t\tis_in_else = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tconsole.log('debugging:');\n\tconsole.log('el_jq');\n\tconsole.log(el_jq);\n\tconsole.log('command_parent');\n\tconsole.log(command_parent);\n\tconsole.log('command_target');\n\tconsole.log(command_target);\n\n\tvar menor_distancia = 999999999;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\tt_top = el.getBoundingClientRect().top;\n\tt_bot = el.getBoundingClientRect().top + el.getBoundingClientRect().height;\n\n\tvar d_top = event.clientY - t_top; // distancia topo\n\tvar d_bot = t_bot - event.clientY; // distancia baixo\n\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\n\tif (d_top < d_bot) {\n\t\t\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tconsole.log('MMM1');\n\n\t\tif (is_in_else) {\n\n\t\t\tconsole.log('MMM2');\n\n\t\t\tif (command_parent == command_target) {\n\t\t\t\tconsole.log('MMM3');\n\t\t\t\tif (command_parent.commands_else == null || command_parent.commands_else.length == 0) {\n\t\t\t\t\tcommand_parent.commands_else = [];\n\n\t\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\t\tcommand_parent.commands_else.push(recentComand);\n\n\t\t\t\t\trenderCommand(recentComand, el_jq, 3, function_obj);\n\t\t\t\t} else { // Se já tem algum comando no bloco:\n\t\t\t\t\tfindInBlockCorrectPlace(el_jq, event, function_obj, command_type, true);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconsole.log('MMM7');\n\t\t\tvar index = command_parent.commands_else.indexOf(command_target);\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_else.splice(index, 0, recentComand);\n\t\t\t}\n\n\t\t\trenderCommand(recentComand, el, 1, function_obj);\n\t\t} else {\n\t\t\tconsole.log('MMM4');\n\t\t\tif (command_parent == command_target) {\n\t\t\t\tconsole.log('Nxxxx5');\n\t\t\t\tif (command_parent.commands_block == null || command_parent.commands_block.length == 0) {\n\t\t\t\t\tcommand_parent.commands_block = [];\n\t\t\t\t\tconsole.log('SSS4');\n\t\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\t\tcommand_parent.commands_block.push(recentComand);\n\n\t\t\t\t\trenderCommand(recentComand, el_jq, 3, function_obj);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log('SSS5');\n\t\t\t\t\tfindInBlockCorrectPlace(el_jq, event, function_obj, command_type);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconsole.log('MMM6');\n\n\t\t\tvar index = command_parent.commands_block.indexOf(command_target);\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_block.splice(index, 0, recentComand);\n\t\t\t}\n\n\t\t\trenderCommand(recentComand, el, 1, function_obj);\n\t\t}\n\n\t\t\n\n\t} else {\n\t\tconsole.log('XXX1');\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tif (is_in_else) {\n\n\t\t\tif (command_parent == command_target) {\n\t\t\t\tconsole.log('MMM3');\n\t\t\t\tif (command_parent.commands_else == null || command_parent.commands_else.length == 0) {\n\t\t\t\t\tcommand_parent.commands_else = [];\n\t\t\t\t\tconsole.log('SSS1');\n\t\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\t\tcommand_parent.commands_else.push(recentComand);\n\n\t\t\t\t\trenderCommand(recentComand, el_jq, 3, function_obj);\n\t\t\t\t} else { // Se já tem algum comando no bloco:\n\t\t\t\t\tconsole.log('SSS2');\n\t\t\t\t\tfindInBlockCorrectPlace(el_jq, event, function_obj, command_type, true);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconsole.log('XXX2');\n\t\t\tvar index = command_parent.commands_else.indexOf(command_target);\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_else.splice((index + 1), 0, recentComand);\n\t\t\t}\n\n\t\t\trenderCommand(recentComand, el, 2, function_obj);\n\n\t\t} else {\n\n\t\t\tif (command_parent == command_target) {\n\t\t\t\tconsole.log('Nxxxx78');\n\t\t\t\tif (command_parent.commands_block == null || command_parent.commands_block.length == 0) {\n\t\t\t\t\tcommand_parent.commands_block = [];\n\n\t\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\t\tcommand_parent.commands_block.push(recentComand);\n\t\t\t\t\tconsole.log('SSS6');\n\t\t\t\t\trenderCommand(recentComand, el_jq, 3, function_obj);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log('SSS7');\n\t\t\t\t\tfindInBlockCorrectPlace(el_jq, event, function_obj, command_type);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconsole.log('XXX3');\n\t\t\tvar index = command_parent.commands_block.indexOf(command_target);\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_block.splice((index + 1), 0, recentComand);\n\t\t\t}\n\n\t\t\trenderCommand(recentComand, el, 2, function_obj);\n\t\t}\n\n\t\t\n\t}\n}\n\nfunction insertCommandInBlock (el, event, function_obj, command_type) {\n\tvar el_jq = $(el);\n\tvar command_parent = el_jq.data('command');\n\n\tif ((el_jq.data('command').type == Models.COMMAND_TYPES.repeatNtimes) ||\n\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.whiletrue) ||\n\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.dowhiletrue) ) {\n\n\t\t// Se não tiver outro comando ainda no bloco, só adiciona: \n\t\tif (command_parent.commands_block == null || command_parent.commands_block.length == 0) {\n\t\t\tcommand_parent.commands_block = [];\n\n\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\tcommand_parent.commands_block.push(recentComand);\n\n\t\t\trenderCommand(recentComand, el_jq.find('.block_commands'), 3, function_obj);\n\t\t} else { // Se já tem algum comando no bloco:\n\t\t\tfindInBlockCorrectPlace(el, event, function_obj, command_type);\n\t\t}\n\n\t} else if (el_jq.data('command').type == Models.COMMAND_TYPES.iftrue) {\n\n\t\tconsole.log('QQ9');\n\t\t\n\t\t// no if ou no else?\n\t\tvar correct_div = $(document.elementFromPoint(event.pageX, event.pageY));\n\t\tvar is_in_if = true;\n\t\tif (correct_div.data('if')) {\n\t\t\tis_in_if = true;\n\t\t} else if (correct_div.data('else')) {\n\t\t\tis_in_if = false;\n\t\t} else {\n\t\t\tvar hier = correct_div.parentsUntil(\".command_container\");\n\t\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\t\tvar temp = $(hier[i]);\n\t\t\t\tif (typeof temp.data('if') !== 'undefined') {\n\t\t\t\t\tis_in_if = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (typeof temp.data('else') !== 'undefined') {\n\t\t\t\t\tis_in_if = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (is_in_if) {\n\t\t\tif (command_parent.commands_block == null || command_parent.commands_block.length == 0) {\n\t\t\t\tcommand_parent.commands_block = [];\n\n\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\tcommand_parent.commands_block.push(recentComand);\n\n\t\t\t\trenderCommand(recentComand, el_jq.find('.commands_if'), 3, function_obj);\n\t\t\t} else { // Se já tem algum comando no bloco:\n\t\t\t\tfindInBlockCorrectPlace(el_jq.find('.commands_if'), event, function_obj, command_type);\n\t\t\t}\n\n\t\t} else {\n\t\t\tif (command_parent.commands_else == null || command_parent.commands_else.length == 0) {\n\t\t\t\tcommand_parent.commands_else = [];\n\n\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\tcommand_parent.commands_else.push(recentComand);\n\n\t\t\t\trenderCommand(recentComand, el_jq.find('.commands_else'), 3, function_obj);\n\t\t\t} else { // Se já tem algum comando no bloco:\n\t\t\t\tfindInBlockCorrectPlace(el_jq.find('.commands_else'), event, function_obj, command_type, true);\n\t\t\t}\n\n\t\t}\n\n\t} else { // é do tipo switch\n\t\tconsole.log(\"está tentando inserir em um switch que está na raiz!\");\n\t\taddCommandToSwitchCase(event, function_obj, command_type);\n\t}\n}\n\nfunction addCommandToSwitchCase (event, function_obj, command_type) {\n\n\tvar el = $(document.elementFromPoint(event.clientX, event.clientY));\n\n\tvar which_case = el.data('switchcase');\n\tvar case_div = el;\n\t\n\tif (!which_case) {\n\t\tvar hier_find = el.parentsUntil(\".all_cases_div\");\n\t\tfor (var i = 0; i < hier_find.length; i++) {\n\t\t\tif (typeof $(hier_find[i]).data('switchcase') !== 'undefined') {\n\t\t\t\twhich_case = $(hier_find[i]).data('switchcase');\n\t\t\t\tcase_div = $(hier_find[i]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (which_case.commands_block == null || which_case.commands_block.length < 1) {\n\t\twhich_case.commands_block = [];\n\n\t\tvar recentComand = genericCreateCommand(command_type);\n\t\twhich_case.commands_block.push(recentComand);\n\t\trenderCommand(recentComand, case_div.find('.case_commands_block'), 3, function_obj);\n\t} else {\n\t\tfindInBlockCorrectPlaceInSwitchCase(which_case, case_div, event, function_obj, command_type);\n\t}\n\n}\n\n\n\n\nfunction findInBlockCorrectPlaceInSwitchCase (which_case, case_div, event, function_obj, command_type) {\n\n\tvar all_sub = case_div.find('div.command_container');\n\n\tvar menor_distancia = 999999999;\n\tvar elemento_menor_distancia = null;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\t// Descobrindo o elemento mais próximo:\n\tfor (var i = 0; i < all_sub.length; i++) {\n\t\n\t\tt_top = all_sub[i].getBoundingClientRect().top;\n\t\tt_bot = all_sub[i].getBoundingClientRect().top + all_sub[i].getBoundingClientRect().height;\n\n\t\tif ((t_top - event.clientY) < menor_distancia) {\n\t\t\tmenor_distancia = event.clientY - t_top;\n\t\t\telemento_menor_distancia = all_sub[i];\n\t\t}\n\t}\n\n\tvar borda_inferior = elemento_menor_distancia.parentNode.getBoundingClientRect().top + elemento_menor_distancia.parentNode.getBoundingClientRect().height;\n\t\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\tif ((borda_inferior - event.clientY) < menor_distancia) {\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\twhich_case.commands_block.push(recentComand);\n\n\t\trenderCommand(recentComand, $(case_div.find('.case_commands_block')[0]), 3, function_obj);\n\n\t} else {\n\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar index = which_case.commands_block.indexOf($(elemento_menor_distancia).data('command'));\n\n\t\tif (index > -1) {\n\t\t which_case.commands_block.splice(index, 0, recentComand);\n\t\t renderCommand(recentComand, elemento_menor_distancia, 1, function_obj);\n\t\t}\n\t}\n}\n\nfunction findInBlockCorrectPlace (el, event, function_obj, command_type, is_in_else = false) {\n\tvar el_jq = $(el);\n\tvar all_sub = el_jq.find('div.command_container');\n\n\tvar menor_distancia = 999999999;\n\tvar elemento_menor_distancia = null;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\t// Descobrindo o elemento mais próximo:\n\tfor (var i = 0; i < all_sub.length; i++) {\n\t\n\t\tt_top = all_sub[i].getBoundingClientRect().top;\n\t\tt_bot = all_sub[i].getBoundingClientRect().top + all_sub[i].getBoundingClientRect().height;\n\n\t\tif ((t_top - event.clientY) < menor_distancia) {\n\t\t\tmenor_distancia = event.clientY - t_top;\n\t\t\telemento_menor_distancia = all_sub[i];\n\t\t}\n\t}\n\n\tvar borda_inferior = elemento_menor_distancia.parentNode.getBoundingClientRect().top + elemento_menor_distancia.parentNode.getBoundingClientRect().height;\n\n\tconsole.log(\"menor_distancia: \");\n\tconsole.log(elemento_menor_distancia);\n\t\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\tif ((borda_inferior - event.clientY) < menor_distancia) {\n\n\t\tconsole.log('QQ11');\n\t\t\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar command_parent = el_jq.data('command');\n\n\t\tif (is_in_else) {\n\t\t\tconsole.log('QQ15');\n\t\t\tcommand_parent.commands_else.push(recentComand);\n\t\t\tconsole.log('el_jq');\n\t\t\tconsole.log(el_jq);\n\t\t\tconsole.log(\"$(el_jq.find('.commands_else')[0]):: \");\n\t\t\tconsole.log($(el_jq.find('.commands_else')[0]));\n\n\t\t\trenderCommand(recentComand, el_jq, 3, function_obj);\n\n\t\t} else {\n\t\t\tconsole.log('QQ16');\n\t\t\tcommand_parent.commands_block.push(recentComand);\n\n\t\t\trenderCommand(recentComand, $(el_jq.find('.block_commands')[0]), 3, function_obj);\n\t\t}\n\n\t} else {\n\n\t\tconsole.log('QQ12');\n\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar command_parent = el_jq.data('command');\n\n\t\tif (is_in_else) {\n\n\t\t\tvar index = command_parent.commands_else.indexOf($(elemento_menor_distancia).data('command'));\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_else.splice(index, 0, recentComand);\n\t\t\t renderCommand(recentComand, elemento_menor_distancia, 1, function_obj);\n\t\t\t}\n\n\t\t} else {\n\t\t\tvar index = command_parent.commands_block.indexOf($(elemento_menor_distancia).data('command'));\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_block.splice(index, 0, recentComand);\n\t\t\t renderCommand(recentComand, elemento_menor_distancia, 1, function_obj);\n\t\t\t}\n\n\t\t}\n\t\t\n\t}\n}\n\nfunction findBeforeOrAfterCommandToAdd (el, event, function_obj, command_type) {\n\tswitch ($(el).data('command').type) {\n\t\tcase Models.COMMAND_TYPES.iftrue:\n\t\tcase Models.COMMAND_TYPES.switch:\n\t\tcase Models.COMMAND_TYPES.repeatNtimes:\n\t\tcase Models.COMMAND_TYPES.whiletrue:\n\t\tcase Models.COMMAND_TYPES.dowhiletrue:\n\t\t\tinsertCommandInBlock(el, event, function_obj, command_type);\n\t\t\treturn;\n\t}\n\n\tvar menor_distancia = 999999999;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\tt_top = el.getBoundingClientRect().top;\n\tt_bot = el.getBoundingClientRect().top + el.getBoundingClientRect().height;\n\n\tvar d_top = event.clientY - t_top; // distancia topo\n\tvar d_bot = t_bot - event.clientY; // distancia baixo\n\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\tif (d_top < d_bot) {\n\t\t\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar index = function_obj.commands.indexOf($(el).data('command'));\n\n\t\tif (index > -1) {\n\t\t function_obj.commands.splice(index, 0, recentComand);\n\t\t}\n\n\t\trenderCommand(recentComand, el, 1, function_obj);\n\t\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, command_type, '/', index);\n\n\t} else {\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar index = function_obj.commands.indexOf($(el).data('command'));\n\n\t\tif (index > -1) {\n\t\t function_obj.commands.splice((index + 1), 0, recentComand);\n\t\t}\n\n\t\trenderCommand(recentComand, el, 2, function_obj);\n\t\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, command_type, '/', index);\n\t}\n}\n\nfunction findNearbyCommandToAddInFunctionScope (el, event, node_list_commands, function_obj, command_type) {\n\n\tvar all_sub = $(node_list_commands).find('div.command_container');\n\n\tvar menor_distancia = 999999999;\n\tvar elemento_menor_distancia = null;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\t// Descobrindo o elemento mais próximo:\n\tfor (var i = 0; i < all_sub.length; i++) {\n\t\n\t\tt_top = all_sub[i].getBoundingClientRect().top;\n\t\tt_bot = all_sub[i].getBoundingClientRect().top + all_sub[i].getBoundingClientRect().height;\n\n\t\tif ((t_top - event.clientY) < menor_distancia) {\n\t\t\tmenor_distancia = event.clientY - t_top;\n\t\t\telemento_menor_distancia = all_sub[i];\n\t\t}\n\t}\n\n\tvar borda_inferior = elemento_menor_distancia.parentNode.getBoundingClientRect().top + elemento_menor_distancia.parentNode.getBoundingClientRect().height;\n\t\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\tif ((borda_inferior - event.clientY) < menor_distancia) {\n\t\t\n\t\tvar recentComand = genericCreateCommand(command_type);\n\t\tfunction_obj.commands.push(recentComand);\n\t\t//\n\t\trenderCommand(recentComand, node_list_commands, 3, function_obj);\n\t\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, command_type, '/', function_obj.commands.length - 1);\n\n\t} else {\n\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar index = function_obj.commands.indexOf($(elemento_menor_distancia).data('command'));\n\n\t\tif (index > -1) {\n\t\t function_obj.commands.splice(index, 0, recentComand);\n\t\t}\n\n\t\trenderCommand(recentComand, elemento_menor_distancia, 1, function_obj);\n\t\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, command_type, '/', index);\n\t}\n}\n","import * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as VariableValueMenuManagement from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\nimport * as ExpressionManagement from './generic_expression';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui attribution created_element\"> <i class=\"ui icon small arrow left\"></i> <span> x <— 1 + 1 </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\t\n\tvar el = $('<div class=\"ui attribution command_container\"><i class=\"ui icon small arrow left command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"var_attributed\"></div> <span class=\"text_attr_receives span_command_spec\">'+LocalizedStrings.getUI('text_receives')+'</span> '\n\t\t + '<div class=\"expression_elements\"></div> </div>');\n\tel.data('command', command);\n\n\tVariableValueMenu.renderMenu(command, command.variable, el.find('.var_attributed'), function_obj);\n\n\tif (!command.expression || command.expression.length < 1) {\n\t\tvar exp = new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\tcommand.expression.push(exp);\n\t}\n\n\taddHandlers(command, function_obj, el);\n\n\tExpressionManagement.renderExpression(command, function_obj, el.find('.expression_elements'), command.expression);\n\n\t//renderExpressionElements(command, function_obj, el);\n\n\treturn el;\n\n}\n\nexport function manageExpressionElements (command, ref_object, dom_object, menu_var_or_value, function_obj, selectedItem, expression_element) {\n\t\n\tvar index_to_move = expression_element.itens.indexOf(ref_object);\n\n\tswitch (selectedItem.data('exp')) {\n\t\tcase Models.EXPRESSION_ELEMENTS.exp_op_exp:\n\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.exp_op_exp, [expression_element.itens[index_to_move],\n\t \t\tModels.ARITHMETIC_TYPES.plus, \n\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\t\texpression_element.itens[index_to_move] = exp;\n\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.op_exp:\n\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.op_exp, [Models.ARITHMETIC_TYPES.plus, \n\t\t\t\texpression_element.itens[index_to_move] ]);\n\n\t\t\texpression_element.itens[index_to_move] = exp;\n\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.par_exp_par:\n\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.par_exp_par, [expression_element.itens[index_to_move]]);\n\n\t\t\texpression_element.itens[index_to_move] = exp;\n\n\t\t\tbreak;\n\t}\n\n\trenderExpressionElements(command, function_obj, dom_object);\n\n}\n\nfunction renderExpressionElements (command, function_obj, el) {\n\tvar expression_div = el.find('.expression_elements');\n\tvar command_container;\n\n\tif (el.hasClass(\"command_container\") == false) {\n\t\tvar hier = el.parentsUntil(\".command_container\");\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tif ($(hier[i]).hasClass(\"command_container\")) {\n\t\t\t\tcommand_container = $(hier[i]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ($(hier[i]).hasClass(\"expression_elements\")) {\n\t\t\t\texpression_div = $(hier[i]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (command_container) {\n\t\texpression_div = command_container.find('.expression_elements');\n\t}\n\n\texpression_div.text('');\n\n\tfor (var i = 0; i < command.expression.length; i++) {\n\n\t\tvar temp = $('<div class=\"expression_element\"></div>');\n\t\ttemp.data('ref_element', command.expression[i]);\n\t\ttemp.data('ref_index', i);\n\n\t\texpression_div.append(temp);\n\n\t\trenderElement(command, function_obj, temp, command.expression[i]);\n\t}\n}\n\nfunction renderOperator (command, function_obj, temp_op, expression_element, index_op) {\n\n\tvar context_menu = '<div class=\"ui dropdown\"><div class=\"text\">';\n\n\tswitch (expression_element.itens[index_op]) {\n\t\tcase Models.ARITHMETIC_TYPES.plus:\n\t\t\tcontext_menu += '+';\n\t\t\tbreak;\n\n\t\tcase Models.ARITHMETIC_TYPES.minus:\n\t\t\tcontext_menu += '-';\n\t\t\tbreak;\n\n\t\tcase Models.ARITHMETIC_TYPES.multiplication:\n\t\t\tcontext_menu += '*';\n\t\t\tbreak;\n\n\t\tcase Models.ARITHMETIC_TYPES.division:\n\t\t\tcontext_menu += '/';\n\t\t\tbreak;\n\n\t\tcase Models.ARITHMETIC_TYPES.module:\n\t\t\tcontext_menu += '%';\n\t\t\tbreak;\n\n\t\tcase Models.ARITHMETIC_TYPES.none:\n\t\t\tcontext_menu += '...';\n\t\t\tbreak;\n\t}\n\t\n\tcontext_menu += '</div><div class=\"menu\">';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.plus+'\">+</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.minus+'\">-</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.multiplication+'\">*</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.division+'\">/</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.module+'\">%</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.none+'\" data-text=\"...\">Nenhum</div>';\n\tcontext_menu += '</div></div>';\n\n\tcontext_menu = $(context_menu);\n\n\ttemp_op.append(context_menu);\n\n\tcontext_menu.dropdown({\n\t\tonChange: function(value, text, $selectedItem) {\n\t expression_element.itens[index_op] = value;\n }\n\t});\n\n}\n\nfunction renderMenuAddExpression (command, function_obj, el, dom_append_menu, expression_append_new_expression) {\n\n\tif (el.hasClass(\"command_container\") == false) {\n\t\tvar hier = el.parentsUntil(\".commands_list_div\");\n\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tif ($(hier[i]).hasClass(\"command_container\")) {\n\t\t\t\tel = $(hier[i]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom_append_menu.hasClass(\"expression_elements\") == false) {\n\t\tvar hier = el.parentsUntil(\".commands_list_div\");\n\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tif ($(hier[i]).hasClass(\"expression_elements\")) {\n\t\t\t\tdom_append_menu = $(hier[i]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tvar context_menu = '<div class=\"ui dropdown\"><div class=\"text\"></div><i class=\"ui icon arrow alternate circle right outline\"></i><div class=\"menu\">';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\tcontext_menu += '</div></div>';\n\n\tcontext_menu = $(context_menu);\n\n\tdom_append_menu.append(context_menu);\n\n\tcontext_menu.dropdown({\n\t\tonChange: function(value, text, $selectedItem) {\n\t switch (value) {\n\t \tcase Models.EXPRESSION_ELEMENTS.exp_op_exp:\n\n\t \tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.exp_op_exp, [new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true),\n\t \t\tModels.ARITHMETIC_TYPES.plus, \n\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\t\texpression_append_new_expression.push(exp);\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.op_exp:\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.op_exp, [Models.ARITHMETIC_TYPES.plus, \n\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\t\texpression_append_new_expression.push(exp);\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.par_exp_par:\n\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.par_exp_par, [new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\t\texpression_append_new_expression.push(exp);\n\n\t\t\tbreak;\n\t\t}\n\t\t\n\t\trenderExpressionElements(command, function_obj, el);\n }\n\t});\n\n}\n\nfunction renderElement (command, function_obj, el, expression_element) {\n\n\tswitch (expression_element.type_exp) {\n\t\tcase Models.EXPRESSION_ELEMENTS.exp_op_exp:\n\n\t\t\tvar temp_op = $('<div class=\"component_element\"></div>');\n\t\t\tvar temp_exp_1 = $('<div class=\"component_element\"></div>');\n\t\t\tvar temp_exp_2 = $('<div class=\"component_element\"></div>');\n\n\t\t\tel.append(temp_exp_1);\n\t\t\tel.append(temp_op);\n\t\t\tel.append(temp_exp_2);\n\t\t\t\n\t\t\tif (expression_element.itens[0].type) {\n\t\t\t\tVariableValueMenu.renderMenu(command, expression_element.itens[0], temp_exp_1, function_obj, 2, expression_element);\n\t\t\t} else {\n\t\t\t\trenderElement(command, function_obj, temp_exp_1, expression_element.itens[0]);\n\t\t\t}\n\n\t\t\trenderOperator(command, function_obj, temp_op, expression_element, 1);\n\n\t\t\tif (expression_element.itens[2].type) {\n\t\t\t\tVariableValueMenu.renderMenu(command, expression_element.itens[2], temp_exp_2, function_obj, 2, expression_element);\n\t\t\t} else {\n\t\t\t\trenderElement(command, function_obj, temp_exp_2, expression_element.itens[2]);\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.op_exp:\n\t\t\tvar temp_op = $('<div class=\"component_element\"></div>');\n\t\t\tvar temp_exp = $('<div class=\"component_element\"></div>');\n\n\t\t\tel.append(temp_op);\n\t\t\tel.append(temp_exp);\n\n\t\t\trenderOperator(command, function_obj, temp_op, expression_element, 0);\n\n\t\t\tif (expression_element.itens[1].type) {\n\t\t\t\tVariableValueMenu.renderMenu(command, expression_element.itens[1], temp_exp, function_obj, 2, expression_element);\n\t\t\t} else {\n\t\t\t\trenderElement(command, function_obj, temp_exp, expression_element.itens[1]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.par_exp_par:\n\n\t\t\tvar temp_par_1 = $('<div class=\"component_element\"> ( </div>');\n\t\t\tvar temp_exp = $('<div class=\"component_element\"></div>');\n\t\t\tvar temp_par_2 = $('<div class=\"component_element\"> ) </div>');\n\n\t\t\tel.append(temp_par_1);\n\t\t\tel.append(temp_exp);\n\n\t\t\tfor (var j = 0; j < expression_element.itens.length; j++) {\n\t\t\t\tif (expression_element.itens[j].type) {\n\t\t\t\t\tVariableValueMenu.renderMenu(command, expression_element.itens[j], temp_exp, function_obj, 2, expression_element);\n\t\t\t\t} else {\n\t\t\t\t\trenderElement(command, function_obj, temp_exp, expression_element.itens[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\n\t\t\t//renderMenuAddExpression(command, function_obj, el, el, expression_element.itens);\n\n\t\t\tel.append(temp_par_2);\n\n\t\t\tbreak;\n\t}\n\n}\n\n\nfunction renderExpression (command, function_obj, el) {\n\n\tvar expression_div = el.find('.expression_elements');\n\texpression_div.text('');\n\n\tvar menu_add_item = $('<div class=\"menu_add_item\"></div>');\n\tmenu_add_item.data('index_add', 0);\n\n\texpression_div.append(menu_add_item);\n\t\n\tfor (var i = 0; i < command.expression.length; i++) {\n\n\t\tif (command.expression[i].type) {\n\n\t\t\tvar temp = $('<div class=\"expression_element\"></div>');\n\t\t\ttemp.data('ref_element', command.expression[i]);\n\t\t\ttemp.data('ref_index', i);\n\n\t\t\texpression_div.append(temp);\n\n\t\t\tVariableValueMenu.renderMenu(command, command.expression[i], temp, function_obj);\n\n\t\t} else if (command.expression[i] == \"(\" || command.expression[i] == \")\") {\n\n\t\t\tvar temp = $('<div class=\"expression_element\">'+command.expression[i]+'</div>');\n\t\t\ttemp.data('ref_element', command.expression[i]);\n\t\t\ttemp.data('ref_index', i);\n\n\t\t\texpression_div.append(temp);\n\n\t\t} else {\n\n\t\t\tvar temp = '<div class=\"expression_element\">';\n\n\t\t\tswitch(command.expression[i]) {\n\t\t\t\tcase Models.ARITHMETIC_TYPES.plus:\n\t\t\t\t\ttemp += '+';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.minus:\n\t\t\t\t\ttemp += '-';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.multiplication:\n\t\t\t\t\ttemp += '*';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.division:\n\t\t\t\t\ttemp += '/';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.module:\n\t\t\t\t\ttemp += '%';\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\ttemp += '</div>';\n\t\t\ttemp = $(temp);\n\t\t\ttemp.data('ref_element', command.expression[i]);\n\t\t\ttemp.data('ref_index', i);\n\n\t\t\texpression_div.append(temp);\n\n\t\t}\n\t\t\n\t\tvar menu_add_item_seq = $('<div class=\"menu_add_item\"></div>');\n\t\tvar index_temp = (i + 1);\n\t\tmenu_add_item_seq.data('index_add', index_temp);\n\t\texpression_div.append(menu_add_item_seq);\n\n\t}\n\n\taddMenuItens(command, function_obj, el);\n\n}\n\nfunction addMenuItens (command, function_obj, expression_div) {\n\tvar divs_expression = expression_div.find('.menu_add_item');\n\n\tfor (var i = 0; i < divs_expression.length; i++) {\n\n\t\tvar temp = $(divs_expression[i]).data('index_add');\n\n\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><i class=\"ui icon plus square outline\"></i><div class=\"menu\">';\n\t\tcontext_menu += '<div class=\"item\" data-option=\"value\" data-index=\"'+temp+'\">'+LocalizedStrings.getUI('text_value')+'</div>';\n\t\tcontext_menu += '<div class=\"item\" data-option=\"operator\" data-index=\"'+temp+'\">'+LocalizedStrings.getUI('text_operator')+'</div>';\n\t\tcontext_menu += '<div class=\"item\" data-option=\"parentheses\" data-index=\"'+temp+'\">'+LocalizedStrings.getUI('text_parentheses')+'</div>';\n\t\tcontext_menu += '</div></div>';\n\n\t\tcontext_menu = $(context_menu);\n\n\t\t$(divs_expression[i]).append(context_menu);\n\n\t\tcontext_menu.dropdown({\n\t on: 'hover',\n\t onChange: function(value, text, $selectedItem) {\n \t\tswitch ($selectedItem.data('option')) {\n \t\t\tcase \"value\":\n \t\t\t\tcommand.expression.splice($selectedItem.data('index'), 0, new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n \t\t\t\trenderExpression(command, function_obj, expression_div);\n \t\t\t\tbreak;\n \t\t\tcase \"operator\":\n \t\t\t\tcommand.expression.splice($selectedItem.data('index'), 0, Models.ARITHMETIC_TYPES.plus);\n \t\t\t\trenderExpression(command, function_obj, expression_div);\n \t\t\t\tbreak;\n \t\t\tcase \"parentheses\":\n \t\t\t\tcommand.expression.splice($selectedItem.data('index'), 0, \"(\");\n \t\t\t\tcommand.expression.splice($selectedItem.data('index') + 1, 0, new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n \t\t\t\tcommand.expression.splice($selectedItem.data('index') + 2, 0, \")\");\n \t\t\t\trenderExpression(command, function_obj, expression_div);\n \t\t\t\tbreak;\n \t\t }\n \t}\n\t });\n\n\t}\n}\n\n\nfunction addHandlers (command, function_obj, attribution_dom) {\n\n\tattribution_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, attribution_dom)) {\n\t\t\tattribution_dom.fadeOut(400, function() {\n\t\t\t\tattribution_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n\n\tattribution_dom.find('.button_refresh_attribution').on('click', function() {\n\t\trenderExpressionElements(command, function_obj, attribution_dom);\n\t});\n}\n\nexport function renderMenuOperations (command, ref_object, dom_object, menu_var_or_value, function_obj, variable_selected) {\n\n\t/*console.log(\"recebido o seguinte DOM: \");\n\tconsole.log(dom_object);\n\n\tif (dom_object.hasClass('var_attributed')) {\n\t\treturn;\n\t} else {\n\t\tvar hier = dom_object.parentsUntil(\".command_container\");\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tif ($(hier[i]).hasClass('var_attributed') || $(hier[i]).hasClass('parameters_function_called')) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\n\t\t\n\t}\n\n\tdom_object.find('.context_menu_clear').remove();\n\n\n\tvar menu_operations = '<div class=\"ui dropdown menu_operations\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\n\tfor (var tm in Models.ARITHMETIC_TYPES) {\n\n\t\tmenu_operations += '<div class=\"item\" data-option=\"'+tm+'\">'+LocalizedStrings.getUI('btn_arithmetic_' + tm)+'</div>';\n }\n menu_operations += '<div class=\"item\" data-option=\"clear\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\t\n menu_operations += '</div></div>';\n\n menu_operations = $(menu_operations);\n\n dom_object.append(menu_operations);\n\n menu_operations.dropdown({\n \tonChange: function(value, text, $selectedItem) {\n \t\tswitch ($($selectedItem).data('option')) {\n \t\t\tcase \"clear\":\n\t \t\t\t$(dom_object).text('');\n\t\t \t \tVariableValueMenu.renderMenu(command, ref_object, dom_object, function_obj);\n \t\t\t\tbreak;\n \t\t\tdefault:\n \t\t\t\tcreateExpressionAround(command, ref_object, dom_object, function_obj);\n \t\t\t\tmenu_operations.find('.text').text('');\n \t\t}\n }\n });*/\n}\n\nfunction createExpressionAround (command, ref_object, dom_object, function_obj) {\n\t$('<span> ( </span>').insertBefore(dom_object);\n\t$('<span> ) </span>').insertAfter(dom_object);\n\n\tVariableValueMenu.renderMenu(command, new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true), dom_object, function_obj);\n}\n\n","import { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as CommandsManagement from '../commands';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui comment created_element\"> <i class=\"ui icon small quote left\"></i> <span> '+LocalizedStrings.getUI('text_break')+' </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar el = $('<div class=\"ui comment command_container\"> <i class=\"ui icon small quote left\"></i> <i class=\"ui icon times red button_remove_command\"></i> <span>'+LocalizedStrings.getUI('text_break')+'</span> </div>');\n\tel.data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\treturn el;\n}\n\nfunction addHandlers (command, function_obj, break_dom) {\n\n\tbreak_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, break_dom)) {\n\t\t\tbreak_dom.fadeOut(400, function() {\n\t\t\t\tbreak_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}\n","import { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui comment created_element\"> <i class=\"ui icon small quote left\"></i> <span class=\"span_comment_text\" \"> '+LocalizedStrings.getUI('text_comment')+' </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar el = $('<div class=\"ui comment command_container\"> <i class=\"ui icon small quote left command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"var_value_menu_div\"></div> <div class=\"div_comment_text\">'+'</div> </div>');\n\tel.data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\trenderTextComment(command, function_obj, el);\n\n\treturn el;\n}\n\nfunction renderTextComment (command, function_obj, el) {\n\tVariableValueMenu.renderMenu(command, command.comment_text, el.find('.var_value_menu_div'), function_obj, 20);\n}\n\nfunction addHandlers (command, function_obj, comment_dom) {\n\n\tcomment_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, comment_dom)) {\n\t\t\tcomment_dom.fadeOut(400, function() {\n\t\t\t\tcomment_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}\n","import * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as VariableValueMenuManagement from './variable_value_menu';\n\n\nexport function renderExpression (command, expression, function_obj, initial_el_to_render) {\n\n\texpression.dom_object = initial_el_to_render;\n\n\tif (expression.expression == null || expression.expression.length < 1) {\n\n\t\trenderStartMenu(command, expression, function_obj, initial_el_to_render);\n\n\t} else {\n\t\t\n\t\tvar main_div = $('<div class=\"expression_elements\"></div>');\n\n\t\tswitch (expression.expression.type) {\n\t\t\tcase Models.EXPRESSION_TYPES.exp_logic:\n\t\t\t\trenderLogicExpression(command, expression, expression.expression, function_obj, main_div, initial_el_to_render);\n\t\t\t\tbreak;\n\t\t\tcase Models.EXPRESSION_TYPES.exp_arithmetic:\n\t\t\t\trenderArithmeticExpression(command, expression, expression.expression, function_obj, main_div);\n\t\t\t\tbreak;\n\t\t}\n\n\t\tinitial_el_to_render.append(main_div);\t\n\t\tvar restartMenu = $('<div class=\"ui restart_expression\"><i class=\"ui icon undo\"></i></div>');\n\t\tinitial_el_to_render.append(restartMenu);\t\n\t\trestartMenu.on('click', function(e){\n\t \texpression.expression = null;\n\t \tinitial_el_to_render.empty();\n\t \trenderExpression(command, expression, function_obj, initial_el_to_render);\n\t \t});\n\t}\n}\n\nfunction renderArithmeticOperator (command, all_expression, expression_arithmetic, arithmetic_operator, function_obj, element_to_append) {\n\n\tvar menu_operator = $('<div class=\"ui dropdown\"><div class=\"text\"></div><i class=\"dropdown icon\"></i></div>');\n\tmenu_operator.dropdown({\n\t values: [\n\t {\n\t name : '>',\n\t value : Models.ARITHMETIC_COMPARISON.greater_than,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.greater_than)\n\t },\n\t {\n\t name : '<',\n\t value : Models.ARITHMETIC_COMPARISON.less_than,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.less_than)\n\t },\n\t {\n\t name : '==',\n\t value : Models.ARITHMETIC_COMPARISON.equals_to,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.equals_to)\n\t },\n\t {\n\t name : '!=',\n\t value : Models.ARITHMETIC_COMPARISON.not_equals_to,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.not_equals_to)\n\t },\n\t {\n\t name : '>=',\n\t value : Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to)\n\t },\n\t {\n\t name : '<=',\n\t value : Models.ARITHMETIC_COMPARISON.less_than_or_equals_to,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.less_than_or_equals_to)\n\t }\n\t ],\n\t onChange: function(value, text, $selectedItem) {\n\t \texpression_arithmetic.operator = value;\n\t }\n\t })\n\t;\n\n\telement_to_append.append(menu_operator);\n}\n\nfunction renderLogicOperator (command, all_expression, expression_logic, logic_operator, function_obj, element_to_append, initial_el_to_render) {\n\n\tvar menu_operator = $('<div class=\"ui dropdown\"><div class=\"text\"></div><i class=\"dropdown icon\"></i></div>');\n\tmenu_operator.dropdown({\n\t values: [\n\t {\n\t name : '==',\n\t value : Models.LOGIC_COMPARISON.equals_to,\n\t selected : (logic_operator == Models.LOGIC_COMPARISON.equals_to)\n\t },\n\t {\n\t name : '!=',\n\t value : Models.LOGIC_COMPARISON.not_equals_to,\n\t selected : (logic_operator == Models.LOGIC_COMPARISON.not_equals_to)\n\t },\n\t {\n\t name : '&&',\n\t value : Models.LOGIC_COMPARISON.and,\n\t selected : (logic_operator == Models.LOGIC_COMPARISON.and)\n\t },\n\t {\n\t name : '||',\n\t value : Models.LOGIC_COMPARISON.or,\n\t selected : (logic_operator == Models.LOGIC_COMPARISON.or)\n\t }\n\t ],\n\t onChange: function(value, text, $selectedItem) {\n\t \tif ($selectedItem) {\n\t\t \texpression_logic.operator = value;\n\t\t \tif (expression_logic.second_operand == null) {\n\t\t \t\texpression_logic.second_operand = new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\t \t\tinitial_el_to_render.empty();\n\t\t \t\trenderExpression(command, all_expression, function_obj, initial_el_to_render);\n\t\t \t}\n\t \t}\n\t }\n\t });\n\n\telement_to_append.append(menu_operator);\n\n}\n\n\nfunction renderLogicExpression (command, all_expression, expression_logic, function_obj, element_to_append, initial_el_to_render) {\n\n\tvar exp_el_par_1 = $(' <span class=\"span_command_spec\"> </span> ');\n\tvar exp_el_expr_el_1 = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_expr_operand = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_expr_el_2 = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_par_2 = $(' <span class=\"span_command_spec\"> </span> ');\n\n\tif (expression_logic.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\trenderLogicExpression(command, all_expression, expression_logic.first_operand, function_obj, exp_el_expr_el_1);\n\t} else if (expression_logic.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\trenderArithmeticExpression(command, all_expression, expression_logic.first_operand, function_obj, exp_el_expr_el_1);\n\t} else {\n\t\tVariableValueMenuManagement.renderMenu(command, expression_logic.first_operand, exp_el_expr_el_1, function_obj);\n\t}\n\n\telement_to_append.append(exp_el_par_1);\n\telement_to_append.append(exp_el_expr_el_1);\n\n\trenderLogicOperator(command, all_expression, expression_logic, expression_logic.operator, function_obj, exp_el_expr_operand, initial_el_to_render);\n\n\telement_to_append.append(exp_el_expr_operand);\n\n\tif (expression_logic.second_operand) {\n\t\tif (expression_logic.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\t\trenderLogicExpression(command, all_expression, expression_logic.second_operand, function_obj, exp_el_expr_el_2);\n\t\t} else if (expression_logic.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\t\trenderArithmeticExpression(command, all_expression, expression_logic.second_operand, function_obj, exp_el_expr_el_2);\n\t\t} else {\n\t\t\tVariableValueMenuManagement.renderMenu(command, expression_logic.second_operand, exp_el_expr_el_2, function_obj);\n\t\t}\n\n\t\telement_to_append.append(exp_el_expr_el_2);\n\t}\n\n\telement_to_append.append(exp_el_par_2);\n\n}\n\nfunction renderArithmeticExpression (command, all_expression, expression_arithmetic, function_obj, element_to_append) {\n\n\tvar exp_el_par_1 = $(' <span class=\"span_command_spec\"> </span> ');\n\tvar exp_el_expr_el_1 = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_expr_operand = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_expr_el_2 = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_par_2 = $(' <span class=\"span_command_spec\"> </span> ');\n\n\n\tif (expression_arithmetic.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\trenderLogicExpression(command, all_expression, expression_arithmetic.first_operand, function_obj, exp_el_expr_el_1);\n\t} else if (expression_arithmetic.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\trenderArithmeticExpression(command, all_expression, expression_arithmetic.first_operand, function_obj, exp_el_expr_el_1);\n\t} else {\n\t\tVariableValueMenuManagement.renderMenu(command, expression_arithmetic.first_operand, exp_el_expr_el_1, function_obj);\n\t}\n\n\tif (expression_arithmetic.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\trenderLogicExpression(command, all_expression, expression_arithmetic.second_operand, function_obj, exp_el_expr_el_2);\n\t} else if (expression_arithmetic.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\trenderArithmeticExpression(command, all_expression, expression_arithmetic.second_operand, function_obj, exp_el_expr_el_2);\n\t} else {\n\t\tVariableValueMenuManagement.renderMenu(command, expression_arithmetic.second_operand, exp_el_expr_el_2, function_obj);\n\t}\n\n\trenderArithmeticOperator(command, all_expression, expression_arithmetic, expression_arithmetic.operator, function_obj, exp_el_expr_operand);\n\n\telement_to_append.append(exp_el_par_1);\n\telement_to_append.append(exp_el_expr_el_1);\n\telement_to_append.append(exp_el_expr_operand);\n\telement_to_append.append(exp_el_expr_el_2);\n\telement_to_append.append(exp_el_par_2);\n}\n\nfunction renderStartMenu (command, expression, function_obj, initial_el_to_render) {\n\tvar start_menu = '';\n\tstart_menu += '<div class=\"ui dropdown menu_start_rendered\"><div class=\"text\"><i>'+LocalizedStrings.getUI('expression_menu_select')+'</i></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\tstart_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_TYPES.exp_logic+'\">'+LocalizedStrings.getUI('text_logic_expression')+' (EL == EL and EL)</div>';\n\tstart_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_TYPES.exp_arithmetic+'\">'+LocalizedStrings.getUI('text_arithmetic_expression')+' (EA < EA)</div>';\n\tstart_menu += '</div></div>';\n\tstart_menu = $(start_menu);\n\n\tstart_menu.dropdown({\n\t\tonChange: function(value, text, $selectedItem) {\n\t\t\tswitch ($selectedItem.data('exp')) {\n\t\t\t\tcase Models.EXPRESSION_TYPES.exp_logic:\n\t\t\t\t\texpression.expression = \n\t\t\t\t\t\tnew Models.LogicExpression(false, \n\t\t\t\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.EXPRESSION_TYPES.exp_arithmetic:\n\t\t\t\t\texpression.expression = \n\t\t\t\t\t\tnew Models.ArithmeticExpression(\n\t\t\t\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true), \n\t\t\t\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true), \n\t\t\t\t\t\t\tModels.ARITHMETIC_COMPARISON.less_than);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tinitial_el_to_render.html('');\n\n\t\t\trenderExpression(command, expression, function_obj, initial_el_to_render);\n \t},\n \tselectOnKeydown: false\n\t});\n\n\tinitial_el_to_render.append(' <span class=\"span_command_spec\"> </span> ');\n\t\n\tinitial_el_to_render.append(start_menu);\n\n\tinitial_el_to_render.append(' <span class=\"span_command_spec\"> </span> ');\n}","import * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as CommandsManagement from '../commands';\nimport * as VariableValueMenuManagement from './variable_value_menu';\nimport * as SwitchManagement from './switch';\n\nexport function renderMenu (command, dom_where_render, function_obj, dom_command) {\n\n\tvar menu_div = '<div class=\"ui dropdown menu_commands\" ><i class=\"icon code\"></i> <div class=\"menu\"> ';\n\n\tif ((command.type == Models.COMMAND_TYPES.repeatNtimes) \n\t\t|| (command.type == Models.COMMAND_TYPES.whiletrue) \n\t\t|| (command.type == Models.COMMAND_TYPES.dowhiletrue)) {\n\n\t\tmenu_div += '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.break+'\"><i class=\"download icon\"></i> '+LocalizedStrings.getUI('btn_break')+' </a>';\n\n\t} else {\n\n\t\tmenu_div += '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.break+'\"><i class=\"download icon\"></i> '+LocalizedStrings.getUI('btn_break')+' </a>';\n\t\tmenu_div += '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.switchcase+'\"><i class=\"download icon\"></i> '+LocalizedStrings.getUI('btn_case')+' </a>';\n\n\t}\n\n\tmenu_div += '</div></div>';\n\n\tmenu_div = $(menu_div);\n \t\n\tdom_where_render.append(menu_div);\n\n\taddHandlers(command, dom_where_render, function_obj, dom_command);\n}\n\nfunction addHandlers (command, dom_where_render, function_obj, dom_command) {\n\n\tdom_where_render.find('.menu_commands').dropdown({\n on: 'hover'\n });\n\t\n\tdom_where_render.find('.menu_commands a').on('click', function(evt){\n\n\t\tif ((command.type == Models.COMMAND_TYPES.repeatNtimes) \n\t\t\t|| (command.type == Models.COMMAND_TYPES.whiletrue) \n\t\t\t|| (command.type == Models.COMMAND_TYPES.dowhiletrue)) {\n\n\t\t\t\tif (command.commands_block == null || command.commands_block.length == 0) {\n\n\t\t\t command.commands_block = [];\n\n\t\t\t var new_cmd = CommandsManagement.genericCreateCommand($(this).data('command'));\n\t\t\t command.commands_block.push(new_cmd);\n\n\t\t\t CommandsManagement.renderCommand(new_cmd, dom_command.find('.block_commands'), 3, function_obj);\n\n\t\t\t } else {\n\t\t\t CommandsManagement.createFloatingCommand(function_obj, dom_command.find('.block_commands'), $(this).data('command'), evt);\n\t\t\t }\n\n\t\t} else {\n\n\t\t\tswitch ($(this).data('command')) {\n\t\t\t\tcase Models.COMMAND_TYPES.break:\n\t\t\t\t\tCommandsManagement.createFloatingCommand(function_obj, dom_command.find('.block_commands'), $(this).data('command'), evt);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase Models.COMMAND_TYPES.switchcase:\n\t\t\t\t\taddCaseToSwitch(command, dom_where_render, function_obj, dom_command);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t}\n\n\t});\n}\n\nfunction addCaseToSwitch (command, dom_where_render, function_obj, dom_command) {\n\t\n\tif ((command.cases == null)) {\n\t\tcommand.cases = [];\n\t}\n\t\n\tvar sc = new Models.SwitchCase(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n\n\tcommand.cases.push(sc);\n\n\tSwitchManagement.renderCase(sc, command, function_obj, dom_command.find('.all_cases_div'));\n\n}\n\n\n\n","import { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as CommandsManagement from '../commands';\nimport * as ConditionalExpressionManagement from './conditional_expression';\nimport * as ContextualizedMenu from './contextualized_menu';\nimport * as GenericExpressionManagement from './generic_expression';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui dowhiletrue created_element\"> <i class=\"ui icon small sync\"></i> <span> '+ LocalizedStrings.getUI('text_command_do') +' <br> ' + LocalizedStrings.getUI('text_command_do_until') +'(x < 10) </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar ret = '';\n\tret += '<div class=\"ui dowhiletrue command_container\"> <i class=\"ui icon small sync command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"ui context_menu\"></div> <span class=\"span_command_spec\"> ' + LocalizedStrings.getUI('text_command_do') + ' </span>';\n\tret += '<div class=\"ui block_commands\" data-subblock=\"\" data-idcommand=\"\">';\n\tret += '</div>';\n\tret += ' <span class=\"span_command_spec\"> ' + LocalizedStrings.getUI('text_command_do_until') + ' </span> <span class=\"span_command_spec\"> ( </span> <div class=\"conditional_expression\"></div> <span class=\"span_command_spec\"> ) </span>';\n\tret += '</div>';\n\n\tvar el = $(ret);\n\tel.data('command', command);\n\tel.find('.block_commands').data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\tContextualizedMenu.renderMenu(command, el.find('.context_menu'), function_obj, el);\n\n\t//ConditionalExpressionManagement.renderExpression(command, command.expression, function_obj, el.find('.conditional_expression'));\n\n\tif (command.expression) {\n\t\tGenericExpressionManagement.renderExpression(command, function_obj, el.find('.conditional_expression'), command.expression);\n\t}\n\n\tif (command.commands_block) {\n\t\tfor (var j = 0; j < command.commands_block.length; j++) {\n\t\t CommandsManagement.renderCommand(command.commands_block[j], $(el.find('.block_commands')[0]), 3, function_obj);\n\t\t}\n\t}\n\n\treturn el;\n}\n\n\nfunction addHandlers (command, function_obj, dowhiletrue_dom) {\n\n\tdowhiletrue_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, dowhiletrue_dom)) {\n\t\t\tdowhiletrue_dom.fadeOut(400, function() {\n\t\t\t\tdowhiletrue_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}","import * as VariableValueMenu from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui functioncall created_element\"> <i class=\"hand point right icon\"></i> <span> funcao() </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar el = $('<div class=\"ui functioncall command_container\"> <i class=\"hand point right icon command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"var_value_menu_div\"></div> </div>');\n\tel.data('command', command);\n\n\tVariableValueMenu.renderMenu(command, command.function_called, el.find('.var_value_menu_div'), function_obj);\n\n\taddHandlers(command, function_obj, el);\n\n\treturn el;\n}\n\nfunction addHandlers (command, function_obj, functioncall_dom) {\n\n\tfunctioncall_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, functioncall_dom)) {\n\t\t\tfunctioncall_dom.fadeOut(400, function() {\n\t\t\t\tfunctioncall_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}","import { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as VariableValueMenuManagement from './variable_value_menu';\nimport { registerUserEvent, ActionTypes } from \"../../services/userLog\";\nimport WatchJS from 'melanke-watchjs';\n\nwindow.timer = false;\n\nexport function renderExpression (command, function_obj, div_to_render, expression_array) {\n\n\tdiv_to_render.empty();\n\n\tWatchJS.unwatch(command, \"expression\");\n\tWatchJS.watch(command, \"expression\", function(){\n\t\tif (window.timer)\n\t\t\treturn;\n\t\tvar m = div_to_render.find('.single_element_expression').not('.mouse_distance').not('.add_parentheses');\n\t\tvar s = \"\";\n\t\tm.each(function(e){\n\t\t if ($(this).hasClass('parentheses_in_expression')) {\n\t\t \t\ts += ($(this).text()) + \" \";\n\t\t } else {\n\t\t s += ($(this).find('.text').text());\n\t\t \n\t\t s += ($(this).find('.var_name').text());\n\n\t\t s += ($(this).find('.parameters_function_called').text());\n\n\t\t s += ($(this).find('.value_rendered').text());\n\n\t\t s += \" \";\n\t\t }\n\t\t});\n\t\tif (s) {\n\t\t\twindow.timer = true;\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t\tregisterUserEvent(function_obj.name, ActionTypes.CHANGE_COMMAND_EXP, command.type, '/', s);\n\t\tsetTimeout(function() {\n\t\t\twindow.timer = false;\n\t\t}, 200);\n\t}, 20, true);\n\n\tif (command.type === Models.COMMAND_TYPES.attribution) {\n\n\t\tWatchJS.unwatch(command.variable);\n\t\tWatchJS.watch(command.variable, function(){\n\t renderExpression(command, function_obj, div_to_render, expression_array);\n\t }, 0);\n\n\t\tif (command.variable.content) {\n\n\t\t\tvar types_included = [];\n\n\t\t\tif (command.variable.content.type == Types.INTEGER || command.variable.content.type == Types.REAL) {\n\t \t\ttypes_included.push(Models.EXPRESSION_TYPES.exp_arithmetic);\n\t\t } else if (command.variable.content.type == Types.BOOLEAN) {\n\t\t \ttypes_included.push(Models.EXPRESSION_TYPES.exp_conditional);\n\t\t \ttypes_included.push(Models.EXPRESSION_TYPES.exp_logic);\n\t\t \ttypes_included.push(Models.EXPRESSION_TYPES.exp_arithmetic);\n\t\t } else if (command.variable.content.type == Types.TEXT) {\n\t\t \ttypes_included.push(Models.EXPRESSION_TYPES.exp_conditional);\n\t\t \ttypes_included.push(Models.EXPRESSION_TYPES.exp_logic);\n\t\t \ttypes_included.push(Models.EXPRESSION_TYPES.exp_arithmetic);\n\t\t } else {\n\t\t \tconsole.log('NÃO RECONHECI! VEJA: ', command.variable.content.type);\n\t\t }\n\n\t\t renderElements(command, function_obj, div_to_render, expression_array, types_included);\n\t\t} else {\n\t\t\tdiv_to_render.text(LocalizedStrings.getUI('var_menu_select_var').toLowerCase());\n\t\t}\n\t} else {\n\t\tvar types_included = [];\n\t\ttypes_included.push(Models.EXPRESSION_TYPES.exp_conditional);\n\t\ttypes_included.push(Models.EXPRESSION_TYPES.exp_logic);\n\t\ttypes_included.push(Models.EXPRESSION_TYPES.exp_arithmetic);\n\t\trenderElements(command, function_obj, div_to_render, expression_array, types_included);\n\t}\n\n\tdiv_to_render.children('.mouse_distance').addClass('mouse_distance_hidden');\n\tdiv_to_render.children('.higher_element').on('mousemove', function(evt) {\n\t\tif (!window.open_or_close) {\n\t\t\t$(this).css('position', 'relative', '!important');\n\t\t\t$(this).children('.mouse_distance').css('opacity', '1');\n\t\t}\n\t});\n\tdiv_to_render.children('.higher_element').on('mouseout', function(evt) {\n\t\tif (!window.open_or_close) {\n\t\t\t$(this).css('position', 'absolute', '!important');\n\t\t\t$(this).children('.mouse_distance').css('opacity', '0');\n\t\t}\n\t});\n\tvar lixeira = $('<div class=\"lixeira\" draggable=\"true\"></div>');\n\n\tdiv_to_render.find('.single_element_expression').on('mousedown', function (evt) {\n\t\twindow.posX = evt.clientX;\n\t\twindow.posY = evt.clientY;\n\t});\n\t\n\tSortable.create(div_to_render[0], {\n\t animation: 100,\n\t ghostClass: 'ghost',\n\t group: {\n\t name: 'shared',\n\t put: false // Do not allow items to be put into this list\n\t },\n\t draggable: '.single_element_expression',\n\t sort: false,\n\t filter: '.not_allowed',\n\t \n\t onStart: function() {\n\t \t$('body').append(lixeira);\n\t \tlixeira.css('display', 'block');\n\t\t\tlixeira.css('top', window.posY + 70, '!important');\n\t\t\tlixeira.css('left', window.posX - 20, '!important');\n\t },\n\t onMove: function() {\n\t \tlixeira.addClass('color_test');\n\t },\n\t onEnd: function() {\n\t \tlixeira.remove();\n\t \tdiv_to_render.find('.ghost').removeClass('ghost');\n\t }\n \t});\n \tnew Sortable(lixeira[0], {\n\t group: 'shared',\n\t animation: 150,\n\t onAdd: function (evt) {\n\t lixeira.css('display', 'none');\n\t lixeira.find('.single_element_expression').remove();\n\t lixeira.css('background-color', '');\n\t lixeira.remove();\n\t removeElement(evt, expression_array);\n\t renderExpression(command, function_obj, div_to_render, expression_array);\n\t }\n\t});\n}\n\nfunction removeElement (event, expression_array) {\n\tvar indice = $(event.item).data('index');\n\tvar first = expression_array[0];\n\tconsole.log('indice: ', indice);\n\tif (expression_array[indice].type) {\n\t\t// if is alone in expression:\n\t\tif (expression_array.length == 1) {\n\t\t\t//function_obj.commands.splice(function_obj.commands.indexOf(command), 1);\n\t\t\texpression_array.splice(0, 1);\n\t\t} else if (expression_array.length > 1) {\n\t\t\tif (indice > 0 && expression_array[indice - 1].type_op) {\n\t\t\t\tif (indice < (expression_array.length) \n\t\t\t\t\t&& expression_array[indice - 2] == '('\n\t\t\t\t\t&& expression_array[indice + 1].type_op) {\n\t\t\t\t\texpression_array.splice(indice + 1, 1);\n\t\t\t\t}\n\t\t\t\texpression_array.splice(indice, 1);\n\t\t\t\texpression_array.splice(indice - 1, 1);\n\t\t\t\tif (indice - 2 < (expression_array.length) \n\t\t\t\t\t&& expression_array[indice - 2] == '('\n\t\t\t\t\t&& expression_array[indice - 1] == ')') {\n\t\t\t\t\texpression_array.splice(indice - 1, 1);\n\t\t\t\t\texpression_array.splice(indice - 2, 1);\n\t\t\t\t\tif (indice - 3 >= 0 && indice - 3 < expression_array.length\n\t\t\t\t\t\t&& expression_array[indice - 3].type_op ) {\n\t\t\t\t\t\texpression_array.splice(indice - 3, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (indice < (expression_array.length - 1) && expression_array[indice + 1].type_op) {\n\t\t\t\texpression_array.splice(indice + 1, 1);\n\t\t\t\texpression_array.splice(indice, 1);\n\t\t\t} else if (indice < (expression_array.length - 1) && indice > 0 \n\t\t\t\t&& expression_array[indice -1] == '(' && expression_array[indice +1] == ')') {\n\t\t\t\tif (indice > 1\n\t\t\t\t\t&& expression_array[indice - 2].type_op) {\n\t\t\t\t\texpression_array.splice(indice + 1, 1);\n\t\t\t\t\texpression_array.splice(indice, 1);\n\t\t\t\t\texpression_array.splice(indice - 1, 1);\n\t\t\t\t\texpression_array.splice(indice - 2, 1);\n\n\t\t\t\t} else if (indice < (expression_array.length - 2) \n\t\t\t\t\t&& expression_array[indice + 2].type_op) {\n\t\t\t\t\texpression_array.splice(indice + 1, 1);\n\t\t\t\t\texpression_array.splice(indice, 1);\n\t\t\t\t\texpression_array.splice(indice - 1, 1);\n\n\t\t\t\t} else {\n\t\t\t\t\texpression_array.splice(indice + 1, 1);\n\t\t\t\t\texpression_array.splice(indice, 1);\n\t\t\t\t\texpression_array.splice(indice - 1, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t} else if (expression_array[indice].type_op) {\n\t\t// iVProg doesn't support operator remove\n\t} else {\n\t\t\n\t\tvar opening = -1;\n\t\tvar closing = -1;\n\n\t\tif (expression_array[indice] == '(') {\n\t\t\topening = indice;\n\t\t\tfor (var i = indice + 1; i < expression_array.length; i++) {\n\t\t\t\tif (expression_array[i] == ')') {\n\t\t\t\t\tclosing = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tclosing = indice;\n\t\t\tfor (var i = indice - 1; i >= 0; i--) {\n\t\t\t\tif (expression_array[i] == '(') {\n\t\t\t\t\topening = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (expression_array[opening + 1].type_op) {\n\t\t\texpression_array.splice(closing, 1);\n\t\t\texpression_array.splice(opening + 1, 1);\n\t\t\texpression_array.splice(opening, 1);\n\t\t} else {\n\t\t\texpression_array.splice(closing, 1);\n\t\t\texpression_array.splice(opening, 1);\n\t\t}\n\t}\n\t// if expression is empty, add a new var value:\n\tif (expression_array.length == 0) {\n\t\texpression_array.push(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n\t}\n\tif (first != expression_array[0] && expression_array[0].type_op) {\n\t\texpression_array.splice(0, 1);\n\t}\n}\n\nfunction renderElements (command, function_obj, div_to_render, expression_array, types_included) {\n\t/*if (expression_array.length > 0) {\n\t\tif (!expression_array[0].type_op) {\n\t\t\trenderStartAddOperator(div_to_render, types_included, expression_array, command, function_obj, 0);\n\t\t}\n\t}*/\n\n\tvar i = 0;\n\tfor (i = 0; i < expression_array.length; i++) {\n\t\tif (expression_array[i].type == \"var_value\") {\n\t\t\tvar div_temp = $('<div class=\"single_element_expression\" data-index=\"'+i+'\"></div>');\n\t\t\tif (i == 0) {\n\t\t\t\tif (expression_array.length > 0 && !expression_array[0].type_op) {\n\n\t\t\t\t\t//renderStartAddOperator(div_to_render, types_included, expression_array, command, function_obj, 0);\n\t\t\t\t}\n\t\t\t}\n\t\t\tVariableValueMenuManagement.renderMenu(command, expression_array[i], div_temp, function_obj);\n\t\t\tdiv_to_render.append(div_temp);\n\t\t} else if (expression_array[i] == '(' || expression_array[i] == ')') {\n\t\t\tif (expression_array[i] == ')') {\n\t\t\t\trenderFinalAddElements(div_to_render, types_included, expression_array, command, function_obj, i);\n\t\t\t\trenderParenthesis(div_to_render, expression_array[i], command, function_obj, i, expression_array);\n\t\t\t} else if (expression_array[i] == '(' && !expression_array[i + 1].type_op) {\n\t\t\t\trenderParenthesis(div_to_render, expression_array[i], command, function_obj, i, expression_array);\n\t\t\t\trenderStartAddOperator(div_to_render, types_included, expression_array, command, function_obj, i + 1);\n\t\t\t} else {\n\t\t\t\trenderParenthesis(div_to_render, expression_array[i], command, function_obj, i, expression_array);\n\t\t\t}\n\n\t\t} else {\n\t\t\tif (i == 0) {\n\t\t\t\tconsole.log(\"NEGAÇÃO NO PRIMEIRO ELEMENTO\");\n\t\t\t} else if (expression_array[i - 1] == '(') {\n\t\t\t\tconsole.log(\"NEGAÇÃO APÓS O PARÊNTESES\");\n\t\t\t}\n\t\t\trenderOperatorMenu(command, function_obj, div_to_render, expression_array[i], types_included, i, expression_array);\n\t\t}\n\t}\n\n\trenderFinalAddElements(div_to_render, types_included, expression_array, command, function_obj, i, true);\n\n\trenderAddParenthesis(command, function_obj, div_to_render, expression_array, types_included);\n\n}\n\nwindow.parentheses_activate = false;\nwindow.open_or_close = null;\nfunction renderAddParenthesis (command, function_obj, div_to_render, expression_array, types_included) {\n\tvar addParentheses = $('<div class=\"single_element_expression add_parentheses not_allowed\"><img style=\"width: 15px; position: relative; top: 3px; left: 1px; height: 15px;\" src=\"data:image/png;base64,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\"></div>');\n\tdiv_to_render.append(addParentheses);\n\taddParentheses.popup({\n\t content : \"Adicionar parênteses\",\n\t delay: {\n\t show: 750,\n\t hide: 0\n\t\t}\n\t});\n\n\taddParentheses.on('click', function(mouse_event) {\n\n\t\t// verificar se já está ativado\n\t\tif (window.parentheses_activate) {\n\t\t\treturn;\n\t\t}\n\n\t\tdiv_to_render.find('.usepointer').off('click');\n\n\t\twindow.parentheses_activate = true;\n\n\t\twindow.open_or_close = \"open\";\n\n\t\tdiv_to_render.find('.dropdown').addClass('disabled');\n\n\t\tdiv_to_render.find('.ghost_element').addClass('temp_class');\n\t\tdiv_to_render.find('.ghost_element').removeClass('ghost_element');\n\n\t\tvar floatingObject = $('<div class=\"floating_parenthesis\"> ( </div>');\n\t\tfloatingObject.draggable().appendTo(\"body\");\n\t\tfloatingObject.css(\"position\", \"absolute\");\n\t\tmouse_event.type = \"mousedown.draggable\";\n\t\tmouse_event.target = floatingObject[0];\n\t\tfloatingObject.css(\"left\", mouse_event.pageX + 10);\n\t\tfloatingObject.css(\"top\", mouse_event.pageY + 10);\n\t\tfloatingObject.trigger(mouse_event);\n\n\t\tdiv_to_render.on('mousemove', function(evt) {\n\t\t\tvar actual_target = null;\n\t\t\tif ($(evt.target).hasClass('single_element_expression')) {\n\t\t\t\tactual_target = $(evt.target);\n\t\t\t} else {\n\t\t\t\tactual_target = $(evt.target).closest('.single_element_expression');\n\t\t\t}\n\n\t\t\tif ($(evt.target).hasClass('temp_class') \n\t\t\t\t|| actual_target.length < 1 \n\t\t\t\t|| actual_target.hasClass('add_parentheses')\n\t\t\t\t|| actual_target.hasClass('rendered_parentheses')\n\t\t\t\t|| $(evt.target).hasClass('expression_elements')) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\trenderGhostParentheses(actual_target, command, function_obj, div_to_render, expression_array);\n\t\t});\n\n\t\tdiv_to_render.on('mouseleave', function() {\n\t\t\t/*window.open_parentheses.remove();\n\t\t\twindow.close_parentheses.remove();*/\n\t\t});\n\n\t\tvar floating;\n\n\t\t$('body').on('mouseup', function(evt) {\n\n\t\t\tif (window.open_or_close == \"open\") {\n\n\t\t\t\twindow.open_or_close = \"close\";\n\n\t\t\t\tfloatingObject.remove();\n\n\t\t\t\tvar comando_que_esta = $(evt.target).closest('.command_container');\n\t\t\t\tvar comando_certo = div_to_render.closest('.command_container');\n\t\t\t\tif (!comando_que_esta.is(comando_certo)) {\n\n\t\t\t\t\twindow.parentheses_activate = false;\n\t\t\t\t\tdiv_to_render.find('.temp_class').addClass('ghost_element');\n\t\t\t\t\tdiv_to_render.find('.temp_class').removeClass('temp_class');\n\t\t\t\t\tdiv_to_render.off('mousemove');\n\t\t\t\t\tdiv_to_render.off('mouseleave');\n\t\t\t\t\t$('body').off('mouseup');\n\t\t\t\t\twindow.open_parentheses.remove();\n\t\t\t\t\twindow.close_parentheses.remove();\n\t\t\t\t\twindow.inserir_open = -1;\n\t\t\t\t\twindow.inserir_close = -1;\n\t\t\t\t\twindow.open_or_close = null;\n\t\t\t\t\trenderExpression(command, function_obj, div_to_render, expression_array);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\n\t\t\t\twindow.open_parentheses.addClass('parentheses_fixed');\n\n\t\t\t\tfloating = $('<div class=\"floating_parenthesis\"> ) </div>');\n\t\t\t\tfloating.draggable().appendTo(\"body\");\n\t\t\t\tfloating.css(\"position\", \"absolute\");\n\t\t\t\tfloating.css(\"left\", evt.pageX + 10);\n\t\t\t\tfloating.css(\"top\", evt.pageY + 10);\n\n\t\t\t\t$('body').on('mousemove', function(evts) {\n\t\t\t\t\tfloating.css(\"left\", evts.pageX + 10);\n\t\t\t\t\tfloating.css(\"top\", evts.pageY + 10);\n\t\t\t\t});\t\t\t\t\n\n\t\t\t} else {\n\n\t\t\t\tfloating.remove();\n\n\t\t\t\twindow.open_parentheses.removeClass('parentheses_fixed');\n\t\t\t\t\n\t\t\t\tdiv_to_render.off('mousemove');\n\t\t\t\tdiv_to_render.off('mouseleave');\n\t\t\t\t$('body').off('mouseup');\n\n\t\t\t\tsetTimeout(function(){\n\t\t\t\t\twindow.parentheses_activate = false;\n\t\t\t\t}, 50);\n\n\t\t\t\tvar comando_que_esta = $(evt.target).closest('.command_container');\n\t\t\t\tvar comando_certo = div_to_render.closest('.command_container');\n\t\t\t\tvar is_correct = false;\n\t\t\t\tif (comando_que_esta.is(comando_certo)) {\n\t\t\t\t\tis_correct = true;\n\t\t\t\t}\n\n\t\t\t\tif (is_correct) {\n\t\t\t\t\texpression_array.splice(window.inserir_open, 0, '(');\n\t\t\t\t\texpression_array.splice(window.inserir_close, 0, ')');\n\t\t\t\t}\n\n\t\t\t\twindow.inserir_open = -1;\n\t\t\t\twindow.inserir_close = -1;\n\t\t\t\twindow.open_or_close = null;\n\n\t\t\t\trenderExpression(command, function_obj, div_to_render, expression_array);\n\n\t\t\t}\n\n\t\t});\n\t});\n}\n\nwindow.open_parentheses = $('<div class=\"parentheses_ghost\">(</div>');\nwindow.close_parentheses = $('<div class=\"parentheses_ghost\">)</div>');\nwindow.inserir_open = -1;\nwindow.inserir_close = -1;\nfunction renderGhostParentheses (actual_target, command, function_obj, div_to_render, expression_array) {\n\n\t/*window.open_parentheses.remove();\n\twindow.close_parentheses.remove();*/\n\n\tvar index_in_array = actual_target.data('index');\n\n\tif ((expression_array[index_in_array] == '(') || (expression_array[index_in_array] == ')')) {\n\t\treturn;\n\t}\n\n\tif (window.open_or_close == \"close\") {\n\t\tif (index_in_array < window.inserir_open) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Tratando a situação quando é na primeira posição:\n\n\tif (index_in_array == 0) {\n\t\tif (expression_array[index_in_array].type == \"var_value\") {\n\n\t\t\tif (window.open_or_close == \"open\") {\n\t\t\t\twindow.open_parentheses.insertBefore(actual_target);\n\t\t\t\twindow.inserir_open = index_in_array;\n\t\t\t}\n\n\t\t\t/*if (expression_array.length == 1) {\n\t\t\t\tif (window.open_or_close == \"close\") {\n\t\t\t\t\twindow.close_parentheses.insertAfter(actual_target);\n\t\t\t\t\twindow.inserir_close = index_in_array + 2;\n\t\t\t\t}*/\n\n\t\t\t//} else {\n\t\t\t\tvar count_opened = 0;\n\t\t\t\tvar count_closed = 0;\n\t\t\t\tfor (var i = 0; i < expression_array.length; i++) {\n\t\t\t\t\tif ((expression_array[i] == '(')) {\n\t\t\t\t\t\tcount_opened ++;\n\t\t\t\t\t}\n\t\t\t\t\tif (expression_array[i] == ')') {\n\t\t\t\t\t\tcount_closed ++;\n\t\t\t\t\t}\n\t\t\t\t\tif (count_opened != count_closed) {\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (count_opened > 0) {\n\t\t\t\t\t\t\tif (window.open_or_close == \"close\") {\n\t\t\t\t\t\t\t\twindow.close_parentheses.insertAfter(div_to_render.find('.single_element_expression[data-index=\"'+i+'\"]'));\n\t\t\t\t\t\t\t\twindow.inserir_close = i + 2;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (expression_array[i].type == \"var_value\") {\n\t\t\t\t\t\t\t\tif (window.open_or_close == \"close\") {\n\t\t\t\t\t\t\t\t\twindow.close_parentheses.insertAfter(div_to_render.find('.single_element_expression[data-index=\"'+i+'\"]'));\n\t\t\t\t\t\t\t\t\twindow.inserir_close = i + 2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t//}\n\n\t\t} else if (expression_array[index_in_array].type_op) {\n\n\t\t\tif (window.open_or_close == \"open\") {\n\t\t\t\twindow.open_parentheses.insertBefore(actual_target);\n\t\t\t\twindow.inserir_open = index_in_array;\n\t\t\t}\n\n\t\t\tvar count_opened = 0;\n\t\t\tvar count_closed = 0;\n\t\t\tfor (var i = 1; i < expression_array.length; i++) {\n\t\t\t\t// $('.slide-link[data-slide=\"0\"]')\n\t\t\t\tif ((expression_array[i] == '(')) {\n\t\t\t\t\tcount_opened ++;\n\t\t\t\t}\n\t\t\t\tif (expression_array[i] == ')') {\n\t\t\t\t\tcount_closed ++;\n\t\t\t\t}\n\t\t\t\tif (count_opened != count_closed) {\n\t\t\t\t} else {\n\t\t\t\t\tif (count_opened > 0) {\n\t\t\t\t\t\tif (expression_array[i].type == \"var_value\") {\n\t\t\t\t\t\t\twindow.close_parentheses.insertAfter(div_to_render.find('.single_element_expression[data-index=\"'+i+'\"]'));\n\t\t\t\t\t\t\twindow.inserir_close = i + 2;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (expression_array[i].type == \"var_value\") {\n\t\t\t\t\t\t\tif (expression_array[i].type == \"var_value\") {\n\t\t\t\t\t\t\t\twindow.close_parentheses.insertAfter(div_to_render.find('.single_element_expression[data-index=\"'+i+'\"]'));\n\t\t\t\t\t\t\t\twindow.inserir_close = i + 2;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\treturn;\n\t}\n\n\t// Tratando quando não é no índice 0:\n\tif (expression_array[index_in_array].type == \"var_value\") {\n\t\tif (window.open_or_close == \"open\") {\n\t\t\twindow.open_parentheses.insertBefore(actual_target);\n\t\t\twindow.inserir_open = index_in_array;\n\t\t}\n\t\tif (window.open_or_close == \"close\") {\n\t\t\twindow.close_parentheses.insertAfter(actual_target);\n\t\t\twindow.inserir_close = index_in_array + 2;\n\t\t}\n\t\treturn;\n\t}\n\n\tif (expression_array[index_in_array].type_op) {\n\t\t// buscar para a esquerda primeiro:\n\t\tif (expression_array[index_in_array - 1] == '(') {\n\t\t\tif (window.open_or_close == \"open\") {\n\t\t\t\twindow.open_parentheses.insertBefore(actual_target);\n\t\t\t\twindow.inserir_open = index_in_array;\n\t\t\t}\n\t\t} else if (expression_array[index_in_array - 1] == ')') {\n\t\t\t// buscar a abertura\n\t\t\tvar count_opened = 0;\n\t\t\tvar count_closed = 0;\n\t\t\tfor (var j = index_in_array - 1; j >= 0; j--) {\n\t\t\t\tif ((expression_array[j] == '(')) {\n\t\t\t\t\tcount_opened ++;\n\t\t\t\t}\n\t\t\t\tif (expression_array[j] == ')') {\n\t\t\t\t\tcount_closed ++;\n\t\t\t\t}\n\n\t\t\t\tif (count_opened != count_closed) {\n\t\t\t\t} else {\n\t\t\t\t\tif (count_closed > 0) {\n\t\t\t\t\t\tif (window.open_or_close == \"open\") {\n\t\t\t\t\t\t\twindow.open_parentheses.insertBefore(div_to_render.find('.single_element_expression[data-index=\"'+j+'\"]'));\n\t\t\t\t\t\t\twindow.inserir_open = j;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if (expression_array[index_in_array - 1].type == \"var_value\") {\n\t\t\tif (window.open_or_close == \"open\") {\n\t\t\t\twindow.open_parentheses.insertBefore(div_to_render.find('.single_element_expression[data-index=\"'+(index_in_array - 1)+'\"]'));\n\t\t\t\twindow.inserir_open = index_in_array - 1;\n\t\t\t}\n\t\t}\n\n\t\t// buscar para a direita agora:\n\t\tif (expression_array[index_in_array + 1] == '(') {\n\t\t\t// buscar o fechamento:\n\n\t\t\tvar count_opened = 0;\n\t\t\tvar count_closed = 0;\n\t\t\tfor (var j = index_in_array + 1; j < expression_array.length; j ++) {\n\t\t\t\tif ((expression_array[j] == '(')) {\n\t\t\t\t\tcount_opened ++;\n\t\t\t\t}\n\t\t\t\tif (expression_array[j] == ')') {\n\t\t\t\t\tcount_closed ++;\n\t\t\t\t}\n\n\t\t\t\tif (count_opened != count_closed) {\n\t\t\t\t} else {\n\t\t\t\t\tif (count_opened > 0) {\n\t\t\t\t\t\tif (window.open_or_close == \"close\") {\n\t\t\t\t\t\t\twindow.close_parentheses.insertAfter(div_to_render.find('.single_element_expression[data-index=\"'+j+'\"]'));\n\t\t\t\t\t\t\twindow.inserir_close = j + 2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t} else if (expression_array[index_in_array + 1].type == \"var_value\") {\n\t\t\tif (window.open_or_close == \"close\") {\n\t\t\t\twindow.close_parentheses.insertAfter(div_to_render.find('.single_element_expression[data-index=\"'+(index_in_array + 1)+'\"]'));\n\t\t\t\twindow.inserir_close = index_in_array + 3;\n\t\t\t}\n\t\t}\n\t}\n\n}\n\nfunction renderParenthesis (div_to_render, expression_content, command, function_obj, position, expression_array) {\n\tvar ghost_parenthesis = $('<div class=\"single_element_expression parentheses_in_expression\" data-index=\"'+position+'\">'+expression_content+'</div>');\n\tdiv_to_render.append(ghost_parenthesis);\n}\n\nfunction renderStartAddOperator (div_to_render, types_included, expression_array, command, function_obj, position) {\n\tvar menu_final = '<div class=\"ui dropdown disabled usepointer\"><div class=\"text\"> + </div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\tif (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {\n\t\tif (types_included.length > 1) {\n\t\t\tmenu_final += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_arithmetic_expression') + '<div class=\"menu\">';\n\t\t\tmenu_final += getArithmeticOperators();\n\t\t\tmenu_final += '</div></div>';\n\t\t} else {\n\t\t\tmenu_final += getArithmeticOperators();\n\t\t}\n\t}\n\tif (types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0) {\n\t\tif (types_included.length > 1) {\n\t\t\tmenu_final += '<div class=\"item\"><i class=\"dropdown icon\"></i>'+ LocalizedStrings.getUI('text_logic_expression') +'<div class=\"menu\">';\n\t\t\tmenu_final += getLogicOperators();\n\t\t\tmenu_final += '</div></div>';\n\t\t} else {\n\t\t\tmenu_final += getLogicOperators();\n\t\t}\n\t}\n\tif (types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0) {\n\t\tif (types_included.length > 1) {\n\t\t\tmenu_final += '<div class=\"item\"><i class=\"dropdown icon\"></i>'+ LocalizedStrings.getUI('text_relational_expression') +'<div class=\"menu\">';\n\t\t\tmenu_final += getRelationalOperators();\n\t\t\tmenu_final += '</div></div>';\n\t\t} else {\n\t\t\tmenu_final += getRelationalOperators();\n\t\t}\n\t}\n\tmenu_final += '</div></div>';\n\n\tmenu_final = $(menu_final);\n\tvar div_temp = $('<div class=\"single_element_expression ghost_element mouse_distance\"></div>');\n\tdiv_temp.append(menu_final);\n\tvar div_higher = $('<div class=\"higher_element\"></div>');\n\tdiv_higher.append(div_temp);\n\tdiv_to_render.append(div_higher);\n\tmenu_final.dropdown('set selected', Models.ARITHMETIC_TYPES.minus);\n\n\tdiv_temp.on('click', function() {\n\t\tif (!window.open_or_close) {\n\t\t\tvar sera = position;\n\n\t\t\tif (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {\n\t\t\t\tconsole.log('p1');\n\t\t\t\texpression_array.splice(sera, 0, new Models.ExpressionOperator(Models.EXPRESSION_TYPES.exp_arithmetic,Models.ARITHMETIC_TYPES.minus));\n\t\t\t} else if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0) {\n\t\t\t\tconsole.log('p2');\n\t\t\t\texpression_array.splice(sera, 0, new Models.ExpressionOperator(Models.EXPRESSION_TYPES.exp_logic,Models.LOGIC_COMPARISON.equals_to));\n\t\t\t} else if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0) {\n\t\t\t\tconsole.log('p3');\n\t\t\t\texpression_array.splice(sera, 0, new Models.ExpressionOperator(Models.EXPRESSION_TYPES.exp_conditional,Models.ARITHMETIC_COMPARISON.greater_than));\n\t\t\t}\n\n\t\t\trenderExpression(command, function_obj, div_to_render, expression_array);\n\t\t}\n\t});\n}\n\nfunction renderFinalAddElements (div_to_render, types_included, expression_array, command, function_obj, position, is_last = false) {\n\n\tvar menu_final = '<div class=\"ui dropdown disabled usepointer\"><div class=\"text\"> + </div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\tif (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {\n\t\tif (types_included.length > 1) {\n\t\t\tmenu_final += '<div class=\"item\"><i class=\"dropdown icon\"></i>'+ LocalizedStrings.getUI('text_arithmetic_expression') +'<div class=\"menu\">';\n\t\t\tmenu_final += getArithmeticOperators();\n\t\t\tmenu_final += '</div></div>';\n\t\t} else {\n\t\t\tmenu_final += getArithmeticOperators();\n\t\t}\n\t}\n\tif (types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0) {\n\t\tif (types_included.length > 1) {\n\t\t\tmenu_final += '<div class=\"item\"><i class=\"dropdown icon\"></i>'+ LocalizedStrings.getUI('text_logic_expression') +'<div class=\"menu\">';\n\t\t\tmenu_final += getLogicOperators();\n\t\t\tmenu_final += '</div></div>';\n\t\t} else {\n\t\t\tmenu_final += getLogicOperators();\n\t\t}\n\t}\n\tif (types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0) {\n\t\tif (types_included.length > 1) {\n\t\t\tmenu_final += '<div class=\"item\"><i class=\"dropdown icon\"></i>'+ LocalizedStrings.getUI('text_relational_expression') +'<div class=\"menu\">';\n\t\t\tmenu_final += getRelationalOperators();\n\t\t\tmenu_final += '</div></div>';\n\t\t} else {\n\t\t\tmenu_final += getRelationalOperators();\n\t\t}\n\t}\n\tmenu_final += '</div></div>';\n\n\tmenu_final = $(menu_final);\n\tvar div_temp = $('<div class=\"simple_add mouse_distance\"></div>');\n\tvar div_higher = $('<div class=\"higher_element\"></div>');\n\n\tvar button = $('<button class=\"ui button green add_expression\"><i class=\"plus circle inverted icon\"></i></button>');\n\tdiv_temp.append(button);\n\n\tif (!is_last) {\n\t\tdiv_higher.append(div_temp);\n\t\tdiv_to_render.append(div_higher);\n\t\t//div_temp.append(menu_final);\n\t\tdiv_temp.css('opacity', '0', '!important');\n\t} else {\n\t\tdiv_temp.removeClass('mouse_distance');\n\t\tdiv_temp.css('opacity', '1', '!important');\n\t\t//div_temp.append(menu_final);\n\t\tdiv_to_render.append(div_temp);\n\t}\n\t\n\n\tmenu_final.dropdown('set selected', Models.ARITHMETIC_TYPES.plus);\n\n\tdiv_temp.on('click', function() {\n\t\tvar sera = position;\n\n\t\tif (expression_array[sera] == ')' && expression_array[sera - 1] == '(') {\n\t\t\texpression_array.splice(sera, 0, new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n\t\t\trenderExpression(command, function_obj, div_to_render, expression_array);\n\t\t\treturn;\n\t\t}\n\n\t\tif (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {\n\t\t\texpression_array.splice(sera, 0, new Models.ExpressionOperator(Models.EXPRESSION_TYPES.exp_arithmetic,Models.ARITHMETIC_TYPES.plus));\n\t\t\texpression_array.splice(sera + 1, 0, new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n\t\t} else if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0) {\n\t\t\texpression_array.splice(sera, 0, new Models.ExpressionOperator(Models.EXPRESSION_TYPES.exp_logic,Models.LOGIC_COMPARISON.equals_to));\n\t\t\texpression_array.splice(sera + 1, 0, new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n\t\t} else if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0) {\n\t\t\texpression_array.splice(sera, 0, new Models.ExpressionOperator(Models.EXPRESSION_TYPES.exp_conditional,Models.ARITHMETIC_COMPARISON.greater_than));\n\t\t\texpression_array.splice(sera + 1, 0, new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n\t\t}\n\n\t\trenderExpression(command, function_obj, div_to_render, expression_array);\n\t});\n}\n\nfunction renderOperatorMenu (command, function_obj, div_to_render, expression_element, types_included, position, expression_array) {\n\n\tvar menu_final = '<div class=\"ui dropdown\"><div class=\"text\"> + </div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\tif (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {\n\t\tif (types_included.length > 1) {\n\t\t\tmenu_final += '<div class=\"item\"><i class=\"dropdown icon\"></i>'+ LocalizedStrings.getUI('text_arithmetic_expression') +'<div class=\"menu\">';\n\t\t\tmenu_final += getArithmeticOperators();\n\t\t\tmenu_final += '</div></div>';\n\t\t} else {\n\t\t\tmenu_final += getArithmeticOperators();\n\t\t}\n\t}\n\tif (types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0) {\n\t\tif (types_included.length > 1) {\n\t\t\tmenu_final += '<div class=\"item\"><i class=\"dropdown icon\"></i>'+ LocalizedStrings.getUI('text_logic_expression') +'<div class=\"menu\">';\n\t\t\tmenu_final += getLogicOperators();\n\t\t\tmenu_final += '</div></div>';\n\t\t} else {\n\t\t\tmenu_final += getLogicOperators();\n\t\t}\n\t}\n\tif (types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0) {\n\t\tif (types_included.length > 1) {\n\t\t\tmenu_final += '<div class=\"item\"><i class=\"dropdown icon\"></i>'+ LocalizedStrings.getUI('text_relational_expression') +'<div class=\"menu\">';\n\t\t\tmenu_final += getRelationalOperators();\n\t\t\tmenu_final += '</div></div>';\n\t\t} else {\n\t\t\tmenu_final += getRelationalOperators();\n\t\t}\n\t}\n\tmenu_final += '</div></div>';\n\n\tmenu_final = $(menu_final);\n\tvar div_temp = $('<div class=\"single_element_expression not_allowed\" data-index=\"'+position+'\"></div>');\n\tdiv_temp.append(menu_final);\n\tdiv_to_render.append(div_temp);\n\tmenu_final.dropdown({\n\t\tonChange: function(value, text, $selectedItem) {\n \t\texpression_element.item = $selectedItem.data('value');\n \t\texpression_element.type_op = $selectedItem.data('type');\n \t}\n\t});\n\n\tmenu_final.dropdown('set selected', expression_element.item);\n}\n\nfunction getArithmeticOperators () {\n\tvar arithmetic_operators;\n\tarithmetic_operators = '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_arithmetic+'\" data-value=\"'+Models.ARITHMETIC_TYPES.plus+'\">+</div>';\n\tarithmetic_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_arithmetic+'\" data-value=\"'+Models.ARITHMETIC_TYPES.minus+'\">-</div>';\n\tarithmetic_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_arithmetic+'\" data-value=\"'+Models.ARITHMETIC_TYPES.multiplication+'\">*</div>';\n\tarithmetic_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_arithmetic+'\" data-value=\"'+Models.ARITHMETIC_TYPES.division+'\">/</div>';\n\tarithmetic_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_arithmetic+'\" data-value=\"'+Models.ARITHMETIC_TYPES.module+'\">%</div>';\n\treturn arithmetic_operators;\n}\n\nfunction getLogicOperators () {\n\tvar logic_operators;\n\tlogic_operators = '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_logic+'\" data-value=\"'+Models.LOGIC_COMPARISON.equals_to+'\">==</div>';\n\tlogic_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_logic+'\" data-value=\"'+Models.LOGIC_COMPARISON.not_equals_to+'\">!=</div>';\n\tlogic_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_logic+'\" data-value=\"'+Models.LOGIC_COMPARISON.and+'\">'+LocalizedStrings.getUI('logic_operator_and')+'</div>';\n\tlogic_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_logic+'\" data-value=\"'+Models.LOGIC_COMPARISON.or+'\">'+LocalizedStrings.getUI('logic_operator_or')+'</div>';\n\tlogic_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_logic+'\" data-value=\"'+Models.LOGIC_COMPARISON.not+'\">'+LocalizedStrings.getUI('logic_operator_not')+'</div>';\n\treturn logic_operators;\n}\n\nfunction getRelationalOperators () {\n\tvar relational_operators;\n\trelational_operators = '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_conditional+'\" data-value=\"'+Models.ARITHMETIC_COMPARISON.greater_than+'\">></div>';\n\trelational_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_conditional+'\" data-value=\"'+Models.ARITHMETIC_COMPARISON.less_than+'\"><</div>';\n\trelational_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_conditional+'\" data-value=\"'+Models.ARITHMETIC_COMPARISON.equals_to+'\">==</div>';\n\trelational_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_conditional+'\" data-value=\"'+Models.ARITHMETIC_COMPARISON.not_equals_to+'\">!=</div>';\n\trelational_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_conditional+'\" data-value=\"'+Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to+'\">>=</div>';\n\trelational_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_conditional+'\" data-value=\"'+Models.ARITHMETIC_COMPARISON.less_than_or_equals_to+'\"><=</div>';\n\treturn relational_operators;\n}","import { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as CommandsManagement from '../commands';\nimport * as ConditionalExpressionManagement from './conditional_expression';\nimport * as GenericExpressionManagement from './generic_expression';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui iftrue created_element\"> <i class=\"ui icon small random\"></i> <span> if (x < 1) { } </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar ret = '';\n\tret += '<div class=\"ui iftrue command_container\"><div class=\"ui data_block_if\" data-if=\"true\"> <i class=\"ui icon small random command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i>';\n\tret += '<span class=\"span_command_spec\"> ' + LocalizedStrings.getUI('text_if') + '</span>';\n\tret += ' <span class=\"span_command_spec\"> ( </span> <div class=\"conditional_expression\"></div> <span class=\"span_command_spec\"> ) </span>';\n\tret += '<span> </span> ';\n\tret += '<div class=\"ui block_commands commands_if conditional_comands_block\" data-if=\"true\">';\n \tret += '</div></div>';\n\tret += '<div class=\"ui data_block_else\" data-else=\"true\"> <span class=\"span_command_spec\"> ' + LocalizedStrings.getUI('text_else') + ' </span>';\n\tret += '<div class=\"ui block_commands commands_else conditional_comands_block\" data-else=\"true\">';\n\tret += '</div>';\n\tret += '<span></span></div>';\n\tret += '</div>';\n\n\tvar el = $(ret);\n\tel.data('command', command);\n\tel.find('.block_commands').data('command', command);\n\tel.find('.data_block_if').data('command', command);\n\tel.find('.data_block_else').data('command', command);\n\tel.find('.commands_if').data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\t//ConditionalExpressionManagement.renderExpression(command, command.expression, function_obj, el.find('.conditional_expression'));\n\n\tGenericExpressionManagement.renderExpression(command, function_obj, el.find('.conditional_expression'), command.expression);\n\n\tif (command.commands_block) {\n\t\tfor (var j = 0; j < command.commands_block.length; j++) {\n\t\t CommandsManagement.renderCommand(command.commands_block[j], $(el.find('.commands_if')[0]), 3, function_obj);\n\t\t}\n\t}\n\tif (command.commands_else) {\n\t\tfor (var j = 0; j < command.commands_else.length; j++) {\n\t\t CommandsManagement.renderCommand(command.commands_else[j], $(el.find('.commands_else')[0]), 3, function_obj);\n\t\t}\n\t}\n\n\treturn el;\n}\n\n\nfunction addHandlers (command, function_obj, iftrue_dom) {\n\n\tiftrue_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, iftrue_dom)) {\n\t\t\tiftrue_dom.fadeOut(400, function() {\n\t\t\t\tiftrue_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}","import { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui reader created_element\"> <i class=\"ui icon small download\"></i> <span> '+LocalizedStrings.getUI('text_command_read')+' var </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar el = '<div class=\"ui reader command_container\"> <i class=\"ui icon small download command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <span class=\"span_command_spec\">'+LocalizedStrings.getUI('text_command_read')+' ( </span> <div class=\"var_value_menu_div\"></div> <span class=\"close_parentheses span_command_spec\">)</span> </div>';\n\t\n\tel = $(el);\n\tel.data('command', command);\n\n\tVariableValueMenu.renderMenu(command, command.variable_value_menu, el.find('.var_value_menu_div'), function_obj);\n\n\taddHandlers(command, function_obj, el);\n\n\treturn el;\n}\n\nfunction addHandlers (command, function_obj, reader_dom) {\n\treader_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, reader_dom)) {\n\t\t\treader_dom.fadeOut(400, function() {\n\t\t\t\treader_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}","import * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as CommandsManagement from '../commands';\nimport * as ConditionalExpressionManagement from './conditional_expression';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as ContextualizedMenu from './contextualized_menu';\nimport * as GenericExpressionManagement from './generic_expression';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui repeatNtimes created_element\"> <i class=\"ui icon small sync\"></i> <span> repita_para i de 0 ate 10 passo 1 <br> </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tlet ret = `<div class=\"ui repeatNtimes command_container\"> \n\t\t<i class=\"ui icon small sync command_drag\"></i>\n\t\t<i class=\"ui icon times red button_remove_command\"></i>\n\t\t<div class=\"ui context_menu\"></div> <span class=\"span_command_spec\"> ${LocalizedStrings.getUI('text_for')}\n\t\t</span> <div class=\"ui attribution_expression\">\n\t\t<div class=\"ui variable_attribution\"></div>\n\t\t<span class=\"text_receives span_command_spec\" style=\"margin-left: 10px;margin-right: 20px;\"></span>\n\t\t<div class=\"ui var_value_expression div_expression_st\"></div>\n\t\t</div>\n\t\t<span class=\"span_command_spec separator_character\" style=\"margin-left: 25px; margin-right: 15px;\">\n\t\t${LocalizedStrings.getUI(\"text_for_to\")} </span>\n\t\t<div class=\"conditional_expression\"></div> <div class=\"pass_button\"></div> \n\t\t<div class=\"ui incrementation_field\"><span class=\"text_inc_receives span_command_spec\"></span>\n\t\t<div class=\"ui first_operand\"></div><div class=\"ui operator\"></div>\n\t\t<div class=\"ui second_operand\"></div></div> <span class=\"span_command_spec\"> </span>'`;\n\tret += '<div class=\"ui block_commands\">';\n\tret += '</div>';\n\tret += '<span> </span>';\n\tret += '</div>';\n\t\n\tvar el = $(ret);\n\tel.data('command', command);\n\tel.find('.block_commands').data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\tContextualizedMenu.renderMenu(command, el.find('.context_menu'), function_obj, el);\n\n\tVariableValueMenu.renderMenu(command, command.var_attribution, el.find('.variable_attribution'), function_obj);\n\n\t//ConditionalExpressionManagement.renderExpression(command, command.expression2, function_obj, el.find('.conditional_expression'));\n\n\tVariableValueMenu.renderMenu(command, command.expression2, el.find('.conditional_expression'), function_obj);\t\n\t//GenericExpressionManagement.renderExpression(command, function_obj, el.find('.conditional_expression'), command.expression2);\n\n\t//VariableValueMenu.renderMenu(command, command.var_incrementation, el.find('.incrementation_variable'), function_obj);\t\n\t//angle double right\n\tif (!command.expression1) {\n\t\tcommand.expression1 = new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, \"0\", null, null, true);\n\t}\n\n\tel.find('.text_receives').text(LocalizedStrings.getUI(\"text_for_from\"));\n\tVariableValueMenu.renderMenu(command, command.expression1, el.find('.var_value_expression'), function_obj);\n\n\tif (!command.expression3) {\n\t\tel.find('.pass_button').html('<button class=\"ui\">' + LocalizedStrings.getUI(\"text_for_pass\") + '<i class=\"ui icon angle double right\"></i></button>');\n\t\tel.find('.pass_button').find('button').on('click', function() {\n\t\t\ttogglePasso(command);\n\t\t});\n\t\t/*var exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.exp_op_exp, \n\t\t\t[command.var_attribution,\n \t\tModels.ARITHMETIC_TYPES.plus, \n\t\t\tnew Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, \"1\", null, null, true)]);\n\n\t\tcommand.expression3 = exp;\n\t\tcommand.var_incrementation = command.var_attribution;*/\n\t} else {\n\t\tel.find('.pass_button').html('<button class=\"ui\">' + LocalizedStrings.getUI(\"text_for_pass\") + '<i class=\"ui icon angle double left\"></i></button>');\n\t\tel.find('.pass_button').find('button').on('click', function() {\n\t\t\ttogglePasso(command);\n\t\t});\n\n\t\trenderOperator(command, function_obj, el.find('.operator'), command.expression3, 1);\n\t\tVariableValueMenu.renderMenu(command, command.expression3.itens[2], el.find('.second_operand'), function_obj);\n\t}\n\n\tif (command.commands_block) {\n\t\tfor (var j = 0; j < command.commands_block.length; j++) {\n\t\t CommandsManagement.renderCommand(command.commands_block[j], $(el.find('.block_commands')[0]), 3, function_obj);\n\t\t}\n\t}\n\n\treturn el;\n}\n\nfunction togglePasso (command) {\n\tif (!command.expression3) {\n\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.exp_op_exp, \n\t\t\t[command.var_attribution,\n \t\tModels.ARITHMETIC_TYPES.plus, \n\t\t\tnew Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, \"1\", null, null, true)]);\n\n\t\tcommand.expression3 = exp;\n\t\tcommand.var_incrementation = command.var_attribution;\n\t} else {\n\t\tcommand.expression3 = null;\n\t}\n\trenderAlgorithm();\n}\n\nexport function manageExpressionElements (command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element) {\n\n\tif (dom_object.hasClass('variable_attribution')) {\n\t\tif (!command.expression3) {\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.exp_op_exp, \n\t\t\t\t[command.var_attribution,\n\t \t\tModels.ARITHMETIC_TYPES.plus, \n\t\t\t\tnew Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, \"1\", null, null, true)]);\n\n\t\t\tcommand.expression3 = exp;\n\t\t\tcommand.var_incrementation = command.var_attribution;\n\n\t\t\tvar cond_exp = \n\t\t\t\t\t\tnew Models.ArithmeticExpression(\n\t\t\t\t\t\t\tcommand.var_attribution, \n\t\t\t\t\t\t\tnew Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true), \n\t\t\t\t\t\t\tModels.ARITHMETIC_COMPARISON.less_than);\n\n\t\t\tcommand.expression2.expression = cond_exp;\n\t\t}\n\n\t\tdom_object.parent().find('.text_receives').text('de');\n\n\t\tcommand.expression1 = new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, \"0\", null, null, true);\n\n\t\tdom_object.parent().find('.var_value_expression').empty();\n\t\t\n\t\tVariableValueMenu.renderMenu(command, command.expression1, dom_object.parent().find('.var_value_expression'), function_obj);\n\n\t\trenderAlgorithm();\n\t}\n\n\tif (dom_object.hasClass('incrementation_variable')) {\n\t\tdom_object.parent().find('.text_inc_receives').text('de');\n\t\t\n\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.exp_op_exp, \n\t\t\t\t[new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true),\n\t \t\tModels.ARITHMETIC_TYPES.plus, \n\t\t\t\tnew Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\tcommand.expression3 = exp;\n\n\t\tVariableValueMenu.renderMenu(command, command.expression3.itens[0], dom_object.parent().find('.first_operand'), function_obj);\n\n\t\trenderOperator(command, function_obj, dom_object.parent().find('.operator'), command.expression3, 1);\n\n\t\tVariableValueMenu.renderMenu(command, command.expression3.itens[2], dom_object.parent().find('.second_operand'), function_obj);\t\t\n\n\t}\n\n}\n\nexport function manageClearExpressionElements (command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element) {\n\tif (dom_object.hasClass('variable_attribution')) {\n\t\t$(dom_object).parent().find('.text_receives').text('');\n\t\tcommand.expression1 = null;\n\t\t$(dom_object).parent().find('.var_value_expression').empty();\n\t}\n\n\tif (dom_object.hasClass('incrementation_variable')) {\n\t\t$(dom_object).parent().find('.text_inc_receives').text('');\n\t\tcommand.expression3 = null;\n\t\t$(dom_object).parent().find('.first_operand').empty();\n\t\t$(dom_object).parent().find('.operator').empty();\n\t\t$(dom_object).parent().find('.second_operand').empty();\n\t}\n}\n\nfunction addHandlers (command, function_obj, repeatNtimes_dom) {\n\n\trepeatNtimes_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, repeatNtimes_dom)) {\n\t\t\trepeatNtimes_dom.fadeOut(400, function() {\n\t\t\t\trepeatNtimes_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction renderOperator (command, function_obj, temp_op, expression_element, index_op) {\n\n\tvar menu_operator = $('<div class=\"ui dropdown\"><div class=\"text\"></div></div>');\n\tmenu_operator.dropdown({\n\t values: [\n\t {\n\t name : '+',\n\t value : Models.ARITHMETIC_TYPES.plus,\n\t selected : (expression_element.itens[index_op] == Models.ARITHMETIC_TYPES.plus)\n\t },\n\t {\n\t name : '-',\n\t value : Models.ARITHMETIC_TYPES.minus,\n\t selected : (expression_element.itens[index_op] == Models.ARITHMETIC_TYPES.minus)\n\t }\n\t ],\n\t onChange: function(value, text, $selectedItem) {\n\t \texpression_element.itens[index_op] = value;\n\t }\n\t });\n\ttemp_op.append(menu_operator);\n}","import { Types } from '../types';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\nimport * as GenericExpressionManagement from './generic_expression';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui return created_element\"> <i class=\"ui icon small reply\"></i> <span> '+LocalizedStrings.getUI('text_return')+' </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar el = $('<div class=\"ui return command_container\"> <i class=\"ui icon small reply command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <span class=\"span_command_spec\"> '+LocalizedStrings.getUI('text_return')+' </span> <div class=\"expression_elements\"></div></div>');\n\tel.data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\tif (function_obj.return_type != Types.VOID) {\n\t\t//VariableValueMenu.renderMenu(command, command.variable_value_menu, el.find('.var_value_menu_div'), function_obj);\n\t\tGenericExpressionManagement.renderExpression(command, function_obj, el.find('.expression_elements'), command.variable_value_menu);\n\t} else {\n\t\tel.find('.expression_elements').remove();\n\t\tcommand.variable_value_menu = null;\n\t}\n\t\n\treturn el;\n}\n\nfunction addHandlers (command, function_obj, return_dom) {\n\n\treturn_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, return_dom)) {\n\t\t\treturn_dom.fadeOut(400, function() {\n\t\t\t\treturn_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}\n","import { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as CommandsManagement from '../commands';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as ContextualizedMenu from './contextualized_menu';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui switch created_element\"> <i class=\"ui icon small random\"></i> <span> '+LocalizedStrings.getUI('text_code_switch')+' ( x ) { <br> '+LocalizedStrings.getUI('text_code_case')+' 1: <br> '+LocalizedStrings.getUI('text_code_case')+' 2: <br> } </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar ret = '';\n\tret += '<div class=\"ui switch command_container\"> <i class=\"ui icon small random command_drag\" ></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"ui context_menu\"></div> <span> '+LocalizedStrings.getUI('text_code_switch')+' ( <div class=\"ui variable_to_switch\"></div> ) <div class=\"ui all_cases_div\"></div></span>';\n\tret += '</div>';\n\n\tvar el = $(ret);\n\tel.data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\tContextualizedMenu.renderMenu(command, el.find('.context_menu'), function_obj, el);\n\n\tVariableValueMenu.renderMenu(command, command.variable, el.find('.variable_to_switch'), function_obj);\n\n\tif (command.cases) {\n\t\tfor (var i = 0; i < command.cases.length; i++) {\n\t\t\trenderCase(command.cases[i], command, function_obj, el.find('.all_cases_div'));\n\t\t}\n\t}\n\n\treturn el;\n}\n\nexport function renderCase (switchcase, command, function_obj, el) {\n\n\tvar casediv = $('<div class=\"ui case_div\"><i class=\"ui icon times red button_remove_command\"></i><span>'+LocalizedStrings.getUI('text_code_case')+'</span> <div class=\"ui variable_case\"></div>: <div class=\"case_commands_block\"></div></div>');\n\n\tVariableValueMenu.renderMenu(command, switchcase.variable_value_menu, casediv.find('.variable_case'), function_obj);\n\n\tcasediv.data('switchcase', switchcase);\n\tcasediv.find('.case_commands_block').data('switchcase', switchcase);\n\n\tel.append(casediv);\n\n\tif (switchcase.commands_block) {\n\t\tfor (var j = 0; j < switchcase.commands_block.length; j++) {\n\t\t CommandsManagement.renderCommand(switchcase.commands_block[j], $(casediv.find('.case_commands_block')[0]), 3, function_obj);\n\t\t}\n\t}\n\n\tcasediv.find('.button_remove_command').on('click', function() {\n\t\tfor (var i = 0; i < command.cases.length; i++) {\n\t\t\tif (switchcase == command.cases[i]) {\n\t\t\t\tdelete command.cases[i];\n\t\t\t\tcommand.cases.splice(i, 1);\n\t\t\t\tcasediv.remove();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t});\n\n}\n\nfunction addHandlers (command, function_obj, switch_dom) {\n\n\tswitch_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, switch_dom)) {\n\t\t\tswitch_dom.fadeOut(400, function() {\n\t\t\t\tswitch_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}","import * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as AttribuitionsManagement from './attribution';\nimport * as RepeatNTimesManagement from './repeatNtimes';\n\nexport const VAR_OR_VALUE_TYPES = Object.freeze({only_variable: 1, only_value: 2, only_function: 3, variable_and_function: 4, variable_and_value_opt: 5,\n\tvalue_and_function: 6, all: 7});\n\nexport function renderMenu (command, ref_object, dom_object, function_obj, size_field = 2, expression_element) {\n\t// Verificar se o objeto atual trata-se de uma chamada de função e conferir se possui a quantidade correta de parâmetros\n\t// Caso não possua, tem que adicionar as variáveis que servirão de parâmetros:\n\tif (ref_object.function_called) {\n\t\tif (ref_object.function_called.parameters_list) {\n\n\t\t\twhile (ref_object.function_called.parameters_list.length != ref_object.parameters_list.length) {\n\t\t\t\tif (ref_object.parameters_list.length > ref_object.function_called.parameters_list.length) {\n\t\t\t\t\tref_object.parameters_list.pop();\n\t\t\t\t} else {\n\t\t\t\t\tref_object.parameters_list.push(new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tvar menu_var_or_value = '<div class=\"ui dropdown menu_var_or_value_dom\" data-varmenu=\"true\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\n\tif (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.only_variable) {\n\n\t\tmenu_var_or_value = '<div class=\"ui dropdown menu_var_or_value_dom\" data-varmenu=\"true\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu menu_only_vars\">';\n\t\tmenu_var_or_value += '</div>';\n\t}\n\n\tif ((ref_object.variable_and_value == VAR_OR_VALUE_TYPES.variable_and_function) || (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.variable_and_value_opt) || (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.all)) {\n\t\t\n\t\tmenu_var_or_value += '<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_variable+'\"><i class=\"dropdown icon\"></i>'+LocalizedStrings.getUI('variable');\n\t\tmenu_var_or_value += '<div class=\"menu menu_only_vars\">';\n\t\tmenu_var_or_value += '</div></div>';\n\t}\n\n\tif (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.only_value) {\n\t\tmenu_var_or_value = '<input type=\"text\" class=\"width-dynamic\" size=\"'+size_field+'\" autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />';\n\t}\n\n\tif ((ref_object.variable_and_value == VAR_OR_VALUE_TYPES.variable_and_value_opt) \n\t\t|| (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.value_and_function) || (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.all)) {\n\n\t\tmenu_var_or_value += '<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_value+'\">'+LocalizedStrings.getUI('text_value')+'</div>';\n\n\t}\n\n\tif (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.only_function) {\n\n\t\tmenu_var_or_value = '<div class=\"ui dropdown menu_var_or_value_dom\" data-varmenu=\"true\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu menu_only_functions\">';\n\t\tmenu_var_or_value += '</div>';\n\t} \n\n\tif ((ref_object.variable_and_value == VAR_OR_VALUE_TYPES.variable_and_function) \n\t\t|| (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.value_and_function) || (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.all)) {\n\t\t\n\t\tmenu_var_or_value += '<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_function+'\"><i class=\"dropdown icon\"></i>'+LocalizedStrings.getUI('btn_function');\n\t\tmenu_var_or_value += '<div class=\"menu menu_only_functions\">';\n\t\tmenu_var_or_value += '</div></div>';\n\n/*\t\tif (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\tmenu_var_or_value += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\tmenu_var_or_value += '<div class=\"menu\">';\n\t\t\tmenu_var_or_value += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\tmenu_var_or_value += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\tmenu_var_or_value += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\tmenu_var_or_value += '</div></div>';\n\t\t}*/\n\t}\n\n menu_var_or_value += '</div></div>';\n\n menu_var_or_value = $(menu_var_or_value);\n\n dom_object.append(menu_var_or_value);\n \n ref_object.dom_object = menu_var_or_value;\n\n addHandlers(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element);\n\n addVariablesToMenu(function_obj, menu_var_or_value, ref_object, expression_element);\n\n addFunctionsToMenu(function_obj, menu_var_or_value, ref_object, expression_element);\n\n\taddIVProgFunctionsToMenu(function_obj, menu_var_or_value, ref_object, expression_element);\n\n if (ref_object.content || ref_object.function_called) {\n \tif (ref_object.content) {\n \t\t// Verificar se a variável ainda existe:\n \t\tvar variable_fun = isVarInProgram(ref_object.content, function_obj);\n \t\tif (variable_fun) {\n \t\t\tref_object.content = variable_fun;\n \t\t\trenderPreviousContent(function_obj, menu_var_or_value, ref_object, dom_object, command, expression_element);\n\t \t} else {\n\t \t\tif (ref_object.content && ref_object.content.type) {\n\t \t\t\tref_object.content = null;\n\t \t\t\tappendSelectText(ref_object, menu_var_or_value);\n\t \t\t} else {\n\t \t\t\trenderPreviousContent(function_obj, menu_var_or_value, ref_object, dom_object, command, expression_element);\n\t \t\t}\n\t \t}\n \t} else if (ref_object.function_called) {\n \t\t// Verificar se a função ainda existe:\n \t\tvar ret_function = isFunctionInProgram(ref_object.function_called);\n \t\tif (ret_function) {\n \t\t\tref_object.function_called = ret_function;\n \t\t\trenderPreviousContent(function_obj, menu_var_or_value, ref_object, dom_object, command, expression_element);\n \t\t} else {\n \t\t\tref_object.content = null;\n\t\t \tref_object.row = null;\n\t\t \tref_object.column = null;\n\t\t \tdelete ref_object.function_called;\n\t\t \tdelete ref_object.parameters_list;\n \t\t\tappendSelectText(ref_object, menu_var_or_value);\n \t\t}\n \t}\n\n } else {\n \tappendSelectText(ref_object, menu_var_or_value);\n }\n\n}\n\nfunction appendSelectText (ref_object, menu_var_or_value) {\n\tswitch(ref_object.variable_and_value) {\n\t\tcase VAR_OR_VALUE_TYPES.only_variable:\n\t\t\tmenu_var_or_value.find('.text').append('<i>'+LocalizedStrings.getUI('var_menu_select_var')+'</i>');\n\t\t\tbreak;\n\t\tcase VAR_OR_VALUE_TYPES.all:\n\t\t\tmenu_var_or_value.find('.text').append('<i>'+LocalizedStrings.getUI('var_menu_select_all')+'</i>');\n\t\t\tbreak;\n\t\tcase VAR_OR_VALUE_TYPES.variable_and_function:\n\t\t\tmenu_var_or_value.find('.text').append('<i>'+LocalizedStrings.getUI('var_menu_select_all')+'</i>');\n\t\t\tbreak;\n\t\tcase VAR_OR_VALUE_TYPES.only_function:\n\t\t\tmenu_var_or_value.find('.text').append('<i>'+LocalizedStrings.getUI('var_menu_select_function')+'</i>');\n\t\t\tbreak;\n\t}\n}\n\nfunction isFunctionInProgram (function_called_obj) {\n\tif (function_called_obj.name) {\n\t\tif (window.program_obj.functions) {\n\t\t\tfor (var i = 0; i < window.program_obj.functions.length; i++) {\n\t\t\t\tif (window.program_obj.functions[i] == function_called_obj) {\n\t\t\t\t\treturn window.program_obj.functions[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var i = 0; i < window.program_obj.functions.length; i++) {\n\t\t\t\tif (window.program_obj.functions[i].name == function_called_obj.name) {\n\t\t\t\t\treturn window.program_obj.functions[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else if (function_called_obj.identifier) {\n\t\tfor (var i = 0; i < window.system_functions.length; i++) {\n\t\t\tif (window.system_functions[i].identifier == function_called_obj.identifier) {\n\t\t\t\treturn window.system_functions[i];\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn null;\n}\n\nfunction isVarInProgram (var_obj, function_obj) {\n\t// Verify in locals:\n\tif (function_obj.variables_list) {\n\t\tfor (var i = 0; i < function_obj.variables_list.length; i++) {\n\t\t\tif (function_obj.variables_list[i] == var_obj) {\n\t\t\t\treturn function_obj.variables_list[i];\n\t\t\t}\n\t\t}\n\t}\n\t// Verify in parameters:\n\tif (function_obj.parameters_list) {\n\t\tfor (var i = 0; i < function_obj.parameters_list.length; i++) {\n\t\t\tif (function_obj.parameters_list[i] == var_obj) {\n\t\t\t\treturn function_obj.parameters_list[i];\n\t\t\t}\n\t\t}\n\t}\n\t// Verify in globals:\n\tif (window.program_obj.globals) {\n\t\tfor (var i = 0; i < window.program_obj.globals.length; i++) {\n\t\t\tif (window.program_obj.globals[i] == var_obj) {\n\t\t\t\treturn window.program_obj.globals[i];\n\t\t\t}\n\t\t}\n\t}\n\n\t// If not found, verify if the reference was lost\n\tif (var_obj) {\n\t\tif (function_obj.variables_list) {\n\t\t\tfor (var i = 0; i < function_obj.variables_list.length; i++) {\n\t\t\t\tif (function_obj.variables_list[i].name == var_obj.name) {\n\t\t\t\t\treturn function_obj.variables_list[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (function_obj.parameters_list) {\n\t\t\tfor (var i = 0; i < function_obj.parameters_list.length; i++) {\n\t\t\t\tif (function_obj.parameters_list[i].name == var_obj.name) {\n\t\t\t\t\treturn function_obj.parameters_list[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (window.program_obj.globals) {\n\t\t\tfor (var i = 0; i < window.program_obj.globals.length; i++) {\n\t\t\t\tif (window.program_obj.globals[i].name == var_obj.name) {\n\t\t\t\t\treturn window.program_obj.globals[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction renderPreviousContent (function_obj, menu_var_or_value, ref_object, dom_object, command, expression_element) {\n\n\t\n\tif (ref_object.function_called) {\n\n\t\tmenu_var_or_value.remove();\n\t\tvariableValueMenuCode(command, ref_object, dom_object, function_obj, menu_var_or_value, expression_element);\n\n\t} else if (ref_object.content.type) { \n\n\t\tmenu_var_or_value.remove();\n\t\tvariableValueMenuCode(command, ref_object, dom_object, function_obj, menu_var_or_value, expression_element);\n\n\t} else {\n\n\t\tmenu_var_or_value.remove();\n\t\tvariableValueMenuCode(command, ref_object, dom_object, function_obj, menu_var_or_value, expression_element);\n\n\t}\n}\n\nfunction variableValueMenuCode (command, variable_obj, dom_object, function_obj, menu_var_or_value, expression_element) {\n\t\n\tif (variable_obj.content || variable_obj.function_called) {\n \t// Verificar se a variável ainda existe:\n \tvar var_fun = isVarInProgram(variable_obj.content, function_obj);\n\n \tif (var_fun) {\n\t \tvariable_obj.content = var_fun;\n \t} else {\n \t\tif (variable_obj.content && variable_obj.content.type) {\n \t\t\tvariable_obj.content = null;\n \t\t\tappendSelectText(variable_obj, menu_var_or_value);\n \t\t}\n \t}\n } else {\n \tappendSelectText(variable_obj, menu_var_or_value);\n }\n\n\tif (variable_obj.content == null && variable_obj.function_called == null) {\n\t\trenderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);\n\t\treturn;\n\t}\n\n\tvar ret = '';\n\tif (variable_obj.function_called) {\n\n\t\tif (variable_obj.function_called.parameters_list == null || variable_obj.function_called.length == 0) {\n\n\t\t\tmenu_var_or_value.find('.text').text(' ');\n\t\t\tdom_object.find('.menu_var_or_value_dom').remove();\n\n\t\t\tvar parameters_menu;\n\t\t\t\n\t\t\tif (variable_obj.function_called.name) {\n\t\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> '+variable_obj.function_called.name+' <span> ( </span>';\n\t\t\t} else {\n\t\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> <i>'+ LocalizedStrings.translateInternalFunction(variable_obj.function_called.identifier, variable_obj.function_called.category)+'</i> <span> ( </span>';\n\t\t\t}\n\n\t\t\tparameters_menu += '<span> ) </span></div>';\n\n\t\t\tparameters_menu = $(parameters_menu);\n\n\t\t\tdom_object.append(parameters_menu);\n\n\t\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\t\t/*if (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\t\tcontext_menu += '</div></div>';\n\t\t\t}*/\n\n\t\t\tcontext_menu += '</div></div>';\n\n\t\t\tcontext_menu = $(context_menu);\n\n\t\t\tcontext_menu.insertAfter( dom_object.find('.parameters_function_called') );\n\n\t\t\tcontext_menu.dropdown({\n\t\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\t console.log('S1');\n\t\t\t if ($selectedItem.data('clear')) {\n\t\t\t \tconsole.log('PP1');\n\t\t\t \tdom_object.text('');\n\n\t\t\t \tvariable_obj.content = null;\n\t\t\t \tvariable_obj.row = null;\n\t\t\t \tvariable_obj.column = null;\n\t\t\t \tdelete variable_obj.function_called;\n\t\t\t \tdelete variable_obj.parameters_list;\n\n\t\t\t \trenderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);\n\t\t\t }\n\n\t\t\t if ($selectedItem.data('exp')) {\n\t\t\t \tAttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t\t }\n\t\t },\n\t\t selectOnKeydown: false\n\t\t\t});\n\t\t} else {\n\n\t\t\tmenu_var_or_value.find('.text').text(' ');\n\t\t\tdom_object.find('.menu_var_or_value_dom').remove();\n\n\t\t\tvar parameters_menu;\n\n\t\t\tif (variable_obj.function_called.name) {\n\t\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> '+variable_obj.function_called.name+' <span> ( </span>';\n\t\t\t} else {\n\t\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> <i>'+LocalizedStrings.translateInternalFunction(variable_obj.function_called.identifier, variable_obj.function_called.category)+'</i> <span> ( </span>';\n\t\t\t}\n\n\t\t\tfor (var j = 0; j < variable_obj.function_called.parameters_list.length; j++) {\n\t\t\t\tparameters_menu += '<div class=\"render_style_param parameter_'+j+'\"></div>';\n\t\t\t\tif ((j + 1) != variable_obj.function_called.parameters_list.length) {\n\t\t\t\t\tparameters_menu += ' , ';\n\t\t\t\t}\n\t\t\t}\n\t\t\tparameters_menu += '<span> ) </span></div>';\n\n\t\t\tparameters_menu = $(parameters_menu);\n\n\t\t\tdom_object.append(parameters_menu);\n\n\t\t\tfor (var j = 0; j < variable_obj.function_called.parameters_list.length; j++) {\n\t\t\t\trenderMenu(command, variable_obj.parameters_list[j], parameters_menu.find('.parameter_'+j), function_obj, 2, expression_element);\n\t\t\t}\n\n\n\t\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\t\t/*if (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\t\tcontext_menu += '</div></div>';\n\t\t\t}*/\n\n\t\t\tcontext_menu += '</div></div>';\n\n\t\t\tcontext_menu = $(context_menu);\n\n\t\t\tcontext_menu.insertAfter( parameters_menu );\n\n\t\t\tcontext_menu.dropdown({\n\t\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\t\tconsole.log('S2');\n\t\t\t if ($selectedItem.data('clear')) {\n\t\t\t \tconsole.log('PP2');\n\t\t\t \tdom_object.text('');\n\n\t\t\t \tvariable_obj.content = null;\n\t\t\t \tvariable_obj.row = null;\n\t\t\t \tvariable_obj.column = null;\n\t\t\t \tdelete variable_obj.function_called;\n\t\t\t \tdelete variable_obj.parameters_list;\n\n\t\t\t \trenderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);\n\t\t\t }\n\n\t\t\t if ($selectedItem.data('exp')) {\n\t\t\t \tAttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t\t }\n\t\t },\n\t\t selectOnKeydown: false\n\t\t\t});\n\t\t}\n\n\n\t} else if (variable_obj.content.type) {\n\n\t\tvar variable_render = \"\";\n\n\t\tif (variable_obj.content.dimensions == 1 && variable_obj.dimensions != 1) {\n\n\t\t\tvariable_render = '<div class=\"variable_rendered\"> <span class=\"var_name\">'+variable_obj.content.name+'</span>';\n\n\t\t\tvariable_render += ' <span>[ </span> <div class=\"column_container\"></div> <span> ]</span>';\n\t\t\t\n\t\t\tvariable_render += '</div>';\n\n\t\t\tvariable_render = $(variable_render);\n\n\t\t\tdom_object.append(variable_render);\n\n\n\t\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\t\t/*if (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\t\tcontext_menu += '</div></div>';\n\t\t\t}*/\n\n\t\t\tcontext_menu += '</div></div>';\n\n\t\t\tcontext_menu = $(context_menu);\n\n\t\t\tvariable_render.append(context_menu);\n\n\t\t\tcontext_menu.dropdown({\n\t\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\t\tconsole.log('S3');\n\t\t\t if ($selectedItem.data('clear')) {\n\t\t\t \tconsole.log('PP3');\n\t\t\t \tdom_object.text('');\n\n\t\t\t \tvariable_obj.content = null;\n\t\t\t \tvariable_obj.row = null;\n\t\t\t \tvariable_obj.column = null;\n\t\t\t \tdelete variable_obj.function_called;\n\t\t \t\tdelete variable_obj.parameters_list;\n\n\t\t\t \trenderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);\n\t\t\t }\n\n\t\t\t if ($selectedItem.data('exp')) {\n\t\t\t \tAttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t\t }\n\t\t },\n\t\t selectOnKeydown: false\n\t\t\t});\n\n\t\t\tif (!variable_obj.column) {\n\t\t\t\tvariable_obj.column = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\t\t}\n\n\t\t\tvariableValueMenuCode(command, variable_obj.column, $(variable_render.find('.column_container')), function_obj, menu_var_or_value, expression_element);\n\n\t\t} else if (variable_obj.content.dimensions == 2 && variable_obj.dimensions != 2) {\n\n\t\t\tvariable_render = '<div class=\"variable_rendered\"> <span class=\"var_name\">'+variable_obj.content.name+'</span>';\n\n\t\t\tvariable_render += ' <span>[ </span> <div class=\"row_container\"></div> <span> ]</span>';\n\t\t\tvariable_render += ' <span>[ </span> <div class=\"column_container\"></div> <span> ] </span>';\n\t\t\t\n\t\t\tvariable_render += '</div>';\n\n\t\t\tvariable_render = $(variable_render);\n\n\t\t\tdom_object.append(variable_render);\n\n\n\t\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\t\t/*if (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\t\tcontext_menu += '</div></div>';\n\t\t\t}*/\n\n\t\t\tcontext_menu += '</div></div>';\n\n\t\t\tcontext_menu = $(context_menu);\n\n\t\t\tvariable_render.append(context_menu);\n\n\t\t\tcontext_menu.dropdown({\n\t\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\t\tconsole.log('S4');\n\t\t\t if ($selectedItem.data('clear')) {\n\t\t\t \tconsole.log('PP4');\n\t\t\t \tdom_object.text('');\n\n\t\t\t \tvariable_obj.content = null;\n\t\t\t \tvariable_obj.row = null;\n\t\t\t \tvariable_obj.column = null;\n\t\t\t \tdelete variable_obj.function_called;\n\t\t \t\tdelete variable_obj.parameters_list;\n\n\t\t\t \trenderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);\n\t\t\t }\n\n\t\t\t if ($selectedItem.data('exp')) {\n\t\t\t \tAttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t\t }\n\t\t },\n\t\t selectOnKeydown: false\n\t\t\t});\n\n\t\t\tif (!variable_obj.column) {\n\t\t\t\tvariable_obj.column = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\t\t}\n\t\t\tif (!variable_obj.row) {\n\t\t\t\tvariable_obj.row = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\t\t}\n\n\t\t\tvariableValueMenuCode(command, variable_obj.row, $(variable_render.find('.row_container')), function_obj, menu_var_or_value, expression_element);\n\t\t\tvariableValueMenuCode(command, variable_obj.column, $(variable_render.find('.column_container')), function_obj, menu_var_or_value, expression_element);\n\n\t\t} else {\n\n\t\t\tvariable_render = '<div class=\"variable_rendered\"> <span class=\"var_name\">'+variable_obj.content.name+'</span>';\n\n\t\t\tvariable_render += '</div>';\n\n\t\t\tvariable_render = $(variable_render);\n\n\t\t\tdom_object.append(variable_render);\n\n\n\t\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\t\t/*if (command.type == Models.COMMAND_TYPES.attribution && !dom_object.hasClass('var_attributed')) {\n\t\t\t\tconsole.log('dom_object6');\n\t\t\t\tconsole.log(dom_object);\n\t\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\t\tcontext_menu += '</div></div>';\n\t\t\t}*/\n\n\t\t\tcontext_menu += '</div></div>';\n\n\t\t\tcontext_menu = $(context_menu);\n\n\t\t\tvariable_render.append(context_menu);\n\n\t\t\tcontext_menu.dropdown({\n\t\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\t\tconsole.log('S5');\n\t\t\t if ($selectedItem.data('clear')) {\n\t\t\t \tconsole.log('PP5');\n\t\t\t \tdom_object.text('');\n\n\t\t\t \tvariable_obj.content = null;\n\t\t\t \tvariable_obj.row = null;\n\t\t\t \tvariable_obj.column = null;\n\n\t\t\t \tdelete variable_obj.function_called;\n\t\t \t\tdelete variable_obj.parameters_list;\n\n\t\t\t \trenderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);\n\t\t\t }\n\n\t\t\t if ($selectedItem.data('exp')) {\n\t\t\t \tAttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t\t }\n\t\t },\n\t\t selectOnKeydown: false\n\t\t\t});\n\n\t\t}\n\n\t} else {\n\n\t\tvar variable_render = '<div class=\"variable_rendered\"> <span class=\"var_name\">'+variable_obj.content+'</span>';\n\t\tvariable_render += '</div>';\n\n\t\tvariable_render = $(variable_render);\n\n\t\tdom_object.append(variable_render);\n\n\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\t/*if (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\tcontext_menu += '</div></div>';\n\t\t}*/\n\n\t\tcontext_menu += '</div></div>';\n\n\t\tcontext_menu = $(context_menu);\n\n\t\tif (variable_obj.variable_and_value != VAR_OR_VALUE_TYPES.only_value) {\n\t\t\tcontext_menu.insertAfter( variable_render );\n\t\t}\n\n\t\tcontext_menu.dropdown({\n\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\tconsole.log('S6');\n\t\t if ($selectedItem.data('clear')) {\n\t\t \tconsole.log('PP6');\n\t\t \tdom_object.text('');\n\n \t\t\t\tvariable_obj.content = null;\n\t\t\t variable_obj.row = null;\n\t\t\t variable_obj.column = null;\n\n\t\t \tdelete variable_obj.function_called;\n\t\t \tdelete variable_obj.parameters_list;\n\n\t\t \tdom_object.find('.value_rendered').remove();\n\t\t\t\tdom_object.find('.context_menu_clear').remove();\n\t\t\t\tdom_object.find('.width-dynamic-minus').remove();\n\n\t\t \trenderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);\n\t\t }\n\n\t\t if ($selectedItem.data('exp')) {\n\t\t \tAttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t }\n\t },\n\t\t selectOnKeydown: false\n\t\t});\n\n\t\tvariable_render.on('click', function(e) {\n\t\t\tvariable_render.remove();\n\t\t\tvariable_render.empty();\n\t\t\tvariable_render.remove();\n\t\t\tdom_object.empty();\n\t\t\tdom_object.append('<span class=\"menu_var_or_value_dom\"> </span>');\n\t\t\t\n\t\t\topenInputToValue(command, variable_obj, dom_object, menu_var_or_value, function_obj, expression_element);\n\t\t});\n\t}\n}\n\nfunction addIVProgFunctionsToMenu (function_obj, menu_var_or_value, ref_object, expression_element) {\n\tvar sub_menu = menu_var_or_value.find('.menu_only_functions');\n\tsub_menu.append('<div class=\"divider\"></div><div class=\"header\">'+LocalizedStrings.getUI('text_header_ivprog_functions')+'</div>');\n\tsub_menu.append('<div class=\"item\"><i class=\"dropdown icon\"></i>'+LocalizedStrings.getUI('text_menu_functions_math')+'<div class=\"menu menu_math_functions\"></div></div>');\n\tsub_menu.append('<div class=\"item\"><i class=\"dropdown icon\"></i>'+LocalizedStrings.getUI('text_menu_functions_text')+'<div class=\"menu menu_text_functions\"></div></div>');\n\tsub_menu.append('<div class=\"item\"><i class=\"dropdown icon\"></i>'+LocalizedStrings.getUI('text_menu_functions_array')+'<div class=\"menu menu_arrangement_functions\"></div></div>');\n\tsub_menu.append('<div class=\"item\"><i class=\"dropdown icon\"></i>'+LocalizedStrings.getUI('text_menu_functions_conversion')+'<div class=\"menu menu_conversion_functions\"></div></div>');\n\n\t// Insert Math functions:\n\tfor (var i = 0; i < window.system_functions.length; i++) {\n\t\tvar t = $('<div class=\"item\"></div>');\n\t\tt.data('function_reference', window.system_functions[i]);\n\t\tt.data('option', VAR_OR_VALUE_TYPES.only_function);\n\t\tt.text(LocalizedStrings.translateInternalFunction(window.system_functions[i].identifier));\n\t\t\n\t\tswitch(window.system_functions[i].category) {\n\t\t\tcase Models.SYSTEM_FUNCTIONS_CATEGORIES.math:\n\t\t\t\tsub_menu.find('.menu_math_functions').append(t);\n\t\t\t\tbreak;\n\t\t\tcase Models.SYSTEM_FUNCTIONS_CATEGORIES.text:\n\t\t\t\tsub_menu.find('.menu_text_functions').append(t);\n\t\t\t\tbreak;\n\t\t\tcase Models.SYSTEM_FUNCTIONS_CATEGORIES.arrangement:\n\t\t\t\tsub_menu.find('.menu_arrangement_functions').append(t);\n\t\t\t\tbreak;\n\t\t\tcase Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion:\n\t\t\t\tsub_menu.find('.menu_conversion_functions').append(t);\n\t\t\t\tbreak;\n\t\t}\t\n\t}\n}\n\nfunction addFunctionsToMenu (function_obj, menu_var_or_value, ref_object, expression_element) {\n\tvar sub_menu = menu_var_or_value.find('.menu_only_functions');\n\tsub_menu.text('');\n\n\tfor (var i = 0; i < window.program_obj.functions.length; i++) {\n\t\tvar temp = $('<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_function+'\">' + window.program_obj.functions[i].name + ' </div>');\n\t\ttemp.data('function_reference', window.program_obj.functions[i]);\n\t\tsub_menu.append(temp);\n\t}\n}\n\nfunction addVariablesToMenu (function_obj, menu_var_or_value, ref_object, expression_element) {\n\n\tvar sub_menu = menu_var_or_value.find('.menu_only_vars');\n\tsub_menu.text('');\n\tvar is_there = false;\n\n\tif (window.program_obj.globals) {\n\n\t\tif (ref_object.include_constant) {\n\t\t\tfor (var i = 0; i < window.program_obj.globals.length; i++) {\n\t\t\t\tvar temp = $('<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_variable+'\">' + window.program_obj.globals[i].name + ' </div>');\n\t\t\t\ttemp.data('variable_reference', window.program_obj.globals[i]);\n\t\t\t\tsub_menu.append(temp);\n\t\t\t\tis_there = true;\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var i = 0; i < window.program_obj.globals.length; i++) {\n\t\t\t\tif (!window.program_obj.globals[i].is_constant) {\n\t\t\t\t\tvar temp = $('<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_variable+'\">' + window.program_obj.globals[i].name + ' </div>');\n\t\t\t\t\ttemp.data('variable_reference', window.program_obj.globals[i]);\n\t\t\t\t\tsub_menu.append(temp);\n\t\t\t\t\tis_there = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (function_obj.parameters_list) {\n\t\tfor (var i = 0; i < function_obj.parameters_list.length; i++) {\n\t\t\tvar temp = $('<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_variable+'\">' + function_obj.parameters_list[i].name + ' </div>');\n\t\t\ttemp.data('variable_reference', function_obj.parameters_list[i]);\n\t\t\tsub_menu.append(temp);\n\t\t\tis_there = true;\n\t\t}\n\t}\n\n\tif (function_obj.variables_list) {\n\t\tfor (var i = 0; i < function_obj.variables_list.length; i++) {\n\t\t\tvar temp = $('<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_variable+'\">' + function_obj.variables_list[i].name + ' </div>');\n\t\t\ttemp.data('variable_reference', function_obj.variables_list[i]);\n\t\t\tsub_menu.append(temp);\n\t\t\tis_there = true;\n\t\t}\n\t}\n\tif (!is_there) {\n\t\tsub_menu.append($('<div class=\"header\">'+LocalizedStrings.getUI('text_no_variable')+'</div>'));\n\t\tsub_menu.append($('<div class=\"item disabled\">'+LocalizedStrings.getUI('text_no_variable_instruction')+'</div>'));\n\t}\n\n}\n\nfunction addHandlers (command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element) {\n\n\tif (ref_object.variable_and_value != VAR_OR_VALUE_TYPES.only_value) {\n\t\tmenu_var_or_value.dropdown({\n\t\t onChange: function(value, text, $selectedItem) {\n\t\t \tconsole.log('S7');\n\t\t \tdom_object.find('.var_name').remove();\n\t\t switch ($selectedItem.data('option')) {\n\t\t \tcase VAR_OR_VALUE_TYPES.only_function:\n\t\t \t\topenInputToFunction(command, ref_object, dom_object, menu_var_or_value, function_obj, $($selectedItem).data('function_reference'), expression_element);\n\t\t \t\tbreak;\n\n\t\t \tcase VAR_OR_VALUE_TYPES.only_value:\n\t\t \t\topenInputToValue(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element);\n\t\t \t\tbreak;\n\n\t\t \tcase VAR_OR_VALUE_TYPES.only_variable:\n\t\t \t\topenInputToVariable(command, ref_object, dom_object, menu_var_or_value, function_obj, $($selectedItem).data('variable_reference'), expression_element);\n\t\t \t\tbreak;\n\t\t }\n\n\t\t if ($selectedItem.data('exp')) {\n\t\t \tAttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t }\n\n\t\t if (command.type == Models.COMMAND_TYPES.repeatNtimes) {\n\t\t \tRepeatNTimesManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t }\n\t },\n\t\t selectOnKeydown: false\n\t });\n\t}\n\n\tdom_object.find('.width-dynamic').on('input', function() {\n\t var inputWidth = $(this).textWidth()+10;\n\t $(this).focus();\n\n\t var tmpStr = $(this).val();\n\t\t$(this).val('');\n\t\t$(this).val(tmpStr);\n\n\t $(this).css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\n\tif (command.type == Models.COMMAND_TYPES.comment) {\n\t\tdom_object.parent().on('click', function(e) {\n\t\t\tdom_object.find('.value_rendered').remove();\n\t\t\tdom_object.find('.value_rendered').empty();\n\t\t\tdom_object.find('.value_rendered').remove();\n\t\t\tdom_object.empty();\n\t\t\tdom_object.append('<span class=\"menu_var_or_value_dom\"> </span>');\n\t\t\t\n\t\t\topenInputToValue(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element)\n\t\t});\n\t}\n\t\n}\n\nfunction openInputToFunction (command, ref_object, dom_object, menu_var_or_value, function_obj, function_selected, expression_element) {\n\t\n\tref_object.function_called = function_selected;\n\tref_object.parameters_list = [];\n\n\n\tif (function_selected.parameters_list != null && function_selected.parameters_list.length > 0) {\n\n\t\tmenu_var_or_value.find('.text').text(' ');\n\t\tdom_object.find('.menu_var_or_value_dom').remove();\n\n\t\tvar parameters_menu;\n\t\tif (function_selected.name) {\n\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> '+function_selected.name+' <span> ( </span>';\n\t\t} else {\n\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> <i>'+LocalizedStrings.translateInternalFunction(function_selected.identifier, function_selected.category)+'</i> <span> ( </span>';\n\t\t}\n\t\tfor (var j = 0; j < function_selected.parameters_list.length; j++) {\n\t\t\tparameters_menu += '<div class=\"render_style_param parameter_'+j+'\"></div>';\n\t\t\tif ((j + 1) != function_selected.parameters_list.length) {\n\t\t\t\tparameters_menu += ' , ';\n\t\t\t}\n\t\t}\n\t\tparameters_menu += '<span> ) </span></div>';\n\n\t\tparameters_menu = $(parameters_menu);\n\n\t\tdom_object.append(parameters_menu);\n\n\t\tfor (var j = 0; j < function_selected.parameters_list.length; j++) {\n\t\t\tvar temp;\n\t\t\tif (function_selected.parameters_list[j].dimensions > 0) {\n\t\t\t\ttemp = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.variable_and_function, null, null, null, true, function_selected.parameters_list[j].dimensions);\n\t\t\t} else {\n\t\t\t\ttemp = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\t\t}\n\t\t\tref_object.parameters_list.push(temp);\n\t\t\trenderMenu(command, temp, parameters_menu.find('.parameter_'+j), function_obj, 2, expression_element);\n\t\t}\n\n\n\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\t/*if (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\tcontext_menu += '</div></div>';\n\t\t}*/\n\n\t\tcontext_menu += '</div></div>';\n\n\t\tcontext_menu = $(context_menu);\n\n\t\tcontext_menu.insertAfter( dom_object.find('.parameters_function_called') );\n\n\t\tcontext_menu.dropdown({\n\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\tconsole.log('S8');\n\t\t if ($selectedItem.data('clear')) {\n\t\t \tconsole.log('PP7');\n\t\t \tdom_object.text('');\n\n\t\t \tref_object.content = null;\n\t\t \tref_object.row = null;\n\t\t \tref_object.column = null;\n\t\t \tdelete ref_object.function_called;\n\t\t \tdelete ref_object.parameters_list;\n\n\t\t \trenderMenu(command, ref_object, dom_object, function_obj, 2, expression_element);\n\t\t }\n\n\t\t if ($selectedItem.data('exp')) {\n\t\t \tAttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t }\n\t },\n\t\t selectOnKeydown: false\n\t\t});\n\n\t} else {\n\t\tmenu_var_or_value.find('.text').text(' ');\n\t\tdom_object.find('.menu_var_or_value_dom').remove();\n\n\t\tvar parameters_menu;\n\n\t\tif (function_selected.name) {\n\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> '+function_selected.name+' <span> ( </span>';\n\t\t} else {\n\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> <i>'+LocalizedStrings.translateInternalFunction(function_selected.identifier, function_selected.category)+'</i> <span> ( </span>';\n\t\t}\n\t\t\n\t\tparameters_menu += '<span> ) </span></div>';\n\n\t\tparameters_menu = $(parameters_menu);\n\n\t\tdom_object.append(parameters_menu);\n\n\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\t/*if (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\tcontext_menu += '</div></div>';\n\t\t}*/\n\n\t\tcontext_menu += '</div></div>';\n\n\t\tcontext_menu = $(context_menu);\n\n\t\tcontext_menu.insertAfter( dom_object.find('.parameters_function_called') );\n\n\t\tcontext_menu.dropdown({\n\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\tconsole.log('S9');\n\t\t if ($selectedItem.data('clear')) {\n\t\t \tconsole.log('PP8');\n\t\t \tdom_object.text('');\n\n\t\t \tref_object.content = null;\n\t\t \tref_object.row = null;\n\t\t \tref_object.column = null;\n\t\t \tdelete ref_object.function_called;\n\t\t \tdelete ref_object.parameters_list;\n\n\t\t \trenderMenu(command, ref_object, dom_object, function_obj, 2, expression_element);\n\t\t }\n\n\t\t if ($selectedItem.data('exp')) {\n\t\t \tAttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t }\n\t },\n\t\t selectOnKeydown: false\n\t\t});\n\t}\n\n\t/*if (command.type == Models.COMMAND_TYPES.attribution) {\n\t\tAttribuitionsManagement.renderMenuOperations(command, ref_object, dom_object, menu_var_or_value, function_obj);\n\t}*/\n}\n\nfunction openInputToVariable (command, ref_object, dom_object, menu_var_or_value, function_obj, variable_selected, expression_element) {\n\t\n\tref_object.content = variable_selected;\n\n\tmenu_var_or_value.find('.text').text(' ');\n\tdom_object.find('.menu_var_or_value_dom').remove();\n\n\tvar variable_render = '<div class=\"variable_rendered\"> <span class=\"var_name\">'+variable_selected.name+'</span>';\n\n\tif (variable_selected.dimensions == 1 && ref_object.dimensions != 1) {\n\t\tvariable_render += ' <span>[ </span> <div class=\"column_container\"></div> <span> ]</span>';\n\t}\n\tif (variable_selected.dimensions == 2 && ref_object.dimensions != 2) {\n\t\tvariable_render += ' <span>[ </span> <div class=\"row_container\"></div> <span> ]</span> ';\n\t\tvariable_render += ' <span>[ </span> <div class=\"column_container\"></div> <span> ]</span>';\n\t}\n\n\n\tvariable_render += '</div>';\n\n\tvariable_render = $(variable_render);\n\n\tdom_object.append(variable_render);\n\n\tif (variable_selected.dimensions == 1 && ref_object.dimensions != 1) {\n\t\tref_object.column = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\trenderMenu(command, ref_object.column, variable_render.find('.column_container'), function_obj, 2, expression_element);\n\t}\n\tif (variable_selected.dimensions == 2 && ref_object.dimensions != 2) {\n\t\tref_object.row = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\trenderMenu(command, ref_object.row, variable_render.find('.row_container'), function_obj, 2, expression_element);\n\n\t\tref_object.column = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\trenderMenu(command, ref_object.column, variable_render.find('.column_container'), function_obj, 2, expression_element);\n\t}\n\n\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t/*if (command.type == Models.COMMAND_TYPES.attribution && !dom_object.hasClass('var_attributed')) {\n\t\tconsole.log(\"dom_object 10: \");\n\t\tconsole.log(dom_object);\n\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\tcontext_menu += '<div class=\"menu\">';\n\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\tcontext_menu += '</div></div>';\n\t}*/\n\n\tcontext_menu += '</div></div>';\n\n\tcontext_menu = $(context_menu);\n\n\tcontext_menu.insertAfter( dom_object.find('.variable_rendered') );\n\n\tcontext_menu.dropdown({\n\t\tonChange: function(value, text, $selectedItem) {\n\t\t\tconsole.log('S10');\n\t if ($selectedItem.data('clear')) {\n\t \tconsole.log('PP9');\n\t \tdom_object.text('');\n\n\t \tref_object.content = null;\n\t \tref_object.row = null;\n\t \tref_object.column = null;\n\n\t \tdelete ref_object.function_called;\n\t\t delete ref_object.parameters_list;\n\n\t \trenderMenu(command, ref_object, dom_object, function_obj, 2, expression_element);\n\t }\n\n\t if ($selectedItem.data('exp')) {\n\t \tAttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t }\n\n\t if (command.type == Models.COMMAND_TYPES.repeatNtimes) {\n\t \tRepeatNTimesManagement.manageClearExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t }\n },\n\t selectOnKeydown: false\n\t});\n\n\t/*if (command.type == Models.COMMAND_TYPES.attribution) {\n\t\tAttribuitionsManagement.renderMenuOperations(command, ref_object, dom_object, menu_var_or_value, function_obj, variable_selected);\n\t}*/\n}\n\n\nfunction openInputToValue (command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element) {\n\n\tif (ref_object.content == null) {\n\t\tref_object.content = \"\";\n\t}\n\n\tmenu_var_or_value.find('.text').text(' ');\n\tvar field = $('<input type=\"text\" size=\"2\" class=\"width-dynamic-minus\" autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />');\n\tfield.insertBefore(dom_object.find('.menu_var_or_value_dom'));\n\tvar rendered = $('<div class=\"value_rendered\"></div>');\n\trendered.insertBefore(field);\n\n\tfield.focus();\n\tfield.val(ref_object.content);\n\n\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t/*if (command.type == Models.COMMAND_TYPES.attribution) {\n\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\tcontext_menu += '<div class=\"menu\">';\n\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\tcontext_menu += '</div></div>';\n\t}*/\n\n\tcontext_menu += '</div></div>';\n\n\tcontext_menu = $(context_menu);\n\n\tdom_object.find('.menu_var_or_value_dom').remove();\n\n\tif (ref_object.variable_and_value != VAR_OR_VALUE_TYPES.only_value) {\n\t\tcontext_menu.insertAfter( field );\n\t}\n\n\tcontext_menu.dropdown({\n\t\tonChange: function(value, text, $selectedItem) {\n\t\t\tconsole.log('S11');\n\t if ($selectedItem.data('clear')) {\n\t \tconsole.log('PP10');\n\t \tdom_object.text('');\n\n\t \tdom_object.find('.value_rendered').remove();\n\t\t\tdom_object.find('.context_menu_clear').remove();\n\t\t\tdom_object.find('.width-dynamic-minus').remove();\n\n\t\t\tref_object.content = null;\n\t\t ref_object.row = null;\n\t\t ref_object.column = null;\n\n\t\t\tdelete ref_object.function_called;\n\t\t delete ref_object.parameters_list;\n\n\t \trenderMenu(command, ref_object, dom_object, function_obj, 2, expression_element);\n\t }\n\n\t if ($selectedItem.data('exp')) {\n\t \tAttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t }\n },\n\t selectOnKeydown: false\n\t});\n\n\tdom_object.find('.width-dynamic-minus').focusout(function() {\n\t\tif ($(this).val().trim()) {\n\t\t\tref_object.content = $(this).val().trim();\n\t\t}\n\n\t\trendered.text(ref_object.content);\n\t\t$(this).remove();\n\n\t});\n\n\tdom_object.find('.width-dynamic-minus').on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif ($(this).val().trim()) {\n\t\t\t\tref_object.content = $(this).val().trim();\n\t\t\t}\n\t\t\trendered.text(ref_object.content);\n\n\t\t\t$(this).remove();\n\t\t}\n\t\tif(code == 27) {\n\t\t\trendered.text(ref_object.content);\n\n\t\t\t$(this).remove();\n\t\t}\n\t});\n\n\tif (command.type == Models.COMMAND_TYPES.comment) {\n\t\t/*rendered.parent().on('click', function(e) {\n\t\t\trendered.parent().off();\n\t\t\tconsole.log(\"TTT14\");\n\t\t\trendered.remove();\n\t\t\trendered.empty();\n\t\t\trendered.remove();\n\t\t\tdom_object.empty();\n\t\t\tdom_object.append('<span class=\"menu_var_or_value_dom\"> </span>');\n\t\t\t\n\t\t\topenInputToValue(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element)\n\t\t});*/\n\t}\n\n\trendered.on('click', function(e) {\n\t\tconsole.log(\"TTT2\");\n\t\trendered.remove();\n\t\trendered.empty();\n\t\trendered.remove();\n\t\tdom_object.empty();\n\t\tdom_object.append('<span class=\"menu_var_or_value_dom\"> </span>');\n\t\t\n\t\topenInputToValue(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element)\n\t});\n\n\t/*if (command.type == Models.COMMAND_TYPES.attribution) {\n\t\tAttribuitionsManagement.renderMenuOperations(command, ref_object, dom_object, menu_var_or_value, function_obj);\n\t}*/\n}\n\n\n$.fn.textWidth = function(text, font) {\n \n if (!$.fn.textWidth.fakeEl) $.fn.textWidth.fakeEl = $('<span>').hide().appendTo(document.body);\n \n $.fn.textWidth.fakeEl.text(text || this.val() || this.text() || this.attr('placeholder')).css('font', font || this.css('font'));\n \n return $.fn.textWidth.fakeEl.width();\n};\n","import { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as CommandsManagement from '../commands';\nimport * as ConditionalExpressionManagement from './conditional_expression';\nimport * as ContextualizedMenu from './contextualized_menu';\nimport * as GenericExpressionManagement from './generic_expression';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui whiletrue created_element\"> <i class=\"ui icon small sync\"></i> <span> ' + LocalizedStrings.getUI('text_command_while') + ' ( x < 10 ) <br> </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar ret = '';\n\tret += '<div class=\"ui whiletrue command_container\"> <i class=\"ui icon small sync command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"ui context_menu\"></div> <span class=\"span_command_spec\"> ' + LocalizedStrings.getUI('text_command_while') + ' </span>';\n\tret += '<span class=\"span_command_spec\"> ( </span> <div class=\"conditional_expression\"></div> <span class=\"span_command_spec\"> ) </span>';\n\tret += ' </span>';\n\tret += '<div class=\"ui block_commands\">';\n\tret += '</div>';\n\tret += '<span> </span>';\n\tret += '</div>';\n\n\tvar el = $(ret);\n\tel.data('command', command);\n\tel.find('.block_commands').data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\tContextualizedMenu.renderMenu(command, el.find('.context_menu'), function_obj, el);\n\n\t//ConditionalExpressionManagement.renderExpression(command, command.expression, function_obj, el.find('.conditional_expression'));\n\n\tGenericExpressionManagement.renderExpression(command, function_obj, el.find('.conditional_expression'), command.expression);\n\n\tif (command.commands_block) {\n\t\tfor (var j = 0; j < command.commands_block.length; j++) {\n\t\t CommandsManagement.renderCommand(command.commands_block[j], $(el.find('.block_commands')[0]), 3, function_obj);\n\t\t}\n\t}\n\n\treturn el;\n}\n\nfunction addHandlers (command, function_obj, whiletrue_dom) {\n\n\twhiletrue_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, whiletrue_dom)) {\n\t\t\twhiletrue_dom.fadeOut(400, function() {\n\t\t\t\twhiletrue_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}\n","import * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as VariableValueMenuManagement from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\nimport * as GenericExpressionManagement from './generic_expression';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui writer created_element\"> <i class=\"ui icon small upload\"></i> <span> '+LocalizedStrings.getUI('text_command_write')+' var </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar ret = '';\n\tret += '<div class=\"ui writer command_container\"> <i class=\"ui icon small upload command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <span class=\"span_command_spec\">'+LocalizedStrings.getUI('text_command_write')+' ( </span><div class=\"all_elements_write\"></div> <span class=\"close_parentheses span_command_spec\">)</span> </div>';\n\n\tvar el = $(ret);\n\tel.data('command', command);\n\n\t//renderExpression (command, function_obj, div_to_render, expression_array)\n\n\tGenericExpressionManagement.renderExpression(command, function_obj, el.find('.all_elements_write'), command.content);\n\n\t/*for (var i = 0; i < command.content.length; i ++) {\n\t\tvar new_div_item = $( '<div class=\"var_value_menu_div\"></div>' );\n\t\tvar div_parent_with_handler = $( '<div class=\"div_parent_handler\"></div>' );\n\t\tdiv_parent_with_handler.append($('<i class=\"ui icon ellipsis vertical inverted handler\"></i>'));\n\t\tdiv_parent_with_handler.append(new_div_item);\n\t\tdiv_parent_with_handler.append($('<i class=\"white inverted icon times handler\"></i>'));\n\n\t\tel.find('.all_elements_write').append(div_parent_with_handler);\n\t\tVariableValueMenu.renderMenu(command, command.content[i], new_div_item, function_obj);\n\n\t\taddHandlerIconAdd(el.find('.all_elements_write'), command, function_obj);\n\n\t\taddHandlersManager(command, function_obj, el, div_parent_with_handler, command.content[i]);\n\t}\n\n\tif (command.content.length == 0) {\n\t\taddHandlerIconAdd(el.find('.all_elements_write'), command, function_obj);\n\t}*/\n\n\taddHandlers(command, function_obj, el);\n\treturn el;\n}\n\nfunction addHandlersManager (command, function_obj, writer_dom, item_div, content_element) {\n\n\titem_div.find('.times').on('click', function() {\n\t\tfor (var i = 0; i < command.content.length; i++) {\n\t\t\tif (command.content[i] == content_element) {\n\t\t\t\tdelete command.content[i];\n\t \t\t\tcommand.content.splice(i, 1);\n\t\t\t\t\n\t\t\t\titem_div.children().off();\n\t\t\t\titem_div.off();\n\t\t\t\titem_div.fadeOut();\n\n\t\t\t\tif (command.content.length > 0) {\n\t\t\t\t\titem_div.next('.icon_add_item_to_writer').fadeOut();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction addHandlers (command, function_obj, writer_dom) {\n\n\twriter_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, writer_dom)) {\n\t\t\twriter_dom.fadeOut(400, function() {\n\t\t\t\twriter_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n\n\tSortable.create(writer_dom.find(\".all_elements_write\")[0], {\n\t handle: '.ellipsis',\n\t animation: 100,\n\t ghostClass: 'ghost',\n\t group: 'writer_' + Math.floor(Math.random() * 10000000),\n\t draggable: '.div_parent_handler',\n\t onEnd: function (evt) {\n\t \t\n\t \tcommand.content.splice(evt.newIndex, 0, command.content.splice(evt.oldIndex, 1)[0]);\n\n\t \twriter_dom.empty();\n\t \twriter_dom.replaceWith(renderCommand(command, function_obj));\n\t }\n\t });\n\n\n}\n\nfunction addHandlerIconAdd (dom_object, command, function_obj, insert_after = false, after_which = null) {\n\tvar icon_add_item = $( '<i class=\"ui icon plus square outline icon_add_item_to_writer\"></i> ' );\n\tif (!insert_after) {\n\t\tdom_object.append(icon_add_item);\n\t} else {\n\t\ticon_add_item.insertAfter(after_which);\n\t}\n\t\n\ticon_add_item.on('click', function(e) {\n\t\tvar div_parent_with_handler = $( '<div class=\"div_parent_handler\" style=\"display:none;\"></div>' );\n\t\tvar new_div_item = $( '<div class=\"var_value_menu_div\"></div>' );\n\t\tdiv_parent_with_handler.append($('<i class=\"ui icon ellipsis vertical inverted handler\"></i>'));\n\t\tdiv_parent_with_handler.append(new_div_item);\n\t\tdiv_parent_with_handler.append($('<i class=\"white inverted icon times handler\"></i>'));\n\t\tdiv_parent_with_handler.insertAfter(icon_add_item);\n\n\t\tvar new_related_menu = new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\n\t\tVariableValueMenu.renderMenu(command, new_related_menu, new_div_item, function_obj);\n\n\t\taddHandlerIconAdd(dom_object, command, function_obj, true, div_parent_with_handler);\n\n\t\taddHandlersManager(command, function_obj, dom_object, div_parent_with_handler, new_related_menu);\n\t\tvar pos = 1;\n\t\tdom_object.find('.icon_add_item_to_writer').each(function() {\n\t\t\tif ($(this).get(0) === icon_add_item.get(0)) {\n\t\t\t\tcommand.content.splice(pos, 0, new_related_menu);\n\t\t\t} else {\n\t\t\t\tpos ++;\n\t\t\t}\n\t\t});\n\t\tif (command.content.length == 1) {\n\t\t\ticon_add_item.remove();\n\t\t}\n\t\tdiv_parent_with_handler.fadeIn();\n\t});\n}\n\nexport function addContent (command, ref_object, dom_object, menu_var_or_value, function_obj, ref_object_content) {\n\t\n\tif (dom_object.hasClass('var_value_menu_div')) {\n\t\tvar icon_add_item = $( '<i class=\"ui icon plus square outline icon_add_item_to_writer\"></i> ' );\n\t\ticon_add_item.insertAfter(dom_object);\n\n\t\ticon_add_item.on('click', function(e) {\n\t\t\tvar div_parent_with_handler = $( '<div class=\"div_parent_handler\"></div>' );\n\t\t\tdiv_parent_with_handler.append($('<i class=\"ui icon ellipsis vertical inverted handler\"></i>'));\n\t\t\tdiv_parent_with_handler.append(new_div_item);\n\t\t\tdiv_parent_with_handler.append($('<i class=\"white inverted icon times handler\"></i>'));\n\n\t\t\tdiv_parent_with_handler.insertAfter(icon_add_item);\n\t\t\tvar new_related_menu = new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\n\t\t\tVariableValueMenu.renderMenu(command, new_related_menu, new_div_item, function_obj);\n\n\t\t\taddHandlersManager(command, function_obj, dom_object, div_parent_with_handler, new_related_menu);\n\n\t\t\tcommand.content.push(new_related_menu);\n\n\t\t\tif (command.content.length == 1) {\n\t\t\t\ticon_add_item.remove();\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Types } from './types';\nimport * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as GlobalsManagement from './globals';\nimport * as VariablesManagement from './variables';\nimport * as CommandsManagement from './commands';\nimport * as CodeManagement from './code_generator';\nimport * as VariableValueMenu from './commands/variable_value_menu';\nimport { DOMConsole } from './../io/domConsole';\nimport { IVProgProcessor } from './../processor/ivprogProcessor';\nimport WatchJS from 'melanke-watchjs';\nimport { SemanticAnalyser } from '../processor/semantic/semanticAnalyser';\nimport { IVProgAssessment } from '../assessment/ivprogAssessment';\nimport * as AlgorithmManagement from './algorithm';\nimport * as Utils from './utils';\nimport { registerUserEvent, ActionTypes } from \"./../services/userLog\";\nimport VersionInfo from './../../.ima_version.json';\nimport * as TextEditor from \"./text_editor\";\nimport { isValidIdentifier } from \"./../util/utils\";\nimport { Modes } from '../processor/modes';\n\nvar counter_new_functions = 0;\nvar counter_new_parameters = 0;\nvar ivprog_version = VersionInfo.version;\n\nconst globalChangeListeners = [];\nconst functionsChangeListeners = [];\nlet proc = null;\nlet domConsole = null;\nlet _testCases = [];\nlet isRunning = false;\nwindow.studentGrade = null;\nwindow.LocalizedStrings = LocalizedStrings;\nconst program = new Models.Program();\n\nwindow.system_functions = [];\n// Adding math functions:\nwindow.system_functions.push(new Models.SystemFunction('$sin', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$cos', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$tan', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$sqrt', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$pow', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true), new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$log', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$abs', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$negate', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$invert', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$max', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$min', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$rand', Types.REAL, 0, [],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\n// Adding text functions:\nwindow.system_functions.push(new Models.SystemFunction('$substring', Types.TEXT, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true),\n new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true),new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.text));\nwindow.system_functions.push(new Models.SystemFunction('$length', Types.INTEGER, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.text));\nwindow.system_functions.push(new Models.SystemFunction('$uppercase', Types.TEXT, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.text));\nwindow.system_functions.push(new Models.SystemFunction('$lowercase', Types.TEXT, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.text));\nwindow.system_functions.push(new Models.SystemFunction('$charAt', Types.TEXT, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true), new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.text));\n// Adding arrangement functions:\nwindow.system_functions.push(new Models.SystemFunction('$numElements', Types.INTEGER, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.variable_and_function, null, null, null, true, 1)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.arrangement));\nwindow.system_functions.push(new Models.SystemFunction('$matrixLines', Types.INTEGER, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.variable_and_function, null, null, null, true, 2)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.arrangement));\nwindow.system_functions.push(new Models.SystemFunction('$matrixColumns', Types.INTEGER, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.variable_and_function, null, null, null, true, 2)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.arrangement));\n// Adding conversion functions:\nwindow.system_functions.push(new Models.SystemFunction('$isReal', Types.BOOLEAN, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$isInt', Types.BOOLEAN, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$isBool', Types.BOOLEAN, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$castReal', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$castInt', Types.INTEGER, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$castBool', Types.BOOLEAN, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$castString', Types.TEXT, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\n\nconsole.log(' ___ ___ ________ \\n / / / / / ____/ \\n / / / / / / \\n / / / / ______ ___ / /__ \\n / / / / / \\\\ / / / ___/ \\n / /______ / / / /\\\\ \\\\/ / / / \\n / / / / / / \\\\ / / /____ \\n/__________/ /___/ /___/ \\\\___/ /________/ \\n\\n Laboratório de Informática na Educação\\n http://line.ime.usp.br');\n\nconst mainFunction = new Models.Function(LocalizedStrings.getUI(\"start\"), Types.VOID, 0, [], true, false);\nmainFunction.function_comment = new Models.Comment(LocalizedStrings.getUI('text_comment_main'));\nprogram.addFunction(mainFunction);\n\nwindow.program_obj = program;\n\nwindow.generator = CodeManagement.generate;\nwindow.runCodeAssessment = runCodeAssessment;\nwindow.renderAlgorithm = AlgorithmManagement.renderAlgorithm;\nwindow.insertContext = false;\nwindow.watchW = WatchJS;\n\nWatchJS.watch(window.program_obj.globals, function(){\n if (window.insertContext) {\n setTimeout(function() {\n AlgorithmManagement.renderAlgorithm();\n globalChangeListeners.forEach(x => x());\n }, 300);\n window.insertContext = false;\n } else {\n AlgorithmManagement.renderAlgorithm();\n globalChangeListeners.forEach(x => x());\n }\n}, 1);\n\nWatchJS.watch(window.program_obj.functions, function(){\n if (window.insertContext) {\n setTimeout(function(){\n AlgorithmManagement.renderAlgorithm();\n functionsChangeListeners.forEach( x => x());\n }, 300);\n window.insertContext = false;\n } else {\n AlgorithmManagement.renderAlgorithm();\n functionsChangeListeners.forEach( x => x());\n }\n}, 1);\n\nfunction addFunctionHandler () {\n\n\tconst new_function = new Models.Function(LocalizedStrings.getUI(\"new_function\") + \"_\" + counter_new_functions, Types.VOID, 0, [], false, false, [], new Models.Comment(LocalizedStrings.getUI('text_comment_start')));\n\tprogram.addFunction(new_function);\n\n\tcounter_new_functions ++;\n\n window.insertContext = true;\n registerUserEvent(new_function.name, ActionTypes.INSERT_FUNCTION);\n\n // var newe = renderFunction(new_function);\n renderFunction(new_function);\n /*newe.css('display', 'none');\n newe.fadeIn();*/\n}\n\nfunction addParameter (function_obj, function_container/*, is_from_click = false*/) {\n if (function_obj.parameters_list == null) {\n function_obj.parameters_list = [];\n }\n const new_parameter = new Models.Variable(Types.INTEGER, LocalizedStrings.getUI(\"new_parameter\") + \"_\" + counter_new_parameters);\n function_obj.parameters_list.push(new_parameter);\n counter_new_parameters ++;\n registerUserEvent(function_obj.name, ActionTypes.INSERT_FUNCTION_PARAM, new_parameter.name, Types.INTEGER, 0);\n //var newe = renderParameter(function_obj, new_parameter, function_container);\n renderParameter(function_obj, new_parameter, function_container);\n // if (is_from_click) {\n // newe.css('display', 'none');\n // newe.fadeIn();\n // }\n}\n\nfunction updateReturnType (function_obj, new_type, new_dimensions = 0) {\n registerUserEvent(function_obj.name, ActionTypes.CHANGE_FUNCTION_RETURN, new_type, new_dimensions);\n function_obj.return_type = new_type;\n function_obj.return_dimensions = new_dimensions;\n}\n\nfunction removeFunction (function_obj) {\n var index = program.functions.indexOf(function_obj);\n if (index > -1) {\n registerUserEvent(function_obj.name, ActionTypes.REMOVE_FUNCTION);\n program.functions.splice(index, 1);\n }\n}\n\nfunction minimizeFunction (function_obj) {\n function_obj.is_hidden = !function_obj.is_hidden;\n}\n\nfunction addHandlers (function_obj, function_container) {\n\n function_container.find('.ui.dropdown.function_return').dropdown({\n onChange: function(value, text, $selectedItem) {\n if ($selectedItem.data('dimensions')) {\n updateReturnType(function_obj, Types[$selectedItem.data('type')], $selectedItem.data('dimensions'));\n } else {\n updateReturnType(function_obj, Types[$selectedItem.data('type')]);\n }\n },\n selectOnKeydown: false\n });\n\n function_container.find( \".name_function_updated\" ).on('click', function(e){\n enableNameFunctionUpdate(function_obj, function_container);\n });\n\n function_container.find( \".add_parameter_button\" ).on('click', function(e){\n window.insertContext = true;\n addParameter(function_obj, function_container, true);\n });\n\n function_container.find('.menu_commands').dropdown({\n on: 'hover'\n });\n\n function_container.find('.menu_commands a').on('click', function(evt){\n if (function_obj.commands == null || function_obj.commands.length == 0) {\n function_obj.commands = [];\n var new_cmd = CommandsManagement.genericCreateCommand($(this).data('command'));\n function_obj.commands.push(new_cmd);\n\n CommandsManagement.renderCommand(new_cmd, function_container.find('.commands_list_div'), 3, function_obj);\n registerUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, $(this).data('command'), '/', 0);\n } else {\n CommandsManagement.createFloatingCommand(function_obj, function_container, $(this).data('command'), evt);\n }\n\n });\n\n function_container.find('.add_var_button_function').on('click', function(e){\n window.insertContext = true;\n VariablesManagement.addVariable(function_obj, function_container, true);\n });\n\n function_container.find('.remove_function_button').on('click', function(e){\n removeFunction(function_obj);\n function_container.fadeOut();\n });\n\n function_container.find('.minimize_function_button').on('click', function(e){\n minimizeFunction(function_obj);\n if (function_obj.is_hidden) {\n function_container.find(\".add_var_button_function\").toggle();\n function_container.find(\".inline_add_command\").toggle();\n function_container.find(\".function_area\").slideToggle();\n } else {\n function_container.find(\".function_area\").slideToggle(function(){\n function_container.find(\".add_var_button_function\").toggle();\n function_container.find(\".inline_add_command\").toggle();\n });\n }\n \n });\n}\n\n// Essa função imprime o tipo de retorno da função e cria o menu do tipo 'select' para alteração\nfunction renderFunctionReturn (function_obj, function_element) {\n\n var ret = '<div class=\"ui dropdown function_return\">';\n \n if (function_obj.return_dimensions == 1) {\n ret += '<div class=\"text\">'+ LocalizedStrings.getUI(\"vector\") +': '+ LocalizedStrings.getUI(`type_${function_obj.return_type.toLowerCase()}`);\n ret += ' [ ] </div>';\n } else if (function_obj.return_dimensions == 2) {\n ret += '<div class=\"text\">'+ LocalizedStrings.getUI(\"matrix\") +': '+ LocalizedStrings.getUI(`type_${function_obj.return_type.toLowerCase()}`);\n ret += ' [ ] [ ] </div>';\n } else {\n ret += '<div class=\"text\">'+LocalizedStrings.getUI(`type_${function_obj.return_type.toLowerCase()}`)+'</div>';\n }\n\n ret += '<div class=\"menu\">';\n\n for (var tm in Types) {\n ret += '<div class=\"item ' + (function_obj.return_type == tm.toLowerCase() && function_obj.return_dimensions < 1 ? ' selected ' : '') + '\" data-type=\"'+tm+'\" >'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n }\n\n ret += '<div class=\"item ' + (function_obj.return_dimensions == 1 ? ' selected ' : '') + '\">'\n + '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('vector')\n + '<div class=\"menu\">';\n\n for (var tm in Types) {\n if (tm == Types.VOID.toUpperCase()) {\n continue;\n }\n\n ret += '<div class=\"item ' + (function_obj.return_type == tm.toLowerCase() && function_obj.return_dimensions == 1 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"1\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n }\n ret += '</div></div>';\n\n\n ret += '<div class=\"item ' + (function_obj.return_dimensions == 2 ? ' selected ' : '') + '\">'\n + '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('matrix')\n + '<div class=\"menu\">';\n\n for (var tm in Types) {\n if (tm == Types.VOID.toUpperCase()) {\n continue;\n }\n\n ret += '<div class=\"item ' + (function_obj.return_type == tm.toLowerCase() && function_obj.return_dimensions == 2 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('matrix')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"2\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n }\n ret += '</div></div>';\n\n ret += '</div></div>';\n\n ret = $(ret);\n \n function_element.find('.function_return').append(ret);\n}\n\nvar cont = 0;\n\nexport function renderFunction (function_obj) {\n \n var appender = '<div class=\"ui secondary segment function_div list-group-item function_cont_'+cont+'\">';\n\n if (function_obj.function_comment) {\n //appender += renderComment(function_obj.function_comment, sequence, true, -1);\n }\n \n appender += '<span class=\"glyphicon glyphicon-move move_function\" aria-hidden=\"true\"><i class=\"icon sort alternate vertical\"></i></span>';\n\n appender += (function_obj.is_main ? '<div class=\"div_start_minimize_v\"> </div>' : '<button class=\"ui icon button large remove_function_button\"><i class=\"red icon times\"></i></button>')\n + '<button class=\"ui icon button tiny minimize_function_button\"><i class=\"icon window minimize\"></i></button>';\n\n appender += '<div class=\"function_signature_div\">'+LocalizedStrings.getUI(\"function\")+' ';\n\n if (function_obj.is_main) {\n appender += '<div class=\"function_name_div\"> ' + LocalizedStrings.getUI('type_void') + ' <span class=\"span_name_function\" >'+function_obj.name+'</span> </div> '\n + ' <span class=\"parethesis_function\">( </span> <div class=\"ui large labels parameters_list\">';\n } else {\n appender += '<div class=\"ui function_return\"></div>';\n\n appender += '<div class=\"function_name_div function_name_div_updated\"><span class=\"span_name_function name_function_updated\">'+function_obj.name+'</span> </div> ' \n + ' <span class=\"parethesis_function\"> ( </span> <i class=\"ui icon plus square outline add_parameter_button\"></i> <div class=\"ui large labels parameters_list container_parameters_list\">';\n }\n \n appender += '</div> <span class=\"parethesis_function\"> ) </span> </div>'\n + (function_obj.is_hidden ? ' <div class=\"function_area\" style=\"display: none;\"> ' : ' <div class=\"function_area\"> ');\n\n appender += '<div class=\"ui add_var_context add_var_button_function\" style=\"float: left;\"> <div class=\"ui icon button purple\"> ';\n\n appender += '<i class=\"icons\"><i class=\"icon superscript\" style=\"margin-top: -2px;margin-bottom: 2px;margin-left: 1px;margin-right: 1px;\"></i><i class=\"corner add icon inverted\" style=\"font-size: 9px;padding-top: 6px;padding-left: 9px;\"></i></i>';\n\n appender += '</div></div>';\n\n appender += '<div class=\"ui top attached segment variables_list_div\"></div>';\n\n appender += '<div class=\"ui bottom attached segment commands_list_div commands_cont_'+cont+'\">'\n + '<div class=\"ui rail\" style=\"width: 35px; margin-left: -36px;\"><div class=\"ui sticky sticky_cont_'+cont+'\" style=\"top: 50px !important;\">';\n\n\n appender += '<div class=\"ui icon button dropdown menu_commands orange\" > '\n + '<i class=\"icons\"><i class=\"icon code\" style=\"margin-top: -1px;margin-bottom: 1px;margin-right: 0px;\"></i><i class=\"corner add icon inverted\" style=\"font-size: 9px;padding-top: 6px;padding-left: 9px;\"></i></i>'\n + '<div class=\"menu\"> ';\n appender += '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.reader+'\"><i class=\"download icon\"></i> ' +LocalizedStrings.getUI('text_read_var')+ '</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.writer+'\"><i class=\"upload icon\"></i> '+LocalizedStrings.getUI('text_write_var')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.comment+'\"><i class=\"quote left icon\"></i> '+LocalizedStrings.getUI('text_comment')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.attribution+'\"><i class=\"arrow left icon\"></i> '+LocalizedStrings.getUI('text_attribution')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.functioncall+'\"><i class=\"hand point right icon\"></i> '+LocalizedStrings.getUI('text_functioncall')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.iftrue+'\" ><i class=\"random icon\"></i> '+LocalizedStrings.getUI('text_iftrue')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.repeatNtimes+'\"><i class=\"sync icon\"></i> '+LocalizedStrings.getUI('text_repeatNtimes')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.whiletrue+'\"><i class=\"sync icon\"></i> '+LocalizedStrings.getUI('text_whiletrue')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.dowhiletrue+'\"><i class=\"sync icon\"></i> '+LocalizedStrings.getUI('text_dowhiletrue')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.switch+'\"><i class=\"list icon\"></i> '+LocalizedStrings.getUI('text_switch')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.return+'\"><i class=\"reply icon\"></i> '+LocalizedStrings.getUI('text_btn_return')+'</a>'\n + '</div></div>';\n\n\n appender += '</div></div>'\n +'</div>';\n\n appender += '</div></div>';\n\n appender = $(appender);\n\n $('.all_functions').append(appender);\n\n appender.data('fun', function_obj);\n appender.find('.commands_list_div').data('fun', function_obj);\n\n renderFunctionReturn(function_obj, appender);\n\n addHandlers(function_obj, appender);\n\n // Rendering parameters: \n for (var j = 0; j < function_obj.parameters_list.length; j++) {\n renderParameter(function_obj, function_obj.parameters_list[j], appender);\n }\n\n // Rendering variables:\n for (var j = 0; j < function_obj.variables_list.length; j++) {\n VariablesManagement.renderVariable(appender, function_obj.variables_list[j], function_obj);\n }\n // Rendering commands:\n for (var j = 0; j < function_obj.commands.length; j++) {\n CommandsManagement.renderCommand(function_obj.commands[j], $(appender.find('.commands_list_div')[0]), 3, function_obj);\n }\n $('.minimize_function_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_hide_function\"),\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n var function_index = program.functions.indexOf(function_obj);\n\n Sortable.create(appender.find(\".variables_list_div\")[0], {\n handle: '.ellipsis',\n animation: 100,\n ghostClass: 'ghost',\n group: 'local_vars_drag_' + function_index,\n onEnd: function (evt) {\n updateSequenceLocals(evt.oldIndex, evt.newIndex, function_obj);\n }\n });\n\n addSortableHandler(appender.find(\".commands_list_div\")[0], function_index);\n\n if (!function_obj.is_main) {\n Sortable.create(appender.find(\".container_parameters_list\")[0], {\n handle: '.ellipsis',\n animation: 100,\n ghostClass: 'ghost',\n group: 'parameters_drag_' + program.functions.indexOf(function_obj),\n onEnd: function (evt) {\n updateSequenceParameters(evt.oldIndex, evt.newIndex, function_obj);\n }\n });\n }\n\n if (function_obj.commands.length > 0) {\n var teste = '.ui.sticky.sticky_cont_'+cont;\n $(teste).sticky({\n context: '.ui.bottom.attached.segment.commands_list_div.commands_cont_'+cont,\n scrollContext: '.ivprog_visual_panel',\n observeChanges: true,\n offset: 40,\n onStick: function (evt) {\n $(teste).css('top', '20px', 'important');\n }, \n onBottom: function (evt) {\n $(teste).css('top', '20px', 'important');\n },\n onUnstick: function (evt) {\n $(teste).css('top', '20px', 'important');\n },\n onReposition: function (evt) {\n $(teste).css('top', '20px', 'important');\n },\n onScroll: function (evt) {\n $(teste).css('top', '20px', 'important');\n if (!isVisible($(teste), $(teste).parent())) {\n $(teste).removeClass('fixed');\n }\n },\n onTop: function (evt) {\n $(teste).css('top', '20px', 'important');\n }\n });\n }\n \n cont ++;\n\n return appender;\n}\n\nfunction isVisible (element, container) {\n\n var elementTop = $(element).offset().top,\n elementHeight = $(element).height(),\n containerTop = $(container).offset().top,\n containerHeight = $(container).height() - 30;\n\n return ((((elementTop - containerTop) + elementHeight) > 0)\n && ((elementTop - containerTop) < containerHeight));\n}\n\n\nwindow.evento_drag;\n\nfunction updateProgramObjDrag () {\n const nodes = Array.prototype.slice.call( $('.all_functions').children() );\n let function_index;\n var start_index;\n let function_obj;\n $(evento_drag.item).parentsUntil(\".all_functions\").each(function (index) {\n const ref = $(this);\n if (ref.hasClass('function_div')) {\n function_index = nodes.indexOf(this);\n start_index = index;\n function_obj = ref;\n }\n });\n\n const path_target = [];\n $(evento_drag.item).parentsUntil(\".all_functions\").each(function () {\n if ($(this).hasClass('command_container')) {\n path_target.push(this);\n }\n });\n if (path_target.length == 0) {\n //console.log('soltou na raiz, na posição: ' + evento_drag.newIndex + ' mas ainda não sei de onde saiu ');\n } else {\n //console.log('soltou dentro de algum bloco, sequência vem logo abaixo (de baixo pra cima): ');\n //console.log(path_target);\n }\n\n var index_each = [];\n var path_relative = [];\n for (var i = path_target.length - 1; i >= 0; i --) {\n console.log('da vez', $(path_target[i + 1]));\n if (i == (path_target.length - 1)) { // está na raiz\n var indice_na_raiz = function_obj.find('.command_container').index(path_target[i]);\n console.log('índice na raiz: ', indice_na_raiz);\n } else {\n if ($(path_target[i + 1]).hasClass('iftrue')) {\n if ($(path_target[i]).parent().hasClass('commands_if')) {\n path_relative.push('if');\n index_each.push($(path_target[i]).parent().find('.command_container').index(path_target[i]));\n } else {\n path_relative.push('else');\n index_each.push($(path_target[i]).parent().find('.command_container').index(path_target[i]));\n }\n } else if ($(path_target[i + 1]).hasClass('dowhiletrue')) {\n path_relative.push('dowhiletrue');\n index_each.push($(path_target[i + 1]).find('.command_container').index(path_target[i]));\n } else if ($(path_target[i + 1]).hasClass('repeatNtimes')) {\n path_relative.push('repeatNtimes');\n index_each.push($(path_target[i + 1]).find('.command_container').index(path_target[i]));\n } else if ($(path_target[i + 1]).hasClass('whiletrue')) {\n path_relative.push('whiletrue');\n index_each.push($(path_target[i + 1]).find('.command_container').index(path_target[i]));\n } else if ($(path_target[i + 1]).hasClass('switch')) {\n path_relative.push('switch');\n //index_each.push($(path_target[i + 1]).find('.command_container').index(path_target[i]));\n }\n }\n }\n // var index_in_block = -1;\n const is_in_else = $(evento_drag.item).parent().hasClass('commands_else');\n\n // index_in_block = $(evento_drag.item).parent().find('.command_container').index(evento_drag.item);\n\n const is_in_case_switch = $(evento_drag.item).parent().hasClass('case_commands_block');\n // var index_case_of_switch = -1;\n // if (is_in_case_switch) {\n // index_case_of_switch = $(evento_drag.item).parent().parent().parent().find('.case_div').index($(evento_drag.item).parent().parent());\n // }\n\n /*console.log('path_relative:');\n console.log(path_relative);\n console.log('index_each:');\n console.log(index_each);\n console.log('index_in_block:');\n console.log(index_in_block);\n console.log('ele está em algum bloco de senão? ');\n console.log(is_in_else);\n console.log('ele está dentro de um case de switch?');\n console.log(is_in_case_switch);\n console.log('qual é o índice do case: ');\n console.log(index_case_of_switch);*/\n\n // encontrar o elemento na árvore:\n\n var command_start_point = window.program_obj.functions[function_index].commands[indice_na_raiz];\n var block_to_insert = command_start_point;\n for (var i = 0; i < index_each.length; i++) {\n if (path_relative[i] == \"else\") {\n block_to_insert = block_to_insert.commands_else[index_each[i]];\n } else if (path_relative[i] == \"switch\") {\n\n } else {\n block_to_insert = block_to_insert.commands_block[index_each[i]]\n }\n }\n\n //console.log('command_start_point', command_start_point);\n //console.log('block_to_insert', block_to_insert);\n\n // agora tem que alocar o comando na árvore, mas considerar as quatro situações:\n // (1) se está em um else ou (2) se está em switch ou (3) será um caso padrão ou (4) se será na raiz.\n \n if (path_target.length == 0) { // soltou na raiz:\n window.program_obj.functions[function_index].commands.splice(evento_drag.newIndex - 1, 0, command_in_drag);\n } else if (is_in_else) {\n if (block_to_insert.commands_else) {\n block_to_insert.commands_else.splice(evento_drag.newIndex, 0, command_in_drag);\n } else {\n block_to_insert.commands_else = [];\n block_to_insert.commands_else.push(command_in_drag);\n }\n } else if (is_in_case_switch) {\n\n } else {\n // verificar se tem alguma coisa no bloco:\n if (block_to_insert.commands_block) {\n console.log(\"existe alguma coisa dentro do bloco, index: \", evento_drag.newIndex);\n block_to_insert.commands_block.splice(evento_drag.newIndex, 0, command_in_drag);\n } else {\n block_to_insert.commands_block = [];\n block_to_insert.commands_block.push(command_in_drag);\n }\n }\n\n window.draging = false;\n renderAlgorithm();\n \n\n}\n\nfunction prepareDragHandler (evt) {\n window.draging = true;\n\n var nodes = Array.prototype.slice.call( $('.all_functions').children() );\n var function_index;\n var function_obj;\n $(evt.item).parentsUntil(\".all_functions\").each(function (index) {\n if ($(this).hasClass('function_div')) {\n function_index = nodes.indexOf(this);\n function_obj = window.program_obj.functions[function_index];\n }\n });\n\n command_in_drag = $(evt.item).data(\"command\");\n\n //console.log('$(evt.item).parent(): ');\n //console.log($(evt.item).parent());\n\n // descobrir qual das quatro situações:\n if ($(evt.item).parent().hasClass('commands_list_div')) { // está na raiz:\n if (function_obj.commands.indexOf(command_in_drag) > -1) {\n function_obj.commands.splice(function_obj.commands.indexOf(command_in_drag), 1);\n }\n } else if ($(evt.item).parent().hasClass('commands_else')) { // está no else:\n if ($(evt.item).parent().data('command').commands_else.indexOf(command_in_drag) > -1) {\n $(evt.item).parent().data('command').commands_else.splice($(evt.item).parent().data('command').commands_else.indexOf(command_in_drag), 1);\n }\n } else if ($(evt.item).parent().hasClass('case_commands_block')) { // está em um switch:\n\n } else { // caso padrão:\n if ($(evt.item).parent().data('command').commands_block.indexOf(command_in_drag) > -1) {\n $(evt.item).parent().data('command').commands_block.splice($(evt.item).parent().data('command').commands_block.indexOf(command_in_drag), 1);\n }\n }\n\n}\n\nvar command_in_drag;\n\nfunction addSortableHandler (element, id_function) {\n \n var n_group = 'commands_drag_' + id_function;\n Sortable.create(element, {\n handle: '.command_drag',\n ghostClass: 'ghost',\n animation: 300,\n group: {name: n_group},\n onEnd: function (evt) {\n\n var nodes = Array.prototype.slice.call( $('.all_functions').children() );\n var function_index;\n var function_obj;\n $(evt.item).parentsUntil(\".all_functions\").each(function (index) {\n if ($(this).hasClass('function_div')) {\n function_index = nodes.indexOf(this);\n function_obj = window.program_obj.functions[function_index];\n }\n });\n\n registerUserEvent(function_obj.name, ActionTypes.MOVE_COMMAND, $(evt.item).data('command').type, '/', 'from: ' + evt.oldIndex + ' to: ' + evt.newIndex);\n //updateSequenceLocals(evt.oldIndex, evt.newIndex, function_obj);\n var itemEl = evt.item; // dragged HTMLElement\n evt.to; // target list\n evt.from; // previous list\n evt.oldIndex; // element's old index within old parent\n evt.newIndex; // element's new index within new parent\n //console.log('::EVT::');\n //console.log(evt);\n\n window.evento_drag = evt;\n\n try {\n updateProgramObjDrag();\n } catch (e) {\n console.error(e);\n window.draging = false;\n }\n },\n onStart: function (evt) {\n //console.log(\"START::EVT::\");\n //console.log(evt);\n //console.log(\"\\n\\ncommand_in_drag\");\n try {\n prepareDragHandler(evt);\n } catch (e) {\n window.draging = false;\n }\n }\n });\n element = $(element);\n element.find(\".iftrue\").each(function( index ) {\n addSortableHandler($(this).find(\".block_commands\")[0], id_function);\n addSortableHandler($(this).find(\".block_commands\")[1], id_function);\n });\n\n element.find(\".repeatNtimes\").each(function( index ) {\n addSortableHandler($(this).find(\".block_commands\")[0], id_function);\n });\n\n element.find(\".dowhiletrue\").each(function( index ) {\n addSortableHandler($(this).find(\".block_commands\")[0], id_function);\n });\n\n element.find(\".whiletrue\").each(function( index ) {\n addSortableHandler($(this).find(\".block_commands\")[0], id_function);\n });\n\n element.find(\".switch\").each(function( index ) {\n\n $(this).find(\".case_div\").each(function( index ) {\n addSortableHandler($(this).find(\".case_commands_block\")[0], id_function);\n });\n\n }); \n}\n\nexport function initVisualUI () {\n // MUST USE CONST, LET, OR VAR !!!!!!\n // const mainDiv = $('#visual-main-div');\n // fill mainDiv with functions and globals...\n // renderAlgorithm()...\n domConsole = new DOMConsole(\"ivprog-term-div\");\n domConsole.hide();\n $(document.getElementById(\"ivprog-term-div\")).draggable()\n $('.add_function_button').on('click', () => {\n addFunctionHandler();\n });\n $('.add_global_button').on('click', () => {\n window.insertContext = true;\n GlobalsManagement.addGlobal(program, true);\n });\n\n $('#run_button').on('click', function () {\n showStopButton();\n runCode();\n });\n\n $('#stop_button').on('click', function () {\n showRunButton();\n stopExecution();\n });\n\n $('.visual_coding_button').on('click', () => {\n toggleVisualCoding();\n });\n\n $('.textual_coding_button').on('click', () => {\n toggleTextualCoding();\n });\n\n $('.assessment').on('click', () => {\n is_iassign = true;\n runCodeAssessment();\n });\n\n $('.div_toggle_console').on('click', () => {\n toggleConsole();\n });\n $('.expand_button').on('click', () => {\n full_screen();\n });\n $('.help_button').on('click', () => {\n window.open('https://www.usp.br/line/ivprog/', '_blank');\n });\n $('.main_title h2').prop('title', LocalizedStrings.getUI('text_ivprog_description'));\n\n var time_show = 750;\n $('.visual_coding_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_visual\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.textual_coding_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_textual\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.upload_file_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_upload\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.download_file_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_download\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.undo_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_undo\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.redo_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_redo\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.run_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_run\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.assessment_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_evaluate\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.help_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_help\") + ' - ' + LocalizedStrings.getUI(\"text_ivprog_version\") + ' ' + ivprog_version,\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.add_global_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_add_global\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.div_toggle_console').popup({\n content : LocalizedStrings.getUI(\"tooltip_console\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n\n Sortable.create(listWithHandle, {\n handle: '.glyphicon-move',\n animation: 100,\n ghostClass: 'ghost',\n group: 'functions_divs_drag',\n onEnd: function (evt) {\n updateSequenceFunction(evt.oldIndex, evt.newIndex);\n }\n });\n\n var listGlobalsHandle = document.getElementById(\"listGlobalsHandle\");\n Sortable.create(listGlobalsHandle, {\n handle: '.ellipsis',\n animation: 100,\n ghostClass: 'ghost',\n group: 'globals_divs_drag',\n onEnd: function (evt) {\n updateSequenceGlobals(evt.oldIndex, evt.newIndex);\n }\n });\n\n}\n\nexport function setTestCases (testCases) {\n _testCases = testCases;\n}\n\nexport function getTestCases () {\n // Deep clone of test cases to avoid unauthorized modification\n // TODO: It may be not possible to use this once custom test are fully implemented \n return JSON.parse(JSON.stringify(_testCases));\n}\n\nvar is_iassign = false;\n\nfunction updateSequenceParameters (oldIndex, newIndex, function_obj) {\n function_obj.parameters_list.splice(newIndex, 0, function_obj.parameters_list.splice(oldIndex, 1)[0]);\n}\n\nfunction updateSequenceLocals (oldIndex, newIndex, function_obj) {\n function_obj.variables_list.splice(newIndex, 0, function_obj.variables_list.splice(oldIndex, 1)[0]);\n}\n\nfunction updateSequenceGlobals (oldIndex, newIndex) {\n program_obj.globals.splice(newIndex, 0, program_obj.globals.splice(oldIndex, 1)[0]);\n}\n\nfunction updateSequenceFunction (oldIndex, newIndex) {\n program_obj.functions.splice(newIndex, 0, program_obj.functions.splice(oldIndex, 1)[0]);\n}\n\nfunction runCodeAssessment () {\n if (isRunning) {\n // cannot run assessment or it's already running\n return -1;\n }\n \n let strCode = null;\n\n window.studentGrade = null;\n\n if (settingsProgrammingTypes == \"textual\") {\n strCode = TextEditor.getCode();\n } else {\n strCode = CodeManagement.generate();\n }\n\n if (strCode == null) {\n // No code, so no assessment\n return -1;\n }\n\n toggleConsole(true);\n\n try {\n const data = SemanticAnalyser.analyseFromSource(strCode);\n isRunning = true;\n const runner = new IVProgAssessment(data, _testCases, domConsole);\n runner.runTest().then(grade => {\n if (!is_iassign) {\n parent.getEvaluationCallback(grade);\n } else {\n is_iassign = false;\n }\n isRunning = false;\n }).catch( err => {\n console.log(err);\n isRunning = false;\n });\n } catch (error) {\n isRunning = false;\n domConsole.err(error.message);\n console.log(error);\n if (!is_iassign) {\n parent.getEvaluationCallback(0);\n } else {\n is_iassign = false;\n }\n }\n return 0;\n}\n\nfunction runCode () {\n if (isRunning) {\n return;\n }\n let strCode = null;\n\n if (settingsProgrammingTypes == \"textual\") {\n strCode = TextEditor.getCode();\n } else {\n strCode = CodeManagement.generate();\n }\n\n if (strCode == null) {\n return;\n }\n \n toggleConsole(true);\n\n // if(domConsole == null)\n // domConsole = new DOMConsole(\"#ivprog-term\");\n //$(\"#ivprog-term\").slideDown(500);\n try {\n const data = SemanticAnalyser.analyseFromSource(strCode);\n proc = new IVProgProcessor(data);\n proc.registerInput(domConsole);\n proc.registerOutput(domConsole);\n $(\"#ivprog-term\").addClass('ivprog-term-active');\n isRunning = true;\n proc.interpretAST().then( _ => {\n scheduleCall(() => {\n if(domConsole.pending_writes.length == 0) {\n if(proc.mode === Modes.ABORT) {\n domConsole.info(LocalizedStrings.getMessage(\"aborted_execution\")); \n } else {\n domConsole.info(LocalizedStrings.getMessage(\"success_execution\"));\n }\n $(\"#ivprog-term\").removeClass('ivprog-term-active');\n isRunning = false;\n proc = null;\n showRunButton();\n return true;\n }\n return false;\n },100);\n }).catch(err => {\n scheduleCall(() => {\n if(domConsole.pending_writes.length == 0) {\n if(err instanceof Error) {\n domConsole.err(err.message);\n } else {\n domConsole.err(err);\n }\n $(\"#ivprog-term\").removeClass('ivprog-term-active');\n isRunning = false;\n proc = null;\n showRunButton();\n return true;\n }\n return false;\n },100);\n }) \n } catch (error) {\n scheduleCall(() => {\n if(domConsole.pending_writes.length == 0) {\n isRunning = false;\n proc = null;\n showRunButton();\n domConsole.err(error.message);\n console.log(error);\n return true;\n }\n return false;\n },100);\n }\n \n}\n\nfunction toggleConsole (is_running) {\n\n if (is_running) {\n $('.ivprog-term-div').css('display', 'block');\n $('#ivprog-term').css('min-height', '160px');\n if(domConsole != null)\n domConsole.focus();\n //$('#ivprog-term').css('margin-top', '-170px');\n return;\n } else {\n domConsole.hide();\n return;\n }\n\n if ($('#ivprog-term').css('min-height') == '160px') {\n // esconder\n $('.ivprog-term-div').css('display', 'none');\n $('#ivprog-term').css('min-height', '0');\n //$('#ivprog-term').css('margin-top', '-30px');\n //$('#ivprog-term').css('padding', '5px');\n } else {\n // mostrar\n $('.ivprog-term-div').css('display', 'block');\n $('#ivprog-term').css('min-height', '160px');\n //$('#ivprog-term').css('margin-top', '-170px');\n }\n}\n\n// function waitToCloseConsole () {\n// domConsole.info(\"Aperte qualquer tecla para fechar...\");\n// const p = new Promise((resolve, _) => {\n// domConsole.requestInput(resolve, true);\n// });\n// p.then( _ => {\n// domConsole.dispose();\n// domConsole = null;\n// $(\"#ivprog-term\").hide();\n// })\n// }\n\nfunction toggleTextualCoding () {\n let code = null;\n if (settingsProgrammingTypes != \"textual\") {\n code = CodeManagement.generate();\n if (code == null) {\n return;\n }\n }\n\n\n $('.ivprog_visual_panel').css('display', 'none');\n $('.ivprog_textual_panel').css('display', 'block');\n $('.ivprog_textual_panel').removeClass('loading');\n TextEditor.updateEditor();\n if (code != null)\n TextEditor.setCode(code);\n //$('.ivprog_textual_code').text(code);\n\n $('.visual_coding_button').removeClass('active');\n $('.textual_coding_button').addClass('active');\n}\n\nfunction toggleVisualCoding () {\n $('.ivprog_textual_panel').addClass('loading');\n $('.ivprog_textual_panel').css('display', 'none');\n $('.ivprog_visual_panel').css('display', 'block');\n\n $('.textual_coding_button').removeClass('active');\n $('.visual_coding_button').addClass('active');\n}\n\nfunction removeParameter (function_obj, parameter_obj, parameter_container) {\n registerUserEvent(parameter_obj.name, ActionTypes.REMOVE_FUNCTION_PARAM, function_obj.name);\n var index = function_obj.parameters_list.indexOf(parameter_obj);\n if (index > -1) {\n window.insertContext = true;\n function_obj.parameters_list.splice(index, 1);\n }\n $(parameter_container).fadeOut();\n}\n\nfunction updateParameterType (parameter_obj, new_type, function_name, new_dimensions = 0) {\n registerUserEvent(parameter_obj.name, ActionTypes.CHANGE_PARAM_TYPE, function_name, new_type, new_dimensions);\n parameter_obj.type = new_type;\n parameter_obj.dimensions = new_dimensions;\n\n if (new_dimensions > 0) {\n parameter_obj.rows = new_dimensions;\n parameter_obj.columns = 2;\n }\n\n}\n\nfunction renderParameter (function_obj, parameter_obj, function_container) {\n let ret = \"\";\n\n ret += '<div class=\"ui label function_name_parameter pink\"><i class=\"ui icon ellipsis vertical inverted\"></i>';\n\n ret += '<div class=\"ui dropdown parameter_type\">';\n\n if (parameter_obj.dimensions > 0) {\n ret += '<div class=\"text\">'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(`type_${parameter_obj.type.toLowerCase()}`);\n if (parameter_obj.dimensions == 1) {\n ret += ' [ ] ';\n } else {\n ret += ' [ ] [ ] ';\n }\n ret += '</div>';\n } else {\n ret += '<div class=\"text\">'+LocalizedStrings.getUI(`type_${parameter_obj.type.toLowerCase()}`)+'</div>';\n }\n\n ret += '<div class=\"menu\">';\n\n \n for (const tm in Types) {\n if (tm == Types.VOID.toUpperCase()) {\n continue;\n }\n ret += '<div class=\"item ' + (parameter_obj.type == tm.toLowerCase() && parameter_obj.dimensions == 0 ? ' selected ' : '') + '\" data-type=\"'+tm+'\" >'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n }\n\n\n ret += '<div class=\"item ' + (parameter_obj.dimensions == 1 ? ' selected ' : '') + '\">'\n + '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('vector')\n + '<div class=\"menu\">';\n\n for (var tm in Types) {\n if (tm == Types.VOID.toUpperCase()) {\n continue;\n }\n\n ret += '<div class=\"item ' + (parameter_obj.type == tm.toLowerCase() && parameter_obj.dimensions == 1 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"1\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n }\n ret += '</div></div>';\n\n\n ret += '<div class=\"item ' + (parameter_obj.dimensions == 2 ? ' selected ' : '') + '\">'\n + '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('matrix')\n + '<div class=\"menu\">';\n\n for (var tm in Types) {\n if (tm == Types.VOID.toUpperCase()) {\n continue;\n }\n\n ret += '<div class=\"item ' + (parameter_obj.type == tm.toLowerCase() && parameter_obj.dimensions == 2 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('matrix')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"2\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n }\n ret += '</div></div>';\n\n ret += '</div></div>';\n\n ret += '<div class=\"parameter_div_edit\"><span class=\"span_name_parameter label_enable_name_parameter\">'+parameter_obj.name+'</span></div> ';\n\n ret += ' <i class=\"yellow inverted icon times remove_parameter\"></i></div>';\n\n ret = $(ret);\n \n function_container.find('.container_parameters_list').append(ret);\n\n ret.find('.remove_parameter').on('click', function(e){\n removeParameter(function_obj, parameter_obj, ret);\n });\n \n ret.find('.ui.dropdown.parameter_type').dropdown({\n onChange: function(_, __, $selectedItem) {\n if ($selectedItem.data('dimensions')) {\n updateParameterType(parameter_obj, Types[$selectedItem.data('type')], function_obj.name, $selectedItem.data('dimensions'));\n } else {\n updateParameterType(parameter_obj, Types[$selectedItem.data('type')], function_obj.name);\n }\n },\n selectOnKeydown: false\n });\n\n ret.find('.parameter_div_edit').on('click', function(e){\n registerUserEvent(function_obj.name, ActionTypes.ENTER_CHANGE_PARAM_NAME, parameter_obj.name);\n enableNameParameterUpdate(parameter_obj, ret, function_obj);\n });\n\n return ret;\n}\n\nfunction updateParameterName (parameter_var, new_name, parameter_obj_dom, function_obj) {\n \n if (parameter_var.name == new_name) {\n return;\n }\n\n if (isValidIdentifier(new_name)) {\n if (variableNameAlreadyExists(new_name, function_obj)) {\n Utils.renderErrorMessage(parameter_obj_dom.find('.parameter_div_edit'), LocalizedStrings.getError('inform_valid_param_duplicated', [new_name, function_obj.name]));\n } else {\n registerUserEvent(function_obj.name, ActionTypes.RENAME_FUNCTION_PARAM, parameter_var.name, new_name);\n parameter_var.name = new_name;\n }\n } else {\n Utils.renderErrorMessage(parameter_obj_dom.find('.parameter_div_edit'), LocalizedStrings.getError('inform_valid_identifier'));\n }\n}\n\nfunction variableNameAlreadyExists (name_var, function_obj) {\n\n if (function_obj.parameters_list) {\n for (var i = 0; i < function_obj.parameters_list.length; i++) {\n if (function_obj.parameters_list[i].name == name_var) {\n return true;\n }\n }\n }\n\n if (function_obj.variables_list) {\n for (var i = 0; i < function_obj.variables_list.length; i++) {\n if (function_obj.variables_list[i].name == name_var) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nfunction updateFunctionName (function_var, new_name, function_obj_dom) {\n \n if (function_var.name == new_name) {\n return;\n }\n \n if (isValidIdentifier(new_name)) {\n if (functionNameAlreadyExists(new_name)) {\n Utils.renderErrorMessage(function_obj_dom.find('.function_name_div'), LocalizedStrings.getError('inform_valid_function_duplicated', [new_name]));\n } else {\n registerUserEvent(function_var.name, ActionTypes.RENAME_FUNCTION, new_name);\n function_var.name = new_name;\n }\n } else {\n Utils.renderErrorMessage(function_obj_dom.find('.function_name_div'), LocalizedStrings.getError('inform_valid_identifier'));\n }\n}\n\nfunction functionNameAlreadyExists (function_name) {\n for (var i = 0; i < window.program_obj.functions.length; i++) {\n if (window.program_obj.functions[i].name == function_name) {\n return true;\n }\n }\n return false;\n}\n\nvar opened_name_parameter = false;\nvar opened_input_parameter = null;\nfunction enableNameParameterUpdate (parameter_obj, parent_node, function_obj) {\n if (opened_name_parameter) {\n opened_input_parameter.focus();\n return;\n }\n opened_name_parameter = true;\n parent_node = $(parent_node);\n\n var input_field;\n\n parent_node.find('.span_name_parameter').text('');\n input_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"+parameter_obj.name+\"' />\" );\n input_field.insertBefore(parent_node.find('.span_name_parameter'));\n\n input_field.on('input', function() {\n var inputWidth = input_field.textWidth()+10;\n opened_input_parameter = input_field;\n input_field.focus();\n\n var tmpStr = input_field.val();\n input_field.val('');\n input_field.val(tmpStr);\n\n input_field.css({\n width: inputWidth\n })\n }).trigger('input');\n\n input_field.focusout(function() {\n /// update array:\n if (input_field.val().trim()) {\n updateParameterName(parameter_obj, input_field.val().trim(), parent_node, function_obj);\n parent_node.find('.span_name_parameter').text(parameter_obj.name);\n }\n input_field.off();\n input_field.remove();\n\n /// update elements:\n opened_name_parameter = false;\n opened_input_parameter = false;\n });\n\n input_field.on('keydown', function(e) {\n var code = e.keyCode || e.which;\n if(code == 13) {\n if (input_field.val().trim()) {\n updateParameterName(parameter_obj, input_field.val().trim(), parent_node, function_obj);\n parent_node.find('.span_name_parameter').text(parameter_obj.name);\n }\n input_field.off();\n input_field.remove();\n\n /// update elements:\n opened_name_parameter = false;\n opened_input_parameter = false;\n\n }\n if(code == 27) {\n parent_node.find('.span_name_parameter').text(parameter_obj.name);\n input_field.off();\n input_field.remove();\n\n /// update elements:\n opened_name_parameter = false;\n opened_input_parameter = false;\n }\n });\n input_field.select();\n}\n\nvar opened_name_function = false;\nvar opened_input = null;\nvar previousPadding = null;\nfunction enableNameFunctionUpdate (function_obj, parent_node) {\n if (opened_name_function) {\n opened_input.focus();\n return;\n }\n parent_node = $(parent_node);\n parent_node.find('.span_name_function').text('');\n var input_field;\n if (!previousPadding) {\n previousPadding = parent_node.find('.span_name_function').css('padding-left');\n }\n parent_node.find('.span_name_function').css('padding-left', '0');\n parent_node.find('.span_name_function').css('padding-right', '0');\n \n input_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"+function_obj.name+\"' />\" );\n input_field.insertBefore(parent_node.find('.span_name_function'));\n\n input_field.on('input', function() {\n var inputWidth = input_field.textWidth()+10;\n opened_input = input_field;\n input_field.focus();\n\n var tmpStr = input_field.val();\n input_field.val('');\n input_field.val(tmpStr);\n\n input_field.css({\n width: inputWidth\n })\n }).trigger('input');\n\n input_field.focusout(function() {\n /// update array:\n if (input_field.val().trim()) {\n updateFunctionName(function_obj, input_field.val().trim(), parent_node);\n }\n input_field.off();\n input_field.remove();\n parent_node.find('.span_name_function').css('padding-left', previousPadding);\n parent_node.find('.span_name_function').css('padding-right', previousPadding);\n parent_node.find('.span_name_function').text(function_obj.name);\n\n /// update elements:\n opened_name_function = false;\n opened_input = false;\n });\n\n input_field.on('keydown', function(e) {\n var code = e.keyCode || e.which;\n if(code == 13) {\n if (input_field.val().trim()) {\n updateFunctionName(function_obj, input_field.val().trim(), parent_node);\n }\n input_field.off();\n input_field.remove();\n parent_node.find('.span_name_function').css('padding-left', previousPadding);\n parent_node.find('.span_name_function').css('padding-right', previousPadding);\n parent_node.find('.span_name_function').text(function_obj.name);\n\n /// update elements:\n opened_name_function = false;\n opened_input = false;\n }\n if(code == 27) {\n\n input_field.off();\n input_field.remove();\n parent_node.find('.span_name_function').css('padding-left', previousPadding);\n parent_node.find('.span_name_function').css('padding-right', previousPadding);\n parent_node.find('.span_name_function').text(function_obj.name);\n\n /// update elements:\n opened_name_function = false;\n opened_input = false;\n }\n });\n input_field.select();\n \n}\n\nexport function addFunctionChangeListener (callback) {\n functionsChangeListeners.push(callback);\n return functionsChangeListeners.length - 1;\n}\n\nexport function addGlobalChangeListener (callback) {\n globalChangeListeners.push(callback);\n return globalChangeListeners.length - 1;\n}\n\nexport function removeGlobalListener (index) {\n globalChangeListeners.splice(index, 1);\n}\n\nexport function removeFunctionListener (index) {\n functionsChangeListeners.splice(index);\n}\n\nfunction scheduleCall (callback, time) {\n const scheduled_call = () => {\n const id = setInterval(() => {\n if(callback()) {\n clearInterval(id);\n }\n }, time)\n }\n scheduled_call();\n}\n\nfunction showRunButton () {\n document.getElementById('run_button').style.display = 'inline';\n document.getElementById('stop_button').style.display = 'none';\n}\n\nfunction showStopButton () {\n document.getElementById('run_button').style.display = 'none';\n document.getElementById('stop_button').style.display = 'inline';\n}\n\nfunction stopExecution () {\n domConsole.clearPendingWrites();\n domConsole.cancelPendingInputRequests();\n if(!isRunning) {\n return;\n }\n proc.mode = Modes.ABORT;\n}","import { Types } from './types';\nimport * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as Utils from './utils';\nimport { registerUserEvent, registerSystemEvent, ActionTypes } from \"./../services/userLog\";\n\nvar counter_new_globals = 0;\n\nexport function addGlobal (program, is_from_click = false) {\n\n\tvar new_global = new Models.Variable(Types.INTEGER, LocalizedStrings.getUI('new_global') + '_' + counter_new_globals, 0);\n\tcounter_new_globals ++;\n\n\tprogram.addGlobal(new_global);\n\n\tregisterUserEvent(new_global.name, ActionTypes.INSERT_GLOBAL_VAR);\n\tvar newe = renderGlobal(new_global);\n\n\tif (is_from_click) {\n\t\tnewe.css('display', 'none');\n\t\tnewe.fadeIn();\n\t}\n\n}\n\nfunction toggleConstant (global_var) {\n\tglobal_var.is_constant = !global_var.is_constant;\n\tregisterUserEvent(global_var.name, ActionTypes.SET_GLOBAL_CONST);\n}\n\nfunction updateName (global_var, new_name, global_obj_dom) {\n\n\tif (global_var.name == new_name) {\n\t\treturn;\n\t}\n\n\tif (isValidIdentifier(new_name)) {\n\t\tif (globalNameAlreadyExists(new_name)) {\n\t\t\tUtils.renderErrorMessage(global_obj_dom.find('.editing_name_var'), LocalizedStrings.getUI('inform_valid_global_duplicated'));\n\t\t} else {\n\t\t\tregisterUserEvent(global_var.name, ActionTypes.RENAME_GLOBAL_VAR, new_name);\n\t\t\tglobal_var.name = new_name;\n\t\t}\n\t} else {\n\t\tUtils.renderErrorMessage(global_obj_dom.find('.editing_name_var'), LocalizedStrings.getUI('inform_valid_name'));\n\t}\n}\n\nfunction globalNameAlreadyExists (global_name) {\n for (var i = 0; i < window.program_obj.globals.length; i++) {\n if (window.program_obj.globals[i].name == global_name) {\n return true;\n }\n }\n return false;\n}\n\nfunction isValidIdentifier (identifier_str) {\n\treturn /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(identifier_str);\n}\n\nfunction updateType (global_var, new_type, new_dimensions = 0) {\n\tglobal_var.type = new_type;\n\tglobal_var.dimensions = new_dimensions;\n\n\tif (new_dimensions > 0) {\n\t\tglobal_var.rows = new_dimensions;\n\t\tglobal_var.columns = 2;\n\t}\n\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_VAR_TYPE, new_type,\n\t\tnew_dimensions, global_var.rows, global_var.columns);\n\tupdateInitialValues(global_var);\n}\n\nfunction removeGlobal (global_var, global_container) {\n\tvar index = window.program_obj.globals.indexOf(global_var);\n\tif (index > -1) {\n\t\twindow.insertContext = true;\n\t window.program_obj.globals.splice(index, 1);\n\t}\n\tregisterUserEvent(global_var.name, ActionTypes.REMOVE_GLOBAL_VAR);\n\tglobal_container.children().off();\n\tglobal_container.off();\n\tglobal_container.fadeOut();\n}\n\nfunction updateInitialValues (global_var) {\n\tif (global_var.type == Types.INTEGER) {\n\t\tif (global_var.dimensions == 0) {\n\t\t\tglobal_var.value = 0;\n\t\t}\n\t\tif (global_var.dimensions == 1) {\n\t\t\tglobal_var.value = [0, 0];\n\t\t}\n\t\tif (global_var.dimensions == 2) {\n\t\t\tglobal_var.value = [[0, 0], [0, 0]];\n\t\t}\n\t}\n\n\tif (global_var.type == Types.REAL) {\n\t\tif (global_var.dimensions == 0) {\n\t\t\tglobal_var.value = 0.0;\n\t\t}\n\t\tif (global_var.dimensions == 1) {\n\t\t\tglobal_var.value = [0.0, 0.0];\n\t\t}\n\t\tif (global_var.dimensions == 2) {\n\t\t\tglobal_var.value = [[0.0, 0.0], [0.0, 0.0]];\n\t\t}\n\t}\n\n\tif (global_var.type == Types.TEXT) {\n\t\tif (global_var.dimensions == 0) {\n\t\t\tglobal_var.value = LocalizedStrings.getUI('textvar_default_value');\n\t\t}\n\t\tif (global_var.dimensions == 1) {\n\t\t\tglobal_var.value = [LocalizedStrings.getUI('textvar_default_value'), LocalizedStrings.getUI('textvar_default_value')];\n\t\t}\n\t\tif (global_var.dimensions == 2) {\n\t\t\tglobal_var.value = [[LocalizedStrings.getUI('textvar_default_value'), LocalizedStrings.getUI('textvar_default_value')], \n\t\t\t\t\t\t\t\t\t[LocalizedStrings.getUI('textvar_default_value'), LocalizedStrings.getUI('textvar_default_value')]];\n\t\t}\n\t}\n\n\tif (global_var.type == Types.BOOLEAN) {\n\t\tif (global_var.dimensions == 0) {\n\t\t\tglobal_var.value = true;\n\t\t}\n\t\tif (global_var.dimensions == 1) {\n\t\t\tglobal_var.value = [true, true];\n\t\t}\n\t\tif (global_var.dimensions == 2) {\n\t\t\tglobal_var.value = [[true, true], [true, true]];\n\t\t}\n\t}\n\tregisterSystemEvent(function_name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.name,\n\t\tglobal_var.value);\n}\n\nfunction alternateBooleanGlobalValue (global_var, value_container) {\n\tglobal_var.value = !global_var.value;\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(`logic_value_${global_var.value}`));\n}\n\nfunction alternateBooleanGlobalVectorValue (global_var, index, value_container) {\n\tglobal_var.value[index] = !global_var.value[index];\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(`logic_value_${global_var.value[index]}`));\n}\n\nfunction removeGlobalColumnVector (global_var) {\n\tif (global_var.columns == 0) {\n\t\treturn;\n\t}\n\n\tglobal_var.columns --;\n\tglobal_var.value.splice(global_var.value.length - 1, 1);\n}\n\nfunction addGlobalColumnVector (global_var) {\n\tglobal_var.columns ++;\n\n\tif (global_var.type == Types.INTEGER) {\n\t\tglobal_var.value.push(0);\n\t}\n\tif (global_var.type == Types.REAL) {\n\t\tglobal_var.value.push(0.0);\n\t}\n\tif (global_var.type == Types.TEXT) {\n\t\tglobal_var.value.push(LocalizedStrings.getUI('textvar_default_value'));\n\t}\n\tif (global_var.type == Types.BOOLEAN) {\n\t\tglobal_var.value.push(true);\n\t}\n}\n\nfunction removeColumnGlobalMatrix (global_var) {\n\tif (global_var.columns == 0) {\n\t\treturn;\n\t}\n\n\tglobal_var.columns --;\n\n\tfor (var i = 0; i < global_var.rows; i++) {\n\t\tglobal_var.value[i].splice(global_var.value[i].length - 1, 1);\n\t}\n}\n\nfunction addColumnGlobalMatrix (global_var) {\n\tglobal_var.columns ++;\n\n\tif (global_var.type == Types.INTEGER) {\n\t\tfor (var i = 0; i < global_var.rows; i++) {\n\t\t\tglobal_var.value[i].push(0);\n\t\t}\n\t}\n\tif (global_var.type == Types.REAL) {\n\t\tfor (var i = 0; i < global_var.rows; i++) {\n\t\t\tglobal_var.value[i].push(0.0);\n\t\t}\n\t}\n\tif (global_var.type == Types.TEXT) {\n\t\tfor (var i = 0; i < global_var.rows; i++) {\n\t\t\tglobal_var.value[i].push(LocalizedStrings.getUI('textvar_default_value'));\n\t\t}\n\t}\n\tif (global_var.type == Types.BOOLEAN) {\n\t\tfor (var i = 0; i < global_var.rows; i++) {\n\t\t\tglobal_var.value[i].push(true);\n\t\t}\n\t}\n}\n\nfunction removeLineGlobalMatrix (global_var) {\n\tif (global_var.rows == 0) {\n\t\treturn;\n\t}\n\n\tglobal_var.rows --;\n\tglobal_var.value.splice(global_var.value.length - 1, 1);\n}\n\nfunction addLineGlobalMatrix (global_var) {\n\tglobal_var.rows ++;\n\n\tif (global_var.type == Types.INTEGER) {\n\t\tvar n_l = [];\n\t\tfor (var i = 0; i < global_var.columns; i++) {\n\t\t\tn_l.push(0);\n\t\t}\n\t\tglobal_var.value.push(n_l);\n\t}\n\tif (global_var.type == Types.REAL) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < global_var.columns; i++) {\n\t\t\tn_l.push(0.0);\n\t\t}\n\t\tglobal_var.value.push(n_l);\n\t}\n\n\tif (global_var.type == Types.TEXT) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < global_var.columns; i++) {\n\t\t\tn_l.push(LocalizedStrings.getUI('textvar_default_value'));\n\t\t}\n\t\tglobal_var.value.push(n_l);\n\t}\n\n\tif (global_var.type == Types.BOOLEAN) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < global_var.columns; i++) {\n\t\t\tn_l.push(true);\n\t\t}\n\t\tglobal_var.value.push(n_l);\n\t}\n}\n\nfunction alternateBooleanGlobalMatrixValue (global_var, row, index, value_container) {\n\tglobal_var.value[row][index] = !global_var.value[row][index];\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(`logic_value_${global_var.value[row][index]}`));\n}\n\nfunction renderValues (global_var, global_container) {\n\n\tvar ret = \"\";\n\tvar j = 0;\n\n\tif (global_var.dimensions == 0) {\n\t\tif (global_var.type == Types.REAL) {\n\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable simple_var\">'+global_var.value.toFixed(1)+'</span> </div> ';\n\t\t} else {\n\t\t\tif (global_var.type == Types.BOOLEAN) {\n\t\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable boolean_simple_type\">'+LocalizedStrings.getUI(`logic_value_${global_var.value}`)+'</span> </div> ';\n\t\t\t} else {\n\t\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable simple_var\">'+global_var.value+'</span> </div> ';\n\t\t\t}\n\t\t}\n\t} else {\n\t\tret += '<table class=\"tabela_var\">';\n\n\t\tif (global_var.dimensions == 1) {\n\t\t\tret += '<tr>';\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tfor (var k = 0; k < global_var.columns; k++) {\n\t\t\t\t\tret += '<td><span class=\"span_value_variable vector_var\" data-index=\"'+k+'\">'+global_var.value[k].toFixed(1)+'</span></td>';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var k = 0; k < global_var.columns; k++) {\n\t\t\t\t\tif (global_var.type == Types.BOOLEAN) {\n\t\t\t\t\t\tret += '<td><span class=\"span_value_variable boolean_vector_var\" data-index=\"'+k+'\">'+LocalizedStrings.getUI(`logic_value_${global_var.value[k]}`)+'</span></td>';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret += '<td><span class=\"span_value_variable vector_var\" data-index=\"'+k+'\">'+global_var.value[k]+'</span>'+'</td>';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tret += '</tr>';\n\t\t\tret += '</table>';\n\n\t\t\tret += '<div class=\"buttons_manage_columns\"><i class=\"ui icon minus square outline remove_global_vector_column\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_vector_column\"></i></div>';\n\t\t}\n\n\t\tif (global_var.dimensions == 2) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tfor (var l = 0; l < global_var.rows; l++) {\n \t\t\t\tret += '<tr>';\n \t\t\t\tfor (var k = 0; k < global_var.columns; k++) {\n \t\t\t\t\tret += '<td><span class=\"span_value_variable matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+global_var.value[l][k].toFixed(1)+'</span>'+'</td>';\n \t\t\t\t} \n \t\t\t\tret += '</tr>';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var l = 0; l < global_var.rows; l++) {\n \t\t\t\tret += '<tr>';\n \t\t\t\tfor (var k = 0; k < global_var.columns; k++) {\n \t\t\t\t\tif (global_var.type == Types.BOOLEAN) { \n \t\t\t\t\t\tret += '<td><span class=\"span_value_variable boolean_matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+LocalizedStrings.getUI(`logic_value_${global_var.value[l][k]}`)+'</span></td>';\n \t\t\t\t\t} else {\n \t\t\t\t\t\tret += '<td><span class=\"span_value_variable matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+global_var.value[l][k]+'</span></td>';\n \t\t\t\t\t}\n \t\t\t\t} \n \t\t\t\tret += '</tr>';\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (global_var.rows == 0) {\n\t\t\t\tret += '<tr><td></td></tr>';\n\t\t\t}\n\t\t\tret += '<tr><td colspan=\"'+global_var.columns+'\" class=\"tr_manage_lines\"><i class=\"ui icon minus square outline remove_global_matrix_line\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_matrix_line\"></i></td></tr>';\n\t\t\tret += '</table>';\n\n\t\t\tret += '<div class=\"buttons_manage_columns\"><i class=\"ui icon minus square outline remove_global_matrix_column\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_matrix_column\"></i></div>';\n\t\t}\n\t\t\n\t}\n\n\tglobal_container.find( \".div_valor_var\" ).html('');\n\n\tret = $(ret);\n\n\tret.find('.span_value_variable').data('associatedOject', global_var);\n\n\tret.find( \".boolean_simple_type\" ).on('click', function(e){\n\t\talternateBooleanGlobalValue(global_var, this.parentNode);\n\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t});\n\tret.find( \".simple_var\" ).on('click', function(e){\n\t\tregisterUserEvent(global_var.name, ActionTypes.ENTER_CHANGE_GLOBAL_VALUE);\n\t\tenableGlobalValueUpdate(global_var, this.parentNode);\n\t});\n\n\tret.find( \".boolean_vector_var\" ).on('click', function(e){\n\t\talternateBooleanGlobalVectorValue(global_var, $(this).data('index'), this.parentNode);\n\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t});\n\tret.find( \".vector_var\" ).on('click', function(e){\n\t\tregisterUserEvent(global_var.name, ActionTypes.ENTER_CHANGE_GLOBAL_VALUE);\n\t\tenableGlobalVectorValueUpdate(global_var, $(this).data('index'), this.parentNode);\n\t});\n\tret.find( \".remove_global_vector_column\" ).on('click', function(e){\n\t\tremoveGlobalColumnVector(global_var);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_TYPE,\n\t\t\tglobal_var.type, global_var.dimensions, global_var.rows, global_var.columns);\n\t\tregisterSystemEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".add_global_vector_column\" ).on('click', function(e){\n\t\taddGlobalColumnVector(global_var);\n\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_TYPE,\n\t\t\tglobal_var.type, global_var.dimensions, global_var.rows, global_var.columns);\n\t\tregisterSystemEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".remove_global_matrix_column\" ).on('click', function(e){\n\t\tremoveColumnGlobalMatrix(global_var);\n\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_TYPE,\n\t\t\tglobal_var.type, global_var.dimensions, global_var.rows, global_var.columns);\n\t\tregisterSystemEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".add_global_matrix_column\" ).on('click', function(e){\n\t\taddColumnGlobalMatrix(global_var);\n\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_TYPE,\n\t\t\tglobal_var.type, global_var.dimensions, global_var.rows, global_var.columns);\n\t\tregisterSystemEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".remove_global_matrix_line\" ).on('click', function(e){\n\t\tremoveLineGlobalMatrix(global_var);\n\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_TYPE,\n\t\t\tglobal_var.type, global_var.dimensions, global_var.rows, global_var.columns);\n\t\tregisterSystemEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".add_global_matrix_line\" ).on('click', function(e){\n\t\taddLineGlobalMatrix(global_var);\n\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_TYPE,\n\t\t\tglobal_var.type, global_var.dimensions, global_var.rows, global_var.columns);\n\t\tregisterSystemEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".boolean_matrix_var\" ).on('click', function(e){\n\t\talternateBooleanGlobalMatrixValue(global_var, $(this).data('row'), $(this).data('index'), this.parentNode);\n\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t});\n\tret.find( \".matrix_var\" ).on('click', function(e){\n\t\tregisterUserEvent(global_var.name, ActionTypes.ENTER_CHANGE_GLOBAL_VALUE);\n\t\tenableGlobalMatrixValueUpdate(global_var, $(this).data('row'), $(this).data('index'), this.parentNode);\n\t});\n\tglobal_container.find( \".div_valor_var\" ).append(ret);\n\n\n\tupdateColumnsAndRowsText(global_container, global_var);\n\n}\n\nfunction addHandlers (global_container) {\n\tvar global_var = global_container.data('associatedOject'); \n\t// Manage constant option:\n\tglobal_container.find( \".alternate_constant\" ).on('click', function(e){\n\t\ttoggleConstant(global_var);\n\n\t\t$( this ).removeClass( \"on off\" );\n\t\tif (global_var.is_constant) {\n\t\t\t$( this ).addClass( \"on\" );\n\t\t} else {\n\t\t\t$( this ).addClass( \"off\" );\n\t\t}\n\t});\n\n\t// Manage global name: \n\tglobal_container.find( \".editing_name_var\" ).on('click', function(e){\n\t\tregisterUserEvent(global_var.name, ActionTypes.ENTER_CHANGE_GLOBAL_NAME);\n\t\tenableNameUpdate(global_container);\n\t});\n\n\t// Menu to change type:\n\tglobal_container.find('.ui.dropdown.global_type').dropdown({\n\t onChange: function(_, __, $selectedItem) {\n\t \tif ($selectedItem.data('dimensions')) {\n\t \t\tupdateType(global_var, Types[$selectedItem.data('type')], $selectedItem.data('dimensions'));\n\t \t} else {\n\t \t\tupdateType(global_var, Types[$selectedItem.data('type')]);\n\t \t}\n\n\t \trenderValues(global_var, global_container);\n\n\t },\n\t selectOnKeydown: false\n\t});\n\n\t// Remove global: \n\tglobal_container.find( \".remove_global\" ).on('click', function(e){\n\t\tremoveGlobal(global_var, global_container);\n\t});\n\n}\n\nfunction updateColumnsAndRowsText (global_container, global_var) {\n\tvar prev = global_container.find('.text').text().split('[');\n\tif (prev.length == 2) {\n\t\tvar ff = prev[0] + '[ ' + global_var.columns + ' ] ';\n\t\tglobal_container.find('.text').empty();\n\t\tglobal_container.find('.text').text(ff);\n\t}\n\tif (prev.length == 3) {\n\t\tvar ff = prev[0] + '[ ' + global_var.columns + ' ] [ ' + global_var.rows + ' ] ';\n\t\tglobal_container.find('.text').empty();\n\t\tglobal_container.find('.text').text(ff);\n\t}\n}\n\nexport function renderGlobal (global_var) {\n\n\tvar element = '<div class=\"ui label global_container pink\"><i class=\"ui icon ellipsis vertical inverted\"></i><div class=\"global_const\">const: ';\n\n\telement += '<i class=\"ui icon toggle '+(global_var.is_constant?\"on\":\"off\")+' alternate_constant\"></i></div>';\n \t\n \telement += '<div class=\"ui dropdown global_type\">';\n\n \tif (global_var.dimensions == 1) {\n \t\telement += '<div class=\"text\">'+ LocalizedStrings.getUI('vector')+ ': ' + LocalizedStrings.getUI(`type_${global_var.type}`);\n \t\telement += ' [ <span class=\"dimensions_0\"></span> ] ';\n \t\telement += '</div>';\n \t} else if (global_var.dimensions == 2) {\n \t\telement += '<div class=\"text\">'+ LocalizedStrings.getUI('matrix')+ ': ' + LocalizedStrings.getUI(`type_${global_var.type}`);\n \t\telement += ' [ <span class=\"dimensions_0\"></span> ] [ <span class=\"dimensions_1\"></span> ] ';\n \t\telement += '</div>';\n \t} else {\n \t\telement += '<div class=\"text\">' + LocalizedStrings.getUI(`type_${global_var.type.toLowerCase()}`) + '</div>';\n \t}\n\telement += '<div class=\"menu\">';\n\n\tfor (var tm in Types) {\n \t\tif (tm == Types.VOID.toUpperCase()) {\n \t\t\tcontinue;\n \t\t}\n \t\telement += '<div class=\"item ' + (global_var.type == tm.toLowerCase() && global_var.dimensions == 0 ? ' selected ' : '') + '\" data-type=\"'+tm+'\" >'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n\t}\n\n\n\telement += '<div class=\"item ' + (global_var.dimensions == 1 ? ' selected ' : '') + '\">'\n\t\t+ '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('vector')\n\t\t+ '<div class=\"menu\">';\n\n\tfor (var tm in Types) {\n \t\tif (tm == Types.VOID.toUpperCase()) {\n \t\t\tcontinue;\n \t\t}\n\n \t\telement += '<div class=\"item ' + (global_var.type == tm.toLowerCase() && global_var.dimensions == 1 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"1\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n \t}\n\telement += '</div></div>';\n\n\n\telement += '<div class=\"item ' + (global_var.dimensions == 2 ? ' selected ' : '') + '\">'\n\t\t+ '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('matrix')\n\t\t+ '<div class=\"menu\">';\n\n\tfor (var tm in Types) {\n \t\tif (tm == Types.VOID.toUpperCase()) {\n \t\t\tcontinue;\n \t\t}\n\n \t\telement += '<div class=\"item ' + (global_var.type == tm.toLowerCase() && global_var.dimensions == 2 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('matrix')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"2\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n \t}\n\telement += '</div></div>';\n\n element += '</div></div> <div class=\"editing_name_var\"> <span class=\"span_name_variable enable_edit_name_parameter\">'+global_var.name+'</span> </div> <span class=\"character_equals\"> <— </span> ';\n\n\telement += '<div class=\"ui div_valor_var\">'+global_var.value+'</div>'; \n\n\telement += ' <i class=\"yellow inverted icon times remove_global\"></i></div>';\n\n\tvar complete_element = $(element);\n\n\tcomplete_element.data('associatedOject', global_var);\n\n\t$('.list_globals').append(complete_element);\n\n\taddHandlers(complete_element);\n\n\trenderValues(global_var, complete_element);\n\n\tif (global_var.dimensions == 1) {\n\t\tcomplete_element.find('.dimensions_0').text(global_var.columns);\n\t}\n\tif (global_var.dimensions == 2) {\n\t\tcomplete_element.find('.dimensions_0').text(global_var.columns);\n\t\tcomplete_element.find('.dimensions_1').text(global_var.rows);\n\t}\n\n\treturn complete_element;\n}\n\nvar opened_name_value_matrix_global_v = false;\nvar opened_input_value_matrix_global_v = null;\nfunction enableGlobalMatrixValueUpdate (global_var, row, index, parent_node) {\n\tif (opened_name_value_matrix_global_v) {\n\t\topened_input_value_matrix_global_v.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_matrix_global_v = true;\n\n\tparent_node.find('.span_value_variable').text('');\n\n\tvar input_field;\n\n\tif (global_var.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ global_var.value[row][index].toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ global_var.value[row][index] + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t var inputWidth = input_field.textWidth()+10;\n\t opened_input_value_matrix_global_v = input_field;\n\t input_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t input_field.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\t/// update array:\n\t\tif (input_field.val().trim()) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tglobal_var.value[row][index] = parseFloat(input_field.val().trim());\n\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\tglobal_var.value[row][index] = parseInt(input_field.val().trim());\n\t\t\t\t} else {\n\t\t\t\t\tglobal_var.value[row][index] = input_field.val().trim();\n\t\t\t\t}\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t}\n\t\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\t} else {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t}\n\t\t}\n\t\tif (global_var.type == Types.TEXT) {\n\t\t\tglobal_var.value[row][index] = input_field.val();\n\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_matrix_global_v = false;\n\t\topened_input_value_matrix_global_v = false;\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tglobal_var.value[row][index] = parseFloat(input_field.val().trim());\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index].toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\t\tglobal_var.value[row][index] = parseInt(input_field.val().trim());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tglobal_var.value[row][index] = input_field.val().trim();\n\t\t\t\t\t}\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t\t}\n\t\t\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\t\t} else {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index].toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (global_var.type == Types.TEXT) {\n\t\t\t\tglobal_var.value[row][index] = input_field.val();\n\t\t\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_matrix_global_v = false;\n\t\t\topened_input_value_matrix_global_v = false;\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_matrix_global_v = false;\n\t\t\topened_input_value_matrix_global_v = false;\n\t\t}\n\t});\n\tinput_field.select();\n}\n\nvar opened_name_value_global_var = false;\nvar opened_input_value_global_ar = null;\nfunction enableGlobalValueUpdate (global_var, parent_node) {\n\tif (opened_name_value_global_var) {\n\t\topened_input_value_global_ar.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_global_var = true;\n\n\tparent_node.find('.span_value_variable').text('');\n\n\tvar input_field;\n\n\tif (global_var.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ global_var.value.toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ global_var.value + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t\tvar inputWidth = input_field.textWidth()+10;\n\t\topened_input_value_global_ar = input_field;\n\t\tinput_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t\tinput_field.css({\n\t\t\t\twidth: inputWidth\n\t\t})\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\tlet changed = false;\n\t\t/// update array:\n\t\tif (input_field.val().trim()) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tglobal_var.value = parseFloat(input_field.val().trim());\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value.toFixed(1));\n\t\t\t} else{\n\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\tglobal_var.value = parseInt(input_field.val().trim());\n\t\t\t\t} else {\n\t\t\t\t\tglobal_var.value = input_field.val().trim();\n\t\t\t\t}\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t\t\n\t\t\t}\n\t\t\tchanged = true;\n\t\t} else {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value.toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t}\n\t\t}\n\t\tif (global_var.type == Types.TEXT) {\n\t\t\tglobal_var.value = input_field.val();\n\t\t\tchanged = true;\n\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t}\n\t\tif (changed) {\n\t\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_global_var = false;\n\t\topened_input_value_global_ar = false;\n\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tconst code = e.keyCode || e.which;\n\t\tlet changed = true;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tglobal_var.value = parseFloat(input_field.val().trim());\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value.toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\t\tglobal_var.value = parseInt(input_field.val().trim());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tglobal_var.value = input_field.val().trim();\n\t\t\t\t\t}\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t\t}\n\t\t\t\tchanged = true;\n\t\t\t} else {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value.toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (global_var.type == Types.TEXT) {\n\t\t\t\tglobal_var.value = input_field.val();\n\t\t\t\tchanged = true;\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t}\n\t\t\tif (changed) {\n\t\t\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_global_var = false;\n\t\t\topened_input_value_global_ar = false;\n\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value.toFixed(1));\n\t\t\t} else{\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_global_var = false;\n\t\t\topened_input_value_global_ar = false;\n\t\t}\n\t});\n\n\tinput_field.select();\n}\n\n\nvar opened_name_global = false;\nvar opened_input_global = null;\nfunction enableNameUpdate (global_container) {\n\n\tvar global_var = global_container.data('associatedOject'); \n\n\tif (opened_name_global) {\n\t\topened_input_global.focus();\n\t\treturn;\n\t}\n\topened_name_global = true;\n\n\tglobal_container.find('.span_name_variable').text('');\n\tvar input_name = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"+global_var.name+\"' />\" );\n\tinput_name.insertBefore(global_container.find('.span_name_variable'));\n\n\tinput_name.on('input', function() {\n\t var inputWidth = input_name.textWidth()+10;\n\t opened_input_global = input_name;\n\t opened_input_global.focus();\n\n\t opened_input_global.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_name.focusout(function() {\n\t\t/// update array:\n\t\tif (input_name.val().trim().length > 0) {\n\t\t\tupdateName(global_var, input_name.val().trim(), global_container);\n\t\t\tglobal_container.find('.span_name_variable').text(global_var.name);\n\t\t} else {\n\t\t\tglobal_container.find('.span_name_variable').text(global_var.name);\n\t\t}\n\t\tinput_name.off();\n\t\tinput_name.remove();\n\n\t\t/// update elements:\n\t\topened_name_global = false;\n\t\topened_input_global = false;\n\t});\n\n\tinput_name.on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif (input_name.val().trim()) {\n\t\t\t\tupdateName(global_var, input_name.val().trim(), global_container);\n\t\t\t\tglobal_container.find('.span_name_variable').text(global_var.name);\n\t\t\t} else {\n\t\t\t\tglobal_container.find('.span_name_variable').text(global_var.name);\n\t\t\t}\n\t\t\tinput_name.off();\n\t\t\tinput_name.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_global = false;\n\t\t\topened_input_global = false;\n\t\t}\n\t\tif(code == 27) {\n\n\t\t\tglobal_container.find('.span_name_variable').text(global_var.name);\n\t\t\tinput_name.off();\n\t\t\tinput_name.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_global = false;\n\t\t\topened_input_global = false;\n\t\t}\n\t});\n\n\tinput_name.select();\n\t\n}\n\n\nvar opened_name_value_vector_global_ = false;\nvar opened_input_value_vector_global_ = null;\nfunction enableGlobalVectorValueUpdate (global_var, index, parent_node) {\n\tif (opened_name_value_vector_global_) {\n\t\topened_input_value_vector_global_.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_vector_global_ = true;\n\n\tparent_node.find('.span_value_variable').text('');\n\n\tvar input_field;\n\n\tif (global_var.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ global_var.value[index].toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ global_var.value[index] + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t var inputWidth = input_field.textWidth()+10;\n\t opened_input_value_vector_global_ = input_field;\n\t input_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t input_field.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\tlet changed = false;\n\t\t/// update array:\n\t\tif (input_field.val().trim()) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tglobal_var.value[index] = parseFloat(input_field.val().trim());\n\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index].toFixed(1));\n\t\t\t} else {\n\n\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\tglobal_var.value[index] = parseInt(input_field.val().trim());\n\t\t\t\t} else {\n\t\t\t\t\tglobal_var.value[index] = input_field.val().trim();\n\t\t\t\t}\n\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\n\t\t\t}\n\t\t\tchanged = true;\n\t\t} else {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\t\t\t}\n\t\t}\n\t\tif (global_var.type == Types.TEXT) {\n\t\t\tglobal_var.value[index] = input_field.val();\n\t\t\tchanged = true;\n\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\t\t}\n\t\tif (changed) {\n\t\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_vector_global_ = false;\n\t\topened_input_value_vector_global_ = false;\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tconst code = e.keyCode || e.which;\n\t\tlet changed = false;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tglobal_var.value[index] = parseFloat(input_field.val().trim());\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index].toFixed(1));\n\t\t\t\t} else {\n\n\t\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\t\tglobal_var.value[index] = parseInt(input_field.val().trim());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tglobal_var.value[index] = input_field.val().trim();\n\t\t\t\t\t}\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\n\t\t\t\t}\n\t\t\t\tchanged = true;\n\t\t\t} else {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index].toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (global_var.type == Types.TEXT) {\n\t\t\t\tglobal_var.value[index] = input_field.val();\n\t\t\t\tchanged = true;\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\t\t\t}\n\t\t\tif (changed) {\n\t\t\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_vector_global_ = false;\n\t\t\topened_input_value_vector_global_ = false;\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_vector_global_ = false;\n\t\t\topened_input_value_vector_global_ = false;\n\t\t}\n\t});\n\n\tinput_field.select();\n}\n\n\n$.fn.textWidth = function(text, font) {\n \n if (!$.fn.textWidth.fakeEl) $.fn.textWidth.fakeEl = $('<span>').hide().appendTo(document.body);\n \n $.fn.textWidth.fakeEl.text(text || this.val() || this.text() || this.attr('placeholder')).css('font', font || this.css('font'));\n \n return $.fn.textWidth.fakeEl.width();\n};","import { Types } from './types';\nimport WatchJS from 'melanke-watchjs';\nimport * as AlgorithmManagement from './algorithm';\n\nexport const COMMAND_TYPES = Object.freeze({function:\"function\", comment:\"comment\", reader:\"reader\", writer:\"writer\", attribution:\"attribution\", iftrue:\"iftrue\",\n repeatNtimes:\"repeatNtimes\", whiletrue:\"whiletrue\", dowhiletrue:\"dowhiletrue\", switch:\"switch\", switchcase:\"switchcase\", functioncall:\"functioncall\", break:\"break\",\n return:\"return\"});\n\nexport const ARITHMETIC_TYPES = Object.freeze({plus:\"plus\", minus:\"minus\", multiplication:\"multiplication\", division:\"division\", module:\"module\", none:\"none\"});\n\nexport const EXPRESSION_ELEMENTS = Object.freeze({exp_op_exp:\"exp_op_exp\", op_exp:\"op_exp\", par_exp_par:\"par_exp_par\", start_point:\"start_point\"});\n\nexport const EXPRESSION_TYPES = Object.freeze({exp_conditional:\"exp_conditional\", exp_logic:\"exp_logic\", exp_arithmetic:\"exp_arithmetic\"});\n\nexport const ARITHMETIC_COMPARISON = Object.freeze({greater_than:\"greater_than\", less_than:\"less_than\", equals_to:\"equals_to\", not_equals_to:\"not_equals_to\", greater_than_or_equals_to:\"greater_than_or_equals_to\", less_than_or_equals_to:\"less_than_or_equals_to\"});\n\nexport const LOGIC_COMPARISON = Object.freeze({equals_to:\"equals_to\", not_equals_to:\"not_equals_to\", and:\"and\", or:\"or\", not:\"not\"});\n\nexport const SYSTEM_FUNCTIONS_CATEGORIES = Object.freeze({math:'$mathLib', text:'$strLib', arrangement:'$arrayLib', conversion:'$langLib'});\n\nexport class Variable {\n\n constructor (type, name, value, dimensions = 0, is_constant = false, rows = 0, columns = 0) {\n this.type = type;\n this.name = name;\n this.value = value;\n this.dimensions = dimensions;\n this.is_constant = is_constant;\n this.rows = rows;\n this.columns = columns;\n }\n}\n\nexport class Function {\n\n constructor (name, return_type = Types.VOID, return_dimensions = 0, parameters_list = [], is_main = false, is_hidden = false, variables_list = [], function_comment = null, commands = []) {\n this.type = COMMAND_TYPES.function;\n this.name = name;\n this.return_type = return_type;\n this.return_dimensions = return_dimensions;\n this.parameters_list = parameters_list;\n this.is_main = is_main;\n this.is_hidden = is_hidden;\n this.variables_list = variables_list;\n this.function_comment = function_comment;\n this.commands = commands;\n }\n}\n\nexport class SystemFunction {\n\n constructor (identifier, return_type, return_dimensions, parameters_list, function_comment = null, category) {\n this.type = COMMAND_TYPES.function;\n this.identifier = identifier;\n this.return_type = return_type;\n this.return_dimensions = return_dimensions;\n this.parameters_list = parameters_list;\n this.function_comment = function_comment;\n this.category = category;\n }\n}\n\nexport class Comment {\n \n constructor (comment_text) {\n this.type = COMMAND_TYPES.comment;\n this.comment_text = comment_text;\n }\n}\n\nexport class Break {\n \n constructor () {\n this.type = COMMAND_TYPES.break;\n }\n}\n\nexport class Reader {\n \n constructor (variable_value_menu = new VariableValueMenu()) {\n this.type = COMMAND_TYPES.reader;\n this.variable_value_menu = variable_value_menu;\n }\n}\n\nexport class Writer {\n\n constructor (content) {\n this.type = COMMAND_TYPES.writer;\n this.content = content;\n }\n}\n\nexport class Attribution {\n\n constructor (variable, expression = []) {\n this.type = COMMAND_TYPES.attribution;\n this.variable = variable;\n this.expression = expression;\n }\n}\n\nexport class ExpressionOperator {\n\n constructor (type_op, item) {\n this.type_op = type_op; // Logic, Arithmetic OR Relational\n this.item = item;\n }\n}\n\nexport class ExpressionElement {\n\n constructor (type_exp, itens = []) {\n this.type_exp = type_exp;\n this.itens = itens;\n }\n}\n\nexport class ConditionalExpression {\n\n constructor (expression) {\n this.type = EXPRESSION_TYPES.exp_conditional;\n this.expression = expression;\n }\n}\n\nexport class LogicExpression {\n\n constructor (has_neg, first_operand, second_operand, operator) {\n this.type = EXPRESSION_TYPES.exp_logic;\n this.has_neg = has_neg;\n this.first_operand = first_operand;\n this.second_operand = second_operand;\n this.operator = operator;\n }\n}\n\nexport class ArithmeticExpression {\n\n constructor (first_operand, second_operand, operator) {\n this.type = EXPRESSION_TYPES.exp_arithmetic;\n this.first_operand = first_operand;\n this.second_operand = second_operand;\n this.operator = operator;\n }\n}\n\nexport class IfTrue {\n\n constructor (expression, commands_block, commands_else) {\n this.type = COMMAND_TYPES.iftrue;\n this.expression = expression;\n this.commands_block = commands_block;\n this.commands_else = commands_else;\n }\n}\n\nexport class RepeatNTimes {\n\n constructor (var_attribution, var_incrementation, expression1, expression2, expression3, commands_block) {\n this.type = COMMAND_TYPES.repeatNtimes;\n this.var_attribution = var_attribution;\n this.var_incrementation = var_incrementation;\n this.expression1 = expression1;\n this.expression2 = expression2;\n this.expression3 = expression3;\n this.commands_block = commands_block;\n }\n}\n\nexport class WhileTrue {\n\n constructor (expression, commands_block) {\n this.type = COMMAND_TYPES.whiletrue;\n this.expression = expression;\n this.commands_block = commands_block;\n }\n}\n\nexport class DoWhileTrue {\n\n constructor (expression, commands_block) {\n this.type = COMMAND_TYPES.dowhiletrue;\n this.expression = expression;\n this.commands_block = commands_block;\n }\n}\n\nexport class Switch {\n\n constructor (variable, cases = []) {\n this.type = COMMAND_TYPES.switch;\n this.variable = variable;\n this.cases = cases;\n }\n}\n\nexport class Return {\n\n constructor (variable_value_menu) {\n this.type = COMMAND_TYPES.return;\n this.variable_value_menu = variable_value_menu;\n } \n}\n\nexport class SwitchCase {\n\n constructor (variable_value_menu, commands_block = []) {\n this.type = COMMAND_TYPES.switchcase;\n this.variable_value_menu = variable_value_menu;\n this.commands_block = commands_block;\n } \n}\n\nexport class FunctionCall {\n\n constructor (function_called, parameters_list) {\n this.type = COMMAND_TYPES.functioncall;\n this.function_called = function_called;\n this.parameters_list = parameters_list;\n }\n}\n\nexport class VariableValueMenu {\n\n constructor (variable_and_value = 7, content = null, row = null, column = null, include_constant = true, dimensions = 0) {\n this.type = \"var_value\";\n this.variable_and_value = variable_and_value;\n this.content = content;\n this.row = row;\n this.column = column;\n this.include_constant = include_constant;\n this.dimensions = dimensions;\n }\n}\n\nexport class FunctionCallMenu {\n \n constructor (function_called = null, parameters_list = []) {\n this.type = \"function_call\";\n this.function_called = function_called;\n this.parameters_list = parameters_list;\n }\n}\n\nexport class Program {\n\n constructor () {\n this.functions = [];\n this.globals = [];\n }\n\n addFunction (function_to_add) {\n\n WatchJS.watch(function_to_add.parameters_list, function(){\n if (window.insertContext) {\n setTimeout(function(){ AlgorithmManagement.renderAlgorithm(); }, 300);\n window.insertContext = false;\n } else {\n AlgorithmManagement.renderAlgorithm();\n }\n }, 1);\n\n WatchJS.watch(function_to_add.variables_list, function(){\n if (window.insertContext) {\n setTimeout(function(){ AlgorithmManagement.renderAlgorithm(); }, 300);\n window.insertContext = false;\n } else {\n AlgorithmManagement.renderAlgorithm();\n }\n }, 1);\n\n this.functions.push(function_to_add);\n }\n\n addVariable (function_to_receive, variable) {\n if (this.functions[function_to_receive].variable === null) {\n this.functions[function_to_receive].variables_list = [];\n }\n this.functions[function_to_receive].variables_list.push(variable);\n }\n\n addGlobal (variable) {\n this.globals.push(variable);\n }\n}\n","import * as CodeMirror from \"codemirror\";\nimport \"codemirror/addon/edit/closebrackets\";\nimport \"codemirror/addon/edit/matchbrackets\";\n// import \"codemirror/addon/hint/show-hint\";\n// import \"codemirror/addon/hint/anyword-hint\";\nimport \"codemirror/addon/selection/active-line\";\nimport { CodeEditorMode } from \"./../util/editorMode2\"\nCodeEditorMode(CodeMirror);\n\nlet codeEditor = null;\n\nexport function initTextEditor (element) {\n let id = element;\n if (element[0] == '#') {\n id = element.substring(1);\n }\n codeEditor = CodeMirror.fromTextArea(document.getElementById(id), {\n theme: \"ttcn\",\n value: \"\",\n mode: \"text/x-ivprog\",\n indentUnit: 4,\n lineNumbers: true,\n matchBrackets: true,\n autoCloseBrackets: true,\n fixedGutter: true,\n styleActiveLine: true,\n readOnly: true\n });\n}\n\nexport function disable (flag) {\n codeEditor.setOption(\"readOnly\", flag);\n updateEditor();\n}\n\nexport function updateEditor () {\n codeEditor.refresh();\n}\n\nexport function setCode (code) {\n codeEditor.setValue(code);\n}\n\nexport function getCode () {\n return codeEditor.getValue();\n}\n","export const Types = Object.freeze({\n INTEGER: \"integer\",\n REAL: \"real\",\n TEXT: \"text\",\n BOOLEAN: \"boolean\",\n VOID: \"void\"\n});","\nexport function renderErrorMessage (dom_obj_target, message_text) {\n\n\tdom_obj_target.popup({\n\t\thtml : '<i class=\"ui icon inverted exclamation triangle yellow\"></i>' + message_text,\n\t\ttransition : \"fade up\",\n\t\ton : 'click',\n \t\tclosable : true,\n \t\tmovePopup : true,\n \t\tboundary : window,\n \t\tpreserve : false,\n \t\ttarget : false,\n\t\tclassName : {\n\t\t popup : 'ui popup invalid-identifier'\n\t\t},\n\t\tonHidden : function($module) {\n\t\t\tdom_obj_target.popup('destroy');\n\t\t}\n\n\t}).popup('toggle');\n\n}","import { Types } from './types';\nimport * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as Utils from './utils';\nimport { registerUserEvent, registerSystemEvent, ActionTypes } from \"./../services/userLog\";\nimport { isValidIdentifier } from \"./../util/utils\";\n\nvar counter_new_variables = 0;\n\nexport function addVariable (function_obj, function_container, is_in_click = false) {\n\tvar new_var = new Models.Variable(Types.INTEGER, LocalizedStrings.getUI('new_variable') + '_' + counter_new_variables, 0);\n\tif (function_obj.variables_list == null) {\n\t\tfunction_obj.variables_list = [];\n\t}\n\tfunction_obj.variables_list.push(new_var);\n\n\tcounter_new_variables ++;\n\n\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_FUNCTION_VAR, new_var.name, Types.INTEGER, 0);\n\tvar newe = renderVariable(function_container, new_var, function_obj);\n\n\tif (is_in_click) {\n\t\tnewe.css('display', 'none');\n\t\tnewe.fadeIn();\n\t}\n}\n\nfunction updateName (variable_obj, new_name, variable_obj_dom, function_obj) {\n\n\tif (variable_obj.name == new_name) {\n\t\treturn;\n\t}\n\n\tif (isValidIdentifier(new_name)) {\n\t\tif (variableNameAlreadyExists(new_name, function_obj)) {\n\t\t\tUtils.renderErrorMessage(variable_obj_dom.find('.editing_name_var'), LocalizedStrings.getError('inform_valid_variable_duplicated', [new_name, function_obj.name]));\n\t\t} else {\n\t\t\tregisterUserEvent(function_obj.name, ActionTypes.RENAME_FUNCTION_VAR, variable_obj.name, new_name);\n\t\t\tvariable_obj.name = new_name;\n\t\t}\n\t} else {\n\t\tUtils.renderErrorMessage(variable_obj_dom.find('.editing_name_var'), LocalizedStrings.getError('inform_valid_identifier'));\n\t}\n}\n\nfunction variableNameAlreadyExists (name_var, function_obj) {\n\n\tif (function_obj.parameters_list) {\n\t\tfor (var i = 0; i < function_obj.parameters_list.length; i++) {\n\t\t\tif (function_obj.parameters_list[i].name == name_var) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (function_obj.variables_list) {\n\t\tfor (var i = 0; i < function_obj.variables_list.length; i++) {\n\t\t\tif (function_obj.variables_list[i].name == name_var) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction removeVariable (variable_obj, variable_container, function_name) {\n\tvar function_associated = variable_container.data('associatedFunction');\n\tregisterUserEvent(function_name, ActionTypes.REMOVE_FUNCTION_VAR, variable_obj.name);\n\n\tvar index = function_associated.variables_list.indexOf(variable_obj);\n\tif (index > -1) {\n\t window.insertContext = true;\n\t delete function_associated.variables_list[index];\n\t function_associated.variables_list.splice(index, 1);\n\t}\n\tvariable_container.children().off();\n\tvariable_container.off();\n\tvariable_container.fadeOut();\n}\n\nfunction updateType (variable_obj, new_type, function_name, new_dimensions = 0) {\n\tvariable_obj.type = new_type;\t\t\n\tvariable_obj.dimensions = new_dimensions;\n\n\tif (new_dimensions > 0) {\n\t\tvariable_obj.rows = new_dimensions;\n\t\tvariable_obj.columns = 2;\n\t}\n\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_TYPE, variable_obj.name,\n\t\tnew_type, new_dimensions, variable_obj.rows, variable_obj.columns);\n\n\tupdateInitialValues(variable_obj, function_name);\n}\n\nfunction addHandlers (variable_obj, variable_container, function_obj) {\n\n\t// Manage variable name: \n\tvariable_container.find( \".editing_name_var\" ).on('click', function(e){\n\t\tregisterUserEvent(function_obj.name, ActionTypes.ENTER_CHANGE_VAR_NAME, variable_obj.name);\n\t\tenableNameUpdate(variable_obj, variable_container, function_obj);\n\t});\n\n\t// Menu to change type:\n\tvariable_container.find('.ui.dropdown.variable_type').dropdown({\n\t onChange: function(_, __, $selectedItem) {\n\t \tif ($selectedItem.data('dimensions')) {\n\t \t\tupdateType(variable_obj, Types[$selectedItem.data('type')], function_obj.name, $selectedItem.data('dimensions'));\n\t \t} else {\n\t \t\tupdateType(variable_obj, Types[$selectedItem.data('type')], function_obj.name);\n\t \t}\n\n\t \trenderValues(variable_obj, variable_container, function_obj.name);\n\t },\n\t selectOnKeydown: false\n\t});\n\n\t// Remove variable: \n\tvariable_container.find( \".remove_variable\" ).on('click', function(e){\n\t\tremoveVariable(variable_obj, variable_container, function_obj.name);\n\t});\n\n}\n\nexport function renderVariable (function_container, new_var, function_obj) {\n\n\tvar element = '<div class=\"ui label variable_container pink\"><i class=\"ui icon ellipsis vertical inverted\"></i>';\n\n\telement += '<div class=\"ui dropdown variable_type\">';\n\n \tif (new_var.dimensions == 1) {\n \t\telement += '<div class=\"text\">'+ LocalizedStrings.getUI('vector') + ': ' + LocalizedStrings.getUI(`type_${new_var.type.toLowerCase()}`);\n \t\telement += ' [ ] </div>';\n \t} else if (new_var.dimensions == 2) {\n \t\telement += '<div class=\"text\">'+ LocalizedStrings.getUI('matrix') + ': ' + LocalizedStrings.getUI(`type_${new_var.type.toLowerCase()}`);\n \t\telement += ' [ ] [ ] </div>';\n \t} else {\n \t\telement += '<div class=\"text\">' + LocalizedStrings.getUI(`type_${new_var.type.toLowerCase()}`) + '</div>';\n \t}\n\telement += '<div class=\"menu\">';\n\n\tfor (var tm in Types) {\n \t\tif (tm == Types.VOID.toUpperCase()) {\n \t\t\tcontinue;\n \t\t}\n \t\telement += '<div class=\"item ' + (new_var.type == tm.toLowerCase() && new_var.dimensions == 0 ? ' selected ' : '') + '\" data-type=\"'+tm+'\" >'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n\t}\n\n\n\telement += '<div class=\"item ' + (new_var.dimensions == 1 ? ' selected ' : '') + '\">'\n\t\t+ '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('vector')\n\t\t+ '<div class=\"menu\">';\n\n\tfor (var tm in Types) {\n \t\tif (tm == Types.VOID.toUpperCase()) {\n \t\t\tcontinue;\n \t\t}\n\n \t\telement += '<div class=\"item ' + (new_var.type == tm.toLowerCase() && new_var.dimensions == 1 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"1\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n \t}\n\telement += '</div></div>';\n\n\n\telement += '<div class=\"item ' + (new_var.dimensions == 2 ? ' selected ' : '') + '\">'\n\t\t+ '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('matrix')\n\t\t+ '<div class=\"menu\">';\n\n\tfor (var tm in Types) {\n \t\tif (tm == Types.VOID.toUpperCase()) {\n \t\t\tcontinue;\n \t\t}\n\n \t\telement += '<div class=\"item ' + (new_var.type == tm.toLowerCase() && new_var.dimensions == 2 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('matrix')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"2\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n \t}\n\telement += '</div></div>';\n\n element += '</div></div> ';\n\n element += '<div class=\"editing_name_var\"><span class=\"span_name_variable enable_edit_name_variable\">'+new_var.name+'</span> </div>';\n\n\telement += ' <span class=\"character_equals\"> <— </span> <div class=\"ui div_valor_var\">'+new_var.value+'</div>'; \n\n\telement += ' <i class=\"yellow inverted icon times remove_variable\"></i></div>';\n\n\telement = $(element);\n\n\telement.data('associatedFunction', function_obj);\n\n\tfunction_container.find('.variables_list_div').append(element);\n\n\taddHandlers(new_var, element, function_obj);\n\n\trenderValues(new_var, element, function_obj.name);\n\n\treturn element;\n}\n\nfunction updateColumnsAndRowsText (variable_container, variable_var) {\n\tvar prev = variable_container.find('.text').text().split('[');\n\tif (prev.length == 2) {\n\t\tvar ff = prev[0] + '[ ' + variable_var.columns + ' ] ';\n\t\tvariable_container.find('.text').empty();\n\t\tvariable_container.find('.text').text(ff);\n\t}\n\tif (prev.length == 3) {\n\t\tvar ff = prev[0] + '[ ' + variable_var.columns + ' ] [ ' + variable_var.rows + ' ] ';\n\t\tvariable_container.find('.text').empty();\n\t\tvariable_container.find('.text').text(ff);\n\t}\n}\n\nfunction renderValues (new_var, variable_container, function_name) {\n\n\tvar ret = \"\";\n\tvar j = 0;\n\t\t\n\tif (new_var.dimensions == 0) {\n\t\tif (new_var.type == Types.REAL) {\n\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable simple_var\">'+new_var.value.toFixed(1)+'</span> </div> ';\n\t\t} else {\n\t\t\tif (new_var.type == Types.BOOLEAN) {\n\t\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable boolean_simple_type\">'+LocalizedStrings.getUI(`logic_value_${new_var.value}`)+'</span> </div> ';\n\t\t\t} else {\n\t\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable simple_var\">'+new_var.value+'</span> </div> ';\n\t\t\t}\n\t\t}\n\t} else {\n\t\tret += '<table class=\"tabela_var\">';\n\n\t\tif (new_var.dimensions == 1) {\n\t\t\tret += '<tr>';\n\t\t\tif (new_var.type == Types.REAL) {\n\t\t\t\tfor (var k = 0; k < new_var.columns; k++) {\n\t\t\t\t\tret += '<td><span class=\"span_value_variable vector_var\" data-index=\"'+k+'\">'+new_var.value[k].toFixed(1)+'</span></td>';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var k = 0; k < new_var.columns; k++) {\n\t\t\t\t\tif (new_var.type == Types.BOOLEAN) {\n\t\t\t\t\t\tret += '<td><span class=\"span_value_variable boolean_vector_var\" data-index=\"'+k+'\">'+LocalizedStrings.getUI(`logic_value_${new_var.value[k]}`)+'</span></td>';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret += '<td><span class=\"span_value_variable vector_var\" data-index=\"'+k+'\">'+new_var.value[k]+'</span>'+'</td>';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tret += '</tr>';\n\t\t\tret += '</table>';\n\n\t\t\tret += '<div class=\"buttons_manage_columns\"><i class=\"ui icon minus square outline remove_global_vector_column\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_vector_column\"></i></div>';\n\t\t}\n\n\t\tif (new_var.dimensions == 2) {\n\t\t\tif (new_var.type == Types.REAL) {\n\t\t\t\tfor (var l = 0; l < new_var.rows; l++) {\n \t\t\t\tret += '<tr>';\n \t\t\t\tfor (var k = 0; k < new_var.columns; k++) {\n \t\t\t\t\tret += '<td><span class=\"span_value_variable matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+new_var.value[l][k].toFixed(1)+'</span>'+'</td>';\n \t\t\t\t} \n \t\t\t\tret += '</tr>';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var l = 0; l < new_var.rows; l++) {\n \t\t\t\tret += '<tr>';\n \t\t\t\tfor (var k = 0; k < new_var.columns; k++) {\n \t\t\t\t\tif (new_var.type == Types.BOOLEAN) { \n \t\t\t\t\t\tret += '<td><span class=\"span_value_variable boolean_matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+LocalizedStrings.getUI(`logic_value_${new_var.value[l][k]}`)+'</span></td>';\n \t\t\t\t\t} else {\n \t\t\t\t\t\tret += '<td><span class=\"span_value_variable matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+new_var.value[l][k]+'</span></td>';\n \t\t\t\t\t}\n \t\t\t\t} \n \t\t\t\tret += '</tr>';\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (new_var.rows == 0) {\n\t\t\t\tret += '<tr><td></td></tr>';\n\t\t\t}\n\t\t\tret += '<tr><td colspan=\"'+new_var.columns+'\" class=\"tr_manage_lines\"><i class=\"ui icon minus square outline remove_global_matrix_line\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_matrix_line\"></i></td></tr>';\n\t\t\tret += '</table>';\n\n\t\t\tret += '<div class=\"buttons_manage_columns\"><i class=\"ui icon minus square outline remove_global_matrix_column\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_matrix_column\"></i></div>';\n\t\t}\n\t\t\n\t}\n\n\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\n\tret = $(ret);\n\n\t$(ret).find('.span_value_variable').\t\tdata('associatedOject', new_var);\n\n\t$( ret ).find( \".boolean_simple_type\" ).on('click', function(e){\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name, new_var.value);\n\t\talternateBooleanValue(new_var, this.parentNode);\n\t});\n\t$( ret ).find( \".simple_var\" ).on('click', function(e){\n\t\tregisterUserEvent(function_name, ActionTypes.ENTER_CHANGE_VAR_VALUE, new_var.name);\n\t\tenableValueUpdate(new_var, this.parentNode, function_name);\n\t});\n\n\t$( ret ).find( \".boolean_vector_var\" ).on('click', function(e){\n\t\talternateBooleanVectorValue(new_var, $(this).data('index'), this.parentNode);\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t});\n\t$( ret ).find( \".vector_var\" ).on('click', function(e){\n\t\tenableVectorValueUpdate(new_var, $(this).data('index'), this.parentNode, function_name);\n\t});\n\t$( ret ).find( \".remove_global_vector_column\" ).on('click', function(e){\n\t\tremoveColumnVector(new_var);\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_TYPE, new_var.name,\n\t\t\tnew_var.type, new_var.dimensions, new_var.rows, new_var.columns);\n\t\tregisterSystemEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container, function_name);\n\t});\n\t$( ret ).find( \".add_global_vector_column\" ).on('click', function(e){\n\t\taddColumnVector(new_var);\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_TYPE, new_var.name,\n\t\t\tnew_var.type, new_var.dimensions, new_var.rows, new_var.columns);\n\t\tregisterSystemEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container, function_name);\n\t});\n\t$( ret ).find( \".remove_global_matrix_column\" ).on('click', function(e){\n\t\tremoveColumnMatrix(new_var);\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_TYPE, new_var.name,\n\t\t\tnew_var.type, new_var.dimensions, new_var.rows, new_var.columns);\n\t\tregisterSystemEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container, function_name);\n\t});\n\t$( ret ).find( \".add_global_matrix_column\" ).on('click', function(e){\n\t\taddColumnMatrix(new_var);\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_TYPE, new_var.name,\n\t\t\tnew_var.type, new_var.dimensions, new_var.rows, new_var.columns);\n\t\tregisterSystemEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container, function_name);\n\t});\n\t$( ret ).find( \".remove_global_matrix_line\" ).on('click', function(e){\n\t\tremoveLineMatrix(new_var);\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_TYPE, new_var.name,\n\t\t\tnew_var.type, new_var.dimensions, new_var.rows, new_var.columns);\n\t\tregisterSystemEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container, function_name);\n\t});\n\t$( ret ).find( \".add_global_matrix_line\" ).on('click', function(e){\n\t\taddLineMatrix(new_var);\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_TYPE, new_var.name,\n\t\t\tnew_var.type, new_var.dimensions, new_var.rows, new_var.columns);\n\t\tregisterSystemEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container, function_name);\n\t});\n\t$( ret ).find( \".boolean_matrix_var\" ).on('click', function(e){\n\t\talternateBooleanMatrixValue(new_var, $(this).data('row'), $(this).data('index'), this.parentNode);\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t});\n\t$( ret ).find( \".matrix_var\" ).on('click', function(e){\n\t\tregisterUserEvent(function_name, ActionTypes.ENTER_CHANGE_VAR_VALUE, new_var.name);\n\t\tenableMatrixValueUpdate(new_var, $(this).data('row'), $(this).data('index'), this.parentNode, function_name);\n\t});\n\t$( variable_container ).find( \".div_valor_var\" ).append(ret);\n\n\tupdateColumnsAndRowsText(variable_container, new_var);\n\n}\n\nfunction alternateBooleanMatrixValue (var_obj, row, index, value_container) {\n\tvar_obj.value[row][index] = !var_obj.value[row][index];\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(`logic_value_${var_obj.value[row][index]}`));\n}\n\nfunction addLineMatrix (var_obj) {\n\tvar_obj.rows ++;\n\n\tif (var_obj.type == Types.INTEGER) {\n\t\tvar n_l = [];\n\t\tfor (var i = 0; i < var_obj.columns; i++) {\n\t\t\tn_l.push(0);\n\t\t}\n\t\tvar_obj.value.push(n_l);\n\t}\n\tif (var_obj.type == Types.REAL) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < var_obj.columns; i++) {\n\t\t\tn_l.push(0.0);\n\t\t}\n\t\tvar_obj.value.push(n_l);\n\t}\n\n\tif (var_obj.type == Types.TEXT) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < var_obj.columns; i++) {\n\t\t\tn_l.push(LocalizedStrings.getUI('textvar_default_value'));\n\t\t}\n\t\tvar_obj.value.push(n_l);\n\t}\n\n\tif (var_obj.type == Types.BOOLEAN) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < var_obj.columns; i++) {\n\t\t\tn_l.push(true);\n\t\t}\n\t\tvar_obj.value.push(n_l);\n\t}\n}\n\nfunction removeLineMatrix (var_obj) {\n\tif (var_obj.rows == 0) {\n\t\treturn;\n\t}\n\n\tvar_obj.rows --;\n\tvar_obj.value.splice(var_obj.value.length - 1, 1);\n}\n\nfunction addColumnMatrix (var_obj) {\n\tvar_obj.columns ++;\n\n\tif (var_obj.type == Types.INTEGER) {\n\t\tfor (var i = 0; i < var_obj.rows; i++) {\n\t\t\tvar_obj.value[i].push(0);\n\t\t}\n\t}\n\tif (var_obj.type == Types.REAL) {\n\t\tfor (var i = 0; i < var_obj.rows; i++) {\n\t\t\tvar_obj.value[i].push(0.0);\n\t\t}\n\t}\n\tif (var_obj.type == Types.TEXT) {\n\t\tfor (var i = 0; i < var_obj.rows; i++) {\n\t\t\tvar_obj.value[i].push(LocalizedStrings.getUI('textvar_default_value'));\n\t\t}\n\t}\n\tif (var_obj.type == Types.BOOLEAN) {\n\t\tfor (var i = 0; i < var_obj.rows; i++) {\n\t\t\tvar_obj.value[i].push(true);\n\t\t}\n\t}\n}\n\nfunction removeColumnMatrix (var_obj) {\n\tif (var_obj.columns == 0) {\n\t\treturn;\n\t}\n\n\tvar_obj.columns --;\n\n\tfor (var i = 0; i < var_obj.rows; i++) {\n\t\tvar_obj.value[i].splice(var_obj.value[i].length - 1, 1);\n\t}\n}\n\nfunction addColumnVector (var_obj) {\n\tvar_obj.columns ++;\n\n\tif (var_obj.type == Types.INTEGER) {\n\t\tvar_obj.value.push(0);\n\t}\n\tif (var_obj.type == Types.REAL) {\n\t\tvar_obj.value.push(0.0);\n\t}\n\tif (var_obj.type == Types.TEXT) {\n\t\tvar_obj.value.push(LocalizedStrings.getUI('textvar_default_value'));\n\t}\n\tif (var_obj.type == Types.BOOLEAN) {\n\t\tvar_obj.value.push(true);\n\t}\n}\n\nfunction removeColumnVector (var_obj) {\n\tif (var_obj.columns == 0) {\n\t\treturn;\n\t}\n\n\tvar_obj.columns --;\n\tvar_obj.value.splice(var_obj.value.length - 1, 1);\n}\n\nfunction alternateBooleanValue (var_obj, value_container) {\n\tvar_obj.value = !var_obj.value;\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(`logic_value_${var_obj.value}`));\n}\n\nfunction alternateBooleanVectorValue (var_obj, index, value_container) {\n\tvar_obj.value[index] = !var_obj.value[index];\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(`logic_value_${var_obj.value[index]}`));\n}\n\nfunction updateInitialValues (variable_obj, function_name) {\n\tif (variable_obj.type == Types.INTEGER) {\n\t\tif (variable_obj.dimensions == 0) {\n\t\t\tvariable_obj.value = 0;\n\t\t}\n\t\tif (variable_obj.dimensions == 1) {\n\t\t\tvariable_obj.value = [0, 0];\n\t\t}\n\t\tif (variable_obj.dimensions == 2) {\n\t\t\tvariable_obj.value = [[0, 0], [0, 0]];\n\t\t}\n\t}\n\n\tif (variable_obj.type == Types.REAL) {\n\t\tif (variable_obj.dimensions == 0) {\n\t\t\tvariable_obj.value = 0.0;\n\t\t}\n\t\tif (variable_obj.dimensions == 1) {\n\t\t\tvariable_obj.value = [0.0, 0.0];\n\t\t}\n\t\tif (variable_obj.dimensions == 2) {\n\t\t\tvariable_obj.value = [[0.0, 0.0], [0.0, 0.0]];\n\t\t}\n\t}\n\n\tif (variable_obj.type == Types.TEXT) {\n\t\tif (variable_obj.dimensions == 0) {\n\t\t\tvariable_obj.value = LocalizedStrings.getUI('textvar_default_value');\n\t\t}\n\t\tif (variable_obj.dimensions == 1) {\n\t\t\tvariable_obj.value = [LocalizedStrings.getUI('textvar_default_value'), LocalizedStrings.getUI('textvar_default_value')];\n\t\t}\n\t\tif (variable_obj.dimensions == 2) {\n\t\t\tvariable_obj.value = [[LocalizedStrings.getUI('textvar_default_value'), LocalizedStrings.getUI('textvar_default_value')], \n\t\t\t\t\t\t\t\t\t[LocalizedStrings.getUI('textvar_default_value'), LocalizedStrings.getUI('textvar_default_value')]];\n\t\t}\n\t}\n\n\tif (variable_obj.type == Types.BOOLEAN) {\n\t\tif (variable_obj.dimensions == 0) {\n\t\t\tvariable_obj.value = true;\n\t\t}\n\t\tif (variable_obj.dimensions == 1) {\n\t\t\tvariable_obj.value = [true, true];\n\t\t}\n\t\tif (variable_obj.dimensions == 2) {\n\t\t\tvariable_obj.value = [[true, true], [true, true]];\n\t\t}\n\t}\n\tregisterSystemEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, variable_obj.name, variable_obj.value);\n}\n\nvar opened_name_value_vector_global_ = false;\nvar opened_input_value_vector_global_ = null;\nfunction enableVectorValueUpdate (var_obj, index, parent_node, function_name) {\n\tif (opened_name_value_vector_global_) {\n\t\topened_input_value_vector_global_.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_vector_global_ = true;\n\n\tparent_node.find('.span_value_variable').text('');\n\n\tvar input_field;\n\n\tif (var_obj.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value[index].toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value[index] + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t var inputWidth = input_field.textWidth()+10;\n\t opened_input_value_vector_global_ = input_field;\n\t input_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t input_field.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\tlet changed = false;\n\t\t/// update array:\n\t\tif (input_field.val().trim()) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tvar_obj.value[index] = parseFloat(input_field.val().trim());\n\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index].toFixed(1));\n\t\t\t} else {\n\n\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\tvar_obj.value[index] = parseInt(input_field.val().trim());\n\t\t\t\t} else {\n\t\t\t\t\tvar_obj.value[index] = input_field.val().trim();\n\t\t\t\t}\n\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\n\t\t\t}\n\t\t\tchanged = true;\n\t\t} else {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\t\t\t}\n\t\t}\n\t\tif (var_obj.type == Types.TEXT) {\n\t\t\tvar_obj.value[index] = input_field.val();\n\t\t\tchanged = true;\n\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\t\t}\n\t\tif (changed) {\n\t\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, var_obj.name,\n\t\t\t\tvar_obj.value);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_vector_global_ = false;\n\t\topened_input_value_vector_global_ = false;\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tconst code = e.keyCode || e.which;\n\t\tlet changed = false;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tvar_obj.value[index] = parseFloat(input_field.val().trim());\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index].toFixed(1));\n\t\t\t\t} else {\n\n\t\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\t\tvar_obj.value[index] = parseInt(input_field.val().trim());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar_obj.value[index] = input_field.val().trim();\n\t\t\t\t\t}\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\n\t\t\t\t}\n\t\t\t\tchanged = true;\n\t\t\t} else {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index].toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (var_obj.type == Types.TEXT) {\n\t\t\t\tvar_obj.value[index] = input_field.val();\n\t\t\t\tchanged = true;\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\t\t\t}\n\t\t\tif (changed) {\n\t\t\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, var_obj.name,\n\t\t\t\t\tvar_obj.value);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_vector_global_ = false;\n\t\t\topened_input_value_vector_global_ = false;\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_vector_global_ = false;\n\t\t\topened_input_value_vector_global_ = false;\n\t\t}\n\t});\n\n\tinput_field.select();\n}\n\nvar opened_name_value_global_var = false;\nvar opened_input_value_global_ar = null;\nfunction enableValueUpdate (var_obj, parent_node, function_name) {\n\tif (opened_name_value_global_var) {\n\t\topened_input_value_global_ar.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_global_var = true;\n\n\tvar input_field;\n\n\tparent_node.find('.span_value_variable').text('');\n\tif (var_obj.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value.toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t var inputWidth = input_field.textWidth()+10;\n\t opened_input_value_global_ar = input_field;\n\t input_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t input_field.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\t/// update array:\n\t\tlet changed = false;\n\t\tif (input_field.val().trim()) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tvar_obj.value = parseFloat(input_field.val().trim());\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value.toFixed(1));\n\t\t\t} else{\n\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\tvar_obj.value = parseInt(input_field.val().trim());\n\t\t\t\t} else {\n\t\t\t\t\tvar_obj.value = input_field.val().trim();\n\t\t\t\t}\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t\t\n\t\t\t}\n\t\t\tchanged = true;\n\t\t} else {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value.toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t}\n\t\t}\n\t\tif (var_obj.type == Types.TEXT) {\n\t\t\tvar_obj.value = input_field.val();\n\t\t\tchanged = true;\n\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t}\n\t\tif (changed) {\n\t\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, var_obj.name,\n\t\t\t\tvar_obj.value);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_global_var = false;\n\t\topened_input_value_global_ar = false;\n\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tconst code = e.keyCode || e.which;\n\t\tlet changed = false;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tvar_obj.value = parseFloat(input_field.val().trim());\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value.toFixed(1));\n\t\t\t\t} else{\n\t\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\t\tvar_obj.value = parseInt(input_field.val().trim());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar_obj.value = input_field.val().trim();\n\t\t\t\t\t}\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t\t}\n\t\t\t\tchanged = true;\n\t\t\t} else {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value.toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (var_obj.type == Types.TEXT) {\n\t\t\t\tvar_obj.value = input_field.val();\n\t\t\t\tchanged = true;\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t}\n\t\t\tif (changed) {\n\t\t\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, var_obj.name,\n\t\t\t\t\tvar_obj.value);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_global_var = false;\n\t\t\topened_input_value_global_ar = false;\n\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value.toFixed(1));\n\t\t\t} else{\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_global_var = false;\n\t\t\topened_input_value_global_ar = false;\n\t\t}\n\t});\n\n\tinput_field.select();\n}\n\nvar opened_name_global = false;\nvar opened_input_global = null;\nfunction enableNameUpdate (variable_obj, variable_container, function_obj) {\n\n\tif (opened_name_global) {\n\t\topened_input_global.focus();\n\t\treturn;\n\t}\n\topened_name_global = true;\n\n\tvariable_container.find('.span_name_variable').text('');\n\n\tvar input_name;\n\n\tinput_name = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"+variable_obj.name+\"' />\" );\n\tinput_name.insertBefore(variable_container.find('.span_name_variable'));\n\n\tinput_name.on('input', function() {\n\t var inputWidth = input_name.textWidth()+10;\n\t opened_input_global = input_name;\n\t input_name.focus();\t\t\t\t\t\n\n\t var tmpStr = input_name.val();\n\t\tinput_name.val('');\n\t\tinput_name.val(tmpStr);\n\n\t input_name.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_name.focusout(function() {\n\t\t/// update array:\n\t\tif (input_name.val().trim().length > 0) {\n\t\t\tupdateName(variable_obj, input_name.val().trim(), variable_container, function_obj);\n\t\t\tvariable_container.find('.span_name_variable').text(variable_obj.name);\n\t\t} else {\n\t\t\tvariable_container.find('.span_name_variable').text(variable_obj.name);\n\t\t}\n\t\tinput_name.off();\n\t\tinput_name.remove();\n\n\t\t/// update elements:\n\t\topened_name_global = false;\n\t\topened_input_global = false;\n\t});\n\n\tinput_name.on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif (input_name.val().trim().length > 0) {\n\t\t\t\tupdateName(variable_obj, input_name.val().trim(), variable_container, function_obj);\n\t\t\t\tvariable_container.find('.span_name_variable').text(variable_obj.name);\n\t\t\t} else {\n\t\t\t\tvariable_container.find('.span_name_variable').text(variable_obj.name);\n\t\t\t}\n\t\t\tinput_name.off();\n\t\t\tinput_name.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_global = false;\n\t\t\topened_input_global = false;\n\t\t}\n\t\tif(code == 27) {\n\n\t\t\tvariable_container.find('.span_name_variable').text(variable_obj.name);\n\t\t\tinput_name.off();\n\t\t\tinput_name.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_global = false;\n\t\t\topened_input_global = false;\n\t\t}\n\t});\n\n\tinput_name.select();\n\t\n}\n\n\nvar opened_name_value_matrix_global_v = false;\nvar opened_input_value_matrix_global_v = null;\nfunction enableMatrixValueUpdate (var_obj, row, index, parent_node, function_name) {\n\tif (opened_name_value_matrix_global_v) {\n\t\topened_input_value_matrix_global_v.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_matrix_global_v = true;\n\n\tparent_node.find('.span_value_variable').text('');\n\n\tvar input_field;\n\n\tif (var_obj.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value[row][index].toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value[row][index] + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t var inputWidth = input_field.textWidth()+10;\n\t opened_input_value_matrix_global_v = input_field;\n\t input_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t input_field.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\tlet changed = false;\n\t\t/// update array:\n\t\tif (input_field.val().trim()) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tvar_obj.value[row][index] = parseFloat(input_field.val().trim());\n\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index].toFixed(1));\n\t\t\t} else {\t\t\t\t\t\n\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\tvar_obj.value[row][index] = parseInt(input_field.val().trim());\n\t\t\t\t} else {\n\t\t\t\t\tvar_obj.value[row][index] = input_field.val().trim();\n\t\t\t\t}\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t}\n\t\t\tchanged = true;\n\t\t} else {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t}\n\t\t}\n\t\tif (var_obj.type == Types.TEXT) {\n\t\t\tvar_obj.value[row][index] = input_field.val();\n\t\t\tchanged = true;\n\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t}\n\t\tif (changed) {\n\t\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, var_obj.name,\n\t\t\t\tvar_obj.value);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_matrix_global_v = false;\n\t\topened_input_value_matrix_global_v = false;\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tconst code = e.keyCode || e.which;\n\t\tlet changed = false;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tvar_obj.value[row][index] = parseFloat(input_field.val().trim());\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index].toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\t\tvar_obj.value[row][index] = parseInt(input_field.val().trim());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar_obj.value[row][index] = input_field.val().trim();\n\t\t\t\t\t}\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t\t}\n\t\t\t\tchanged = true;\n\t\t\t} else {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index].toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (var_obj.type == Types.TEXT) {\n\t\t\t\tvar_obj.value[row][index] = input_field.val();\n\t\t\t\tchanged = true;\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t}\n\t\t\tif (changed) {\n\t\t\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, var_obj.name,\n\t\t\t\t\tvar_obj.value);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_matrix_global_v = false;\n\t\t\topened_input_value_matrix_global_v = false;\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_matrix_global_v = false;\n\t\t\topened_input_value_matrix_global_v = false;\n\t\t}\n\t});\n\n\tinput_field.select();\n}\n"],"sourceRoot":""}
|